AtomTools: fixing status bar messages
fixed problems with status bar messages not appearing added status bar messages to shader management console got rid of central widget variable and moved layout to atom tools window base class Signed-off-by: Guthrie Adams <guthadam@amazon.com>
This commit is contained in:
+2
-3
@@ -16,8 +16,8 @@
|
||||
#include <AzQtComponents/Components/StyledDockWidget.h>
|
||||
#include <AzQtComponents/Components/Widgets/TabWidget.h>
|
||||
|
||||
#include <QLabel>
|
||||
#include <QMenuBar>
|
||||
#include <QStatusBar>
|
||||
#include <QToolBar>
|
||||
|
||||
namespace AtomToolsFramework
|
||||
@@ -53,10 +53,9 @@ namespace AtomToolsFramework
|
||||
virtual void SelectNextTab();
|
||||
|
||||
AzQtComponents::FancyDocking* m_advancedDockManager = nullptr;
|
||||
QWidget* m_centralWidget = nullptr;
|
||||
QMenuBar* m_menuBar = nullptr;
|
||||
AzQtComponents::TabWidget* m_tabWidget = nullptr;
|
||||
QStatusBar* m_statusBar = nullptr;
|
||||
QLabel* m_statusMessage = nullptr;
|
||||
|
||||
AZStd::unordered_map<AZStd::string, AzQtComponents::StyledDockWidget*> m_dockWidgets;
|
||||
};
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
*/
|
||||
|
||||
#include <AtomToolsFramework/Window/AtomToolsMainWindow.h>
|
||||
#include <QStatusBar>
|
||||
#include <QVBoxLayout>
|
||||
|
||||
namespace AtomToolsFramework
|
||||
{
|
||||
@@ -21,11 +23,15 @@ namespace AtomToolsFramework
|
||||
setCorner(Qt::TopRightCorner, Qt::RightDockWidgetArea);
|
||||
setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea);
|
||||
|
||||
m_statusBar = new QStatusBar(this);
|
||||
m_statusBar->setObjectName("StatusBar");
|
||||
statusBar()->addPermanentWidget(m_statusBar, 1);
|
||||
m_statusMessage = new QLabel(statusBar());
|
||||
statusBar()->addPermanentWidget(m_statusMessage, 1);
|
||||
|
||||
m_centralWidget = new QWidget(this);
|
||||
auto centralWidget = new QWidget(this);
|
||||
auto centralWidgetLayout = new QVBoxLayout(centralWidget);
|
||||
centralWidgetLayout->setMargin(0);
|
||||
centralWidgetLayout->setContentsMargins(0, 0, 0, 0);
|
||||
centralWidget->setLayout(centralWidgetLayout);
|
||||
setCentralWidget(centralWidget);
|
||||
|
||||
AtomToolsMainWindowRequestBus::Handler::BusConnect();
|
||||
}
|
||||
@@ -111,7 +117,7 @@ namespace AtomToolsFramework
|
||||
|
||||
void AtomToolsMainWindow::CreateTabBar()
|
||||
{
|
||||
m_tabWidget = new AzQtComponents::TabWidget(m_centralWidget);
|
||||
m_tabWidget = new AzQtComponents::TabWidget(centralWidget());
|
||||
m_tabWidget->setObjectName("TabWidget");
|
||||
m_tabWidget->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Preferred);
|
||||
m_tabWidget->setContentsMargins(0, 0, 0, 0);
|
||||
@@ -131,6 +137,8 @@ namespace AtomToolsFramework
|
||||
{
|
||||
OpenTabContextMenu();
|
||||
});
|
||||
|
||||
centralWidget()->layout()->addWidget(m_tabWidget);
|
||||
}
|
||||
|
||||
void AtomToolsMainWindow::AddTabForDocumentId(
|
||||
|
||||
@@ -36,8 +36,6 @@ AZ_PUSH_DISABLE_WARNING(4251 4800, "-Wunknown-warning-option") // disable warnin
|
||||
#include <QCloseEvent>
|
||||
#include <QDesktopWidget>
|
||||
#include <QFileDialog>
|
||||
#include <QVBoxLayout>
|
||||
#include <QVariant>
|
||||
#include <QWindow>
|
||||
AZ_POP_DISABLE_WARNING
|
||||
|
||||
@@ -77,20 +75,13 @@ namespace MaterialEditor
|
||||
m_toolBar->setObjectName("ToolBar");
|
||||
addToolBar(m_toolBar);
|
||||
|
||||
m_materialViewport = new MaterialViewportWidget(m_centralWidget);
|
||||
m_materialViewport->setObjectName("Viewport");
|
||||
m_materialViewport->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
|
||||
|
||||
CreateMenu();
|
||||
CreateTabBar();
|
||||
|
||||
QVBoxLayout* vl = new QVBoxLayout(m_centralWidget);
|
||||
vl->setMargin(0);
|
||||
vl->setContentsMargins(0, 0, 0, 0);
|
||||
vl->addWidget(m_tabWidget);
|
||||
vl->addWidget(m_materialViewport);
|
||||
m_centralWidget->setLayout(vl);
|
||||
setCentralWidget(m_centralWidget);
|
||||
m_materialViewport = new MaterialViewportWidget(centralWidget());
|
||||
m_materialViewport->setObjectName("Viewport");
|
||||
m_materialViewport->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
|
||||
centralWidget()->layout()->addWidget(m_materialViewport);
|
||||
|
||||
AddDockWidget("Asset Browser", new MaterialBrowserWidget, Qt::BottomDockWidgetArea, Qt::Vertical);
|
||||
AddDockWidget("Inspector", new MaterialInspector, Qt::RightDockWidgetArea, Qt::Horizontal);
|
||||
@@ -200,7 +191,7 @@ namespace MaterialEditor
|
||||
// Create a new tab for the document ID and assign it's label to the file name of the document.
|
||||
AddTabForDocumentId(documentId, filename, absolutePath, [this]{
|
||||
// The tab widget requires a dummy page per tab
|
||||
auto contentWidget = new QWidget(m_centralWidget);
|
||||
auto contentWidget = new QWidget(centralWidget());
|
||||
contentWidget->setContentsMargins(0, 0, 0, 0);
|
||||
contentWidget->setFixedSize(0, 0);
|
||||
return contentWidget;
|
||||
@@ -247,8 +238,8 @@ namespace MaterialEditor
|
||||
const QString documentPath = GetDocumentPath(documentId);
|
||||
if (!documentPath.isEmpty())
|
||||
{
|
||||
const QString status = QString("Material closed: %1").arg(documentPath);
|
||||
m_statusBar->setWindowIconText(QString("<font color=\"White\">%1</font>").arg(status));
|
||||
const QString status = QString("Document closed: %1").arg(documentPath);
|
||||
m_statusMessage->setText(QString("<font color=\"White\">%1</font>").arg(status));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -257,8 +248,8 @@ namespace MaterialEditor
|
||||
RemoveTabForDocumentId(documentId);
|
||||
|
||||
const QString documentPath = GetDocumentPath(documentId);
|
||||
const QString status = QString("Material closed: %1").arg(documentPath);
|
||||
m_statusBar->setWindowIconText(QString("<font color=\"White\">%1</font>").arg(status));
|
||||
const QString status = QString("Document closed: %1").arg(documentPath);
|
||||
m_statusMessage->setText(QString("<font color=\"White\">%1</font>").arg(status));
|
||||
}
|
||||
|
||||
void MaterialEditorWindow::OnDocumentModified(const AZ::Uuid& documentId)
|
||||
@@ -296,8 +287,8 @@ namespace MaterialEditor
|
||||
UpdateTabForDocumentId(documentId, filename, absolutePath, isModified);
|
||||
|
||||
const QString documentPath = GetDocumentPath(documentId);
|
||||
const QString status = QString("Material closed: %1").arg(documentPath);
|
||||
m_statusBar->setWindowIconText(QString("<font color=\"White\">%1</font>").arg(status));
|
||||
const QString status = QString("Document closed: %1").arg(documentPath);
|
||||
m_statusMessage->setText(QString("<font color=\"White\">%1</font>").arg(status));
|
||||
}
|
||||
|
||||
void MaterialEditorWindow::CreateMenu()
|
||||
@@ -341,8 +332,8 @@ namespace MaterialEditor
|
||||
if (!result)
|
||||
{
|
||||
const QString documentPath = GetDocumentPath(documentId);
|
||||
const QString status = QString("Failed to save material: %1").arg(documentPath);
|
||||
m_statusBar->setWindowIconText(QString("<font color=\"Red\">%1</font>").arg(status));
|
||||
const QString status = QString("Failed to save document: %1").arg(documentPath);
|
||||
m_statusMessage->setText(QString("<font color=\"Red\">%1</font>").arg(status));
|
||||
}
|
||||
}, QKeySequence::Save);
|
||||
|
||||
@@ -355,8 +346,8 @@ namespace MaterialEditor
|
||||
documentId, AtomToolsFramework::GetSaveFileInfo(documentPath).absoluteFilePath().toUtf8().constData());
|
||||
if (!result)
|
||||
{
|
||||
const QString status = QString("Failed to save material: %1").arg(documentPath);
|
||||
m_statusBar->setWindowIconText(QString("<font color=\"Red\">%1</font>").arg(status));
|
||||
const QString status = QString("Failed to save document: %1").arg(documentPath);
|
||||
m_statusMessage->setText(QString("<font color=\"Red\">%1</font>").arg(status));
|
||||
}
|
||||
}, QKeySequence::SaveAs);
|
||||
|
||||
@@ -369,8 +360,8 @@ namespace MaterialEditor
|
||||
documentId, AtomToolsFramework::GetSaveFileInfo(documentPath).absoluteFilePath().toUtf8().constData());
|
||||
if (!result)
|
||||
{
|
||||
const QString status = QString("Failed to save material: %1").arg(documentPath);
|
||||
m_statusBar->setWindowIconText(QString("<font color=\"Red\">%1</font>").arg(status));
|
||||
const QString status = QString("Failed to save document: %1").arg(documentPath);
|
||||
m_statusMessage->setText(QString("<font color=\"Red\">%1</font>").arg(status));
|
||||
}
|
||||
});
|
||||
|
||||
@@ -379,8 +370,8 @@ namespace MaterialEditor
|
||||
MaterialDocumentSystemRequestBus::BroadcastResult(result, &MaterialDocumentSystemRequestBus::Events::SaveAllDocuments);
|
||||
if (!result)
|
||||
{
|
||||
const QString status = QString("Failed to save materials.");
|
||||
m_statusBar->setWindowIconText(QString("<font color=\"Red\">%1</font>").arg(status));
|
||||
const QString status = QString("Failed to save documents.");
|
||||
m_statusMessage->setText(QString("<font color=\"Red\">%1</font>").arg(status));
|
||||
}
|
||||
});
|
||||
|
||||
@@ -425,8 +416,8 @@ namespace MaterialEditor
|
||||
if (!result)
|
||||
{
|
||||
const QString documentPath = GetDocumentPath(documentId);
|
||||
const QString status = QString("Failed to perform Undo in material: %1").arg(documentPath);
|
||||
m_statusBar->setWindowIconText(QString("<font color=\"Red\">%1</font>").arg(status));
|
||||
const QString status = QString("Failed to perform Undo on document: %1").arg(documentPath);
|
||||
m_statusMessage->setText(QString("<font color=\"Red\">%1</font>").arg(status));
|
||||
}
|
||||
}, QKeySequence::Undo);
|
||||
|
||||
@@ -437,8 +428,8 @@ namespace MaterialEditor
|
||||
if (!result)
|
||||
{
|
||||
const QString documentPath = GetDocumentPath(documentId);
|
||||
const QString status = QString("Failed to perform Undo in material: %1").arg(documentPath);
|
||||
m_statusBar->setWindowIconText(QString("<font color=\"Red\">%1</font>").arg(status));
|
||||
const QString status = QString("Failed to perform Redo on document: %1").arg(documentPath);
|
||||
m_statusMessage->setText(QString("<font color=\"Red\">%1</font>").arg(status));
|
||||
}
|
||||
}, QKeySequence::Redo);
|
||||
|
||||
|
||||
+59
-21
@@ -8,6 +8,8 @@
|
||||
|
||||
#include <AzCore/Name/Name.h>
|
||||
#include <AzFramework/StringFunc/StringFunc.h>
|
||||
#include <AzQtComponents/Components/StyleManager.h>
|
||||
#include <AzQtComponents/Components/WindowDecorationWrapper.h>
|
||||
#include <AzToolsFramework/API/EditorPythonRunnerRequestsBus.h>
|
||||
#include <AzToolsFramework/API/EditorAssetSystemAPI.h>
|
||||
#include <AzToolsFramework/PythonTerminal/ScriptTermDialog.h>
|
||||
@@ -23,11 +25,8 @@ AZ_PUSH_DISABLE_WARNING(4251 4800, "-Wunknown-warning-option") // disable warnin
|
||||
#include <QCloseEvent>
|
||||
#include <QFileDialog>
|
||||
#include <QHeaderView>
|
||||
#include <QPushButton>
|
||||
#include <QStandardItemModel>
|
||||
#include <QTableView>
|
||||
#include <QVBoxLayout>
|
||||
#include <QVariant>
|
||||
#include <QWindow>
|
||||
AZ_POP_DISABLE_WARNING
|
||||
|
||||
@@ -36,6 +35,14 @@ namespace ShaderManagementConsole
|
||||
ShaderManagementConsoleWindow::ShaderManagementConsoleWindow(QWidget* parent /* = 0 */)
|
||||
: AtomToolsFramework::AtomToolsMainWindow(parent)
|
||||
{
|
||||
resize(1280, 1024);
|
||||
|
||||
// Among other things, we need the window wrapper to save the main window size, position, and state
|
||||
auto mainWindowWrapper =
|
||||
new AzQtComponents::WindowDecorationWrapper(AzQtComponents::WindowDecorationWrapper::OptionAutoTitleBarButtons);
|
||||
mainWindowWrapper->setGuest(this);
|
||||
mainWindowWrapper->enableSaveRestoreGeometry("O3DE", "ShaderManagementConsole", "mainWindowGeometry");
|
||||
|
||||
setWindowTitle("Shader Management Console");
|
||||
|
||||
setObjectName("ShaderManagementConsoleWindow");
|
||||
@@ -47,16 +54,14 @@ namespace ShaderManagementConsole
|
||||
CreateMenu();
|
||||
CreateTabBar();
|
||||
|
||||
QVBoxLayout* vl = new QVBoxLayout(m_centralWidget);
|
||||
vl->setMargin(0);
|
||||
vl->setContentsMargins(0, 0, 0, 0);
|
||||
vl->addWidget(m_tabWidget);
|
||||
m_centralWidget->setLayout(vl);
|
||||
setCentralWidget(m_centralWidget);
|
||||
|
||||
AddDockWidget("Asset Browser", new ShaderManagementConsoleBrowserWidget, Qt::BottomDockWidgetArea, Qt::Vertical);
|
||||
AddDockWidget("Python Terminal", new AzToolsFramework::CScriptTermDialog, Qt::BottomDockWidgetArea, Qt::Horizontal);
|
||||
|
||||
SetDockWidgetVisible("Python Terminal", false);
|
||||
|
||||
// Restore geometry and show the window
|
||||
mainWindowWrapper->showFromSettings();
|
||||
|
||||
ShaderManagementConsoleDocumentNotificationBus::Handler::BusConnect();
|
||||
OnDocumentOpened(AZ::Uuid::CreateNull());
|
||||
}
|
||||
@@ -103,8 +108,7 @@ namespace ShaderManagementConsole
|
||||
// Create a new tab for the document ID and assign it's label to the file name of the document.
|
||||
AddTabForDocumentId(documentId, filename, absolutePath, [this, documentId]{
|
||||
// The document tab contains a table view.
|
||||
auto contentWidget = new QTableView(m_centralWidget);
|
||||
contentWidget->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
||||
auto contentWidget = new QTableView(centralWidget());
|
||||
contentWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||
contentWidget->setModel(CreateDocumentContent(documentId));
|
||||
return contentWidget;
|
||||
@@ -142,11 +146,22 @@ namespace ShaderManagementConsole
|
||||
|
||||
activateWindow();
|
||||
raise();
|
||||
|
||||
const QString documentPath = GetDocumentPath(documentId);
|
||||
if (!documentPath.isEmpty())
|
||||
{
|
||||
const QString status = QString("Document closed: %1").arg(documentPath);
|
||||
m_statusMessage->setText(QString("<font color=\"White\">%1</font>").arg(status));
|
||||
}
|
||||
}
|
||||
|
||||
void ShaderManagementConsoleWindow::OnDocumentClosed(const AZ::Uuid& documentId)
|
||||
{
|
||||
RemoveTabForDocumentId(documentId);
|
||||
|
||||
const QString documentPath = GetDocumentPath(documentId);
|
||||
const QString status = QString("Document closed: %1").arg(documentPath);
|
||||
m_statusMessage->setText(QString("<font color=\"White\">%1</font>").arg(status));
|
||||
}
|
||||
|
||||
void ShaderManagementConsoleWindow::OnDocumentModified(const AZ::Uuid& documentId)
|
||||
@@ -182,6 +197,10 @@ namespace ShaderManagementConsole
|
||||
AZStd::string filename;
|
||||
AzFramework::StringFunc::Path::GetFullFileName(absolutePath.c_str(), filename);
|
||||
UpdateTabForDocumentId(documentId, filename, absolutePath, isModified);
|
||||
|
||||
const QString documentPath = GetDocumentPath(documentId);
|
||||
const QString status = QString("Document closed: %1").arg(documentPath);
|
||||
m_statusMessage->setText(QString("<font color=\"White\">%1</font>").arg(status));
|
||||
}
|
||||
|
||||
void ShaderManagementConsoleWindow::CreateMenu()
|
||||
@@ -254,12 +273,26 @@ namespace ShaderManagementConsole
|
||||
|
||||
m_actionUndo = m_menuEdit->addAction("&Undo", [this]() {
|
||||
const AZ::Uuid documentId = GetDocumentIdFromTab(m_tabWidget->currentIndex());
|
||||
ShaderManagementConsoleDocumentRequestBus::Event(documentId, &ShaderManagementConsoleDocumentRequestBus::Events::Undo);
|
||||
bool result = false;
|
||||
ShaderManagementConsoleDocumentRequestBus::EventResult(result, documentId, &ShaderManagementConsoleDocumentRequestBus::Events::Undo);
|
||||
if (!result)
|
||||
{
|
||||
const QString documentPath = GetDocumentPath(documentId);
|
||||
const QString status = QString("Failed to perform Undo on document: %1").arg(documentPath);
|
||||
m_statusMessage->setText(QString("<font color=\"Red\">%1</font>").arg(status));
|
||||
}
|
||||
}, QKeySequence::Undo);
|
||||
|
||||
m_actionRedo = m_menuEdit->addAction("&Redo", [this]() {
|
||||
const AZ::Uuid documentId = GetDocumentIdFromTab(m_tabWidget->currentIndex());
|
||||
ShaderManagementConsoleDocumentRequestBus::Event(documentId, &ShaderManagementConsoleDocumentRequestBus::Events::Redo);
|
||||
bool result = false;
|
||||
ShaderManagementConsoleDocumentRequestBus::EventResult(result, documentId, &ShaderManagementConsoleDocumentRequestBus::Events::Redo);
|
||||
if (!result)
|
||||
{
|
||||
const QString documentPath = GetDocumentPath(documentId);
|
||||
const QString status = QString("Failed to perform Redo on document: %1").arg(documentPath);
|
||||
m_statusMessage->setText(QString("<font color=\"Red\">%1</font>").arg(status));
|
||||
}
|
||||
}, QKeySequence::Redo);
|
||||
|
||||
m_menuEdit->addSeparator();
|
||||
@@ -278,13 +311,11 @@ namespace ShaderManagementConsole
|
||||
SetDockWidgetVisible(label, !IsDockWidgetVisible(label));
|
||||
});
|
||||
|
||||
m_actionPythonTerminal = m_menuView->addAction(
|
||||
"Python &Terminal",
|
||||
[this]()
|
||||
{
|
||||
const AZStd::string label = "Python Terminal";
|
||||
SetDockWidgetVisible(label, !IsDockWidgetVisible(label));
|
||||
});
|
||||
m_actionPythonTerminal = m_menuView->addAction("Python &Terminal", [this]() {
|
||||
const AZStd::string label = "Python Terminal";
|
||||
SetDockWidgetVisible(label, !IsDockWidgetVisible(label));
|
||||
});
|
||||
|
||||
|
||||
m_menuView->addSeparator();
|
||||
|
||||
@@ -321,6 +352,13 @@ namespace ShaderManagementConsole
|
||||
});
|
||||
}
|
||||
|
||||
QString ShaderManagementConsoleWindow::GetDocumentPath(const AZ::Uuid& documentId) const
|
||||
{
|
||||
AZStd::string absolutePath;
|
||||
ShaderManagementConsoleDocumentRequestBus::EventResult(absolutePath, documentId, &ShaderManagementConsoleDocumentRequestBus::Handler::GetAbsolutePath);
|
||||
return absolutePath.c_str();
|
||||
}
|
||||
|
||||
void ShaderManagementConsoleWindow::OpenTabContextMenu()
|
||||
{
|
||||
const QTabBar* tabBar = m_tabWidget->tabBar();
|
||||
|
||||
+3
@@ -52,6 +52,9 @@ namespace ShaderManagementConsole
|
||||
|
||||
void CreateMenu() override;
|
||||
void CreateTabBar() override;
|
||||
|
||||
QString GetDocumentPath(const AZ::Uuid& documentId) const;
|
||||
|
||||
void OpenTabContextMenu() override;
|
||||
|
||||
void SelectDocumentForTab(const int tabIndex);
|
||||
|
||||
Reference in New Issue
Block a user