Moved loading code into separate functions based on source file type
Moved table view code into its own class that will handle modifications to the document Signed-off-by: Guthrie Adams <guthadam@amazon.com>
This commit is contained in:
+5
-62
@@ -6,23 +6,19 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include <Atom/RPI.Edit/Shader/ShaderSourceData.h>
|
||||
#include <Atom/RPI.Edit/Shader/ShaderVariantListSourceData.h>
|
||||
#include <Atom/RPI.Reflect/Shader/ShaderAsset.h>
|
||||
#include <AtomToolsFramework/Document/AtomToolsDocumentSystemRequestBus.h>
|
||||
#include <AtomToolsFramework/Util/Util.h>
|
||||
#include <AzCore/Name/Name.h>
|
||||
#include <AzCore/Utils/Utils.h>
|
||||
#include <AzQtComponents/Components/WindowDecorationWrapper.h>
|
||||
#include <Document/ShaderManagementConsoleDocumentRequestBus.h>
|
||||
#include <Window/ShaderManagementConsoleTableView.h>
|
||||
#include <Window/ShaderManagementConsoleWindow.h>
|
||||
|
||||
AZ_PUSH_DISABLE_WARNING(4251 4800, "-Wunknown-warning-option") // disable warnings spawned by QT
|
||||
#include <QDesktopServices>
|
||||
#include <QFileDialog>
|
||||
#include <QHeaderView>
|
||||
#include <QStandardItemModel>
|
||||
#include <QTableView>
|
||||
#include <QUrl>
|
||||
#include <QWindow>
|
||||
AZ_POP_DISABLE_WARNING
|
||||
|
||||
namespace ShaderManagementConsole
|
||||
{
|
||||
@@ -79,60 +75,7 @@ namespace ShaderManagementConsole
|
||||
|
||||
QWidget* ShaderManagementConsoleWindow::CreateDocumentTabView(const AZ::Uuid& documentId)
|
||||
{
|
||||
AZStd::unordered_set<AZStd::string> optionNames;
|
||||
|
||||
size_t shaderOptionCount = 0;
|
||||
ShaderManagementConsoleDocumentRequestBus::EventResult(
|
||||
shaderOptionCount, documentId, &ShaderManagementConsoleDocumentRequestBus::Events::GetShaderOptionCount);
|
||||
|
||||
for (size_t optionIndex = 0; optionIndex < shaderOptionCount; ++optionIndex)
|
||||
{
|
||||
AZ::RPI::ShaderOptionDescriptor shaderOptionDesc;
|
||||
ShaderManagementConsoleDocumentRequestBus::EventResult(
|
||||
shaderOptionDesc, documentId, &ShaderManagementConsoleDocumentRequestBus::Events::GetShaderOptionDescriptor, optionIndex);
|
||||
optionNames.insert(shaderOptionDesc.GetName().GetCStr());
|
||||
}
|
||||
|
||||
size_t shaderVariantCount = 0;
|
||||
ShaderManagementConsoleDocumentRequestBus::EventResult(
|
||||
shaderVariantCount, documentId, &ShaderManagementConsoleDocumentRequestBus::Events::GetShaderVariantCount);
|
||||
|
||||
auto model = new QStandardItemModel();
|
||||
model->setRowCount(static_cast<int>(shaderVariantCount));
|
||||
model->setColumnCount(static_cast<int>(optionNames.size()));
|
||||
|
||||
int nameIndex = 0;
|
||||
for (const auto& optionName : optionNames)
|
||||
{
|
||||
model->setHeaderData(nameIndex++, Qt::Horizontal, optionName.c_str());
|
||||
}
|
||||
|
||||
for (int variantIndex = 0; variantIndex < shaderVariantCount; ++variantIndex)
|
||||
{
|
||||
AZ::RPI::ShaderVariantListSourceData::VariantInfo shaderVariantInfo;
|
||||
ShaderManagementConsoleDocumentRequestBus::EventResult(
|
||||
shaderVariantInfo, documentId, &ShaderManagementConsoleDocumentRequestBus::Events::GetShaderVariantInfo, variantIndex);
|
||||
|
||||
model->setHeaderData(variantIndex, Qt::Vertical, QString::number(variantIndex));
|
||||
|
||||
for (const auto& shaderOption : shaderVariantInfo.m_options)
|
||||
{
|
||||
AZ::Name optionName{ shaderOption.first };
|
||||
AZ::Name optionValue{ shaderOption.second };
|
||||
|
||||
auto optionIt = optionNames.find(optionName.GetCStr());
|
||||
int optionIndex = static_cast<int>(AZStd::distance(optionNames.begin(), optionIt));
|
||||
|
||||
QStandardItem* item = new QStandardItem(optionValue.GetCStr());
|
||||
model->setItem(variantIndex, optionIndex, item);
|
||||
}
|
||||
}
|
||||
|
||||
// The document tab contains a table view.
|
||||
auto contentWidget = new QTableView(centralWidget());
|
||||
contentWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||
contentWidget->setModel(model);
|
||||
return contentWidget;
|
||||
return new ShaderManagementConsoleTableView(documentId, centralWidget());
|
||||
}
|
||||
} // namespace ShaderManagementConsole
|
||||
|
||||
|
||||
Reference in New Issue
Block a user