From 1d744ad16d8569ff02223299158ebce58d1d3ec5 Mon Sep 17 00:00:00 2001 From: Jeremy Bullock Date: Thu, 4 Jun 2020 00:29:27 -0600 Subject: [PATCH] Hide Panel Titlebars (#41) * Hide Titlebars * All panels (except viewers) --- toonz/sources/toonz/menubar.cpp | 19 +++++++++ toonz/sources/toonz/pane.cpp | 14 ++++-- toonz/sources/toonz/pane.h | 6 ++- toonz/sources/toonz/tapp.cpp | 44 ++++++++++++++++++- toonz/sources/toonz/tapp.h | 8 ++++ toonz/sources/toonz/tpanels.cpp | 76 +++++++++++++++++++++++++++++++-- 6 files changed, 158 insertions(+), 9 deletions(-) diff --git a/toonz/sources/toonz/menubar.cpp b/toonz/sources/toonz/menubar.cpp index e605b0d3..903eb3a2 100644 --- a/toonz/sources/toonz/menubar.cpp +++ b/toonz/sources/toonz/menubar.cpp @@ -71,6 +71,7 @@ RoomTabWidget::RoomTabWidget(QWidget *parent) , m_isLocked(LockRoomTabToggle != 0) { m_renameTextField->hide(); DockingCheck::instance()->setIsEnabled(LockRoomTabToggle != 0); + TApp::instance()->setShowTitleBars(LockRoomTabToggle == 0); connect(m_renameTextField, SIGNAL(editingFinished()), this, SLOT(updateTabName())); } @@ -95,6 +96,19 @@ void RoomTabWidget::swapIndex(int firstIndex, int secondIndex) { void RoomTabWidget::mousePressEvent(QMouseEvent *event) { m_renameTextField->hide(); if (event->button() == Qt::LeftButton) { + if (event->modifiers() == (Qt::ControlModifier | Qt::AltModifier)) { + TApp::instance()->setCanHideTitleBars( + !TApp::instance()->getCanHideTitleBars()); + bool canHide = TApp::instance()->getCanHideTitleBars(); + if (m_isLocked && !canHide) { + TApp::instance()->sendShowTitleBars(true, true); + } else if (m_isLocked && canHide) { + TApp::instance()->sendShowTitleBars(false, true); + } else if (!m_isLocked) { + TApp::instance()->sendShowTitleBars(true, true); + } + return; + } m_clickedTabIndex = tabAt(event->pos()); if (m_clickedTabIndex < 0) return; setCurrentIndex(m_clickedTabIndex); @@ -207,6 +221,11 @@ void RoomTabWidget::setIsLocked(bool lock) { m_isLocked = lock; LockRoomTabToggle = (lock) ? 1 : 0; DockingCheck::instance()->setIsEnabled(lock); + if (m_isLocked) { + TApp::instance()->sendShowTitleBars(false); + } else { + TApp::instance()->sendShowTitleBars(true, true); + } } //----------------------------------------------------------------------------- diff --git a/toonz/sources/toonz/pane.cpp b/toonz/sources/toonz/pane.cpp index a7eebeb4..e78003ef 100644 --- a/toonz/sources/toonz/pane.cpp +++ b/toonz/sources/toonz/pane.cpp @@ -104,6 +104,10 @@ void TPanel::paintEvent(QPaintEvent *e) { painter.drawRect(dockRect); } + if (m_floating && !m_panelTitleBar->isVisible()) { + m_panelTitleBar->showTitleBar(true); + } + painter.end(); } @@ -127,6 +131,9 @@ void TPanel::onCloseButtonPressed() { void TPanel::enterEvent(QEvent *event) { // Only when Toonz application is active QWidget *w = qApp->activeWindow(); + // if (m_floating) { + // m_panelTitleBar->showTitleBar(true); + //} if (w) { // grab the focus, unless a line-edit is focused currently bool shouldSetFocus = true; @@ -243,10 +250,9 @@ void TPanelTitleBarButton::setPressed(bool pressed) { void TPanelTitleBarButton::paintEvent(QPaintEvent *event) { QPainter painter(this); - painter.drawPixmap(0, 0, - m_pressed - ? m_pressedPixmap - : m_rollover ? m_rolloverPixmap : m_standardPixmap); + painter.drawPixmap( + 0, 0, m_pressed ? m_pressedPixmap : m_rollover ? m_rolloverPixmap + : m_standardPixmap); painter.end(); } diff --git a/toonz/sources/toonz/pane.h b/toonz/sources/toonz/pane.h index 70388b4c..4501a5d7 100644 --- a/toonz/sources/toonz/pane.h +++ b/toonz/sources/toonz/pane.h @@ -162,6 +162,9 @@ signals: void closeButtonPressed(); void doubleClick(QMouseEvent *me); + +public slots: + void showTitleBar(bool on) { setVisible(on); } }; //----------------------------------------------------------------------------- @@ -260,7 +263,8 @@ signals: //----------------------------------------------------------------------------- -class TPanelFactory { +class TPanelFactory : public QObject { + Q_OBJECT QString m_panelType; static QMap &tableInstance(); diff --git a/toonz/sources/toonz/tapp.cpp b/toonz/sources/toonz/tapp.cpp index a83c8c44..436a8413 100644 --- a/toonz/sources/toonz/tapp.cpp +++ b/toonz/sources/toonz/tapp.cpp @@ -2,6 +2,8 @@ #include "tapp.h" +#include "tenv.h" + // Tnz6 includes #include "cleanupsettingspopup.h" #include "iocommand.h" @@ -84,6 +86,9 @@ std::pair getCurrentDpi() { } // namespace +TEnv::IntVar ShowTitleBarsWhenLocked("ShowTitleBarsWhenLocked", 0); +TEnv::IntVar CanHideTitleBarsWhenLocked("CanHideTitleBarsWhenLocked", 1); + //============================================================================= // TApp //----------------------------------------------------------------------------- @@ -103,7 +108,9 @@ TApp::TApp() , m_autosaveTimer(0) , m_autosaveSuspended(false) , m_isStarting(false) - , m_isPenCloseToTablet(false) { + , m_isPenCloseToTablet(false) + , m_canHideTitleBars(CanHideTitleBarsWhenLocked == 1 ? true : false) + , m_showTitleBars(ShowTitleBarsWhenLocked == 1 ? true : false) { m_currentScene = new TSceneHandle(); m_currentXsheet = new TXsheetHandle(); m_currentFrame = new TFrameHandle(); @@ -207,6 +214,8 @@ TApp::TApp() UnitParameters::setCurrentDpiGetter(getCurrentDpi); assert(ret); + + if (!m_canHideTitleBars) m_showTitleBars = true; } //----------------------------------------------------------------------------- @@ -733,3 +742,36 @@ QString TApp::getCurrentRoomName() const { //----------------------------------------------------------------------------- void TApp::showMessage(QString message) { emit(sendMessage(message)); } + +//----------------------------------------------------------------------------- + +void TApp::sendShowTitleBars(bool on, bool force) { + if (m_canHideTitleBars || force) { + m_showTitleBars = on; + ShowTitleBarsWhenLocked = on ? 1 : 0; + emit(showTitleBars(on)); + } else if (!m_canHideTitleBars) { + m_showTitleBars = true; + ShowTitleBarsWhenLocked = 1; + emit(showTitleBars(true)); + } +} + +//----------------------------------------------------------------------------- + +void TApp::setShowTitleBars(bool on) { + if (m_canHideTitleBars) { + m_showTitleBars = on; + ShowTitleBarsWhenLocked = on ? 1 : 0; + } else { + m_showTitleBars = true; + ShowTitleBarsWhenLocked = 1; + } +} + +//----------------------------------------------------------------------------- + +void TApp::setCanHideTitleBars(bool on) { + m_canHideTitleBars = on; + CanHideTitleBarsWhenLocked = on ? 1 : 0; +} diff --git a/toonz/sources/toonz/tapp.h b/toonz/sources/toonz/tapp.h index 5d46e21d..9f94d7e5 100644 --- a/toonz/sources/toonz/tapp.h +++ b/toonz/sources/toonz/tapp.h @@ -206,9 +206,16 @@ public: XsheetViewer *getCurrentXsheetViewer() const { return m_xsheetViewer; } void showMessage(QString message); + void sendShowTitleBars(bool on, bool force = false); + bool getShowTitleBars() { return m_showTitleBars; } + void setShowTitleBars(bool on); + bool getCanHideTitleBars() { return m_canHideTitleBars; } + void setCanHideTitleBars(bool on); protected: bool eventFilter(QObject *obj, QEvent *event) override; + bool m_showTitleBars = true; + bool m_canHideTitleBars = false; private: void updateXshLevel(); @@ -249,6 +256,7 @@ signals: // QTBUG-53628. void tabletLeft(); void sendMessage(QString); + void showTitleBars(bool); void activeViewerChanged(); // TODO: put widgets-related stuffs in some new handle diff --git a/toonz/sources/toonz/tpanels.cpp b/toonz/sources/toonz/tpanels.cpp index feedbaf9..70cb1dd2 100644 --- a/toonz/sources/toonz/tpanels.cpp +++ b/toonz/sources/toonz/tpanels.cpp @@ -96,6 +96,9 @@ public: void initialize(TPanel *panel) override { panel->setWidget(new XsheetViewer(panel)); panel->resize(500, 300); + panel->getTitleBar()->showTitleBar(TApp::instance()->getShowTitleBars()); + connect(TApp::instance(), SIGNAL(showTitleBars(bool)), panel->getTitleBar(), + SLOT(showTitleBar(bool))); } } xsheetViewerFactory; @@ -111,6 +114,9 @@ public: XsheetViewer *xsh = (XsheetViewer *)panel->widget(); xsh->flipOrientation(); panel->resize(500, 300); + panel->getTitleBar()->showTitleBar(TApp::instance()->getShowTitleBars()); + connect(TApp::instance(), SIGNAL(showTitleBars(bool)), panel->getTitleBar(), + SLOT(showTitleBar(bool))); } } timelineViewerFactory; @@ -122,7 +128,7 @@ public: // SchematicSceneViewerFactory //--------------------------------------------------------- -class SchematicSceneViewerFactory final : public QObject, public TPanelFactory { +class SchematicSceneViewerFactory : public TPanelFactory { public: SchematicSceneViewerFactory() : TPanelFactory("Schematic") {} @@ -131,6 +137,9 @@ public: panel->setObjectName(getPanelType()); panel->setWindowTitle(QObject::tr("Schematic")); panel->setMinimumSize(230, 200); + panel->getTitleBar()->showTitleBar(TApp::instance()->getShowTitleBars()); + connect(TApp::instance(), SIGNAL(showTitleBars(bool)), panel->getTitleBar(), + SLOT(showTitleBar(bool))); return panel; } @@ -575,7 +584,9 @@ public: PaletteViewerPanel *panel = new PaletteViewerPanel(parent); panel->setObjectName(getPanelType()); panel->setWindowTitle(QObject::tr(("Level Palette"))); - + panel->getTitleBar()->showTitleBar(TApp::instance()->getShowTitleBars()); + connect(TApp::instance(), SIGNAL(showTitleBars(bool)), panel->getTitleBar(), + SLOT(showTitleBar(bool))); return panel; } @@ -648,7 +659,9 @@ public: StudioPaletteViewerPanel *panel = new StudioPaletteViewerPanel(parent); panel->setObjectName(getPanelType()); panel->setWindowTitle(QObject::tr("Studio Palette")); - + panel->getTitleBar()->showTitleBar(TApp::instance()->getShowTitleBars()); + connect(TApp::instance(), SIGNAL(showTitleBars(bool)), panel->getTitleBar(), + SLOT(showTitleBar(bool))); return panel; } @@ -840,6 +853,9 @@ public: StyleEditorPanel *panel = new StyleEditorPanel(parent); panel->setObjectName(getPanelType()); panel->setWindowTitle(QObject::tr("Style Editor")); + panel->getTitleBar()->showTitleBar(TApp::instance()->getShowTitleBars()); + connect(TApp::instance(), SIGNAL(showTitleBars(bool)), panel->getTitleBar(), + SLOT(showTitleBar(bool))); return panel; } @@ -863,6 +879,9 @@ public: panel->setFixedWidth(45); // 35 toolbar->setFixedWidth(35); panel->setWindowTitle(QString("")); + panel->getTitleBar()->showTitleBar(TApp::instance()->getShowTitleBars()); + connect(TApp::instance(), SIGNAL(showTitleBars(bool)), panel->getTitleBar(), + SLOT(showTitleBar(bool))); } } toolbarFactory; @@ -885,6 +904,9 @@ public: TPanel *createPanel(QWidget *parent) override { TPanel *panel = new CommandBarPanel(parent); panel->setObjectName(getPanelType()); + panel->getTitleBar()->showTitleBar(TApp::instance()->getShowTitleBars()); + connect(TApp::instance(), SIGNAL(showTitleBars(bool)), panel->getTitleBar(), + SLOT(showTitleBar(bool))); return panel; } void initialize(TPanel *panel) override {} @@ -923,6 +945,9 @@ public: panel->setObjectName(getPanelType()); panel->setWindowTitle(getPanelType()); panel->resize(600, panel->height()); + panel->getTitleBar()->showTitleBar(TApp::instance()->getShowTitleBars()); + connect(TApp::instance(), SIGNAL(showTitleBars(bool)), panel->getTitleBar(), + SLOT(showTitleBar(bool))); return panel; } void initialize(TPanel *panel) override { assert(0); } @@ -1036,6 +1061,9 @@ public: void initialize(TPanel *panel) override { panel->setWindowTitle(QObject::tr("Tasks")); panel->setWidget(new TasksViewer(panel)); + panel->getTitleBar()->showTitleBar(TApp::instance()->getShowTitleBars()); + connect(TApp::instance(), SIGNAL(showTitleBars(bool)), panel->getTitleBar(), + SLOT(showTitleBar(bool))); } } tasksViewerFactory; @@ -1045,6 +1073,9 @@ public: void initialize(TPanel *panel) override { panel->setWindowTitle(QObject::tr("Batch Servers")); panel->setWidget(new BatchServersViewer(panel)); + panel->getTitleBar()->showTitleBar(TApp::instance()->getShowTitleBars()); + connect(TApp::instance(), SIGNAL(showTitleBars(bool)), panel->getTitleBar(), + SLOT(showTitleBar(bool))); } } batchServersViewerFactory; @@ -1055,6 +1086,9 @@ public: FileBrowser *browser = new FileBrowser(panel, 0, false, true); panel->setWidget(browser); panel->setWindowTitle(QObject::tr("File Browser")); + panel->getTitleBar()->showTitleBar(TApp::instance()->getShowTitleBars()); + connect(TApp::instance(), SIGNAL(showTitleBars(bool)), panel->getTitleBar(), + SLOT(showTitleBar(bool))); TFilePath currentProjectFolder = TProjectManager::instance()->getCurrentProjectPath().getParentDir(); browser->setFolder(currentProjectFolder, true); @@ -1072,6 +1106,9 @@ public: void initialize(TPanel *panel) override { panel->setWidget(new CastBrowser(panel)); panel->setWindowTitle(QObject::tr("Scene Cast")); + panel->getTitleBar()->showTitleBar(TApp::instance()->getShowTitleBars()); + connect(TApp::instance(), SIGNAL(showTitleBars(bool)), panel->getTitleBar(), + SLOT(showTitleBar(bool))); } } castViewerFactory; @@ -1086,6 +1123,9 @@ public: Filmstrip *filmstrip = new Filmstrip(panel); panel->setWidget(filmstrip); panel->setIsMaximizable(false); + panel->getTitleBar()->showTitleBar(TApp::instance()->getShowTitleBars()); + connect(TApp::instance(), SIGNAL(showTitleBars(bool)), panel->getTitleBar(), + SLOT(showTitleBar(bool))); } } filmStripFactory; //============================================================================= @@ -1100,6 +1140,9 @@ public: ExportPanel *panel = new ExportPanel(parent); panel->setObjectName(getPanelType()); panel->setWindowTitle(QObject::tr("Export")); + panel->getTitleBar()->showTitleBar(TApp::instance()->getShowTitleBars()); + connect(TApp::instance(), SIGNAL(showTitleBars(bool)), panel->getTitleBar(), + SLOT(showTitleBar(bool))); return panel; } @@ -1119,6 +1162,9 @@ public: void initialize(TPanel *panel) override { panel->setWidget(new ColorModelViewer(panel)); panel->resize(400, 300); + panel->getTitleBar()->showTitleBar(TApp::instance()->getShowTitleBars()); + connect(TApp::instance(), SIGNAL(showTitleBars(bool)), panel->getTitleBar(), + SLOT(showTitleBar(bool))); } } colorModelViewerFactory; @@ -1134,6 +1180,9 @@ public: FunctionViewerPanel *panel = new FunctionViewerPanel(parent); panel->setObjectName(getPanelType()); panel->setWindowTitle(QObject::tr("Function Editor")); + panel->getTitleBar()->showTitleBar(TApp::instance()->getShowTitleBars()); + connect(TApp::instance(), SIGNAL(showTitleBars(bool)), panel->getTitleBar(), + SLOT(showTitleBar(bool))); return panel; } @@ -1156,6 +1205,9 @@ public: panel->setWindowTitle(QObject::tr("Message Center")); panel->setWidget(new TMessageViewer(panel)); panel->setMinimumHeight(80); + panel->getTitleBar()->showTitleBar(TApp::instance()->getShowTitleBars()); + connect(TApp::instance(), SIGNAL(showTitleBars(bool)), panel->getTitleBar(), + SLOT(showTitleBar(bool))); } } TMessageViewerFactory; @@ -1173,6 +1225,9 @@ public: TPanel *createPanel(QWidget *parent) override { ScriptConsolePanel *panel = new ScriptConsolePanel(parent); panel->setObjectName(getPanelType()); + panel->getTitleBar()->showTitleBar(TApp::instance()->getShowTitleBars()); + connect(TApp::instance(), SIGNAL(showTitleBars(bool)), panel->getTitleBar(), + SLOT(showTitleBar(bool))); // panel->setWindowTitle(QObject::tr("Function Editor")); // panel->setMinimumSize(220, 200); @@ -1289,6 +1344,9 @@ public: void initialize(TPanel *panel) override { panel->setWidget(new CleanupSettingsPane(panel)); panel->setIsMaximizable(false); + panel->getTitleBar()->showTitleBar(TApp::instance()->getShowTitleBars()); + connect(TApp::instance(), SIGNAL(showTitleBars(bool)), panel->getTitleBar(), + SLOT(showTitleBar(bool))); } } cleanupSettingsFactory; @@ -1312,6 +1370,9 @@ public: panel->setWidget(historyPane); panel->setWindowTitle(QObject::tr("History")); panel->setIsMaximizable(false); + panel->getTitleBar()->showTitleBar(TApp::instance()->getShowTitleBars()); + connect(TApp::instance(), SIGNAL(showTitleBars(bool)), panel->getTitleBar(), + SLOT(showTitleBar(bool))); } } historyPanelFactory; @@ -1335,6 +1396,9 @@ public: panel->setWidget(stopMotionController); panel->setWindowTitle(QObject::tr("Stop Motion Controller")); panel->setIsMaximizable(false); + panel->getTitleBar()->showTitleBar(TApp::instance()->getShowTitleBars()); + connect(TApp::instance(), SIGNAL(showTitleBars(bool)), panel->getTitleBar(), + SLOT(showTitleBar(bool))); } } stopMotionPanelFactory; @@ -1402,6 +1466,9 @@ public: panel->setWindowTitle(QObject::tr("Fx Settings")); panel->setMinimumSize(390, 85); panel->allowMultipleInstances(false); + panel->getTitleBar()->showTitleBar(TApp::instance()->getShowTitleBars()); + connect(TApp::instance(), SIGNAL(showTitleBars(bool)), panel->getTitleBar(), + SLOT(showTitleBar(bool))); return panel; } @@ -1437,6 +1504,9 @@ public: panel->setObjectName(getPanelType()); panel->setWindowTitle(QObject::tr("Vector Guided Drawing Controls")); panel->setMinimumSize(387, 265); + panel->getTitleBar()->showTitleBar(TApp::instance()->getShowTitleBars()); + connect(TApp::instance(), SIGNAL(showTitleBars(bool)), panel->getTitleBar(), + SLOT(showTitleBar(bool))); return panel; }