diff --git a/src/plugins/coreplugin/coreconstants.h b/src/plugins/coreplugin/coreconstants.h index 5b997d30ebe1ef99f723e7ef2f35f60565aa47e9..1bdc864a0743fecbc15846c154cff43cbde5f2c2 100644 --- a/src/plugins/coreplugin/coreconstants.h +++ b/src/plugins/coreplugin/coreconstants.h @@ -98,6 +98,7 @@ const char EXIT[] = "QtCreator.Exit"; const char OPTIONS[] = "QtCreator.Options"; const char TOGGLE_SIDEBAR[] = "QtCreator.ToggleSidebar"; +const char TOGGLE_MODE_SELECTOR[] = "QtCreator.ToggleModeSelector"; const char TOGGLE_FULLSCREEN[] = "QtCreator.ToggleFullScreen"; const char MINIMIZE_WINDOW[] = "QtCreator.MinimizeWindow"; diff --git a/src/plugins/coreplugin/fancytabwidget.cpp b/src/plugins/coreplugin/fancytabwidget.cpp index c4079e4d91870a9e644e6000b9a3c9adf28a5ce3..4ef2fc897a36ad25858059d1de2318f88f7cf1d7 100644 --- a/src/plugins/coreplugin/fancytabwidget.cpp +++ b/src/plugins/coreplugin/fancytabwidget.cpp @@ -427,8 +427,14 @@ FancyTabWidget::FancyTabWidget(QWidget *parent) connect(m_tabBar, SIGNAL(currentChanged(int)), this, SLOT(showWidget(int))); } -void FancyTabWidget::setSelectionWidgetHidden(bool hidden) { - m_selectionWidget->setHidden(hidden); +void FancyTabWidget::setSelectionWidgetVisible(bool visible) +{ + m_selectionWidget->setVisible(visible); +} + +bool FancyTabWidget::isSelectionWidgetVisible() const +{ + return m_selectionWidget->isVisible(); } void FancyTabWidget::insertTab(int index, QWidget *tab, const QIcon &icon, const QString &label) @@ -456,17 +462,19 @@ void FancyTabWidget::setBackgroundBrush(const QBrush &brush) void FancyTabWidget::paintEvent(QPaintEvent *event) { Q_UNUSED(event) - QPainter painter(this); - - QRect rect = m_selectionWidget->rect().adjusted(0, 0, 1, 0); - rect = style()->visualRect(layoutDirection(), geometry(), rect); - Utils::StyleHelper::verticalGradient(&painter, rect, rect); - painter.setPen(Utils::StyleHelper::borderColor()); - painter.drawLine(rect.topRight(), rect.bottomRight()); - - QColor light = Utils::StyleHelper::sidebarHighlight(); - painter.setPen(light); - painter.drawLine(rect.bottomLeft(), rect.bottomRight()); + if (m_selectionWidget->isVisible()) { + QPainter painter(this); + + QRect rect = m_selectionWidget->rect().adjusted(0, 0, 1, 0); + rect = style()->visualRect(layoutDirection(), geometry(), rect); + Utils::StyleHelper::verticalGradient(&painter, rect, rect); + painter.setPen(Utils::StyleHelper::borderColor()); + painter.drawLine(rect.topRight(), rect.bottomRight()); + + QColor light = Utils::StyleHelper::sidebarHighlight(); + painter.setPen(light); + painter.drawLine(rect.bottomLeft(), rect.bottomRight()); + } } void FancyTabWidget::insertCornerWidget(int pos, QWidget *widget) diff --git a/src/plugins/coreplugin/fancytabwidget.h b/src/plugins/coreplugin/fancytabwidget.h index b1556b82a8de3fb44f1839c07751b7cb04f69407..45441df4a5ae0b2483d667a74943367e895e245a 100644 --- a/src/plugins/coreplugin/fancytabwidget.h +++ b/src/plugins/coreplugin/fancytabwidget.h @@ -159,13 +159,15 @@ public: void setTabEnabled(int index, bool enable); bool isTabEnabled(int index) const; + bool isSelectionWidgetVisible() const; + signals: void currentAboutToShow(int index); void currentChanged(int index); public slots: void setCurrentIndex(int index); - void setSelectionWidgetHidden(bool hidden); + void setSelectionWidgetVisible(bool visible); private slots: void showWidget(int index); diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index 49468aba65c3d6a707eaa6e95316fcd499effff1..7edb9df5da6749e5f44ef8f433ce6c7a7b6e4e56 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -139,6 +139,7 @@ MainWindow::MainWindow() : m_modeManager(0), m_mimeDatabase(new MimeDatabase), m_helpManager(new HelpManager), + m_modeStack(new FancyTabWidget(this)), m_navigationWidget(0), m_rightPaneWidget(0), m_versionDialog(0), @@ -195,14 +196,14 @@ MainWindow::MainWindow() : setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea); setCorner(Qt::BottomRightCorner, Qt::BottomDockWidgetArea); + m_modeManager = new ModeManager(this, m_modeStack); + registerDefaultContainers(); registerDefaultActions(); m_navigationWidget = new NavigationWidget(m_toggleSideBarAction); m_rightPaneWidget = new RightPaneWidget(); - m_modeStack = new FancyTabWidget(this); - m_modeManager = new ModeManager(this, m_modeStack); m_statusBarManager = new StatusBarManager(this); m_messageManager = new MessageManager; m_editorManager = new EditorManager(this); @@ -727,6 +728,12 @@ void MainWindow::registerDefaultActions() mwindow->addAction(cmd, Constants::G_WINDOW_VIEWS); m_toggleSideBarAction->setEnabled(false); + // Show Mode Selector Action + m_toggleModeSelectorAction = new QAction(tr("Show Mode Selector"), this); + m_toggleModeSelectorAction->setCheckable(true); + cmd = ActionManager::registerAction(m_toggleModeSelectorAction, Constants::TOGGLE_MODE_SELECTOR, globalContext); + connect(m_toggleModeSelectorAction, SIGNAL(triggered(bool)), ModeManager::instance(), SLOT(setModeSelectorVisible(bool))); + mwindow->addAction(cmd, Constants::G_WINDOW_VIEWS); #if defined(Q_OS_MAC) const QString fullScreenActionText(tr("Enter Full Screen")); @@ -1169,6 +1176,7 @@ static const char settingsGroup[] = "MainWindow"; static const char colorKey[] = "Color"; static const char windowGeometryKey[] = "WindowGeometry"; static const char windowStateKey[] = "WindowState"; +static const char modeSelectorVisibleKey[] = "ModeSelectorVisible"; void MainWindow::readSettings() { @@ -1188,6 +1196,10 @@ void MainWindow::readSettings() resize(1008, 700); // size without window decoration restoreState(m_settings->value(QLatin1String(windowStateKey)).toByteArray()); + bool modeSelectorVisible = m_settings->value(QLatin1String(modeSelectorVisibleKey), true).toBool(); + ModeManager::instance()->setModeSelectorVisible(modeSelectorVisible); + m_toggleModeSelectorAction->setChecked(modeSelectorVisible); + m_settings->endGroup(); m_editorManager->readSettings(); @@ -1204,6 +1216,7 @@ void MainWindow::writeSettings() m_settings->setValue(QLatin1String(windowGeometryKey), saveGeometry()); m_settings->setValue(QLatin1String(windowStateKey), saveState()); + m_settings->setValue(QLatin1String(modeSelectorVisibleKey), ModeManager::isModeSelectorVisible()); m_settings->endGroup(); diff --git a/src/plugins/coreplugin/mainwindow.h b/src/plugins/coreplugin/mainwindow.h index 0fc5c4172dd0976c33b01a5fca975493dbc2c22a..51b702ef9d2a63ff91b776ec0820395d0ab35324 100644 --- a/src/plugins/coreplugin/mainwindow.h +++ b/src/plugins/coreplugin/mainwindow.h @@ -216,6 +216,7 @@ private: QAction *m_exitAction; QAction *m_optionsAction; QAction *m_toggleSideBarAction; + QAction *m_toggleModeSelectorAction; QAction *m_toggleFullScreenAction; QAction *m_minimizeAction; QAction *m_zoomAction; diff --git a/src/plugins/coreplugin/modemanager.cpp b/src/plugins/coreplugin/modemanager.cpp index 21407245332756677490af14506cc93bd2b77e2b..f1f019be140b3b56241116c4d73cc7758b88c4cf 100644 --- a/src/plugins/coreplugin/modemanager.cpp +++ b/src/plugins/coreplugin/modemanager.cpp @@ -337,9 +337,14 @@ void ModeManager::setFocusToCurrentMode() } } -void ModeManager::setModeBarHidden(bool hidden) +void ModeManager::setModeSelectorVisible(bool visible) { - d->m_modeStack->setSelectionWidgetHidden(hidden); + d->m_modeStack->setSelectionWidgetVisible(visible); +} + +bool ModeManager::isModeSelectorVisible() +{ + return d->m_modeStack->isSelectionWidgetVisible(); } ModeManager *ModeManager::instance() diff --git a/src/plugins/coreplugin/modemanager.h b/src/plugins/coreplugin/modemanager.h index 311b902e589511e9d84aa6dec0545a8eb8c68e3d..caf17cada03250c1d38024e73141d680c21c1967 100644 --- a/src/plugins/coreplugin/modemanager.h +++ b/src/plugins/coreplugin/modemanager.h @@ -66,9 +66,12 @@ public: static void addWidget(QWidget *widget); static void activateModeType(Id type); - static void setModeBarHidden(bool hidden); static void activateMode(Id id); static void setFocusToCurrentMode(); + static bool isModeSelectorVisible(); + +public slots: + void setModeSelectorVisible(bool visible); signals: void currentModeAboutToChange(Core::IMode *mode);