Merge pull request #6960 from aws-lumberyard-dev/Atom/guthadam/atom_tools_shared_asset_browser
Atom Tools: moving custom asset browser code to common location
This commit is contained in:
+9
-2
@@ -230,7 +230,10 @@ namespace AzToolsFramework
|
||||
{
|
||||
QModelIndex curIndex = selectedIndexes[0];
|
||||
m_expandToEntriesByDefault = true;
|
||||
m_treeStateSaver->ApplySnapshot();
|
||||
if (m_treeStateSaver)
|
||||
{
|
||||
m_treeStateSaver->ApplySnapshot();
|
||||
}
|
||||
|
||||
setCurrentIndex(curIndex);
|
||||
scrollTo(curIndex);
|
||||
@@ -240,8 +243,12 @@ namespace AzToolsFramework
|
||||
|
||||
// Flag our default expansion state so that we expand down to source entries after filtering
|
||||
m_expandToEntriesByDefault = hasFilter;
|
||||
|
||||
// Then ask our state saver to apply its current snapshot again, falling back on asking us if entries should be expanded or not
|
||||
m_treeStateSaver->ApplySnapshot();
|
||||
if (m_treeStateSaver)
|
||||
{
|
||||
m_treeStateSaver->ApplySnapshot();
|
||||
}
|
||||
|
||||
// If we're filtering for a valid entry, select the first valid entry
|
||||
if (hasFilter && selectFirstValidEntry)
|
||||
|
||||
+23
-25
@@ -9,17 +9,14 @@
|
||||
#pragma once
|
||||
|
||||
#if !defined(Q_MOC_RUN)
|
||||
#include <AtomToolsFramework/Document/AtomToolsDocumentNotificationBus.h>
|
||||
#include <AzCore/Component/TickBus.h>
|
||||
#include <AzToolsFramework/AssetBrowser/AssetBrowserBus.h>
|
||||
#include <AzToolsFramework/AssetBrowser/Entries/AssetBrowserEntry.h>
|
||||
#include <AzToolsFramework/AssetBrowser/Search/Filter.h>
|
||||
|
||||
AZ_PUSH_DISABLE_WARNING(4251 4800, "-Wunknown-warning-option") // disable warnings spawned by QT
|
||||
#include <QByteArray>
|
||||
#include <QWidget>
|
||||
AZ_POP_DISABLE_WARNING
|
||||
|
||||
#endif
|
||||
|
||||
namespace AzToolsFramework
|
||||
@@ -27,49 +24,50 @@ namespace AzToolsFramework
|
||||
namespace AssetBrowser
|
||||
{
|
||||
class AssetBrowserFilterModel;
|
||||
class CompositeFilter;
|
||||
class AssetBrowserEntry;
|
||||
class ProductAssetBrowserEntry;
|
||||
class SourceAssetBrowserEntry;
|
||||
}
|
||||
}
|
||||
} // namespace AzToolsFramework
|
||||
|
||||
namespace Ui
|
||||
{
|
||||
class MaterialBrowserWidget;
|
||||
class AtomToolsAssetBrowser;
|
||||
}
|
||||
|
||||
namespace MaterialEditor
|
||||
namespace AtomToolsFramework
|
||||
{
|
||||
//! Provides a tree view of all available materials and other assets exposed by the MaterialEditor.
|
||||
class MaterialBrowserWidget
|
||||
//! Extends the standard asset browser with custom filters and multiselect behavior
|
||||
class AtomToolsAssetBrowser
|
||||
: public QWidget
|
||||
, protected AZ::TickBus::Handler
|
||||
, protected AtomToolsFramework::AtomToolsDocumentNotificationBus::Handler
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
MaterialBrowserWidget(QWidget* parent = nullptr);
|
||||
~MaterialBrowserWidget();
|
||||
AtomToolsAssetBrowser(QWidget* parent = nullptr);
|
||||
~AtomToolsAssetBrowser();
|
||||
|
||||
private:
|
||||
AzToolsFramework::AssetBrowser::FilterConstType CreateFilter() const;
|
||||
void SetFilterState(const AZStd::string& category, const AZStd::string& displayName, bool enabled);
|
||||
void SetOpenHandler(AZStd::function<void(const AZStd::string&)> openHandler);
|
||||
|
||||
void SelectEntries(const AZStd::string& absolutePath);
|
||||
void OpenSelectedEntries();
|
||||
void OpenOptionsMenu();
|
||||
|
||||
// AtomToolsDocumentNotificationBus::Handler implementation
|
||||
void OnDocumentOpened(const AZ::Uuid& documentId) override;
|
||||
protected:
|
||||
AzToolsFramework::AssetBrowser::FilterConstType CreateFilter() const;
|
||||
void UpdateFilter();
|
||||
void UpdatePreview();
|
||||
void TogglePreview();
|
||||
|
||||
// AZ::TickBus::Handler
|
||||
void OnTick(float deltaTime, AZ::ScriptTimePoint time) override;
|
||||
|
||||
void OpenOptionsMenu();
|
||||
|
||||
QScopedPointer<Ui::MaterialBrowserWidget> m_ui;
|
||||
QScopedPointer<Ui::AtomToolsAssetBrowser> m_ui;
|
||||
AzToolsFramework::AssetBrowser::AssetBrowserFilterModel* m_filterModel = nullptr;
|
||||
|
||||
//! if new asset is being created with this path it will automatically be selected
|
||||
//! If an asset is opened with this path it will automatically be selected
|
||||
AZStd::string m_pathToSelect;
|
||||
|
||||
QByteArray m_materialBrowserState;
|
||||
QByteArray m_browserState;
|
||||
|
||||
AZStd::function<void(const AZStd::string&)> m_openHandler;
|
||||
};
|
||||
} // namespace MaterialEditor
|
||||
} // namespace AtomToolsFramework
|
||||
+3
@@ -8,6 +8,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AtomToolsFramework/AssetBrowser/AtomToolsAssetBrowser.h>
|
||||
#include <AtomToolsFramework/Window/AtomToolsMainWindowRequestBus.h>
|
||||
#include <AzCore/Memory/SystemAllocator.h>
|
||||
#include <AzQtComponents/Components/DockMainWindow.h>
|
||||
@@ -53,6 +54,8 @@ namespace AtomToolsFramework
|
||||
QMenu* m_menuView = {};
|
||||
QMenu* m_menuHelp = {};
|
||||
|
||||
AtomToolsFramework::AtomToolsAssetBrowser* m_assetBrowser = {};
|
||||
|
||||
AZStd::unordered_map<AZStd::string, AzQtComponents::StyledDockWidget*> m_dockWidgets;
|
||||
AZStd::unordered_map<AZStd::string, QAction*> m_dockActions;
|
||||
};
|
||||
|
||||
+102
-113
@@ -6,13 +6,9 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include <Atom/Document/MaterialDocumentRequestBus.h>
|
||||
#include <Atom/RPI.Edit/Material/MaterialSourceData.h>
|
||||
#include <Atom/RPI.Edit/Material/MaterialTypeSourceData.h>
|
||||
#include <Atom/RPI.Reflect/Image/StreamingImageAsset.h>
|
||||
#include <Atom/RPI.Reflect/Material/MaterialAsset.h>
|
||||
#include <AtomToolsFramework/Document/AtomToolsDocumentRequestBus.h>
|
||||
#include <AtomToolsFramework/Document/AtomToolsDocumentSystemRequestBus.h>
|
||||
#include <AssetBrowser/ui_AtomToolsAssetBrowser.h>
|
||||
#include <AtomToolsFramework/AssetBrowser/AtomToolsAssetBrowser.h>
|
||||
#include <AzFramework/StringFunc/StringFunc.h>
|
||||
#include <AzQtComponents/Utilities/DesktopUtilities.h>
|
||||
#include <AzToolsFramework/AssetBrowser/AssetBrowserBus.h>
|
||||
#include <AzToolsFramework/AssetBrowser/AssetBrowserEntry.h>
|
||||
@@ -21,41 +17,32 @@
|
||||
#include <AzToolsFramework/AssetBrowser/AssetSelectionModel.h>
|
||||
#include <AzToolsFramework/AssetBrowser/Search/Filter.h>
|
||||
#include <AzToolsFramework/AssetBrowser/Views/AssetBrowserTreeView.h>
|
||||
#include <Window/MaterialBrowserWidget.h>
|
||||
#include <Window/ui_MaterialBrowserWidget.h>
|
||||
|
||||
AZ_PUSH_DISABLE_WARNING(4251 4800, "-Wunknown-warning-option") // disable warnings spawned by QT
|
||||
#include <QAction>
|
||||
#include <QByteArray>
|
||||
#include <QCursor>
|
||||
#include <QDesktopServices>
|
||||
#include <QList>
|
||||
#include <QMenu>
|
||||
#include <QMessageBox>
|
||||
#include <QPushButton>
|
||||
#include <QUrl>
|
||||
AZ_POP_DISABLE_WARNING
|
||||
|
||||
namespace MaterialEditor
|
||||
namespace AtomToolsFramework
|
||||
{
|
||||
MaterialBrowserWidget::MaterialBrowserWidget(QWidget* parent)
|
||||
AtomToolsAssetBrowser::AtomToolsAssetBrowser(QWidget* parent)
|
||||
: QWidget(parent)
|
||||
, m_ui(new Ui::MaterialBrowserWidget)
|
||||
, m_ui(new Ui::AtomToolsAssetBrowser)
|
||||
{
|
||||
using namespace AzToolsFramework::AssetBrowser;
|
||||
|
||||
m_ui->setupUi(this);
|
||||
|
||||
m_ui->m_searchWidget->Setup(true, true);
|
||||
m_ui->m_searchWidget->SetFilterState("", AZ::RPI::StreamingImageAsset::Group, true);
|
||||
m_ui->m_searchWidget->SetFilterState("", AZ::RPI::MaterialAsset::Group, true);
|
||||
m_ui->m_searchWidget->setMinimumSize(QSize(150, 0));
|
||||
m_ui->m_viewOptionButton->setIcon(QIcon(":/Icons/View.svg"));
|
||||
|
||||
m_ui->m_viewOptionButton->setIcon(QIcon(":/Icons/view.svg"));
|
||||
m_ui->m_splitter->setSizes(QList<int>() << 400 << 200);
|
||||
m_ui->m_splitter->setStretchFactor(0, 1);
|
||||
|
||||
connect(m_ui->m_viewOptionButton, &QPushButton::clicked, this, &MaterialBrowserWidget::OpenOptionsMenu);
|
||||
|
||||
// Get the asset browser model
|
||||
AssetBrowserModel* assetBrowserModel = nullptr;
|
||||
AssetBrowserComponentRequestBus::BroadcastResult(assetBrowserModel, &AssetBrowserComponentRequests::GetAssetBrowserModel);
|
||||
@@ -73,38 +60,82 @@ namespace MaterialEditor
|
||||
// Maintains the tree expansion state between runs
|
||||
m_ui->m_assetBrowserTreeViewWidget->SetName("AssetBrowserTreeView_main");
|
||||
|
||||
connect(m_ui->m_searchWidget->GetFilter().data(), &AssetBrowserEntryFilter::updatedSignal, m_filterModel, &AssetBrowserFilterModel::filterUpdatedSlot);
|
||||
connect(m_filterModel, &AssetBrowserFilterModel::filterChanged, this, [this]()
|
||||
{
|
||||
const bool hasFilter = !m_ui->m_searchWidget->GetFilterString().isEmpty();
|
||||
constexpr bool selectFirstFilteredIndex = true;
|
||||
m_ui->m_assetBrowserTreeViewWidget->UpdateAfterFilter(hasFilter, selectFirstFilteredIndex);
|
||||
});
|
||||
connect(m_ui->m_assetBrowserTreeViewWidget, &AssetBrowserTreeView::activated, this, &MaterialBrowserWidget::OpenSelectedEntries);
|
||||
connect(m_ui->m_assetBrowserTreeViewWidget, &AssetBrowserTreeView::selectionChangedSignal, [this]() {
|
||||
const auto& selectedAssets = m_ui->m_assetBrowserTreeViewWidget->GetSelectedAssets();
|
||||
if (!selectedAssets.empty())
|
||||
{
|
||||
m_ui->m_previewerFrame->Display(selectedAssets.front());
|
||||
}
|
||||
else
|
||||
{
|
||||
m_ui->m_previewerFrame->Clear();
|
||||
}
|
||||
});
|
||||
|
||||
AtomToolsFramework::AtomToolsDocumentNotificationBus::Handler::BusConnect();
|
||||
connect(m_filterModel, &AssetBrowserFilterModel::filterChanged, this, &AtomToolsAssetBrowser::UpdateFilter);
|
||||
connect(m_ui->m_assetBrowserTreeViewWidget, &AssetBrowserTreeView::activated, this, &AtomToolsAssetBrowser::OpenSelectedEntries);
|
||||
connect(m_ui->m_assetBrowserTreeViewWidget, &AssetBrowserTreeView::selectionChangedSignal, this, &AtomToolsAssetBrowser::UpdatePreview);
|
||||
connect(m_ui->m_viewOptionButton, &QPushButton::clicked, this, &AtomToolsAssetBrowser::OpenOptionsMenu);
|
||||
connect(
|
||||
m_ui->m_searchWidget->GetFilter().data(), &AssetBrowserEntryFilter::updatedSignal, m_filterModel,
|
||||
&AssetBrowserFilterModel::filterUpdatedSlot);
|
||||
}
|
||||
|
||||
MaterialBrowserWidget::~MaterialBrowserWidget()
|
||||
AtomToolsAssetBrowser::~AtomToolsAssetBrowser()
|
||||
{
|
||||
// Maintains the tree expansion state between runs
|
||||
m_ui->m_assetBrowserTreeViewWidget->SaveState();
|
||||
AtomToolsFramework::AtomToolsDocumentNotificationBus::Handler::BusDisconnect();
|
||||
AZ::TickBus::Handler::BusDisconnect();
|
||||
}
|
||||
|
||||
AzToolsFramework::AssetBrowser::FilterConstType MaterialBrowserWidget::CreateFilter() const
|
||||
void AtomToolsAssetBrowser::SetFilterState(const AZStd::string& category, const AZStd::string& displayName, bool enabled)
|
||||
{
|
||||
m_ui->m_searchWidget->SetFilterState(category.c_str(), displayName.c_str(), enabled);
|
||||
}
|
||||
|
||||
void AtomToolsAssetBrowser::SetOpenHandler(AZStd::function<void(const AZStd::string&)> openHandler)
|
||||
{
|
||||
m_openHandler = openHandler;
|
||||
}
|
||||
|
||||
void AtomToolsAssetBrowser::SelectEntries(const AZStd::string& absolutePath)
|
||||
{
|
||||
if (!absolutePath.empty())
|
||||
{
|
||||
// Selecting a new asset in the browser is not guaranteed to happen immediately.
|
||||
// The asset browser model notifications are sent before the model is updated.
|
||||
// Instead of relying on the notifications, queue the selection and process it on tick until this change occurs.
|
||||
m_pathToSelect = absolutePath;
|
||||
AzFramework::StringFunc::Path::Normalize(m_pathToSelect);
|
||||
AZ::TickBus::Handler::BusConnect();
|
||||
}
|
||||
}
|
||||
|
||||
void AtomToolsAssetBrowser::OpenSelectedEntries()
|
||||
{
|
||||
const AZStd::vector<AssetBrowserEntry*> entries = m_ui->m_assetBrowserTreeViewWidget->GetSelectedAssets();
|
||||
|
||||
const int multiSelectPromptThreshold = 10;
|
||||
if (entries.size() >= multiSelectPromptThreshold)
|
||||
{
|
||||
QMessageBox::StandardButton result = QMessageBox::question(
|
||||
QApplication::activeWindow(),
|
||||
tr("Attemptng to open %1 files").arg(entries.size()),
|
||||
tr("Would you like to open anyway?"),
|
||||
QMessageBox::Yes | QMessageBox::No);
|
||||
if (result == QMessageBox::No)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
for (const AssetBrowserEntry* entry : entries)
|
||||
{
|
||||
if (entry && entry->GetEntryType() != AssetBrowserEntry::AssetEntryType::Folder && m_openHandler)
|
||||
{
|
||||
m_openHandler(entry->GetFullPath().c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void AtomToolsAssetBrowser::OpenOptionsMenu()
|
||||
{
|
||||
QMenu menu;
|
||||
QAction* action = menu.addAction(tr("Show Asset Preview"), this, &AtomToolsAssetBrowser::TogglePreview);
|
||||
action->setCheckable(true);
|
||||
action->setChecked(m_ui->m_previewerFrame->isVisible());
|
||||
menu.exec(QCursor::pos());
|
||||
}
|
||||
|
||||
AzToolsFramework::AssetBrowser::FilterConstType AtomToolsAssetBrowser::CreateFilter() const
|
||||
{
|
||||
using namespace AzToolsFramework::AssetBrowser;
|
||||
|
||||
@@ -125,59 +156,42 @@ namespace MaterialEditor
|
||||
return finalFilter;
|
||||
}
|
||||
|
||||
void MaterialBrowserWidget::OpenSelectedEntries()
|
||||
void AtomToolsAssetBrowser::UpdateFilter()
|
||||
{
|
||||
const AZStd::vector<AssetBrowserEntry*> entries = m_ui->m_assetBrowserTreeViewWidget->GetSelectedAssets();
|
||||
const bool hasFilter = !m_ui->m_searchWidget->GetFilterString().isEmpty();
|
||||
constexpr bool selectFirstFilteredIndex = true;
|
||||
m_ui->m_assetBrowserTreeViewWidget->UpdateAfterFilter(hasFilter, selectFirstFilteredIndex);
|
||||
}
|
||||
|
||||
const int multiSelectPromptThreshold = 10;
|
||||
if (entries.size() >= multiSelectPromptThreshold)
|
||||
void AtomToolsAssetBrowser::UpdatePreview()
|
||||
{
|
||||
const auto& selectedAssets = m_ui->m_assetBrowserTreeViewWidget->GetSelectedAssets();
|
||||
if (!selectedAssets.empty())
|
||||
{
|
||||
if (QMessageBox::question(
|
||||
QApplication::activeWindow(),
|
||||
QString("Attemptng to open %1 files").arg(entries.size()),
|
||||
"Would you like to open anyway?",
|
||||
QMessageBox::Yes | QMessageBox::No) == QMessageBox::No)
|
||||
{
|
||||
return;
|
||||
}
|
||||
m_ui->m_previewerFrame->Display(selectedAssets.front());
|
||||
}
|
||||
|
||||
for (const AssetBrowserEntry* entry : entries)
|
||||
else
|
||||
{
|
||||
if (entry)
|
||||
{
|
||||
if (AzFramework::StringFunc::Path::IsExtension(entry->GetFullPath().c_str(), AZ::RPI::MaterialSourceData::Extension))
|
||||
{
|
||||
AtomToolsFramework::AtomToolsDocumentSystemRequestBus::Broadcast(&AtomToolsFramework::AtomToolsDocumentSystemRequestBus::Events::OpenDocument, entry->GetFullPath());
|
||||
}
|
||||
else if (AzFramework::StringFunc::Path::IsExtension(entry->GetFullPath().c_str(), AZ::RPI::MaterialTypeSourceData::Extension))
|
||||
{
|
||||
//ignore AZ::RPI::MaterialTypeSourceData::Extension
|
||||
}
|
||||
else
|
||||
{
|
||||
QDesktopServices::openUrl(QUrl::fromLocalFile(entry->GetFullPath().c_str()));
|
||||
}
|
||||
}
|
||||
m_ui->m_previewerFrame->Clear();
|
||||
}
|
||||
}
|
||||
|
||||
void MaterialBrowserWidget::OnDocumentOpened(const AZ::Uuid& documentId)
|
||||
void AtomToolsAssetBrowser::TogglePreview()
|
||||
{
|
||||
AZStd::string absolutePath;
|
||||
AtomToolsFramework::AtomToolsDocumentRequestBus::EventResult(absolutePath, documentId, &AtomToolsFramework::AtomToolsDocumentRequestBus::Events::GetAbsolutePath);
|
||||
if (!absolutePath.empty())
|
||||
const bool isPreviewFrameVisible = m_ui->m_previewerFrame->isVisible();
|
||||
m_ui->m_previewerFrame->setVisible(!isPreviewFrameVisible);
|
||||
if (isPreviewFrameVisible)
|
||||
{
|
||||
// Selecting a new asset in the browser is not guaranteed to happen immediately.
|
||||
// The asset browser model notifications are sent before the model is updated.
|
||||
// Instead of relying on the notifications, queue the selection and process it on tick until this change occurs.
|
||||
m_pathToSelect = absolutePath;
|
||||
AzFramework::StringFunc::Path::Normalize(m_pathToSelect);
|
||||
AZ::TickBus::Handler::BusConnect();
|
||||
m_browserState = m_ui->m_splitter->saveState();
|
||||
m_ui->m_splitter->setSizes(QList({ 1, 0 }));
|
||||
}
|
||||
else
|
||||
{
|
||||
m_ui->m_splitter->restoreState(m_browserState);
|
||||
}
|
||||
}
|
||||
|
||||
void MaterialBrowserWidget::OnTick(float deltaTime, AZ::ScriptTimePoint time)
|
||||
void AtomToolsAssetBrowser::OnTick(float deltaTime, AZ::ScriptTimePoint time)
|
||||
{
|
||||
AZ_UNUSED(time);
|
||||
AZ_UNUSED(deltaTime);
|
||||
@@ -188,7 +202,7 @@ namespace MaterialEditor
|
||||
AzToolsFramework::AssetBrowser::AssetBrowserViewRequestBus::Broadcast(
|
||||
&AzToolsFramework::AssetBrowser::AssetBrowserViewRequestBus::Events::SelectFileAtPath, m_pathToSelect);
|
||||
|
||||
// Iterate over the selected entries to verify if the selection was made
|
||||
// Iterate over the selected entries to verify if the selection was made
|
||||
for (const AssetBrowserEntry* entry : m_ui->m_assetBrowserTreeViewWidget->GetSelectedAssets())
|
||||
{
|
||||
if (entry)
|
||||
@@ -205,31 +219,6 @@ namespace MaterialEditor
|
||||
}
|
||||
}
|
||||
}
|
||||
} // namespace AtomToolsFramework
|
||||
|
||||
void MaterialBrowserWidget::OpenOptionsMenu()
|
||||
{
|
||||
QMenu menu;
|
||||
|
||||
QAction* action = new QAction("Show Asset Preview", this);
|
||||
action->setCheckable(true);
|
||||
action->setChecked(m_ui->m_previewerFrame->isVisible());
|
||||
connect(action, &QAction::triggered, [this]() {
|
||||
bool isPreviewFrameVisible = m_ui->m_previewerFrame->isVisible();
|
||||
m_ui->m_previewerFrame->setVisible(!isPreviewFrameVisible);
|
||||
if (isPreviewFrameVisible)
|
||||
{
|
||||
m_materialBrowserState = m_ui->m_splitter->saveState();
|
||||
m_ui->m_splitter->setSizes(QList({ 1, 0 }));
|
||||
}
|
||||
else
|
||||
{
|
||||
m_ui->m_splitter->restoreState(m_materialBrowserState);
|
||||
}
|
||||
});
|
||||
menu.addAction(action);
|
||||
menu.exec(QCursor::pos());
|
||||
}
|
||||
|
||||
} // namespace MaterialEditor
|
||||
|
||||
#include <Window/moc_MaterialBrowserWidget.cpp>
|
||||
#include <AtomToolsFramework/AssetBrowser/moc_AtomToolsAssetBrowser.cpp>
|
||||
@@ -0,0 +1,5 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>Icons/view.svg</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>MaterialBrowserWidget</class>
|
||||
<widget class="QWidget" name="MaterialBrowserWidget">
|
||||
<class>AtomToolsAssetBrowser</class>
|
||||
<widget class="QWidget" name="AtomToolsAssetBrowser">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
|
Before Width: | Height: | Size: 954 B After Width: | Height: | Size: 954 B |
+2
@@ -414,6 +414,8 @@ namespace AtomToolsFramework
|
||||
m_actionPreviousTab->setEnabled(m_tabWidget->count() > 1);
|
||||
m_actionNextTab->setEnabled(m_tabWidget->count() > 1);
|
||||
|
||||
m_assetBrowser->SelectEntries(absolutePath);
|
||||
|
||||
activateWindow();
|
||||
raise();
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
#include <AtomToolsFramework/Window/AtomToolsMainWindow.h>
|
||||
#include <AzToolsFramework/API/EditorPythonRunnerRequestsBus.h>
|
||||
#include <AzToolsFramework/PythonTerminal/ScriptTermDialog.h>
|
||||
|
||||
#include <QFileDialog>
|
||||
#include <QMenu>
|
||||
@@ -40,6 +41,11 @@ namespace AtomToolsFramework
|
||||
centralWidget->setLayout(centralWidgetLayout);
|
||||
setCentralWidget(centralWidget);
|
||||
|
||||
m_assetBrowser = new AtomToolsFramework::AtomToolsAssetBrowser(this);
|
||||
AddDockWidget("Asset Browser", m_assetBrowser, Qt::BottomDockWidgetArea, Qt::Horizontal);
|
||||
AddDockWidget("Python Terminal", new AzToolsFramework::CScriptTermDialog, Qt::BottomDockWidgetArea, Qt::Horizontal);
|
||||
SetDockWidgetVisible("Python Terminal", false);
|
||||
|
||||
AtomToolsMainWindowRequestBus::Handler::BusConnect();
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
set(FILES
|
||||
Include/AtomToolsFramework/Application/AtomToolsApplication.h
|
||||
Include/AtomToolsFramework/AssetBrowser/AtomToolsAssetBrowser.h
|
||||
Include/AtomToolsFramework/Communication/LocalServer.h
|
||||
Include/AtomToolsFramework/Communication/LocalSocket.h
|
||||
Include/AtomToolsFramework/Debug/TraceRecorder.h
|
||||
@@ -37,6 +38,9 @@ set(FILES
|
||||
Include/AtomToolsFramework/Window/AtomToolsMainWindowFactoryRequestBus.h
|
||||
Include/AtomToolsFramework/Window/AtomToolsMainWindowNotificationBus.h
|
||||
Source/Application/AtomToolsApplication.cpp
|
||||
Source/AssetBrowser/AtomToolsAssetBrowser.cpp
|
||||
Source/AssetBrowser/AtomToolsAssetBrowser.qrc
|
||||
Source/AssetBrowser/AtomToolsAssetBrowser.ui
|
||||
Source/Communication/LocalServer.cpp
|
||||
Source/Communication/LocalSocket.cpp
|
||||
Source/Debug/TraceRecorder.cpp
|
||||
|
||||
@@ -21,6 +21,5 @@
|
||||
<file>Icons/shadow.svg</file>
|
||||
<file>Icons/skybox.svg</file>
|
||||
<file>Icons/toneMapping.svg</file>
|
||||
<file>Icons/View.svg</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
||||
@@ -8,15 +8,16 @@
|
||||
|
||||
#include <Atom/Document/MaterialDocumentRequestBus.h>
|
||||
#include <Atom/RHI/Factory.h>
|
||||
#include <Atom/RPI.Edit/Material/MaterialSourceData.h>
|
||||
#include <Atom/RPI.Edit/Material/MaterialTypeSourceData.h>
|
||||
#include <Atom/Window/MaterialEditorWindowSettings.h>
|
||||
#include <AtomToolsFramework/Document/AtomToolsDocumentSystemRequestBus.h>
|
||||
#include <AtomToolsFramework/Util/Util.h>
|
||||
#include <AzQtComponents/Components/StyleManager.h>
|
||||
#include <AzQtComponents/Components/WindowDecorationWrapper.h>
|
||||
#include <AzToolsFramework/PythonTerminal/ScriptTermDialog.h>
|
||||
#include <Viewport/MaterialViewportWidget.h>
|
||||
#include <Window/CreateMaterialDialog/CreateMaterialDialog.h>
|
||||
#include <Window/HelpDialog/HelpDialog.h>
|
||||
#include <Window/MaterialBrowserWidget.h>
|
||||
#include <Window/MaterialEditorWindow.h>
|
||||
#include <Window/MaterialInspector/MaterialInspector.h>
|
||||
#include <Window/PerformanceMonitor/PerformanceMonitorWidget.h>
|
||||
@@ -27,14 +28,16 @@ AZ_PUSH_DISABLE_WARNING(4251 4800, "-Wunknown-warning-option") // disable warnin
|
||||
#include <QApplication>
|
||||
#include <QByteArray>
|
||||
#include <QCloseEvent>
|
||||
#include <QDesktopServices>
|
||||
#include <QFileDialog>
|
||||
#include <QUrl>
|
||||
#include <QWindow>
|
||||
AZ_POP_DISABLE_WARNING
|
||||
|
||||
namespace MaterialEditor
|
||||
{
|
||||
MaterialEditorWindow::MaterialEditorWindow(QWidget* parent /* = 0 */)
|
||||
: AtomToolsFramework::AtomToolsDocumentMainWindow(parent)
|
||||
: Base(parent)
|
||||
{
|
||||
resize(1280, 1024);
|
||||
|
||||
@@ -72,15 +75,30 @@ namespace MaterialEditor
|
||||
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);
|
||||
AddDockWidget("Viewport Settings", new ViewportSettingsInspector, Qt::LeftDockWidgetArea, Qt::Horizontal);
|
||||
AddDockWidget("Performance Monitor", new PerformanceMonitorWidget, Qt::RightDockWidgetArea, Qt::Horizontal);
|
||||
AddDockWidget("Python Terminal", new AzToolsFramework::CScriptTermDialog, Qt::BottomDockWidgetArea, Qt::Horizontal);
|
||||
m_assetBrowser->SetFilterState("", AZ::RPI::StreamingImageAsset::Group, true);
|
||||
m_assetBrowser->SetFilterState("", AZ::RPI::MaterialAsset::Group, true);
|
||||
m_assetBrowser->SetOpenHandler([](const AZStd::string& absolutePath) {
|
||||
if (AzFramework::StringFunc::Path::IsExtension(absolutePath.c_str(), AZ::RPI::MaterialSourceData::Extension))
|
||||
{
|
||||
AtomToolsFramework::AtomToolsDocumentSystemRequestBus::Broadcast(
|
||||
&AtomToolsFramework::AtomToolsDocumentSystemRequestBus::Events::OpenDocument, absolutePath);
|
||||
return;
|
||||
}
|
||||
|
||||
if (AzFramework::StringFunc::Path::IsExtension(absolutePath.c_str(), AZ::RPI::MaterialTypeSourceData::Extension))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
QDesktopServices::openUrl(QUrl::fromLocalFile(absolutePath.c_str()));
|
||||
});
|
||||
|
||||
AddDockWidget("Inspector", new MaterialInspector, Qt::RightDockWidgetArea, Qt::Vertical);
|
||||
AddDockWidget("Viewport Settings", new ViewportSettingsInspector, Qt::LeftDockWidgetArea, Qt::Vertical);
|
||||
AddDockWidget("Performance Monitor", new PerformanceMonitorWidget, Qt::BottomDockWidgetArea, Qt::Horizontal);
|
||||
|
||||
SetDockWidgetVisible("Viewport Settings", false);
|
||||
SetDockWidgetVisible("Performance Monitor", false);
|
||||
SetDockWidgetVisible("Python Terminal", false);
|
||||
|
||||
// Restore geometry and show the window
|
||||
mainWindowWrapper->showFromSettings();
|
||||
|
||||
@@ -21,7 +21,6 @@ namespace MaterialEditor
|
||||
{
|
||||
//! MaterialEditorWindow is the main class. Its responsibility is limited to initializing and connecting
|
||||
//! its panels, managing selection of assets, and performing high-level actions like saving. It contains...
|
||||
//! 1) MaterialBrowser - The user browses for Material (.material) assets.
|
||||
//! 2) MaterialViewport - The user can see the selected Material applied to a model.
|
||||
//! 3) MaterialPropertyInspector - The user edits the properties of the selected Material.
|
||||
class MaterialEditorWindow
|
||||
@@ -48,7 +47,7 @@ namespace MaterialEditor
|
||||
|
||||
void closeEvent(QCloseEvent* closeEvent) override;
|
||||
|
||||
MaterialViewportWidget* m_materialViewport = nullptr;
|
||||
MaterialEditorToolBar* m_toolBar = nullptr;
|
||||
MaterialViewportWidget* m_materialViewport = {};
|
||||
MaterialEditorToolBar* m_toolBar = {};
|
||||
};
|
||||
} // namespace MaterialEditor
|
||||
|
||||
@@ -14,6 +14,7 @@ void InitMaterialEditorResources()
|
||||
//Must register qt resources from other modules
|
||||
Q_INIT_RESOURCE(MaterialEditor);
|
||||
Q_INIT_RESOURCE(InspectorWidget);
|
||||
Q_INIT_RESOURCE(AtomToolsAssetBrowser);
|
||||
}
|
||||
|
||||
namespace MaterialEditor
|
||||
|
||||
@@ -15,9 +15,6 @@ set(FILES
|
||||
Source/Window/MaterialEditorWindow.cpp
|
||||
Source/Window/MaterialEditorWindowModule.cpp
|
||||
Source/Window/MaterialEditorWindowSettings.cpp
|
||||
Source/Window/MaterialBrowserWidget.h
|
||||
Source/Window/MaterialBrowserWidget.cpp
|
||||
Source/Window/MaterialBrowserWidget.ui
|
||||
Source/Window/MaterialEditor.qrc
|
||||
Source/Window/MaterialEditor.qss
|
||||
Source/Window/MaterialEditorWindowComponent.h
|
||||
|
||||
@@ -42,7 +42,6 @@ ly_add_target(
|
||||
NAME ShaderManagementConsole.Window STATIC
|
||||
NAMESPACE Gem
|
||||
AUTOMOC
|
||||
AUTOUIC
|
||||
AUTORCC
|
||||
FILES_CMAKE
|
||||
shadermanagementconsolewindow_files.cmake
|
||||
|
||||
-69
@@ -1,69 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Contributors to the Open 3D Engine Project.
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#if !defined(Q_MOC_RUN)
|
||||
#include <AtomToolsFramework/Document/AtomToolsDocumentNotificationBus.h>
|
||||
#include <AzToolsFramework/AssetBrowser/AssetBrowserBus.h>
|
||||
#include <AzToolsFramework/AssetBrowser/Entries/AssetBrowserEntry.h>
|
||||
#include <AzToolsFramework/AssetBrowser/Search/Filter.h>
|
||||
|
||||
AZ_PUSH_DISABLE_WARNING(4251 4800, "-Wunknown-warning-option") // disable warnings spawned by QT
|
||||
#include <QWidget>
|
||||
AZ_POP_DISABLE_WARNING
|
||||
|
||||
#endif
|
||||
|
||||
namespace AzToolsFramework
|
||||
{
|
||||
namespace AssetBrowser
|
||||
{
|
||||
class AssetBrowserFilterModel;
|
||||
class CompositeFilter;
|
||||
class AssetBrowserEntry;
|
||||
class ProductAssetBrowserEntry;
|
||||
class SourceAssetBrowserEntry;
|
||||
}
|
||||
}
|
||||
|
||||
namespace Ui
|
||||
{
|
||||
class ShaderManagementConsoleBrowserWidget;
|
||||
}
|
||||
|
||||
namespace ShaderManagementConsole
|
||||
{
|
||||
//! Provides a tree view of all available assets
|
||||
class ShaderManagementConsoleBrowserWidget
|
||||
: public QWidget
|
||||
, public AzToolsFramework::AssetBrowser::AssetBrowserModelNotificationBus::Handler
|
||||
, public AtomToolsFramework::AtomToolsDocumentNotificationBus::Handler
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
ShaderManagementConsoleBrowserWidget(QWidget* parent = nullptr);
|
||||
~ShaderManagementConsoleBrowserWidget();
|
||||
|
||||
private:
|
||||
AzToolsFramework::AssetBrowser::FilterConstType CreateFilter() const;
|
||||
void OpenSelectedEntries();
|
||||
|
||||
QScopedPointer<Ui::ShaderManagementConsoleBrowserWidget> m_ui;
|
||||
AzToolsFramework::AssetBrowser::AssetBrowserFilterModel* m_filterModel = nullptr;
|
||||
|
||||
//! if new asset is being created with this path it will automatically be selected
|
||||
AZStd::string m_pathToSelect;
|
||||
|
||||
// AssetBrowserModelNotificationBus::Handler implementation
|
||||
void EntryAdded(const AzToolsFramework::AssetBrowser::AssetBrowserEntry* entry) override;
|
||||
|
||||
// AtomToolsFramework::AtomToolsDocumentNotificationBus::Handler implementation
|
||||
void OnDocumentOpened(const AZ::Uuid& documentId) override;
|
||||
};
|
||||
} // namespace ShaderManagementConsole
|
||||
-168
@@ -1,168 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>ShaderManagementConsoleBrowserWidget</class>
|
||||
<widget class="QWidget" name="ShaderManagementConsoleBrowserWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>691</width>
|
||||
<height>554</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Asset Browser</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QScrollArea" name="scrollArea">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>1</width>
|
||||
<height>1</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="widgetResizable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<widget class="QWidget" name="scrollAreaWidgetContents">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>671</width>
|
||||
<height>534</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="scrollAreaVerticalLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="m_headerLayout">
|
||||
<item>
|
||||
<widget class="AzToolsFramework::AssetBrowser::SearchWidget" name="m_searchWidget" native="true">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSplitter" name="m_splitter">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="childrenCollapsible">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<widget class="QWidget" name="m_leftLayout" native="true">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">vertical-align: top</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="AzToolsFramework::AssetBrowser::AssetBrowserTreeView" name="m_assetBrowserTreeViewWidget">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
|
||||
<horstretch>1</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="dragDropMode">
|
||||
<enum>QAbstractItemView::DragOnly</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="previewWidgetWrapper">
|
||||
<layout class="QVBoxLayout" name="m_rightLayout">
|
||||
<item>
|
||||
<widget class="AzToolsFramework::AssetBrowser::PreviewerFrame" name="m_previewerFrame">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>AzToolsFramework::AssetBrowser::SearchWidget</class>
|
||||
<extends>QWidget</extends>
|
||||
<header>AzToolsFramework/AssetBrowser/Search/SearchWidget.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>AzToolsFramework::AssetBrowser::AssetBrowserTreeView</class>
|
||||
<extends>QTreeView</extends>
|
||||
<header>AzToolsFramework/AssetBrowser/Views/AssetBrowserTreeView.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>AzToolsFramework::AssetBrowser::PreviewerFrame</class>
|
||||
<extends>QFrame</extends>
|
||||
<header>AzToolsFramework/AssetBrowser/Previewer/PreviewerFrame.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
+14
-5
@@ -7,23 +7,25 @@
|
||||
*/
|
||||
|
||||
#include <Atom/Document/ShaderManagementConsoleDocumentRequestBus.h>
|
||||
#include <AtomToolsFramework/Document/AtomToolsDocumentSystemRequestBus.h>
|
||||
#include <AtomToolsFramework/Util/Util.h>
|
||||
#include <AzCore/Name/Name.h>
|
||||
#include <AzQtComponents/Components/WindowDecorationWrapper.h>
|
||||
#include <AzToolsFramework/PythonTerminal/ScriptTermDialog.h>
|
||||
#include <Window/ShaderManagementConsoleWindow.h>
|
||||
|
||||
AZ_PUSH_DISABLE_WARNING(4251 4800, "-Wunknown-warning-option") // disable warnings spawned by QT
|
||||
#include <QDesktopServices>
|
||||
#include <QHeaderView>
|
||||
#include <QStandardItemModel>
|
||||
#include <QTableView>
|
||||
#include <QUrl>
|
||||
#include <QWindow>
|
||||
AZ_POP_DISABLE_WARNING
|
||||
|
||||
namespace ShaderManagementConsole
|
||||
{
|
||||
ShaderManagementConsoleWindow::ShaderManagementConsoleWindow(QWidget* parent /* = 0 */)
|
||||
: AtomToolsFramework::AtomToolsDocumentMainWindow(parent)
|
||||
: Base(parent)
|
||||
{
|
||||
resize(1280, 1024);
|
||||
|
||||
@@ -41,10 +43,17 @@ namespace ShaderManagementConsole
|
||||
m_toolBar->setObjectName("ToolBar");
|
||||
addToolBar(m_toolBar);
|
||||
|
||||
AddDockWidget("Asset Browser", new ShaderManagementConsoleBrowserWidget, Qt::BottomDockWidgetArea, Qt::Vertical);
|
||||
AddDockWidget("Python Terminal", new AzToolsFramework::CScriptTermDialog, Qt::BottomDockWidgetArea, Qt::Horizontal);
|
||||
m_assetBrowser->SetFilterState("", AZ::RPI::ShaderAsset::Group, true);
|
||||
m_assetBrowser->SetOpenHandler([](const AZStd::string& absolutePath) {
|
||||
if (AzFramework::StringFunc::Path::IsExtension(absolutePath.c_str(), AZ::RPI::ShaderVariantListSourceData::Extension))
|
||||
{
|
||||
AtomToolsFramework::AtomToolsDocumentSystemRequestBus::Broadcast(
|
||||
&AtomToolsFramework::AtomToolsDocumentSystemRequestBus::Events::OpenDocument, absolutePath);
|
||||
return;
|
||||
}
|
||||
|
||||
SetDockWidgetVisible("Python Terminal", false);
|
||||
QDesktopServices::openUrl(QUrl::fromLocalFile(absolutePath.c_str()));
|
||||
});
|
||||
|
||||
// Restore geometry and show the window
|
||||
mainWindowWrapper->showFromSettings();
|
||||
|
||||
+1
-3
@@ -14,9 +14,7 @@
|
||||
#include <AtomToolsFramework/Document/AtomToolsDocumentMainWindow.h>
|
||||
|
||||
AZ_PUSH_DISABLE_WARNING(4251 4800, "-Wunknown-warning-option") // disable warnings spawned by QT
|
||||
#include <Window/ShaderManagementConsoleBrowserWidget.h>
|
||||
#include <Window/ToolBar/ShaderManagementConsoleToolBar.h>
|
||||
|
||||
#include <QStandardItemModel>
|
||||
AZ_POP_DISABLE_WARNING
|
||||
#endif
|
||||
@@ -40,6 +38,6 @@ namespace ShaderManagementConsole
|
||||
protected:
|
||||
QWidget* CreateDocumentTabView(const AZ::Uuid& documentId) override;
|
||||
|
||||
ShaderManagementConsoleToolBar* m_toolBar = nullptr;
|
||||
ShaderManagementConsoleToolBar* m_toolBar = {};
|
||||
};
|
||||
} // namespace ShaderManagementConsole
|
||||
|
||||
+11
-1
@@ -9,10 +9,20 @@
|
||||
#include <Atom/Window/ShaderManagementConsoleWindowModule.h>
|
||||
#include <Window/ShaderManagementConsoleWindowComponent.h>
|
||||
|
||||
void InitShaderManagementConsoleResources()
|
||||
{
|
||||
// Must register qt resources from other modules
|
||||
Q_INIT_RESOURCE(ShaderManagementConsole);
|
||||
Q_INIT_RESOURCE(InspectorWidget);
|
||||
Q_INIT_RESOURCE(AtomToolsAssetBrowser);
|
||||
}
|
||||
|
||||
namespace ShaderManagementConsole
|
||||
{
|
||||
ShaderManagementConsoleWindowModule::ShaderManagementConsoleWindowModule()
|
||||
{
|
||||
InitShaderManagementConsoleResources();
|
||||
|
||||
// Push results of [MyComponent]::CreateDescriptor() into m_descriptors here.
|
||||
m_descriptors.insert(m_descriptors.end(), {
|
||||
ShaderManagementConsoleWindowComponent::CreateDescriptor(),
|
||||
@@ -25,4 +35,4 @@ namespace ShaderManagementConsole
|
||||
azrtti_typeid<ShaderManagementConsoleWindowComponent>(),
|
||||
};
|
||||
}
|
||||
}
|
||||
} // namespace ShaderManagementConsole
|
||||
|
||||
@@ -14,9 +14,6 @@ set(FILES
|
||||
Source/Window/ShaderManagementConsoleWindow.h
|
||||
Source/Window/ShaderManagementConsoleWindow.cpp
|
||||
Source/Window/ShaderManagementConsoleWindowModule.cpp
|
||||
Source/Window/ShaderManagementConsoleBrowserWidget.h
|
||||
Source/Window/ShaderManagementConsoleBrowserWidget.cpp
|
||||
Source/Window/ShaderManagementConsoleBrowserWidget.ui
|
||||
Source/Window/ShaderManagementConsole.qrc
|
||||
Source/Window/ShaderManagementConsoleWindowComponent.h
|
||||
Source/Window/ShaderManagementConsoleWindowComponent.cpp
|
||||
|
||||
Reference in New Issue
Block a user