forked from qt-creator/qt-creator
TextEditor: add right sidebar
Task-number: QTCREATORBUG-9436 Change-Id: Ic0406758a30d52c22c58433f5f35305b798cb462 Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: Alessandro Portale <alessandro.portale@qt.io> Reviewed-by: André Hartmann <aha_1980@gmx.de>
This commit is contained in:
@@ -122,7 +122,8 @@ MainWindow::MainWindow() :
|
||||
m_toolSettings(new ToolSettings),
|
||||
m_mimeTypeSettings(new MimeTypeSettings),
|
||||
m_systemEditor(new SystemEditor),
|
||||
m_toggleSideBarButton(new QToolButton)
|
||||
m_toggleLeftSideBarButton(new QToolButton),
|
||||
m_toggleRightSideBarButton(new QToolButton)
|
||||
{
|
||||
(void) new DocumentManager(this);
|
||||
OutputPaneManager::create();
|
||||
@@ -171,7 +172,8 @@ MainWindow::MainWindow() :
|
||||
registerDefaultContainers();
|
||||
registerDefaultActions();
|
||||
|
||||
m_navigationWidget = new NavigationWidget(m_toggleSideBarAction);
|
||||
m_leftNavigationWidget = new NavigationWidget(m_toggleLeftSideBarAction, Side::Left);
|
||||
m_rightNavigationWidget = new NavigationWidget(m_toggleRightSideBarAction, Side::Right);
|
||||
m_rightPaneWidget = new RightPaneWidget();
|
||||
|
||||
m_statusBarManager = new StatusBarManager(this);
|
||||
@@ -184,8 +186,11 @@ MainWindow::MainWindow() :
|
||||
m_progressManager->progressView()->setReferenceWidget(m_modeStack->statusBar());
|
||||
|
||||
connect(qApp, &QApplication::focusChanged, this, &MainWindow::updateFocusWidget);
|
||||
// Add a small Toolbutton for toggling the navigation widget
|
||||
statusBar()->insertPermanentWidget(0, m_toggleSideBarButton);
|
||||
|
||||
// Add small Toolbuttons for toggling the navigation widgets
|
||||
statusBar()->insertPermanentWidget(0, m_toggleLeftSideBarButton);
|
||||
int childsCount = statusBar()->findChildren<QWidget *>(QString(), Qt::FindDirectChildrenOnly).count();
|
||||
statusBar()->insertPermanentWidget(childsCount - 1, m_toggleRightSideBarButton); // before QSizeGrip
|
||||
|
||||
// setUnifiedTitleAndToolBarOnMac(true);
|
||||
//if (HostOsInfo::isAnyUnixHost())
|
||||
@@ -200,22 +205,22 @@ MainWindow::MainWindow() :
|
||||
this, &MainWindow::openDroppedFiles);
|
||||
}
|
||||
|
||||
void MainWindow::setSidebarVisible(bool visible)
|
||||
NavigationWidget *MainWindow::navigationWidget(Side side) const
|
||||
{
|
||||
if (NavigationWidgetPlaceHolder::current()) {
|
||||
if (m_navigationWidget->isSuppressed() && visible) {
|
||||
m_navigationWidget->setShown(true);
|
||||
m_navigationWidget->setSuppressed(false);
|
||||
} else {
|
||||
m_navigationWidget->setShown(visible);
|
||||
}
|
||||
}
|
||||
return side == Side::Left ? m_leftNavigationWidget : m_rightNavigationWidget;
|
||||
}
|
||||
|
||||
void MainWindow::setSuppressNavigationWidget(bool suppress)
|
||||
void MainWindow::setSidebarVisible(bool visible, Side side)
|
||||
{
|
||||
if (NavigationWidgetPlaceHolder::current())
|
||||
m_navigationWidget->setSuppressed(suppress);
|
||||
if (NavigationWidgetPlaceHolder::current(side)) {
|
||||
NavigationWidget *navWidget = navigationWidget(side);
|
||||
if (navWidget->isSuppressed() && visible) {
|
||||
navWidget->setShown(true);
|
||||
navWidget->setSuppressed(false);
|
||||
} else {
|
||||
navWidget->setShown(visible);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::setOverrideColor(const QColor &color)
|
||||
@@ -281,8 +286,10 @@ MainWindow::~MainWindow()
|
||||
PluginManager::removeObject(m_outputView);
|
||||
delete m_outputView;
|
||||
|
||||
delete m_navigationWidget;
|
||||
m_navigationWidget = nullptr;
|
||||
delete m_leftNavigationWidget;
|
||||
delete m_rightNavigationWidget;
|
||||
m_leftNavigationWidget = nullptr;
|
||||
m_rightNavigationWidget = nullptr;
|
||||
|
||||
delete m_editorManager;
|
||||
m_editorManager = nullptr;
|
||||
@@ -341,7 +348,8 @@ void MainWindow::extensionsInitialized()
|
||||
m_statusBarManager->extensionsInitalized();
|
||||
OutputPaneManager::instance()->init();
|
||||
m_vcsManager->extensionsInitialized();
|
||||
m_navigationWidget->setFactories(PluginManager::getObjects<INavigationWidgetFactory>());
|
||||
m_leftNavigationWidget->setFactories(PluginManager::getObjects<INavigationWidgetFactory>());
|
||||
m_rightNavigationWidget->setFactories(PluginManager::getObjects<INavigationWidgetFactory>());
|
||||
|
||||
readSettings();
|
||||
updateContext();
|
||||
@@ -373,7 +381,8 @@ void MainWindow::closeEvent(QCloseEvent *event)
|
||||
|
||||
saveWindowSettings();
|
||||
|
||||
m_navigationWidget->closeSubWidgets();
|
||||
m_leftNavigationWidget->closeSubWidgets();
|
||||
m_rightNavigationWidget->closeSubWidgets();
|
||||
|
||||
event->accept();
|
||||
}
|
||||
@@ -678,21 +687,37 @@ void MainWindow::registerDefaultActions()
|
||||
mwindow->addSeparator(Constants::G_WINDOW_SIZE);
|
||||
}
|
||||
|
||||
// Show Sidebar Action
|
||||
m_toggleSideBarAction = new QAction(Utils::Icons::TOGGLE_SIDEBAR.icon(),
|
||||
QCoreApplication::translate("Core", Constants::TR_SHOW_SIDEBAR),
|
||||
this);
|
||||
m_toggleSideBarAction->setCheckable(true);
|
||||
cmd = ActionManager::registerAction(m_toggleSideBarAction, Constants::TOGGLE_SIDEBAR);
|
||||
// Show Left Sidebar Action
|
||||
m_toggleLeftSideBarAction = new QAction(Utils::Icons::TOGGLE_LEFT_SIDEBAR.icon(),
|
||||
QCoreApplication::translate("Core", Constants::TR_SHOW_LEFT_SIDEBAR),
|
||||
this);
|
||||
m_toggleLeftSideBarAction->setCheckable(true);
|
||||
cmd = ActionManager::registerAction(m_toggleLeftSideBarAction, Constants::TOGGLE_LEFT_SIDEBAR);
|
||||
cmd->setAttribute(Command::CA_UpdateText);
|
||||
cmd->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Ctrl+0") : tr("Alt+0")));
|
||||
connect(m_toggleSideBarAction, &QAction::triggered, this, &MainWindow::setSidebarVisible);
|
||||
ProxyAction *toggleSideBarProxyAction =
|
||||
ProxyAction::proxyActionWithIcon(cmd->action(),
|
||||
Utils::Icons::TOGGLE_SIDEBAR_TOOLBAR.icon());
|
||||
m_toggleSideBarButton->setDefaultAction(toggleSideBarProxyAction);
|
||||
connect(m_toggleLeftSideBarAction, &QAction::triggered,
|
||||
this, [this](bool visible) { setSidebarVisible(visible, Side::Left); });
|
||||
ProxyAction *toggleLeftSideBarProxyAction =
|
||||
ProxyAction::proxyActionWithIcon(cmd->action(), Utils::Icons::TOGGLE_LEFT_SIDEBAR_TOOLBAR.icon());
|
||||
m_toggleLeftSideBarButton->setDefaultAction(toggleLeftSideBarProxyAction);
|
||||
mwindow->addAction(cmd, Constants::G_WINDOW_VIEWS);
|
||||
m_toggleSideBarAction->setEnabled(false);
|
||||
m_toggleLeftSideBarAction->setEnabled(false);
|
||||
|
||||
// Show Right Sidebar Action
|
||||
m_toggleRightSideBarAction = new QAction(Utils::Icons::TOGGLE_RIGHT_SIDEBAR.icon(),
|
||||
QCoreApplication::translate("Core", Constants::TR_SHOW_RIGHT_SIDEBAR),
|
||||
this);
|
||||
m_toggleRightSideBarAction->setCheckable(true);
|
||||
cmd = ActionManager::registerAction(m_toggleRightSideBarAction, Constants::TOGGLE_RIGHT_SIDEBAR);
|
||||
cmd->setAttribute(Command::CA_UpdateText);
|
||||
cmd->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Ctrl+Meta+0") : tr("Ctrl+Shift+0")));
|
||||
connect(m_toggleRightSideBarAction, &QAction::triggered,
|
||||
this, [this](bool visible) { setSidebarVisible(visible, Side::Right); });
|
||||
ProxyAction *toggleRightSideBarProxyAction =
|
||||
ProxyAction::proxyActionWithIcon(cmd->action(), Utils::Icons::TOGGLE_RIGHT_SIDEBAR_TOOLBAR.icon());
|
||||
m_toggleRightSideBarButton->setDefaultAction(toggleRightSideBarProxyAction);
|
||||
mwindow->addAction(cmd, Constants::G_WINDOW_VIEWS);
|
||||
m_toggleRightSideBarButton->setEnabled(false);
|
||||
|
||||
// Show Mode Selector Action
|
||||
m_toggleModeSelectorAction = new QAction(tr("Show Mode Selector"), this);
|
||||
@@ -959,7 +984,8 @@ void MainWindow::readSettings()
|
||||
settings->endGroup();
|
||||
|
||||
EditorManagerPrivate::readSettings();
|
||||
m_navigationWidget->restoreSettings(settings);
|
||||
m_leftNavigationWidget->restoreSettings(settings);
|
||||
m_rightNavigationWidget->restoreSettings(settings);
|
||||
m_rightPaneWidget->readSettings(settings);
|
||||
}
|
||||
|
||||
@@ -976,7 +1002,8 @@ void MainWindow::saveSettings()
|
||||
DocumentManager::saveSettings();
|
||||
ActionManager::saveSettings();
|
||||
EditorManagerPrivate::saveSettings();
|
||||
m_navigationWidget->saveSettings(settings);
|
||||
m_leftNavigationWidget->saveSettings(settings);
|
||||
m_rightNavigationWidget->saveSettings(settings);
|
||||
}
|
||||
|
||||
void MainWindow::saveWindowSettings()
|
||||
|
||||
Reference in New Issue
Block a user