From d36d1defab164aac182fdd484bcbe51c37e228e9 Mon Sep 17 00:00:00 2001 From: Dayo Lawal Date: Tue, 13 Jul 2021 13:05:31 -0500 Subject: [PATCH] Styling fixes and AzQtAppWindow changes Signed-off-by: Dayo Lawal --- .../Application/AzQtApplication.cpp | 3 +- .../Application/AzQtApplication.h | 8 +++-- .../Window/AzQtApplicationWindow.cpp | 34 +----------------- .../Window/AzQtApplicationWindow.h | 35 +------------------ .../{AzQtTraceLogger.cpp => TraceLogger.cpp} | 10 +++--- .../{AzQtTraceLogger.h => TraceLogger.h} | 9 +++-- .../aztoolsframework_files.cmake | 4 +-- .../Code/Source/MaterialEditorApplication.h | 4 +-- .../Source/Window/MaterialEditorWindow.cpp | 35 +++++++++++++++++-- .../Code/Source/Window/MaterialEditorWindow.h | 28 +++++++++++++++ .../ShaderManagementConsoleApplication.h | 4 +-- .../Window/ShaderManagementConsoleWindow.cpp | 32 ++++++++++++++++- .../Window/ShaderManagementConsoleWindow.h | 31 ++++++++++++++++ 13 files changed, 148 insertions(+), 89 deletions(-) rename Code/Framework/AzToolsFramework/AzToolsFramework/Logger/{AzQtTraceLogger.cpp => TraceLogger.cpp} (89%) rename Code/Framework/AzToolsFramework/AzToolsFramework/Logger/{AzQtTraceLogger.h => TraceLogger.h} (86%) diff --git a/Code/Framework/AzQtComponents/AzQtComponents/Application/AzQtApplication.cpp b/Code/Framework/AzQtComponents/AzQtComponents/Application/AzQtApplication.cpp index 3459656960..f081159b87 100644 --- a/Code/Framework/AzQtComponents/AzQtComponents/Application/AzQtApplication.cpp +++ b/Code/Framework/AzQtComponents/AzQtComponents/Application/AzQtApplication.cpp @@ -31,7 +31,7 @@ namespace AzQtComponents QLocale::setDefault(QLocale(QLocale::English, QLocale::UnitedStates)); } - void AzQtApplication::SetDpiScaling() + void AzQtApplication::InitializeDpiScaling() { QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); @@ -39,6 +39,5 @@ namespace AzQtComponents QGuiApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough); AzQtComponents::Utilities::HandleDpiAwareness(AzQtComponents::Utilities::SystemDpiAware); } - } // namespace AzQtComponents diff --git a/Code/Framework/AzQtComponents/AzQtComponents/Application/AzQtApplication.h b/Code/Framework/AzQtComponents/AzQtComponents/Application/AzQtApplication.h index 60d582a50a..17ee29fc85 100644 --- a/Code/Framework/AzQtComponents/AzQtComponents/Application/AzQtApplication.h +++ b/Code/Framework/AzQtComponents/AzQtComponents/Application/AzQtApplication.h @@ -25,9 +25,11 @@ namespace AzQtComponents public: AzQtApplication(int& argc, char** argv); - //! DPI Scaling so that we support HighDpi monitors, like the Retina displays on Windows 10 - //! Must be set before QApplication is initialized, - static void SetDpiScaling(); + //! Initializes Qt DPI scaling to handle displays with high display densities, such as Retina displays. + //! Currently, this uses Qt's system DPI awareness, in which a common device scaling factor will be + //! calculated across all attached screens. + //! \warning This must be called before this AzQtApplication instance is initialized. + static void InitializeDpiScaling(); }; } // namespace AzQtComponents diff --git a/Code/Framework/AzQtComponents/AzQtComponents/Application/Window/AzQtApplicationWindow.cpp b/Code/Framework/AzQtComponents/AzQtComponents/Application/Window/AzQtApplicationWindow.cpp index b2dc0cf429..e8d16dfc58 100644 --- a/Code/Framework/AzQtComponents/AzQtComponents/Application/Window/AzQtApplicationWindow.cpp +++ b/Code/Framework/AzQtComponents/AzQtComponents/Application/Window/AzQtApplicationWindow.cpp @@ -16,46 +16,14 @@ namespace AzQtComponents { - AzQtApplicationWindow::AzQtApplicationWindow(QWidget* parent /* = 0 */, const AZStd::string& objectName) + AzQtApplicationWindow::AzQtApplicationWindow(QWidget* parent /* = 0 */) : AzQtComponents::DockMainWindow(parent) { m_advancedDockManager = new AzQtComponents::FancyDocking(this); - setObjectName(objectName.c_str()); - setDockNestingEnabled(true); - setCorner(Qt::TopLeftCorner, Qt::LeftDockWidgetArea); - setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea); - setCorner(Qt::TopRightCorner, Qt::RightDockWidgetArea); - setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea); - m_menuBar = new QMenuBar(this); m_menuBar->setObjectName("MenuBar"); setMenuBar(m_menuBar); - - m_centralWidget = new QWidget(this); - m_tabWidget = new AzQtComponents::TabWidget(m_centralWidget); - m_tabWidget->setObjectName("TabWidget"); - m_tabWidget->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Preferred); - m_tabWidget->setContentsMargins(0, 0, 0, 0); - - vl = new QVBoxLayout(m_centralWidget); - } - - void AzQtApplicationWindow::SelectPreviousTab() - { - if (m_tabWidget->count() > 1) - { - // Adding count to wrap around when index <= 0 - m_tabWidget->setCurrentIndex((m_tabWidget->currentIndex() + m_tabWidget->count() - 1) % m_tabWidget->count()); - } - } - - void AzQtApplicationWindow::SelectNextTab() - { - if (m_tabWidget->count() > 1) - { - m_tabWidget->setCurrentIndex((m_tabWidget->currentIndex() + 1) % m_tabWidget->count()); - } } } diff --git a/Code/Framework/AzQtComponents/AzQtComponents/Application/Window/AzQtApplicationWindow.h b/Code/Framework/AzQtComponents/AzQtComponents/Application/Window/AzQtApplicationWindow.h index 87d251f983..4a9a67d4df 100644 --- a/Code/Framework/AzQtComponents/AzQtComponents/Application/Window/AzQtApplicationWindow.h +++ b/Code/Framework/AzQtComponents/AzQtComponents/Application/Window/AzQtApplicationWindow.h @@ -42,7 +42,7 @@ namespace AzQtComponents { Q_OBJECT public: - AzQtApplicationWindow(QWidget* parent, const AZStd::string& objectName); + AzQtApplicationWindow(QWidget* parent); protected: virtual void SetupMenu() {}; @@ -50,40 +50,7 @@ namespace AzQtComponents virtual void OpenTabContextMenu() {}; - void SelectPreviousTab(); - void SelectNextTab(); - AzQtComponents::FancyDocking* m_advancedDockManager = nullptr; QMenuBar* m_menuBar = nullptr; - QWidget* m_centralWidget = nullptr; - AzQtComponents::TabWidget* m_tabWidget = nullptr; - - QVBoxLayout* vl; - - QMenu* m_menuFile = {}; - QAction* m_actionOpen = {}; - QAction* m_actionOpenRecent = {}; - QAction* m_actionClose = {}; - QAction* m_actionCloseAll = {}; - QAction* m_actionCloseOthers = {}; - QAction* m_actionSave = {}; - QAction* m_actionSaveAsCopy = {}; - QAction* m_actionSaveAll = {}; - QAction* m_actionExit = {}; - - QMenu* m_menuEdit = {}; - QAction* m_actionUndo = {}; - QAction* m_actionRedo = {}; - QAction* m_actionSettings = {}; - - QMenu* m_menuView = {}; - QAction* m_actionAssetBrowser = {}; - QAction* m_actionPythonTerminal = {}; - QAction* m_actionNextTab = {}; - QAction* m_actionPreviousTab = {}; - - QMenu* m_menuHelp = {}; - QAction* m_actionHelp = {}; - QAction* m_actionAbout = {}; }; } // namespace ShaderManagementConsole diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Logger/AzQtTraceLogger.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Logger/TraceLogger.cpp similarity index 89% rename from Code/Framework/AzToolsFramework/AzToolsFramework/Logger/AzQtTraceLogger.cpp rename to Code/Framework/AzToolsFramework/AzToolsFramework/Logger/TraceLogger.cpp index f795719062..3b40455483 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Logger/AzQtTraceLogger.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Logger/TraceLogger.cpp @@ -10,7 +10,7 @@ * */ -#include +#include #include #include @@ -18,17 +18,17 @@ namespace AzToolsFramework { - AzQtTraceLogger::AzQtTraceLogger() + TraceLogger::TraceLogger() { AZ::Debug::TraceMessageBus::Handler::BusConnect(); } - AzQtTraceLogger::~AzQtTraceLogger() + TraceLogger::~TraceLogger() { AZ::Debug::TraceMessageBus::Handler::BusDisconnect(); } - bool AzQtTraceLogger::OnOutput(const char* window, const char* message) + bool TraceLogger::OnOutput(const char* window, const char* message) { if (m_logFile) { @@ -41,7 +41,7 @@ namespace AzToolsFramework return false; } - void AzQtTraceLogger::WriteStartupLog(const AZStd::string& logFileName) + void TraceLogger::WriteStartupLog(const AZStd::string& logFileName) { using namespace AzFramework; diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Logger/AzQtTraceLogger.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Logger/TraceLogger.h similarity index 86% rename from Code/Framework/AzToolsFramework/AzToolsFramework/Logger/AzQtTraceLogger.h rename to Code/Framework/AzToolsFramework/AzToolsFramework/Logger/TraceLogger.h index 9518c6842d..cd605e83ab 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Logger/AzQtTraceLogger.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Logger/TraceLogger.h @@ -14,15 +14,18 @@ #include #include +#include +#include namespace AzToolsFramework { //! Connects and disconnects TraceMessageBus and allows for logging for O3DE Tools Applications - class AzQtTraceLogger : public AZ::Debug::TraceMessageBus::Handler + class TraceLogger + : public AZ::Debug::TraceMessageBus::Handler { public: - AzQtTraceLogger(); - ~AzQtTraceLogger(); + TraceLogger(); + ~TraceLogger(); //! Intalize logging for O3DEToolsApplications void WriteStartupLog(const AZStd::string& logFileName); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/aztoolsframework_files.cmake b/Code/Framework/AzToolsFramework/AzToolsFramework/aztoolsframework_files.cmake index 5718de48ab..75b5bd4a56 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/aztoolsframework_files.cmake +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/aztoolsframework_files.cmake @@ -147,8 +147,8 @@ set(FILES Entity/SliceEditorEntityOwnershipServiceBus.h Fingerprinting/TypeFingerprinter.h Fingerprinting/TypeFingerprinter.cpp - Logger/AzQtTraceLogger.cpp - Logger/AzQtTraceLogger.h + Logger/TraceLogger.cpp + Logger/TraceLogger.h Manipulators/AngularManipulator.cpp Manipulators/AngularManipulator.h Manipulators/BaseManipulator.cpp diff --git a/Gems/Atom/Tools/MaterialEditor/Code/Source/MaterialEditorApplication.h b/Gems/Atom/Tools/MaterialEditor/Code/Source/MaterialEditorApplication.h index ff0809897d..284eddee93 100644 --- a/Gems/Atom/Tools/MaterialEditor/Code/Source/MaterialEditorApplication.h +++ b/Gems/Atom/Tools/MaterialEditor/Code/Source/MaterialEditorApplication.h @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include #include @@ -124,7 +124,7 @@ namespace MaterialEditor AZStd::vector m_startupLogSink; AZStd::unique_ptr m_logFile; - AzToolsFramework::AzQtTraceLogger m_traceLogger; + AzToolsFramework::TraceLogger m_traceLogger; //! Local user settings are used to store material browser tree expansion state AZ::UserSettingsProvider m_localUserSettings; diff --git a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialEditorWindow.cpp b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialEditorWindow.cpp index 3e39526689..2c4e19a037 100644 --- a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialEditorWindow.cpp +++ b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialEditorWindow.cpp @@ -55,7 +55,7 @@ AZ_POP_DISABLE_WARNING namespace MaterialEditor { MaterialEditorWindow::MaterialEditorWindow(QWidget* parent /* = 0 */) - : AzQtComponents::AzQtApplicationWindow(parent, "MaterialEditorWindow") + : AzQtComponents::AzQtApplicationWindow(parent) { resize(1280, 1024); @@ -82,14 +82,28 @@ namespace MaterialEditor setWindowTitle(QApplication::applicationName()); } + setObjectName("MaterialEditorWindow"); + setDockNestingEnabled(true); + setCorner(Qt::TopLeftCorner, Qt::LeftDockWidgetArea); + setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea); + setCorner(Qt::TopRightCorner, Qt::RightDockWidgetArea); + setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea); + m_toolBar = new MaterialEditorToolBar(this); m_toolBar->setObjectName("ToolBar"); addToolBar(m_toolBar); + m_centralWidget = new QWidget(this); + m_tabWidget = new AzQtComponents::TabWidget(m_centralWidget); + m_tabWidget->setObjectName("TabWidget"); + m_tabWidget->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Preferred); + m_tabWidget->setContentsMargins(0, 0, 0, 0); + m_materialViewport = new MaterialViewportWidget(m_centralWidget); m_materialViewport->setObjectName("Viewport"); m_materialViewport->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); - + + QVBoxLayout* vl = new QVBoxLayout(m_centralWidget); vl->setMargin(0); vl->setContentsMargins(0, 0, 0, 0); vl->addWidget(m_tabWidget); @@ -718,6 +732,23 @@ namespace MaterialEditor } } + void MaterialEditorWindow::SelectPreviousTab() + { + if (m_tabWidget->count() > 1) + { + // Adding count to wrap around when index <= 0 + m_tabWidget->setCurrentIndex((m_tabWidget->currentIndex() + m_tabWidget->count() - 1) % m_tabWidget->count()); + } + } + + void MaterialEditorWindow::SelectNextTab() + { + if (m_tabWidget->count() > 1) + { + m_tabWidget->setCurrentIndex((m_tabWidget->currentIndex() + 1) % m_tabWidget->count()); + } + } + } // namespace MaterialEditor #include diff --git a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialEditorWindow.h b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialEditorWindow.h index b96ceb2aa4..e7efcfc528 100644 --- a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialEditorWindow.h +++ b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialEditorWindow.h @@ -85,21 +85,49 @@ namespace MaterialEditor QString GetDocumentPath(const AZ::Uuid& documentId) const; void OpenTabContextMenu() override; + void SelectPreviousTab(); + void SelectNextTab(); void closeEvent(QCloseEvent* closeEvent) override; + QWidget* m_centralWidget = nullptr; + AzQtComponents::TabWidget* m_tabWidget = nullptr; MaterialViewportWidget* m_materialViewport = nullptr; MaterialEditorToolBar* m_toolBar = nullptr; AZStd::unordered_map m_dockWidgets; + QMenu* m_menuFile = {}; QAction* m_actionNew = {}; + QAction* m_actionOpen = {}; + QAction* m_actionOpenRecent = {}; + QAction* m_actionClose = {}; + QAction* m_actionCloseAll = {}; + QAction* m_actionCloseOthers = {}; + QAction* m_actionSave = {}; + QAction* m_actionSaveAsCopy = {}; QAction* m_actionSaveAsChild = {}; + QAction* m_actionSaveAll = {}; + QAction* m_actionExit = {}; + QMenu* m_menuEdit = {}; + QAction* m_actionUndo = {}; + QAction* m_actionRedo = {}; + QAction* m_actionSettings = {}; + + QMenu* m_menuView = {}; + QAction* m_actionAssetBrowser = {}; QAction* m_actionInspector = {}; QAction* m_actionConsole = {}; + QAction* m_actionPythonTerminal = {}; QAction* m_actionPerfMonitor = {}; QAction* m_actionViewportSettings = {}; + QAction* m_actionNextTab = {}; + QAction* m_actionPreviousTab = {}; + + QMenu* m_menuHelp = {}; + QAction* m_actionHelp = {}; + QAction* m_actionAbout = {}; StatusBarWidget* m_statusBar = {}; }; diff --git a/Gems/Atom/Tools/ShaderManagementConsole/Code/Source/ShaderManagementConsoleApplication.h b/Gems/Atom/Tools/ShaderManagementConsole/Code/Source/ShaderManagementConsoleApplication.h index 9b7de38f0a..bd2e0b9403 100644 --- a/Gems/Atom/Tools/ShaderManagementConsole/Code/Source/ShaderManagementConsoleApplication.h +++ b/Gems/Atom/Tools/ShaderManagementConsole/Code/Source/ShaderManagementConsoleApplication.h @@ -18,7 +18,7 @@ #include #include -#include +#include #include #include @@ -115,7 +115,7 @@ namespace ShaderManagementConsole static void PyIdleWaitFrames(uint32_t frames); - AzToolsFramework::AzQtTraceLogger m_traceLogger; + AzToolsFramework::TraceLogger m_traceLogger; //! Local user settings are used to store asset browser tree expansion state AZ::UserSettingsProvider m_localUserSettings; diff --git a/Gems/Atom/Tools/ShaderManagementConsole/Code/Source/Window/ShaderManagementConsoleWindow.cpp b/Gems/Atom/Tools/ShaderManagementConsole/Code/Source/Window/ShaderManagementConsoleWindow.cpp index dde818d9e6..6c2ae0c322 100644 --- a/Gems/Atom/Tools/ShaderManagementConsole/Code/Source/Window/ShaderManagementConsoleWindow.cpp +++ b/Gems/Atom/Tools/ShaderManagementConsole/Code/Source/Window/ShaderManagementConsoleWindow.cpp @@ -37,14 +37,27 @@ AZ_POP_DISABLE_WARNING namespace ShaderManagementConsole { ShaderManagementConsoleWindow::ShaderManagementConsoleWindow(QWidget* parent /* = 0 */) - : AzQtComponents::AzQtApplicationWindow(parent, "ShaderManagementConsoleWindow") + : AzQtComponents::AzQtApplicationWindow(parent) { setWindowTitle("Shader Management Console"); + setObjectName("ShaderManagementConsoleWindow"); + setDockNestingEnabled(true); + setCorner(Qt::TopLeftCorner, Qt::LeftDockWidgetArea); + setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea); + setCorner(Qt::TopRightCorner, Qt::RightDockWidgetArea); + setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea); m_toolBar = new ShaderManagementConsoleToolBar(this); m_toolBar->setObjectName("ToolBar"); addToolBar(m_toolBar); + m_centralWidget = new QWidget(this); + m_tabWidget = new AzQtComponents::TabWidget(m_centralWidget); + m_tabWidget->setObjectName("TabWidget"); + m_tabWidget->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Preferred); + m_tabWidget->setContentsMargins(0, 0, 0, 0); + + QVBoxLayout* vl = new QVBoxLayout(m_centralWidget); vl->setMargin(0); vl->setContentsMargins(0, 0, 0, 0); vl->addWidget(m_tabWidget); @@ -535,6 +548,23 @@ namespace ShaderManagementConsole } } } + + void ShaderManagementConsoleWindow::SelectPreviousTab() + { + if (m_tabWidget->count() > 1) + { + // Adding count to wrap around when index <= 0 + m_tabWidget->setCurrentIndex((m_tabWidget->currentIndex() + m_tabWidget->count() - 1) % m_tabWidget->count()); + } + } + + void ShaderManagementConsoleWindow::SelectNextTab() + { + if (m_tabWidget->count() > 1) + { + m_tabWidget->setCurrentIndex((m_tabWidget->currentIndex() + 1) % m_tabWidget->count()); + } + } } // namespace ShaderManagementConsole #include diff --git a/Gems/Atom/Tools/ShaderManagementConsole/Code/Source/Window/ShaderManagementConsoleWindow.h b/Gems/Atom/Tools/ShaderManagementConsole/Code/Source/Window/ShaderManagementConsoleWindow.h index 9201be8db0..cd9bcce482 100644 --- a/Gems/Atom/Tools/ShaderManagementConsole/Code/Source/Window/ShaderManagementConsoleWindow.h +++ b/Gems/Atom/Tools/ShaderManagementConsole/Code/Source/Window/ShaderManagementConsoleWindow.h @@ -69,6 +69,8 @@ namespace ShaderManagementConsole AZ::Uuid GetDocumentIdFromTab(const int tabIndex) const; void OpenTabContextMenu() override; + void SelectPreviousTab(); + void SelectNextTab(); void SelectDocumentForTab(const int tabIndex); void CloseDocumentForTab(const int tabIndex); @@ -78,11 +80,40 @@ namespace ShaderManagementConsole void CreateDocumentContent(const AZ::Uuid& documentId, QStandardItemModel* model); + QWidget* m_centralWidget = nullptr; + AzQtComponents::TabWidget* m_tabWidget = nullptr; ShaderManagementConsoleBrowserWidget* m_assetBrowser = nullptr; ShaderManagementConsoleToolBar* m_toolBar = nullptr; AzToolsFramework::CScriptTermDialog* m_pythonTerminal = nullptr; AzQtComponents::StyledDockWidget* m_assetBrowserDockWidget = nullptr; AzQtComponents::StyledDockWidget* m_pythonTerminalDockWidget = nullptr; + + QMenu* m_menuFile = {}; + QMenu* m_menuNew = {}; + QAction* m_actionOpen = {}; + QAction* m_actionOpenRecent = {}; + QAction* m_actionClose = {}; + QAction* m_actionCloseAll = {}; + QAction* m_actionCloseOthers = {}; + QAction* m_actionSave = {}; + QAction* m_actionSaveAsCopy = {}; + QAction* m_actionSaveAll = {}; + QAction* m_actionExit = {}; + + QMenu* m_menuEdit = {}; + QAction* m_actionUndo = {}; + QAction* m_actionRedo = {}; + QAction* m_actionSettings = {}; + + QMenu* m_menuView = {}; + QAction* m_actionAssetBrowser = {}; + QAction* m_actionPythonTerminal = {}; + QAction* m_actionNextTab = {}; + QAction* m_actionPreviousTab = {}; + + QMenu* m_menuHelp = {}; + QAction* m_actionHelp = {}; + QAction* m_actionAbout = {}; }; } // namespace ShaderManagementConsole