Added option to disable edit button in asset widgets when there are no asset selected. (#7521)
Added new attribute "DisableEditButtonWheNoAssetSelected" to PropertyAssetCtrl. By default it's false, keeping the original behavior of leaving the edit button enabled and if it's clicked while there is no asset assigned it'll try to create a new one. PhysX mesh asset property uses now this new feature. Signed-off-by: moraaar moraaar@amazon.com
This commit is contained in:
+40
-2
@@ -102,7 +102,7 @@ namespace AzToolsFramework
|
||||
m_editButton->setAutoRaise(true);
|
||||
m_editButton->setIcon(QIcon(":/stylesheet/img/UI20/open-in-internal-app.svg"));
|
||||
m_editButton->setToolTip("Edit asset");
|
||||
m_editButton->setVisible(false);
|
||||
SetEditButtonVisible(false);
|
||||
|
||||
connect(m_editButton, &QToolButton::clicked, this, &PropertyAssetCtrl::OnEditButtonClicked);
|
||||
|
||||
@@ -961,12 +961,16 @@ namespace AzToolsFramework
|
||||
AzFramework::StringFunc::Path::GetFileName(assetPath.c_str(), m_defaultAssetHint);
|
||||
}
|
||||
m_browseEdit->setPlaceholderText((m_defaultAssetHint + m_DefaultSuffix).c_str());
|
||||
|
||||
UpdateEditButton();
|
||||
}
|
||||
|
||||
void PropertyAssetCtrl::UpdateAssetDisplay()
|
||||
{
|
||||
UpdateThumbnail();
|
||||
|
||||
UpdateEditButton();
|
||||
|
||||
if (m_currentAssetType == AZ::Data::s_invalidAssetType)
|
||||
{
|
||||
return;
|
||||
@@ -1109,7 +1113,9 @@ namespace AzToolsFramework
|
||||
|
||||
void PropertyAssetCtrl::SetEditButtonVisible(bool visible)
|
||||
{
|
||||
m_editButton->setVisible(visible);
|
||||
m_showEditButton = visible;
|
||||
m_editButton->setVisible(m_showEditButton);
|
||||
UpdateEditButton();
|
||||
}
|
||||
|
||||
void PropertyAssetCtrl::SetEditButtonIcon(const QIcon& icon)
|
||||
@@ -1205,6 +1211,15 @@ namespace AzToolsFramework
|
||||
m_thumbnail->ClearThumbnail();
|
||||
}
|
||||
|
||||
void PropertyAssetCtrl::UpdateEditButton()
|
||||
{
|
||||
// if Edit button is in use (shown), enable/disable it depending on the current asset id.
|
||||
if (m_showEditButton && m_disableEditButtonWhenNoAssetSelected)
|
||||
{
|
||||
m_editButton->setEnabled(GetCurrentAssetID().IsValid());
|
||||
}
|
||||
}
|
||||
|
||||
void PropertyAssetCtrl::SetClearButtonEnabled(bool enable)
|
||||
{
|
||||
m_browseEdit->setClearButtonEnabled(enable);
|
||||
@@ -1236,6 +1251,17 @@ namespace AzToolsFramework
|
||||
return m_hideProductFilesInAssetPicker;
|
||||
}
|
||||
|
||||
void PropertyAssetCtrl::SetDisableEditButtonWhenNoAssetSelected(bool disableEditButtonWhenNoAssetSelected)
|
||||
{
|
||||
m_disableEditButtonWhenNoAssetSelected = disableEditButtonWhenNoAssetSelected;
|
||||
UpdateEditButton();
|
||||
}
|
||||
|
||||
bool PropertyAssetCtrl::GetDisableEditButtonWhenNoAssetSelected() const
|
||||
{
|
||||
return m_disableEditButtonWhenNoAssetSelected;
|
||||
}
|
||||
|
||||
void PropertyAssetCtrl::SetShowThumbnail(bool enable)
|
||||
{
|
||||
m_showThumbnail = enable;
|
||||
@@ -1349,6 +1375,12 @@ namespace AzToolsFramework
|
||||
GUI->SetEditButtonTooltip(tr(buttonTooltip.c_str()));
|
||||
}
|
||||
}
|
||||
else if (attrib == AZ_CRC_CE("DisableEditButtonWhenNoAssetSelected"))
|
||||
{
|
||||
bool disableEditButtonWhenNoAssetSelected = false;
|
||||
attrValue->Read<bool>(disableEditButtonWhenNoAssetSelected);
|
||||
GUI->SetDisableEditButtonWhenNoAssetSelected(disableEditButtonWhenNoAssetSelected);
|
||||
}
|
||||
else if (attrib == AZ::Edit::Attributes::DefaultAsset)
|
||||
{
|
||||
AZ::Data::AssetId assetId;
|
||||
@@ -1597,6 +1629,12 @@ namespace AzToolsFramework
|
||||
GUI->SetEditButtonTooltip(tr(buttonTooltip.c_str()));
|
||||
}
|
||||
}
|
||||
else if (attrib == AZ_CRC_CE("DisableEditButtonWhenNoAssetSelected"))
|
||||
{
|
||||
bool disableEditButtonWhenNoAssetSelected = false;
|
||||
attrValue->Read<bool>(disableEditButtonWhenNoAssetSelected);
|
||||
GUI->SetDisableEditButtonWhenNoAssetSelected(disableEditButtonWhenNoAssetSelected);
|
||||
}
|
||||
}
|
||||
|
||||
void SimpleAssetPropertyHandlerDefault::WriteGUIValuesIntoProperty(size_t index, PropertyAssetCtrl* GUI, property_t& instance, InstanceDataNode* node)
|
||||
|
||||
+8
@@ -159,6 +159,10 @@ namespace AzToolsFramework
|
||||
//! By default the asset picker shows both on an AZ::Asset<> property. You can hide product assets with this flag.
|
||||
bool m_hideProductFilesInAssetPicker = false;
|
||||
|
||||
//! True to disable the edit button when there is no asset currently selected.
|
||||
bool m_disableEditButtonWhenNoAssetSelected = false;
|
||||
|
||||
bool m_showEditButton = false;
|
||||
bool m_showThumbnail = false;
|
||||
bool m_showThumbnailDropDownButton = false;
|
||||
EditCallbackType* m_thumbnailCallback = nullptr;
|
||||
@@ -220,6 +224,9 @@ namespace AzToolsFramework
|
||||
void SetHideProductFilesInAssetPicker(bool hide);
|
||||
bool GetHideProductFilesInAssetPicker() const;
|
||||
|
||||
void SetDisableEditButtonWhenNoAssetSelected(bool disableEditButtonWhenNoAssetSelected);
|
||||
bool GetDisableEditButtonWhenNoAssetSelected() const;
|
||||
|
||||
// Enable and configure a thumbnail widget that displays an asset preview and dropdown arrow for a dropdown menu
|
||||
void SetShowThumbnail(bool enable);
|
||||
bool GetShowThumbnail() const;
|
||||
@@ -250,6 +257,7 @@ namespace AzToolsFramework
|
||||
|
||||
private:
|
||||
void UpdateThumbnail();
|
||||
void UpdateEditButton();
|
||||
};
|
||||
|
||||
class AssetPropertyHandlerDefault
|
||||
|
||||
@@ -60,6 +60,7 @@ namespace PhysX
|
||||
"Specifies the PhysX mesh collider asset for this PhysX collider component.")
|
||||
->Attribute(AZ_CRC_CE("EditButton"), "")
|
||||
->Attribute(AZ_CRC_CE("EditDescription"), "Open in Scene Settings")
|
||||
->Attribute(AZ_CRC_CE("DisableEditButtonWhenNoAssetSelected"), true)
|
||||
->DataElement(AZ::Edit::UIHandlers::Default, &EditorProxyAssetShapeConfig::m_configuration, "Configuration",
|
||||
"PhysX mesh asset collider configuration.")
|
||||
->Attribute(AZ::Edit::Attributes::Visibility, AZ::Edit::PropertyVisibility::ShowChildrenOnly);
|
||||
|
||||
Reference in New Issue
Block a user