Merge pull request #3056 from aws-lumberyard-dev/Atom/guthadam/atomtools_refactor_statusbar_and_central_widget
AtomTools: fixing status bar messages
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