Merge remote-tracking branch 'origin/development' into sc-editor-asset-redux
Signed-off-by: carlitosan <82187351+carlitosan@users.noreply.github.com>
This commit is contained in:
@@ -1111,9 +1111,11 @@ namespace ScriptCanvasEditor
|
||||
return CanCreateConnectionBetween(scSourceEndpoint, scTargetEndpoint).IsSuccess();
|
||||
}
|
||||
|
||||
AZStd::string Graph::GetDataTypeString(const AZ::Uuid& typeId)
|
||||
AZStd::string Graph::GetDataTypeString(const AZ::Uuid&)
|
||||
{
|
||||
return TranslationHelper::GetSafeTypeName(ScriptCanvas::Data::FromAZType(typeId));
|
||||
// This is used by the default tooltip setting in GraphCanvas, returning an empty string
|
||||
// in order for tooltips to be fully controlled by ScriptCanvas
|
||||
return {};
|
||||
}
|
||||
|
||||
void Graph::OnRemoveUnusedNodes()
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
|
||||
#include <GraphCanvas/Components/Nodes/NodeBus.h>
|
||||
|
||||
#include <ScriptCanvas/Core/Slot.h>
|
||||
#include <ScriptCanvas/GraphCanvas/NodeDescriptorBus.h>
|
||||
|
||||
#include <Editor/GraphCanvas/Components/DynamicSlotComponent.h>
|
||||
|
||||
@@ -168,6 +168,14 @@ namespace ScriptCanvasEditor::Nodes
|
||||
|
||||
GraphCanvas::NodeTitleRequestBus::Event(graphCanvasEntity->GetId(), &GraphCanvas::NodeTitleRequests::SetTitle, details.m_name);
|
||||
GraphCanvas::NodeTitleRequestBus::Event(graphCanvasEntity->GetId(), &GraphCanvas::NodeTitleRequests::SetSubTitle, details.m_category);
|
||||
|
||||
// Add to the tooltip the C++ class for reference
|
||||
if (!details.m_tooltip.empty())
|
||||
{
|
||||
details.m_tooltip.append("\n");
|
||||
}
|
||||
details.m_tooltip.append(AZStd::string::format("[C++] %s", node->GetNodeTypeName().c_str()));
|
||||
|
||||
GraphCanvas::NodeRequestBus::Event(graphCanvasEntity->GetId(), &GraphCanvas::NodeRequests::SetTooltip, details.m_tooltip);
|
||||
|
||||
if (!nodeConfiguration.m_titlePalette.empty())
|
||||
@@ -258,17 +266,20 @@ namespace ScriptCanvasEditor::Nodes
|
||||
graphCanvasEntity->CreateComponent<SlotMappingComponent>(methodNode->GetEntityId());
|
||||
graphCanvasEntity->CreateComponent<SceneMemberMappingComponent>(methodNode->GetEntityId());
|
||||
|
||||
bool isAccessor = false;
|
||||
switch (methodNode->GetMethodType())
|
||||
{
|
||||
case ScriptCanvas::MethodType::Event:
|
||||
graphCanvasEntity->CreateComponent<EBusSenderNodeDescriptorComponent>();
|
||||
break;
|
||||
case ScriptCanvas::MethodType::Member:
|
||||
case ScriptCanvas::MethodType::Getter:
|
||||
case ScriptCanvas::MethodType::Setter:
|
||||
case ScriptCanvas::MethodType::Free:
|
||||
isAccessor = true;
|
||||
case ScriptCanvas::MethodType::Member:
|
||||
graphCanvasEntity->CreateComponent<ClassMethodNodeDescriptorComponent>();
|
||||
break;
|
||||
break;
|
||||
default:
|
||||
AZ_Error("ScriptCanvas", false, "Invalid method node type, node creation failed. This node needs to be deleted.");
|
||||
break;
|
||||
@@ -288,20 +299,70 @@ namespace ScriptCanvasEditor::Nodes
|
||||
|
||||
const bool isEBusSender = (methodNode->GetMethodType() == ScriptCanvas::MethodType::Event);
|
||||
const AZStd::string& className = methodNode->GetMethodClassName();
|
||||
const AZStd::string& methodName = methodNode->GetName();
|
||||
AZStd::string methodName = methodNode->GetName();
|
||||
|
||||
GraphCanvas::TranslationKey key;
|
||||
key = isEBusSender ? "EBusSender" : "BehaviorClass";
|
||||
key << className;
|
||||
key << "methods" << methodName;
|
||||
|
||||
if (isAccessor)
|
||||
{
|
||||
AZ::StringFunc::Replace(methodName, "::Getter", "");
|
||||
AZ::StringFunc::Replace(methodName, "::Setter", "");
|
||||
}
|
||||
|
||||
GraphCanvas::TranslationRequests::Details details;
|
||||
details.m_name = methodName;
|
||||
|
||||
AZStd::string context;
|
||||
if (methodNode->GetMethodType() == ScriptCanvas::MethodType::Free)
|
||||
{
|
||||
context = "Constant";
|
||||
}
|
||||
else
|
||||
{
|
||||
context = isEBusSender ? "EBusSender" : "BehaviorClass";
|
||||
}
|
||||
key << context << className;
|
||||
|
||||
GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key + ".details", details);
|
||||
|
||||
GraphCanvas::NodeTitleRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeTitleRequests::SetDetails, details.m_name, details.m_subtitle);
|
||||
GraphCanvas::NodeRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeRequests::SetTooltip, details.m_tooltip);
|
||||
// Set the class' name as the subtitle fallback
|
||||
details.m_subtitle = details.m_name;
|
||||
|
||||
// Get the method's text data
|
||||
GraphCanvas::TranslationRequests::Details methodDetails;
|
||||
methodDetails.m_name = details.m_name; // fallback
|
||||
key << "methods";
|
||||
AZStd::string updatedMethodName = methodName;
|
||||
if (isAccessor)
|
||||
{
|
||||
if (methodNode->GetMethodType() == ScriptCanvas::MethodType::Getter || methodNode->GetMethodType() == ScriptCanvas::MethodType::Free)
|
||||
{
|
||||
updatedMethodName = "Get";
|
||||
}
|
||||
else
|
||||
{
|
||||
updatedMethodName = "Set";
|
||||
}
|
||||
updatedMethodName.append(methodName);
|
||||
}
|
||||
key << updatedMethodName;
|
||||
GraphCanvas::TranslationRequestBus::BroadcastResult(methodDetails, &GraphCanvas::TranslationRequests::GetDetails, key + ".details", methodDetails);
|
||||
|
||||
|
||||
if (methodDetails.m_subtitle.empty())
|
||||
{
|
||||
methodDetails.m_subtitle = details.m_category;
|
||||
}
|
||||
|
||||
// Add to the tooltip the C++ class for reference
|
||||
if (!methodDetails.m_tooltip.empty())
|
||||
{
|
||||
methodDetails.m_tooltip.append("\n");
|
||||
}
|
||||
methodDetails.m_tooltip.append(AZStd::string::format("[C++] %s", className.c_str()));
|
||||
|
||||
GraphCanvas::NodeTitleRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeTitleRequests::SetDetails, methodDetails.m_name, methodDetails.m_subtitle);
|
||||
GraphCanvas::NodeRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeRequests::SetTooltip, methodDetails.m_tooltip);
|
||||
|
||||
int paramIndex = 0;
|
||||
int outputIndex = 0;
|
||||
@@ -329,8 +390,8 @@ namespace ScriptCanvasEditor::Nodes
|
||||
|
||||
if (slot.IsData())
|
||||
{
|
||||
key = isEBusSender ? "EBusSender" : "BehaviorClass";
|
||||
key << className << "methods" << methodName;
|
||||
key.clear();
|
||||
key << context << className << "methods" << updatedMethodName;
|
||||
if (slot.IsData() && slot.IsInput())
|
||||
{
|
||||
key << "params";
|
||||
@@ -345,7 +406,7 @@ namespace ScriptCanvasEditor::Nodes
|
||||
}
|
||||
|
||||
if (slot.IsData())
|
||||
{
|
||||
{
|
||||
index++;
|
||||
}
|
||||
}
|
||||
@@ -449,6 +510,13 @@ namespace ScriptCanvasEditor::Nodes
|
||||
details.m_name = busName;
|
||||
GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key, details);
|
||||
|
||||
// Add to the tooltip the C++ class for reference
|
||||
if (!details.m_tooltip.empty())
|
||||
{
|
||||
details.m_tooltip.append("\n");
|
||||
}
|
||||
details.m_tooltip.append(AZStd::string::format("[C++] %s", busName.c_str()));
|
||||
|
||||
GraphCanvas::NodeRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeRequests::SetTooltip, details.m_tooltip);
|
||||
GraphCanvas::NodeTitleRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeTitleRequests::SetTitle, details.m_name);
|
||||
GraphCanvas::NodeTitleRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeTitleRequests::SetDefaultPalette, "HandlerWrapperNodeTitlePalette");
|
||||
@@ -486,6 +554,13 @@ namespace ScriptCanvasEditor::Nodes
|
||||
// Set the name
|
||||
graphCanvasEntity->SetName(AZStd::string::format("GC-Node(%s)", decoratedName.c_str()));
|
||||
|
||||
// Add to the tooltip the C++ class for reference
|
||||
if (!details.m_tooltip.empty())
|
||||
{
|
||||
details.m_tooltip.append("\n");
|
||||
}
|
||||
details.m_tooltip.append(AZStd::string::format("[C++] %s", busName.c_str()));
|
||||
|
||||
GraphCanvas::NodeRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeRequests::SetTooltip, details.m_tooltip);
|
||||
|
||||
GraphCanvas::NodeTitleRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeTitleRequests::SetTitle, details.m_name);
|
||||
@@ -730,7 +805,7 @@ namespace ScriptCanvasEditor::Nodes
|
||||
return graphCanvasNodeId;
|
||||
}
|
||||
|
||||
// Function Nodes
|
||||
// Function Nodes
|
||||
AZ::EntityId DisplayFunctionNode(AZ::EntityId graphCanvasGraphId, const ScriptCanvas::Nodes::Core::FunctionCallNode* functionNode)
|
||||
{
|
||||
return DisplayFunctionNode(graphCanvasGraphId, const_cast<ScriptCanvas::Nodes::Core::FunctionCallNode*>(functionNode));
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#include <GraphCanvas/Components/Slots/SlotBus.h>
|
||||
#include <GraphCanvas/Components/DynamicOrderingDynamicSlotComponent.h>
|
||||
|
||||
#include <ScriptCanvas/Core/ModifiableDatumView.h>
|
||||
#include <ScriptCanvas/Core/NodeBus.h>
|
||||
|
||||
namespace ScriptCanvasEditor::Nodes
|
||||
|
||||
@@ -398,6 +398,7 @@ namespace ScriptCanvasEditor
|
||||
->Field("ShowUpgradeDialog", &ScriptCanvasEditorSettings::m_showUpgradeDialog)
|
||||
->Field("ZoomSettings", &ScriptCanvasEditorSettings::m_zoomSettings)
|
||||
->Field("ExperimentalSettings", &ScriptCanvasEditorSettings::m_experimentalSettings)
|
||||
->Field("SceneContextMenuNodePaletteWidth", &ScriptCanvasEditorSettings::m_sceneContextMenuNodePaletteWidth)
|
||||
;
|
||||
|
||||
AZ::EditContext* editContext = serialize->GetEditContext();
|
||||
@@ -470,13 +471,13 @@ namespace ScriptCanvasEditor
|
||||
->Attribute(AZ::Edit::Attributes::Visibility, AZ_CRC("PropertyVisibility_ShowChildrenOnly", 0xef428f20))
|
||||
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_snapDistance, "Connection Snap Distance", "The distance from a slot under which connections will snap to it.")
|
||||
->Attribute(AZ::Edit::Attributes::Min, 10.0)
|
||||
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_enableGroupDoubleClickCollapse, "Double Click to Collapse/Uncollapse Group", "Enables the user to decide whether you can double click on a group to collapse/uncollapse a group.")
|
||||
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_enableGroupDoubleClickCollapse, "Double Click to Collapse/Expand Group", "Enables the user to decide whether you can double click on a group to collapse/expand a group.")
|
||||
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_allowBookmarkViewpointControl, "Bookmark Zooming", "Will cause the bookmarks to force the viewport into the state determined by the bookmark type\nBookmark Anchors - The viewport that exists when the bookmark is created.\nNode Groups - The area the Node Group covers")
|
||||
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_dragNodeCouplingConfig, "Node Coupling Configuration", "Controls for managing Node Coupling.\nNode Coupling is when you are dragging a node and leave it hovered over another Node, we will try to connect the sides you overlapped with each other.")
|
||||
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_dragNodeSplicingConfig, "Drag Node Splicing Configuration", "Controls for managing Node Splicing on a Drag.\nNode Splicing on a Drag will let you drag a node onto a connection, and splice that node onto the specified connection.")
|
||||
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_dropNodeSplicingConfig, "Drop Node Splicing Configuration", "Controls for managing Node Splicing on a Drag.\nNode Splicing on a drop will let you drop a node onto a connection from the Node Palette, and splice that node onto the specified connection.")
|
||||
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_autoSaveConfig, "AutoSave Configuration", "Controls for managing Auto Saving.\nAuto Saving will occur after the specified time of inactivity on a graph.")
|
||||
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_shakeDespliceConfig, "Shake To Desplice", "Settings that controls various parameters of the Shake to Desplice feature")
|
||||
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_shakeDespliceConfig, "Shake To De-splice", "Settings that controls various parameters of the Shake to De-splice feature")
|
||||
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_allowNodeNudging, "Allow Node Nudging", "Controls whether or not nodes will attempt to nudge each other out of the way under various interactions.")
|
||||
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_alignmentTimeMS, "Alignment Time", "Controls the amount of time nodes will take to slide into place when performing alignment commands")
|
||||
->Attribute(AZ::Edit::Attributes::Min, 0)
|
||||
@@ -488,8 +489,10 @@ namespace ScriptCanvasEditor
|
||||
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_experimentalSettings, "Experimental Settings", "Settings that will control elements that are under development and may not work as expected")
|
||||
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_saveRawTranslationOuputToFile, "Save Translation File", "Save out the raw result of translation for debug purposes")
|
||||
->Attribute(AZ::Edit::Attributes::ChangeNotify, &SettingsCpp::UpdateProcessingSettings)
|
||||
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_printAbstractCodeModel, "Print Abstract Modeld", "Print out the Abstract Code Model to the console at the end of parsing for debug purposes")
|
||||
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_printAbstractCodeModel, "Print Abstract Model", "Print out the Abstract Code Model to the console at the end of parsing for debug purposes")
|
||||
->Attribute(AZ::Edit::Attributes::ChangeNotify, &SettingsCpp::UpdateProcessingSettings)
|
||||
->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_sceneContextMenuNodePaletteWidth, "Context Menu Width", "Allows you to configure the width of the context menu that opens on a Script Canvas graph")
|
||||
->Attribute(AZ::Edit::Attributes::Min, 120)
|
||||
;
|
||||
|
||||
editContext->Class<ExperimentalSettings>("Experimental", "Settings for features under development that may not behave as expected yet.")
|
||||
|
||||
@@ -357,6 +357,8 @@ namespace ScriptCanvasEditor
|
||||
AZ::u32 m_alignmentTimeMS;
|
||||
|
||||
StylingSettings m_stylingSettings;
|
||||
|
||||
AZ::u32 m_sceneContextMenuNodePaletteWidth = 300;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,16 +8,8 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QCoreApplication>
|
||||
|
||||
#include <AzCore/Serialization/Json/StackedString.h>
|
||||
#include <AzCore/std/string/conversions.h>
|
||||
|
||||
#include <ScriptCanvas/Core/Slot.h>
|
||||
#include <GraphCanvas/Types/TranslationTypes.h>
|
||||
#include <Source/Translation/TranslationBus.h>
|
||||
#include <AzFramework/Gem/GemInfo.h>
|
||||
#include <AzCore/Settings/SettingsRegistry.h>
|
||||
#include <ScriptCanvas/Data/Data.h>
|
||||
|
||||
namespace Translation
|
||||
{
|
||||
@@ -28,447 +20,32 @@ namespace Translation
|
||||
static constexpr const char* MissingFunctionKey = "Globals.MissingFunction";
|
||||
static constexpr const char* EBusHandlerOutSlot = "Globals.EBusHandler.OutSlot";
|
||||
}
|
||||
|
||||
static inline bool GetValue(const AZStd::string key, AZStd::string& value)
|
||||
{
|
||||
GraphCanvas::TranslationKey tkey;
|
||||
tkey = key;
|
||||
|
||||
bool result = false;
|
||||
GraphCanvas::TranslationRequestBus::BroadcastResult(result, &GraphCanvas::TranslationRequests::Get, key, value);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
namespace GraphCanvasAttributeHelper
|
||||
{
|
||||
template <typename T>
|
||||
AZStd::string GetStringAttribute(const T* source, const AZ::Crc32& attribute)
|
||||
{
|
||||
AZStd::string attributeValue = "";
|
||||
if (auto attributeItem = azrtti_cast<AZ::AttributeData<AZStd::string>*>(AZ::FindAttribute(attribute, source->m_attributes)))
|
||||
{
|
||||
attributeValue = attributeItem->Get(nullptr);
|
||||
}
|
||||
return attributeValue;
|
||||
}
|
||||
|
||||
inline AZStd::string ReadStringAttribute(const AZ::AttributeArray& attributes, const AZ::Crc32& attribute)
|
||||
{
|
||||
AZStd::string attributeValue = "";
|
||||
if (auto attributeItem = azrtti_cast<AZ::AttributeData<AZStd::string>*>(AZ::FindAttribute(attribute, attributes)))
|
||||
{
|
||||
attributeValue = attributeItem->Get(nullptr);
|
||||
return attributeValue;
|
||||
}
|
||||
|
||||
if (auto attributeItem = azrtti_cast<AZ::AttributeData<const char*>*>(AZ::FindAttribute(attribute, attributes)))
|
||||
{
|
||||
attributeValue = attributeItem->Get(nullptr);
|
||||
return attributeValue;
|
||||
}
|
||||
|
||||
return {};
|
||||
}
|
||||
}
|
||||
|
||||
namespace ScriptCanvasEditor
|
||||
{
|
||||
enum class TranslationContextGroup : AZ::u32
|
||||
namespace TranslationHelper
|
||||
{
|
||||
EbusSender,
|
||||
EbusHandler,
|
||||
ClassMethod,
|
||||
GlobalMethod,
|
||||
Invalid
|
||||
};
|
||||
|
||||
enum class TranslationItemType : AZ::u32
|
||||
{
|
||||
Node,
|
||||
Wrapper,
|
||||
ExecutionInSlot,
|
||||
ExecutionOutSlot,
|
||||
ParamDataSlot,
|
||||
ReturnDataSlot,
|
||||
BusIdSlot,
|
||||
Invalid
|
||||
};
|
||||
|
||||
enum class TranslationKeyId : AZ::u32
|
||||
{
|
||||
Name,
|
||||
Tooltip,
|
||||
Category,
|
||||
Invalid
|
||||
};
|
||||
|
||||
|
||||
namespace TranslationKeyParts
|
||||
{
|
||||
const char* const handler = "HANDLER_";
|
||||
const char* const name = "NAME";
|
||||
const char* const tooltip = "TOOLTIP";
|
||||
const char* const category = "CATEGORY";
|
||||
const char* const in = "IN";
|
||||
const char* const out = "OUT";
|
||||
const char* const param = "PARAM";
|
||||
const char* const output = "OUTPUT";
|
||||
const char* const busid = "BUSID";
|
||||
}
|
||||
|
||||
namespace TranslationContextGroupParts
|
||||
{
|
||||
const char* const ebusSender = "EBus";
|
||||
const char* const ebusHandler = "Handler";
|
||||
const char* const classMethod = "Method";
|
||||
constexpr const char* const globalMethod = "GlobalMethod";
|
||||
};
|
||||
|
||||
// The context name and keys generated by TranslationHelper should match the keys
|
||||
// being exported by the TSGenerateAction.cpp in the ScriptCanvasDeveloper Gem.
|
||||
class TranslationHelper
|
||||
{
|
||||
public:
|
||||
static AZStd::string GetContextName(TranslationContextGroup group, AZStd::string_view keyBase)
|
||||
{
|
||||
if (group == TranslationContextGroup::Invalid || keyBase.empty())
|
||||
{
|
||||
// Missing information
|
||||
return AZStd::string();
|
||||
}
|
||||
|
||||
const char* groupPart;
|
||||
|
||||
switch (group)
|
||||
{
|
||||
case TranslationContextGroup::EbusSender:
|
||||
groupPart = TranslationContextGroupParts::ebusSender;
|
||||
break;
|
||||
case TranslationContextGroup::EbusHandler:
|
||||
groupPart = TranslationContextGroupParts::ebusHandler;
|
||||
break;
|
||||
case TranslationContextGroup::ClassMethod:
|
||||
groupPart = TranslationContextGroupParts::classMethod;
|
||||
break;
|
||||
case TranslationContextGroup::GlobalMethod:
|
||||
groupPart = TranslationContextGroupParts::globalMethod;
|
||||
break;
|
||||
default:
|
||||
AZ_Warning("TranslationComponent", false, "Invalid translation group ID.");
|
||||
groupPart = "";
|
||||
}
|
||||
|
||||
AZStd::string fullKey = AZStd::string::format("%s: %.*s", groupPart,
|
||||
aznumeric_cast<int>(keyBase.size()), keyBase.data());
|
||||
|
||||
return fullKey;
|
||||
}
|
||||
|
||||
// UserDefined
|
||||
static AZStd::string GetUserDefinedNodeKey(AZStd::string_view contextName, AZStd::string_view nodeName, TranslationKeyId keyId)
|
||||
{
|
||||
return GetKey(TranslationContextGroup::ClassMethod, contextName, nodeName, TranslationItemType::Node, keyId);
|
||||
}
|
||||
////
|
||||
|
||||
static AZStd::string GetKey(TranslationContextGroup group, AZStd::string_view keyBase, AZStd::string_view keyName, TranslationItemType type, TranslationKeyId keyId, int paramIndex = 0)
|
||||
{
|
||||
if (group == TranslationContextGroup::Invalid || keyBase.empty()
|
||||
|| type == TranslationItemType::Invalid || keyId == TranslationKeyId::Invalid)
|
||||
{
|
||||
// Missing information
|
||||
return AZStd::string();
|
||||
}
|
||||
|
||||
if (type != TranslationItemType::Wrapper && keyName.empty())
|
||||
{
|
||||
// Missing information
|
||||
return AZStd::string();
|
||||
}
|
||||
|
||||
AZStd::string fullKey;
|
||||
|
||||
const char* prefix = "";
|
||||
if (group == TranslationContextGroup::EbusHandler)
|
||||
{
|
||||
prefix = TranslationKeyParts::handler;
|
||||
}
|
||||
|
||||
const char* keyPart = GetKeyPart(keyId);
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case TranslationItemType::Node:
|
||||
fullKey = AZStd::string::format("%s%.*s_%.*s_%s",
|
||||
prefix,
|
||||
aznumeric_cast<int>(keyBase.size()),
|
||||
keyBase.data(),
|
||||
aznumeric_cast<int>(keyName.size()),
|
||||
keyName.data(),
|
||||
keyPart
|
||||
);
|
||||
break;
|
||||
case TranslationItemType::Wrapper:
|
||||
fullKey = GetClassKey(group, keyBase, keyId);
|
||||
break;
|
||||
case TranslationItemType::ExecutionInSlot:
|
||||
fullKey = AZStd::string::format("%s%.*s_%.*s_%s_%s",
|
||||
prefix,
|
||||
aznumeric_cast<int>(keyBase.size()),
|
||||
keyBase.data(),
|
||||
aznumeric_cast<int>(keyName.size()),
|
||||
keyName.data(),
|
||||
TranslationKeyParts::in,
|
||||
keyPart
|
||||
);
|
||||
break;
|
||||
case TranslationItemType::ExecutionOutSlot:
|
||||
fullKey = AZStd::string::format("%s%.*s_%.*s_%s_%s",
|
||||
prefix,
|
||||
aznumeric_cast<int>(keyBase.size()),
|
||||
keyBase.data(),
|
||||
aznumeric_cast<int>(keyName.size()),
|
||||
keyName.data(),
|
||||
TranslationKeyParts::out,
|
||||
keyPart
|
||||
);
|
||||
break;
|
||||
case TranslationItemType::ParamDataSlot:
|
||||
fullKey = AZStd::string::format("%s%.*s_%.*s_%s%d_%s",
|
||||
prefix,
|
||||
aznumeric_cast<int>(keyBase.size()),
|
||||
keyBase.data(),
|
||||
aznumeric_cast<int>(keyName.size()),
|
||||
keyName.data(),
|
||||
TranslationKeyParts::param,
|
||||
paramIndex,
|
||||
keyPart
|
||||
);
|
||||
break;
|
||||
case TranslationItemType::ReturnDataSlot:
|
||||
fullKey = AZStd::string::format("%s%.*s_%.*s_%s%d_%s",
|
||||
prefix,
|
||||
aznumeric_cast<int>(keyBase.size()),
|
||||
keyBase.data(),
|
||||
aznumeric_cast<int>(keyName.size()),
|
||||
keyName.data(),
|
||||
TranslationKeyParts::output,
|
||||
paramIndex,
|
||||
keyPart
|
||||
);
|
||||
break;
|
||||
case TranslationItemType::BusIdSlot:
|
||||
fullKey = AZStd::string::format("%s%.*s_%.*s_%s_%s",
|
||||
prefix,
|
||||
aznumeric_cast<int>(keyBase.size()),
|
||||
keyBase.data(),
|
||||
aznumeric_cast<int>(keyName.size()),
|
||||
keyName.data(),
|
||||
TranslationKeyParts::busid,
|
||||
keyPart
|
||||
);
|
||||
break;
|
||||
default:
|
||||
AZ_Warning("ScriptCanvas TranslationHelper", false, "Invalid translation item type.");
|
||||
}
|
||||
|
||||
AZStd::to_upper(fullKey.begin(), fullKey.end());
|
||||
|
||||
return fullKey;
|
||||
}
|
||||
|
||||
static AZStd::string GetClassKey(TranslationContextGroup group, AZStd::string_view keyBase, TranslationKeyId keyId)
|
||||
{
|
||||
const char* prefix = "";
|
||||
if (group == TranslationContextGroup::EbusHandler)
|
||||
{
|
||||
prefix = TranslationKeyParts::handler;
|
||||
}
|
||||
|
||||
const char* keyPart = GetKeyPart(keyId);
|
||||
|
||||
AZStd::string fullKey = AZStd::string::format("%s%.*s_%s",
|
||||
prefix,
|
||||
aznumeric_cast<int>(keyBase.size()),
|
||||
keyBase.data(),
|
||||
keyPart
|
||||
);
|
||||
|
||||
AZStd::to_upper(fullKey.begin(), fullKey.end());
|
||||
|
||||
return fullKey;
|
||||
}
|
||||
|
||||
static AZStd::string GetGlobalMethodKey(AZStd::string_view keyName, TranslationItemType keyType,
|
||||
TranslationKeyId keyId, int paramIndex = 0)
|
||||
{
|
||||
const char* keyPart = GetKeyPart(keyId);
|
||||
|
||||
AZStd::string fullKey;
|
||||
switch (keyType)
|
||||
{
|
||||
case TranslationItemType::Node:
|
||||
fullKey = AZStd::string::format("%.*s_%s",
|
||||
aznumeric_cast<int>(keyName.size()),
|
||||
keyName.data(),
|
||||
keyPart
|
||||
);
|
||||
break;
|
||||
case TranslationItemType::ExecutionInSlot:
|
||||
fullKey = AZStd::string::format("%.*s_%s_%s",
|
||||
aznumeric_cast<int>(keyName.size()),
|
||||
keyName.data(),
|
||||
TranslationKeyParts::in,
|
||||
keyPart
|
||||
);
|
||||
break;
|
||||
case TranslationItemType::ExecutionOutSlot:
|
||||
fullKey = AZStd::string::format("%.*s_%s_%s",
|
||||
aznumeric_cast<int>(keyName.size()),
|
||||
keyName.data(),
|
||||
TranslationKeyParts::out,
|
||||
keyPart
|
||||
);
|
||||
break;
|
||||
case TranslationItemType::ParamDataSlot:
|
||||
fullKey = AZStd::string::format("%.*s_%s%d_%s",
|
||||
aznumeric_cast<int>(keyName.size()),
|
||||
keyName.data(),
|
||||
TranslationKeyParts::param,
|
||||
paramIndex,
|
||||
keyPart
|
||||
);
|
||||
break;
|
||||
case TranslationItemType::ReturnDataSlot:
|
||||
fullKey = AZStd::string::format("%.*s_%s%d_%s",
|
||||
aznumeric_cast<int>(keyName.size()),
|
||||
keyName.data(),
|
||||
TranslationKeyParts::output,
|
||||
paramIndex,
|
||||
keyPart
|
||||
);
|
||||
break;
|
||||
default:
|
||||
AZ_Warning("ScriptCanvas TranslationHelper", false, "Invalid translation item type.");
|
||||
}
|
||||
|
||||
AZStd::to_upper(fullKey.begin(), fullKey.end());
|
||||
|
||||
return fullKey;
|
||||
}
|
||||
|
||||
static const char* GetKeyPart(TranslationKeyId keyId)
|
||||
{
|
||||
const char* keyPart = "";
|
||||
|
||||
switch (keyId)
|
||||
{
|
||||
case TranslationKeyId::Name:
|
||||
keyPart = TranslationKeyParts::name;
|
||||
break;
|
||||
case TranslationKeyId::Tooltip:
|
||||
keyPart = TranslationKeyParts::tooltip;
|
||||
break;
|
||||
case TranslationKeyId::Category:
|
||||
keyPart = TranslationKeyParts::category;
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
AZ_Warning("ScriptCanvas TranslationHelper", false, "Invalid translation key ID.");
|
||||
}
|
||||
|
||||
return keyPart;
|
||||
}
|
||||
|
||||
static TranslationItemType GetItemType(ScriptCanvas::SlotDescriptor slotDescriptor)
|
||||
{
|
||||
if (slotDescriptor == ScriptCanvas::SlotDescriptors::ExecutionIn())
|
||||
{
|
||||
return TranslationItemType::ExecutionInSlot;
|
||||
}
|
||||
else if (slotDescriptor == ScriptCanvas::SlotDescriptors::ExecutionOut())
|
||||
{
|
||||
return TranslationItemType::ExecutionOutSlot;
|
||||
}
|
||||
else if (slotDescriptor == ScriptCanvas::SlotDescriptors::DataIn())
|
||||
{
|
||||
return TranslationItemType::ParamDataSlot;
|
||||
}
|
||||
else if (slotDescriptor == ScriptCanvas::SlotDescriptors::DataOut())
|
||||
{
|
||||
return TranslationItemType::ReturnDataSlot;
|
||||
}
|
||||
|
||||
return TranslationItemType::Invalid;
|
||||
}
|
||||
|
||||
static AZStd::string GetSafeTypeName(ScriptCanvas::Data::Type dataType)
|
||||
inline AZStd::string GetSafeTypeName(ScriptCanvas::Data::Type dataType)
|
||||
{
|
||||
if (!dataType.IsValid())
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
return ScriptCanvas::Data::GetName(dataType);
|
||||
AZStd::string azType = dataType.GetAZType().ToString<AZStd::string>();
|
||||
|
||||
GraphCanvas::TranslationKey key;
|
||||
key << "BehaviorType" << azType << "details";
|
||||
|
||||
GraphCanvas::TranslationRequests::Details details;
|
||||
|
||||
details.m_name = ScriptCanvas::Data::GetName(dataType);
|
||||
|
||||
GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key, details);
|
||||
|
||||
return details.m_name;
|
||||
}
|
||||
|
||||
static AZStd::string GetKeyTranslation(TranslationContextGroup group, AZStd::string_view keyBase, AZStd::string_view keyName, TranslationItemType type, TranslationKeyId keyId, int paramIndex = 0)
|
||||
{
|
||||
AZStd::string translationContext = TranslationHelper::GetContextName(group, keyBase);
|
||||
AZStd::string translationKey = TranslationHelper::GetKey(group, keyBase, keyName, type, keyId, paramIndex);
|
||||
AZStd::string translated = QCoreApplication::translate(translationContext.c_str(), translationKey.c_str()).toUtf8().data();
|
||||
|
||||
if (translated == translationKey)
|
||||
{
|
||||
return AZStd::string();
|
||||
}
|
||||
|
||||
return translated;
|
||||
}
|
||||
|
||||
static AZStd::string GetClassKeyTranslation(TranslationContextGroup group, AZStd::string_view keyBase, TranslationKeyId keyId)
|
||||
{
|
||||
AZStd::string translationContext = TranslationHelper::GetContextName(group, keyBase);
|
||||
AZStd::string translationKey = TranslationHelper::GetClassKey(group, keyBase, keyId);
|
||||
AZStd::string translated = QCoreApplication::translate(translationContext.c_str(), translationKey.c_str()).toUtf8().data();
|
||||
|
||||
if (translated == translationKey)
|
||||
{
|
||||
return AZStd::string();
|
||||
}
|
||||
|
||||
return translated;
|
||||
}
|
||||
|
||||
static AZStd::string GetGlobalMethodKeyTranslation(AZStd::string_view keyName,
|
||||
TranslationItemType keyType, TranslationKeyId keyId, int paramIndex = 0)
|
||||
{
|
||||
AZStd::string translationKey = TranslationHelper::GetGlobalMethodKey(keyName, keyType, keyId, paramIndex);
|
||||
AZStd::string translated = QCoreApplication::translate(TranslationContextGroupParts::globalMethod, translationKey.c_str()).toUtf8().data();
|
||||
|
||||
if (translated == translationKey)
|
||||
{
|
||||
return AZStd::string();
|
||||
}
|
||||
|
||||
return translated;
|
||||
}
|
||||
|
||||
// Use the StackedString to index the translation keys as a Json Pointer
|
||||
static AZ::StackedString GetAzEventHandlerRootPointer(AZStd::string_view eventName)
|
||||
{
|
||||
AZ::StackedString path(AZ::StackedString::Format::JsonPointer);
|
||||
path.Push(eventName);
|
||||
|
||||
return path;
|
||||
}
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -69,6 +69,9 @@ namespace ScriptCanvasEditor
|
||||
void CanvasWidget::ShowScene(const ScriptCanvas::ScriptCanvasId& scriptCanvasId)
|
||||
{
|
||||
EditorGraphRequests* editorGraphRequests = EditorGraphRequestBus::FindFirstHandler(scriptCanvasId);
|
||||
|
||||
// #sc-editor-asset check if needed: editorGraphRequests->SetAssetId(m_assetId);
|
||||
|
||||
editorGraphRequests->CreateGraphCanvasScene();
|
||||
|
||||
AZ::EntityId graphCanvasSceneId = editorGraphRequests->GetGraphCanvasGraphId();
|
||||
@@ -81,6 +84,13 @@ namespace ScriptCanvasEditor
|
||||
void CanvasWidget::SetAssetId(const ScriptCanvasEditor::SourceHandle& assetId)
|
||||
{
|
||||
m_assetId = assetId;
|
||||
// #sc-editor-asset check if needed:
|
||||
/*
|
||||
if (EditorGraphRequests* editorGraphRequests = EditorGraphRequestBus::FindFirstHandler(m_scriptCanvasId))
|
||||
{
|
||||
editorGraphRequests->SetAssetId(m_assetId);
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
const GraphCanvas::ViewId& CanvasWidget::GetViewId() const
|
||||
|
||||
+11
-3
@@ -16,7 +16,6 @@
|
||||
#include <AzCore/Serialization/Utils.h>
|
||||
#include <AzCore/UserSettings/UserSettings.h>
|
||||
|
||||
#include <GraphCanvas/Types/TranslationTypes.h>
|
||||
#include <GraphCanvas/Components/SceneBus.h>
|
||||
#include <GraphCanvas/Components/StyleBus.h>
|
||||
|
||||
@@ -200,7 +199,7 @@ namespace ScriptCanvasEditor
|
||||
|
||||
AZ::TypeId DataTypePaletteModel::FindTypeIdForIndex(const QModelIndex& index) const
|
||||
{
|
||||
AZ::TypeId retVal;
|
||||
AZ::TypeId retVal = AZ::TypeId::CreateNull();
|
||||
|
||||
if (index.row() >= 0 && index.row() < m_variableTypes.size())
|
||||
{
|
||||
@@ -244,7 +243,16 @@ namespace ScriptCanvasEditor
|
||||
|
||||
AZStd::string DataTypePaletteModel::FindTypeNameForTypeId(const AZ::TypeId& typeId) const
|
||||
{
|
||||
return TranslationHelper::GetSafeTypeName(ScriptCanvas::Data::FromAZType(typeId));
|
||||
GraphCanvas::TranslationKey key;
|
||||
key << "BehaviorType" << typeId.ToString<AZStd::string>() << "details";
|
||||
|
||||
GraphCanvas::TranslationRequests::Details details;
|
||||
|
||||
details.m_name = TranslationHelper::GetSafeTypeName(ScriptCanvas::Data::FromAZType(typeId));
|
||||
|
||||
GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key, details);
|
||||
|
||||
return details.m_name;
|
||||
}
|
||||
|
||||
void DataTypePaletteModel::TogglePendingPinChange(const AZ::Uuid& azVarType)
|
||||
|
||||
+35
-13
@@ -83,7 +83,16 @@ namespace ScriptCanvasEditor
|
||||
, m_propertyStatus(propertyStatus)
|
||||
{
|
||||
GraphCanvas::TranslationKey key;
|
||||
key << "BehaviorClass" << className << "methods" << methodName << "details";
|
||||
|
||||
|
||||
AZStd::string updatedMethodName;
|
||||
if (propertyStatus != ScriptCanvas::PropertyStatus::None)
|
||||
{
|
||||
updatedMethodName = (propertyStatus == ScriptCanvas::PropertyStatus::Getter) ? "Get" : "Set";
|
||||
}
|
||||
updatedMethodName.append(methodName);
|
||||
|
||||
key << "BehaviorClass" << className << "methods" << updatedMethodName << "details";
|
||||
|
||||
GraphCanvas::TranslationRequests::Details details;
|
||||
details.m_name = methodName;
|
||||
@@ -94,15 +103,6 @@ namespace ScriptCanvasEditor
|
||||
SetName(details.m_name.c_str());
|
||||
SetToolTip(details.m_tooltip.c_str());
|
||||
|
||||
if (propertyStatus == ScriptCanvas::PropertyStatus::Getter)
|
||||
{
|
||||
SetName(AZStd::string::format("Get %s", GetName().toUtf8().data()).data());
|
||||
}
|
||||
else if (propertyStatus == ScriptCanvas::PropertyStatus::Setter)
|
||||
{
|
||||
SetName(AZStd::string::format("Set %s", GetName().toUtf8().data()).data());
|
||||
}
|
||||
|
||||
SetTitlePalette("MethodNodeTitlePalette");
|
||||
}
|
||||
|
||||
@@ -160,13 +160,14 @@ namespace ScriptCanvasEditor
|
||||
: DraggableNodePaletteTreeItem(nodeModelInformation.m_methodName, ScriptCanvasEditor::AssetEditorId)
|
||||
, m_methodName{ nodeModelInformation.m_methodName }
|
||||
{
|
||||
SetToolTip(QString::fromUtf8(nodeModelInformation.m_displayName.data(),
|
||||
aznumeric_cast<int>(nodeModelInformation.m_displayName.size())));
|
||||
|
||||
SetToolTip(QString::fromUtf8(nodeModelInformation.m_toolTip.data(),
|
||||
aznumeric_cast<int>(nodeModelInformation.m_toolTip.size())));
|
||||
|
||||
SetTitlePalette("MethodNodeTitlePalette");
|
||||
if (!nodeModelInformation.m_displayName.empty())
|
||||
{
|
||||
SetName(nodeModelInformation.m_displayName.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
GraphCanvas::GraphCanvasMimeEvent* GlobalMethodEventPaletteTreeItem::CreateMimeEvent() const
|
||||
@@ -180,6 +181,27 @@ namespace ScriptCanvasEditor
|
||||
return m_methodName;
|
||||
}
|
||||
|
||||
AZ::IO::Path GlobalMethodEventPaletteTreeItem::GetTranslationDataPath() const
|
||||
{
|
||||
AZStd::string propertyName = m_methodName;
|
||||
AZ::StringFunc::Replace(propertyName, "::Getter", "");
|
||||
AZ::StringFunc::Replace(propertyName, "::Setter", "");
|
||||
|
||||
AZStd::string filename = GraphCanvas::TranslationKey::Sanitize(propertyName);
|
||||
|
||||
return AZ::IO::Path("Properties") / filename;
|
||||
}
|
||||
|
||||
void GlobalMethodEventPaletteTreeItem::GenerateTranslationData()
|
||||
{
|
||||
AZStd::string propertyName = m_methodName;
|
||||
AZ::StringFunc::Replace(propertyName, "::Getter", "");
|
||||
AZ::StringFunc::Replace(propertyName, "::Setter", "");
|
||||
|
||||
ScriptCanvasEditorTools::TranslationGeneration translation;
|
||||
translation.TranslateBehaviorProperty(propertyName);
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
// CreateCustomNodeMimeEvent
|
||||
//////////////////////////////
|
||||
|
||||
+10
-3
@@ -70,10 +70,13 @@ namespace ScriptCanvasEditor
|
||||
AZ::ComponentApplicationBus::BroadcastResult(behaviorContext, &AZ::ComponentApplicationRequests::GetBehaviorContext);
|
||||
|
||||
const char* className = m_className.toUtf8().data();
|
||||
auto behaviorClass = behaviorContext->m_classes.find(className);
|
||||
if (behaviorContext->m_classes.contains(className))
|
||||
{
|
||||
auto behaviorClass = behaviorContext->m_classes.find(className);
|
||||
|
||||
ScriptCanvasEditorTools::TranslationGeneration translation;
|
||||
translation.TranslateBehaviorClass(behaviorClass->second);
|
||||
ScriptCanvasEditorTools::TranslationGeneration translation;
|
||||
translation.TranslateBehaviorClass(behaviorClass->second);
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
@@ -121,6 +124,10 @@ namespace ScriptCanvasEditor
|
||||
|
||||
const AZStd::string& GetMethodName() const;
|
||||
|
||||
AZ::IO::Path GetTranslationDataPath() const override;
|
||||
void GenerateTranslationData() override;
|
||||
|
||||
|
||||
private:
|
||||
AZStd::string m_methodName;
|
||||
};
|
||||
|
||||
@@ -611,8 +611,9 @@ namespace
|
||||
{
|
||||
categoryPath.append(details.m_name.c_str());
|
||||
}
|
||||
else
|
||||
else if (categoryPath.contains("Other"))
|
||||
{
|
||||
// Use the BehaviorEBus name to categorize within the 'Other' category
|
||||
categoryPath.append(behaviorEbus.m_name.c_str());
|
||||
}
|
||||
}
|
||||
@@ -657,8 +658,9 @@ namespace
|
||||
{
|
||||
categoryPath.append(details.m_name.c_str());
|
||||
}
|
||||
else
|
||||
else if (categoryPath.contains("Other"))
|
||||
{
|
||||
// Use the behavior EBus name to categorize within the 'Other' category
|
||||
categoryPath.append(behaviorEbus.m_name.c_str());
|
||||
}
|
||||
|
||||
@@ -877,6 +879,7 @@ namespace ScriptCanvasEditor
|
||||
|
||||
void NodePaletteModel::RepopulateModel()
|
||||
{
|
||||
AZ_PROFILE_FUNCTION(ScriptCanvas);
|
||||
ClearRegistry();
|
||||
|
||||
PopulateNodePaletteModel((*this));
|
||||
@@ -1019,12 +1022,19 @@ namespace ScriptCanvasEditor
|
||||
GraphCanvas::TranslationRequestBus::BroadcastResult(catdetails, &GraphCanvas::TranslationRequests::GetDetails, catkey, catdetails);
|
||||
|
||||
GraphCanvas::TranslationKey key;
|
||||
key << "BehaviorClass" << methodClass.c_str() << "methods" << methodName.c_str() << "details";
|
||||
|
||||
AZStd::string updatedMethodName;
|
||||
if (propertyStatus != ScriptCanvas::PropertyStatus::None)
|
||||
{
|
||||
updatedMethodName = (propertyStatus == ScriptCanvas::PropertyStatus::Getter) ? "Get" : "Set";
|
||||
}
|
||||
updatedMethodName += methodName;
|
||||
key << "BehaviorClass" << methodClass.c_str() << "methods" << updatedMethodName << "details";
|
||||
|
||||
GraphCanvas::TranslationRequests::Details details;
|
||||
GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key, details);
|
||||
|
||||
methodModelInformation->m_displayName = details.m_name.empty() ? methodName : details.m_name;
|
||||
methodModelInformation->m_displayName = details.m_name.empty() ? updatedMethodName : details.m_name;
|
||||
methodModelInformation->m_toolTip = details.m_tooltip;
|
||||
methodModelInformation->m_categoryPath = categoryPath;
|
||||
|
||||
@@ -1049,17 +1059,22 @@ namespace ScriptCanvasEditor
|
||||
if (auto registerIter = m_registeredNodes.find(nodeIdentifier); registerIter == m_registeredNodes.end())
|
||||
{
|
||||
auto methodModelInformation = AZStd::make_unique<GlobalMethodNodeModelInformation>();
|
||||
methodModelInformation->m_methodName = behaviorMethod.m_name;
|
||||
methodModelInformation->m_nodeIdentifier = nodeIdentifier;
|
||||
methodModelInformation->m_methodName = behaviorMethod.m_name;
|
||||
|
||||
methodModelInformation->m_titlePaletteOverride = "MethodNodeTitlePalette";
|
||||
|
||||
AZStd::string name = behaviorProperty->m_name;
|
||||
AZ::StringFunc::Replace(name, "::Getter", "");
|
||||
AZ::StringFunc::Replace(name, "::Setter", "");
|
||||
|
||||
GraphCanvas::TranslationKey key;
|
||||
key << "Constant" << behaviorProperty->m_name.c_str() << "details";
|
||||
key << "Constant" << name << "details";
|
||||
|
||||
GraphCanvas::TranslationRequests::Details details;
|
||||
GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key, details);
|
||||
|
||||
|
||||
methodModelInformation->m_displayName = details.m_name;
|
||||
methodModelInformation->m_toolTip = details.m_tooltip;
|
||||
methodModelInformation->m_categoryPath = details.m_category;
|
||||
|
||||
@@ -26,12 +26,18 @@
|
||||
#include <AzCore/Serialization/SerializeContext.h>
|
||||
#include <AzCore/UserSettings/UserSettings.h>
|
||||
#include <AzCore/std/containers/map.h>
|
||||
|
||||
#include <AzFramework/Gem/GemInfo.h>
|
||||
#include <AzFramework/StringFunc/StringFunc.h>
|
||||
|
||||
#include <AzToolsFramework/API/EditorAssetSystemAPI.h>
|
||||
#include <AzToolsFramework/AssetBrowser/Entries/ProductAssetBrowserEntry.h>
|
||||
#include <AzToolsFramework/AssetBrowser/Entries/SourceAssetBrowserEntry.h>
|
||||
#include <AzToolsFramework/AssetEditor/AssetEditorUtils.h>
|
||||
#include <AzToolsFramework/ToolsComponents/EditorComponentBase.h>
|
||||
|
||||
#include <AzQtComponents/Utilities/DesktopUtilities.h>
|
||||
|
||||
#include <Editor/Assets/ScriptCanvasAssetHelpers.h>
|
||||
#include <Editor/Components/IconComponent.h>
|
||||
#include <Editor/GraphCanvas/GraphCanvasEditorNotificationBusId.h>
|
||||
@@ -50,9 +56,11 @@
|
||||
#include <Editor/View/Widgets/NodePalette/VariableNodePaletteTreeItemTypes.h>
|
||||
#include <Editor/View/Widgets/ScriptCanvasNodePaletteDockWidget.h>
|
||||
#include <Editor/View/Widgets/ui_ScriptCanvasNodePaletteToolbar.h>
|
||||
|
||||
#include <GraphCanvas/Widgets/NodePalette/NodePaletteTreeView.h>
|
||||
#include <GraphCanvas/Widgets/NodePalette/NodePaletteWidget.h>
|
||||
#include <GraphCanvas/Widgets/NodePalette/TreeItems/NodePaletteTreeItem.h>
|
||||
|
||||
#include <ScriptCanvas/Asset/RuntimeAsset.h>
|
||||
#include <ScriptCanvas/Core/Attributes.h>
|
||||
#include <ScriptCanvas/Core/SubgraphInterfaceUtility.h>
|
||||
@@ -63,7 +71,6 @@
|
||||
#include <ScriptCanvas/Libraries/Libraries.h>
|
||||
#include <ScriptCanvas/Utils/NodeUtils.h>
|
||||
#include <ScriptEvents/ScriptEventsAsset.h>
|
||||
#include "AzQtComponents/Utilities/DesktopUtilities.h"
|
||||
|
||||
namespace ScriptCanvasEditor
|
||||
{
|
||||
@@ -639,7 +646,7 @@ namespace ScriptCanvasEditor
|
||||
m_mimeType = NodePaletteDockWidget::GetMimeType();
|
||||
m_isInContextMenu = isInContextMenu;
|
||||
m_allowArrowKeyNavigation = isInContextMenu;
|
||||
m_saveIdentifier = m_isInContextMenu ? "ScriptCanvas" : "ScriptCnavas_ContextMenu";
|
||||
m_saveIdentifier = m_isInContextMenu ? "ScriptCanvas" : "ScriptCanvas_ContextMenu";
|
||||
|
||||
m_rootTreeItem = Widget::NodePaletteWidget::ExternalCreateNodePaletteRoot(nodePaletteModel, assetModel);
|
||||
}
|
||||
@@ -710,7 +717,7 @@ namespace ScriptCanvasEditor
|
||||
|
||||
{
|
||||
m_openTranslationData = new QAction(treeView);
|
||||
m_openTranslationData->setText("Open Translation Data");
|
||||
m_openTranslationData->setText("Explore Translation Data");
|
||||
treeView->addAction(m_openTranslationData);
|
||||
|
||||
QObject::connect(m_openTranslationData, &QAction::triggered, this, &NodePaletteDockWidget::OpenTranslationData);
|
||||
@@ -877,17 +884,14 @@ namespace ScriptCanvasEditor
|
||||
{
|
||||
QModelIndexList indexList = GetTreeView()->selectionModel()->selectedRows();
|
||||
|
||||
if (indexList.size() == 1)
|
||||
QSortFilterProxyModel* filterModel = static_cast<QSortFilterProxyModel*>(GetTreeView()->model());
|
||||
|
||||
for (const QModelIndex& index : indexList)
|
||||
{
|
||||
QSortFilterProxyModel* filterModel = static_cast<QSortFilterProxyModel*>(GetTreeView()->model());
|
||||
QModelIndex sourceIndex = filterModel->mapToSource(index);
|
||||
|
||||
for (const QModelIndex& index : indexList)
|
||||
{
|
||||
QModelIndex sourceIndex = filterModel->mapToSource(index);
|
||||
|
||||
GraphCanvas::NodePaletteTreeItem* nodePaletteItem = static_cast<GraphCanvas::NodePaletteTreeItem*>(sourceIndex.internalPointer());
|
||||
nodePaletteItem->GenerateTranslationData();
|
||||
}
|
||||
GraphCanvas::NodePaletteTreeItem* nodePaletteItem = static_cast<GraphCanvas::NodePaletteTreeItem*>(sourceIndex.internalPointer());
|
||||
nodePaletteItem->GenerateTranslationData();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
|
||||
#include <AzToolsFramework/ToolsComponents/EditorComponentBase.h>
|
||||
|
||||
#include <GraphCanvas/Types/TranslationTypes.h>
|
||||
#include <GraphCanvas/Components/SceneBus.h>
|
||||
#include <GraphCanvas/Components/StyleBus.h>
|
||||
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
|
||||
#include <AzToolsFramework/ToolsComponents/EditorComponentBase.h>
|
||||
|
||||
#include <GraphCanvas/Types/TranslationTypes.h>
|
||||
#include <GraphCanvas/Components/SceneBus.h>
|
||||
#include <GraphCanvas/Components/StyleBus.h>
|
||||
|
||||
|
||||
@@ -416,6 +416,8 @@ namespace ScriptCanvasEditor
|
||||
, m_closeCurrentGraphAfterSave(false)
|
||||
, m_styleManager(ScriptCanvasEditor::AssetEditorId, "ScriptCanvas/StyleSheet/graphcanvas_style.json")
|
||||
{
|
||||
AZ_PROFILE_FUNCTION(ScriptCanvas);
|
||||
|
||||
VariablePaletteRequestBus::Handler::BusConnect();
|
||||
GraphCanvas::AssetEditorAutomationRequestBus::Handler::BusConnect(ScriptCanvasEditor::AssetEditorId);
|
||||
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
#include <QMimeData>
|
||||
#include <QInputDialog>
|
||||
|
||||
#include <AzCore/UserSettings/UserSettings.h>
|
||||
|
||||
#include <AzToolsFramework/API/ToolsApplicationAPI.h>
|
||||
|
||||
#include <Editor/Nodes/NodeUtils.h>
|
||||
@@ -41,6 +43,8 @@
|
||||
#include <Editor/View/Widgets/NodePalette/VariableNodePaletteTreeItemTypes.h>
|
||||
|
||||
#include "ScriptCanvasContextMenus.h"
|
||||
#include "Settings.h"
|
||||
|
||||
#include <ScriptCanvas/Core/NodeBus.h>
|
||||
#include <ScriptCanvas/Core/Slot.h>
|
||||
#include <GraphCanvas/Editor/EditorTypes.h>
|
||||
@@ -53,6 +57,7 @@
|
||||
#include <GraphCanvas/Components/Nodes/NodeTitleBus.h>
|
||||
#include <GraphCanvas/Components/NodeDescriptors/FunctionDefinitionNodeDescriptorComponent.h>
|
||||
|
||||
|
||||
namespace ScriptCanvasEditor
|
||||
{
|
||||
////////////////////////////
|
||||
@@ -805,6 +810,13 @@ namespace ScriptCanvasEditor
|
||||
SceneContextMenu::SceneContextMenu(const NodePaletteModel& paletteModel, AzToolsFramework::AssetBrowser::AssetBrowserFilterModel* assetModel)
|
||||
: GraphCanvas::SceneContextMenu(ScriptCanvasEditor::AssetEditorId)
|
||||
{
|
||||
|
||||
auto userSettings = AZ::UserSettings::CreateFind<EditorSettings::ScriptCanvasEditorSettings>(AZ_CRC("ScriptCanvasPreviewSettings", 0x1c5a2965), AZ::UserSettings::CT_LOCAL);
|
||||
if (userSettings)
|
||||
{
|
||||
m_userNodePaletteWidth = userSettings->m_sceneContextMenuNodePaletteWidth;
|
||||
}
|
||||
|
||||
const bool inContextMenu = true;
|
||||
Widget::ScriptCanvasNodePaletteConfig paletteConfig(paletteModel, assetModel, inContextMenu);
|
||||
AddNodePaletteMenuAction(paletteConfig);
|
||||
|
||||
Reference in New Issue
Block a user