Merge pull request #5621 from aws-lumberyard-dev/scripting/expand_context_menu
Added user option to define the size of the Script Canvas node palette context menu
This commit is contained in:
+5
@@ -119,6 +119,11 @@ namespace GraphCanvas
|
||||
m_nodePalette->setProperty("HasNoWindowDecorations", true);
|
||||
m_nodePalette->SetupNodePalette(config);
|
||||
|
||||
if (m_userNodePaletteWidth > 0)
|
||||
{
|
||||
m_nodePalette->setFixedWidth(m_userNodePaletteWidth);
|
||||
}
|
||||
|
||||
QWidgetAction* actionWidget = new QWidgetAction(this);
|
||||
actionWidget->setDefaultWidget(m_nodePalette);
|
||||
|
||||
|
||||
+10
-10
@@ -63,34 +63,34 @@ namespace GraphCanvas
|
||||
void ResetSourceSlotFilter();
|
||||
void FilterForSourceSlot(const GraphId& graphId, const AZ::EntityId& sourceSlotId);
|
||||
|
||||
protected slots:
|
||||
protected Q_SLOTS:
|
||||
virtual void SetupDisplay();
|
||||
virtual void HandleContextMenuSelection();
|
||||
|
||||
protected:
|
||||
|
||||
virtual void OnRefreshActions(const GraphId& graphId, const AZ::EntityId& targetMemberId);
|
||||
|
||||
void keyPressEvent(QKeyEvent* keyEvent) override;
|
||||
|
||||
NodePaletteWidget* m_nodePalette = nullptr;
|
||||
|
||||
private:
|
||||
|
||||
void ConstructMenu();
|
||||
void AddUnprocessedActions(AZStd::vector<QAction*>& actions);
|
||||
|
||||
bool m_finalized;
|
||||
bool m_isToolBarMenu;
|
||||
NodePaletteWidget* m_nodePalette = nullptr;
|
||||
|
||||
bool m_finalized;
|
||||
bool m_isToolBarMenu;
|
||||
AZ::u32 m_userNodePaletteWidth = 300;
|
||||
|
||||
EditorId m_editorId;
|
||||
|
||||
AZStd::vector< ActionGroupId > m_actionGroupOrdering;
|
||||
AZStd::unordered_set< ActionGroupId > m_actionGroups;
|
||||
AZStd::vector<ActionGroupId> m_actionGroupOrdering;
|
||||
AZStd::unordered_set<ActionGroupId> m_actionGroups;
|
||||
|
||||
AZStd::vector<QAction*> m_unprocessedFrontActions;
|
||||
AZStd::vector<QAction*> m_unprocessedActions;
|
||||
AZStd::vector<QAction*> m_unprocessedBackActions;
|
||||
|
||||
AZStd::unordered_map< AZStd::string, QMenu* > m_subMenuMap;
|
||||
AZStd::unordered_map<AZStd::string, QMenu*> m_subMenuMap;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -395,6 +395,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();
|
||||
@@ -467,13 +468,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)
|
||||
@@ -485,8 +486,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;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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