Atom Tools: moving custom asset browser code to common location
Consolidated duplicate asset browser code from multiple tools into single class in atom tools framework Moved creation of asset browser and Python terminal windows into base main window class Fixed docked window orientations Added checks to asset browser to prevent crashes if tree state saver was null Signed-off-by: Guthrie Adams <guthadam@amazon.com>
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
|
||||
@@ -36,6 +37,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