forked from qt-creator/qt-creator
Core: Create an EditModeWidget class
A step towards having delayed mode widget construction. Change-Id: I1d400e058d17aaebfc784000d8b2705debea6a51 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -19,12 +19,50 @@
|
||||
#include <QWidget>
|
||||
#include <QIcon>
|
||||
|
||||
namespace Core {
|
||||
namespace Internal {
|
||||
namespace Core::Internal {
|
||||
|
||||
EditMode::EditMode() :
|
||||
m_splitter(new MiniSplitter),
|
||||
m_rightSplitWidgetLayout(new QVBoxLayout)
|
||||
class EditModeWidget final : public MiniSplitter
|
||||
{
|
||||
public:
|
||||
EditModeWidget()
|
||||
{
|
||||
auto editorPlaceHolder = new EditorManagerPlaceHolder;
|
||||
|
||||
QWidget *rightSplitWidget = new QWidget;
|
||||
auto rightSplitWidgetLayout = new QVBoxLayout(rightSplitWidget);
|
||||
rightSplitWidgetLayout->setSpacing(0);
|
||||
rightSplitWidgetLayout->setContentsMargins(0, 0, 0, 0);
|
||||
rightSplitWidgetLayout->insertWidget(0, editorPlaceHolder);
|
||||
|
||||
auto rightPaneSplitter = new MiniSplitter;
|
||||
rightPaneSplitter->insertWidget(0, rightSplitWidget);
|
||||
rightPaneSplitter->insertWidget(1, new RightPanePlaceHolder(Constants::MODE_EDIT));
|
||||
rightPaneSplitter->setStretchFactor(0, 1);
|
||||
rightPaneSplitter->setStretchFactor(1, 0);
|
||||
|
||||
auto splitter = new MiniSplitter;
|
||||
splitter->setOrientation(Qt::Vertical);
|
||||
splitter->insertWidget(0, rightPaneSplitter);
|
||||
QWidget *outputPane = new OutputPanePlaceHolder(Constants::MODE_EDIT, splitter);
|
||||
outputPane->setObjectName(QLatin1String("EditModeOutputPanePlaceHolder"));
|
||||
splitter->insertWidget(1, outputPane);
|
||||
splitter->setStretchFactor(0, 3);
|
||||
splitter->setStretchFactor(1, 0);
|
||||
|
||||
insertWidget(0, new NavigationWidgetPlaceHolder(Constants::MODE_EDIT, Side::Left));
|
||||
insertWidget(1, splitter);
|
||||
insertWidget(2, new NavigationWidgetPlaceHolder(Constants::MODE_EDIT, Side::Right));
|
||||
setStretchFactor(0, 0);
|
||||
setStretchFactor(1, 1);
|
||||
setStretchFactor(2, 0);
|
||||
|
||||
setFocusProxy(editorPlaceHolder);
|
||||
|
||||
IContext::attach(this, Context(Constants::C_EDITORMANAGER));
|
||||
}
|
||||
};
|
||||
|
||||
EditMode::EditMode()
|
||||
{
|
||||
setObjectName(QLatin1String("EditMode"));
|
||||
setDisplayName(Tr::tr("Edit"));
|
||||
@@ -33,48 +71,16 @@ EditMode::EditMode() :
|
||||
setPriority(Constants::P_MODE_EDIT);
|
||||
setId(Constants::MODE_EDIT);
|
||||
|
||||
m_rightSplitWidgetLayout->setSpacing(0);
|
||||
m_rightSplitWidgetLayout->setContentsMargins(0, 0, 0, 0);
|
||||
QWidget *rightSplitWidget = new QWidget;
|
||||
rightSplitWidget->setLayout(m_rightSplitWidgetLayout);
|
||||
auto editorPlaceHolder = new EditorManagerPlaceHolder;
|
||||
m_rightSplitWidgetLayout->insertWidget(0, editorPlaceHolder);
|
||||
|
||||
auto rightPaneSplitter = new MiniSplitter;
|
||||
rightPaneSplitter->insertWidget(0, rightSplitWidget);
|
||||
rightPaneSplitter->insertWidget(1, new RightPanePlaceHolder(Constants::MODE_EDIT));
|
||||
rightPaneSplitter->setStretchFactor(0, 1);
|
||||
rightPaneSplitter->setStretchFactor(1, 0);
|
||||
|
||||
auto splitter = new MiniSplitter;
|
||||
splitter->setOrientation(Qt::Vertical);
|
||||
splitter->insertWidget(0, rightPaneSplitter);
|
||||
QWidget *outputPane = new OutputPanePlaceHolder(Constants::MODE_EDIT, splitter);
|
||||
outputPane->setObjectName(QLatin1String("EditModeOutputPanePlaceHolder"));
|
||||
splitter->insertWidget(1, outputPane);
|
||||
splitter->setStretchFactor(0, 3);
|
||||
splitter->setStretchFactor(1, 0);
|
||||
|
||||
m_splitter->insertWidget(0, new NavigationWidgetPlaceHolder(Constants::MODE_EDIT, Side::Left));
|
||||
m_splitter->insertWidget(1, splitter);
|
||||
m_splitter->insertWidget(2, new NavigationWidgetPlaceHolder(Constants::MODE_EDIT, Side::Right));
|
||||
m_splitter->setStretchFactor(0, 0);
|
||||
m_splitter->setStretchFactor(1, 1);
|
||||
m_splitter->setStretchFactor(2, 0);
|
||||
|
||||
connect(ModeManager::instance(), &ModeManager::currentModeChanged,
|
||||
this, &EditMode::grabEditorManager);
|
||||
m_splitter->setFocusProxy(editorPlaceHolder);
|
||||
|
||||
IContext::attach(m_splitter, Context(Constants::C_EDITORMANAGER));
|
||||
|
||||
setWidget(m_splitter);
|
||||
setWidget(new EditModeWidget);
|
||||
setContext(Context(Constants::C_EDIT_MODE, Constants::C_NAVIGATION_PANE));
|
||||
}
|
||||
|
||||
EditMode::~EditMode()
|
||||
{
|
||||
delete m_splitter;
|
||||
delete widget();
|
||||
}
|
||||
|
||||
void EditMode::grabEditorManager(Utils::Id mode)
|
||||
@@ -86,5 +92,4 @@ void EditMode::grabEditorManager(Utils::Id mode)
|
||||
EditorManager::currentEditor()->widget()->setFocus();
|
||||
}
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace Core
|
||||
} // namespace Core::Internal
|
||||
|
@@ -5,31 +5,16 @@
|
||||
|
||||
#include "imode.h"
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
class QSplitter;
|
||||
class QVBoxLayout;
|
||||
QT_END_NAMESPACE
|
||||
namespace Core::Internal {
|
||||
|
||||
namespace Core {
|
||||
|
||||
class EditorManager;
|
||||
|
||||
namespace Internal {
|
||||
|
||||
class EditMode : public IMode
|
||||
class EditMode final : public IMode
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
EditMode();
|
||||
~EditMode() override;
|
||||
~EditMode() final;
|
||||
|
||||
private:
|
||||
void grabEditorManager(Utils::Id mode);
|
||||
|
||||
QSplitter *m_splitter;
|
||||
QVBoxLayout *m_rightSplitWidgetLayout;
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace Core
|
||||
} // namespace Core::Internal
|
||||
|
Reference in New Issue
Block a user