From 5c0493267c859dbfa63c24c9a46580bb0fdea20c Mon Sep 17 00:00:00 2001 From: Eberhard Graether Date: Thu, 17 Dec 2015 14:28:47 +0100 Subject: [PATCH] ui: Added option for hiding dock widge title bars to view menu --- bin/app/data/gui/tooltip.css | 5 ++ src/lib_gui/qt/window/QtMainWindow.cpp | 79 ++++++++++++++++++++------ src/lib_gui/qt/window/QtMainWindow.h | 7 +++ 3 files changed, 74 insertions(+), 17 deletions(-) create mode 100644 bin/app/data/gui/tooltip.css diff --git a/bin/app/data/gui/tooltip.css b/bin/app/data/gui/tooltip.css new file mode 100644 index 00000000..cb2084a4 --- /dev/null +++ b/bin/app/data/gui/tooltip.css @@ -0,0 +1,5 @@ +QToolTip { + background-color: #E0E0E0; + color: black; + font-size: pt; +} diff --git a/src/lib_gui/qt/window/QtMainWindow.cpp b/src/lib_gui/qt/window/QtMainWindow.cpp index 30abdf06..1d1a2f89 100644 --- a/src/lib_gui/qt/window/QtMainWindow.cpp +++ b/src/lib_gui/qt/window/QtMainWindow.cpp @@ -79,6 +79,7 @@ bool MouseReleaseFilter::eventFilter(QObject* obj, QEvent* event) } QtMainWindow::QtMainWindow() + : m_showDockWidgetTitleBars(true) { setObjectName("QtMainWindow"); setCentralWidget(nullptr); @@ -126,8 +127,13 @@ void QtMainWindow::addView(View* view) QDockWidget* dock = new QDockWidget(tr(view->getName().c_str()), this); dock->setWidget(QtViewWidgetWrapper::getWidgetOfView(view)); dock->setObjectName(QString::fromStdString("Dock" + view->getName())); - //dock->setFeatures(QDockWidget::NoDockWidgetFeatures); - //dock->setTitleBarWidget(new QWidget()); + + if (!m_showDockWidgetTitleBars) + { + dock->setFeatures(QDockWidget::NoDockWidgetFeatures); + dock->setTitleBarWidget(new QWidget()); + } + addDockWidget(Qt::TopDockWidgetArea, dock); QtViewToggle* toggle = new QtViewToggle(view, this); @@ -181,6 +187,7 @@ void QtMainWindow::loadLayout() { showMaximized(); } + setShowDockWidgetTitleBars(settings.value("showTitleBars", true).toBool()); settings.endGroup(); this->restoreState(settings.value("DOCK_LOCATIONS").toByteArray()); @@ -202,6 +209,7 @@ void QtMainWindow::saveLayout() settings.setValue("size", size()); settings.setValue("position", pos()); } + settings.setValue("showTitleBars", m_showDockWidgetTitleBars); settings.endGroup(); settings.setValue("DOCK_LOCATIONS", this->saveState()); @@ -401,22 +409,22 @@ void QtMainWindow::saveAsProject() void QtMainWindow::undo() { - MessageUndo().dispatch(); + MessageUndo().dispatch(); } void QtMainWindow::redo() { - MessageRedo().dispatch(); + MessageRedo().dispatch(); } void QtMainWindow::zoomIn() { - MessageZoom(true).dispatch(); + MessageZoom(true).dispatch(); } void QtMainWindow::zoomOut() { - MessageZoom(false).dispatch(); + MessageZoom(false).dispatch(); } void QtMainWindow::switchColorScheme() @@ -473,13 +481,13 @@ void QtMainWindow::setupProjectMenu() for (int i = 0; i < ApplicationSettings::MaximalAmountOfRecentProjects; ++i) { - m_recentProjectAction[i] = new QAction(this); - m_recentProjectAction[i]->setVisible(false); - connect(m_recentProjectAction[i], SIGNAL(triggered()), - this, SLOT(openRecentProject())); - recentProjectMenu->addAction(m_recentProjectAction[i]); - } - updateRecentProjectMenu(); + m_recentProjectAction[i] = new QAction(this); + m_recentProjectAction[i]->setVisible(false); + connect(m_recentProjectAction[i], SIGNAL(triggered()), + this, SLOT(openRecentProject())); + recentProjectMenu->addAction(m_recentProjectAction[i]); + } + updateRecentProjectMenu(); menu->addMenu(recentProjectMenu); @@ -491,10 +499,10 @@ void QtMainWindow::setupProjectMenu() void QtMainWindow::openRecentProject() { QAction *action = qobject_cast(sender()); - if (action) - { - openProject(action->data().toString()); - } + if (action) + { + openProject(action->data().toString()); + } } void QtMainWindow::updateRecentProjectMenu() @@ -521,6 +529,11 @@ void QtMainWindow::setWindowSettingsPath(const std::string& windowSettingsPath) m_windowSettingsPath = windowSettingsPath; } +void QtMainWindow::toggleShowDockWidgetTitleBars() +{ + setShowDockWidgetTitleBars(!m_showDockWidgetTitleBars); +} + void QtMainWindow::setupEditMenu() { QMenu *menu = new QMenu(tr("&Edit"), this); @@ -551,6 +564,14 @@ void QtMainWindow::setupViewMenu() QMenu *menu = new QMenu(tr("&View"), this); menuBar()->addMenu(menu); + m_showTitleBarsAction = new QAction("Show Title Bars", this); + m_showTitleBarsAction->setCheckable(true); + m_showTitleBarsAction->setChecked(m_showDockWidgetTitleBars); + connect(m_showTitleBarsAction, SIGNAL(triggered()), this, SLOT(toggleShowDockWidgetTitleBars())); + menu->addAction(m_showTitleBarsAction); + + menu->addSeparator(); + m_viewSeparator = menu->addSeparator(); menu->addAction(tr("Larger font"), this, SLOT(zoomIn()), QKeySequence::ZoomIn); @@ -606,3 +627,27 @@ QtMainWindow::DockWidget* QtMainWindow::getDockWidgetForView(View* view) LOG_ERROR("DockWidget was not found for view."); return nullptr; } + +void QtMainWindow::setShowDockWidgetTitleBars(bool showTitleBars) +{ + m_showDockWidgetTitleBars = showTitleBars; + + if (m_showTitleBarsAction) + { + m_showTitleBarsAction->setChecked(showTitleBars); + } + + for (DockWidget& dock : m_dockWidgets) + { + if (showTitleBars) + { + dock.widget->setFeatures(QDockWidget::AllDockWidgetFeatures); + dock.widget->setTitleBarWidget(nullptr); + } + else + { + dock.widget->setFeatures(QDockWidget::NoDockWidgetFeatures); + dock.widget->setTitleBarWidget(new QWidget()); + } + } +} diff --git a/src/lib_gui/qt/window/QtMainWindow.h b/src/lib_gui/qt/window/QtMainWindow.h index 5465bb69..7e8fdf41 100644 --- a/src/lib_gui/qt/window/QtMainWindow.h +++ b/src/lib_gui/qt/window/QtMainWindow.h @@ -113,6 +113,9 @@ public slots: static void setWindowSettingsPath(const std::string& windowSettingsPath); +private slots: + void toggleShowDockWidgetTitleBars(); + private: struct DockWidget { @@ -132,10 +135,14 @@ private: DockWidget* getDockWidgetForView(View* view); + void setShowDockWidgetTitleBars(bool showTitleBars); + std::vector m_dockWidgets; QMenu* m_viewMenu; QAction* m_viewSeparator; QAction** m_recentProjectAction; + QAction* m_showTitleBarsAction; + bool m_showDockWidgetTitleBars; std::shared_ptr m_applicationSettingsScreen; std::shared_ptr m_startScreen;