diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/API/ViewPaneOptions.h b/Code/Framework/AzToolsFramework/AzToolsFramework/API/ViewPaneOptions.h index fb86968ebb..4891d2ef85 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/API/ViewPaneOptions.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/API/ViewPaneOptions.h @@ -42,6 +42,9 @@ namespace AzToolsFramework bool detachedWindow = false; ///< set to true if the view pane should use a detached, non-dockable widget. This is to workaround a problem with QOpenGLWidget on macOS. Currently this has no effect on other platforms. bool isDisabledInSimMode = false; ///< set to true if the view pane should not be openable from level editor menu when editor is in simulation mode. + + bool showOnToolsToolbar = false; ///< set to true if the view pane should create a button on the tools toolbar to open/close the pane + QString toolbarIcon; ///< path to the icon to use for the toolbar button - only used if showOnToolsToolbar is set to true }; } // namespace AzToolsFramework diff --git a/Code/Sandbox/Editor/Core/LevelEditorMenuHandler.cpp b/Code/Sandbox/Editor/Core/LevelEditorMenuHandler.cpp index 8f6e927a84..6292a99ec5 100644 --- a/Code/Sandbox/Editor/Core/LevelEditorMenuHandler.cpp +++ b/Code/Sandbox/Editor/Core/LevelEditorMenuHandler.cpp @@ -912,6 +912,12 @@ QAction* LevelEditorMenuHandler::CreateViewPaneAction(const QtViewPane* view) action = new QAction(menuText, this); action->setObjectName(view->m_name); action->setCheckable(true); + + if (view->m_options.showOnToolsToolbar) + { + action->setIcon(QIcon(view->m_options.toolbarIcon)); + } + m_actionManager->AddAction(view->m_id, action); if (!view->m_options.shortcut.isEmpty()) @@ -941,6 +947,11 @@ QAction* LevelEditorMenuHandler::CreateViewPaneMenuItem( menu->addAction(action); + if (view->m_options.showOnToolsToolbar) + { + m_mainWindow->GetToolbarManager()->AddButtonToEditToolbar(action); + } + return action; } diff --git a/Code/Sandbox/Editor/MainWindow.cpp b/Code/Sandbox/Editor/MainWindow.cpp index 31eac05824..3753c29064 100644 --- a/Code/Sandbox/Editor/MainWindow.cpp +++ b/Code/Sandbox/Editor/MainWindow.cpp @@ -470,9 +470,11 @@ void MainWindow::Initialize() InitToolActionHandlers(); + // Initialize toolbars before we setup the menu so that any tools can be added to the toolbar as needed + InitToolBars(); + m_levelEditorMenuHandler->Initialize(); - InitToolBars(); InitStatusBar(); AzToolsFramework::SourceControlNotificationBus::Handler::BusConnect(); diff --git a/Code/Sandbox/Editor/ToolbarManager.cpp b/Code/Sandbox/Editor/ToolbarManager.cpp index 241b969da7..137057a4fa 100644 --- a/Code/Sandbox/Editor/ToolbarManager.cpp +++ b/Code/Sandbox/Editor/ToolbarManager.cpp @@ -623,6 +623,20 @@ AmazonToolbar ToolbarManager::GetMiscToolbar() const return t; } +void ToolbarManager::AddButtonToEditToolbar(QAction* action) +{ + QString toolbarName = "EditMode"; + const AmazonToolbar* toolbar = FindToolbar(toolbarName); + + if (toolbar) + { + if (toolbar->Toolbar()) + { + toolbar->Toolbar()->addAction(action); + } + } +} + const AmazonToolbar* ToolbarManager::FindDefaultToolbar(const QString& toolbarName) const { for (const AmazonToolbar& toolbar : m_standardToolbars) diff --git a/Code/Sandbox/Editor/ToolbarManager.h b/Code/Sandbox/Editor/ToolbarManager.h index 70228636f5..1867316d01 100644 --- a/Code/Sandbox/Editor/ToolbarManager.h +++ b/Code/Sandbox/Editor/ToolbarManager.h @@ -169,6 +169,8 @@ public: AmazonToolbar GetMiscToolbar() const; AmazonToolbar GetPlayConsoleToolbar() const; + void AddButtonToEditToolbar(QAction* action); + private: Q_DISABLE_COPY(ToolbarManager); void SaveToolbars();