From ca66c609aaa8383be125997266128010197d5f66 Mon Sep 17 00:00:00 2001 From: lsemp3d <58790905+lsemp3d@users.noreply.github.com> Date: Mon, 15 Nov 2021 11:43:16 -0800 Subject: [PATCH 1/3] Added user setting to change the Script Canvas node palette context menu Signed-off-by: lsemp3d <58790905+lsemp3d@users.noreply.github.com> --- .../EditorContextMenu/EditorContextMenu.cpp | 5 +++++ .../EditorContextMenu/EditorContextMenu.h | 20 +++++++++---------- .../GraphCanvasAssetEditorMainWindow.cpp | 2 +- Gems/ScriptCanvas/Code/Editor/Settings.cpp | 9 ++++++--- Gems/ScriptCanvas/Code/Editor/Settings.h | 2 ++ .../View/Windows/ScriptCanvasContextMenus.cpp | 12 +++++++++++ 6 files changed, 36 insertions(+), 14 deletions(-) diff --git a/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/EditorContextMenu/EditorContextMenu.cpp b/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/EditorContextMenu/EditorContextMenu.cpp index a1e921684f..b3bf8f71d9 100644 --- a/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/EditorContextMenu/EditorContextMenu.cpp +++ b/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/EditorContextMenu/EditorContextMenu.cpp @@ -119,6 +119,11 @@ namespace GraphCanvas m_nodePalette->setProperty("HasNoWindowDecorations", true); m_nodePalette->SetupNodePalette(config); + if (m_userNodePaletteWidth > 0.f) + { + m_nodePalette->setFixedWidth(m_userNodePaletteWidth); + } + QWidgetAction* actionWidget = new QWidgetAction(this); actionWidget->setDefaultWidget(m_nodePalette); diff --git a/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/EditorContextMenu/EditorContextMenu.h b/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/EditorContextMenu/EditorContextMenu.h index a942858f56..9831975a94 100644 --- a/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/EditorContextMenu/EditorContextMenu.h +++ b/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/EditorContextMenu/EditorContextMenu.h @@ -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& actions); - bool m_finalized; - bool m_isToolBarMenu; + NodePaletteWidget* m_nodePalette = nullptr; + + bool m_finalized; + bool m_isToolBarMenu; + float m_userNodePaletteWidth = 300.f; EditorId m_editorId; - AZStd::vector< ActionGroupId > m_actionGroupOrdering; - AZStd::unordered_set< ActionGroupId > m_actionGroups; + AZStd::vector m_actionGroupOrdering; + AZStd::unordered_set m_actionGroups; AZStd::vector m_unprocessedFrontActions; AZStd::vector m_unprocessedActions; AZStd::vector m_unprocessedBackActions; - AZStd::unordered_map< AZStd::string, QMenu* > m_subMenuMap; + AZStd::unordered_map m_subMenuMap; }; } diff --git a/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/GraphCanvasEditor/GraphCanvasAssetEditorMainWindow.cpp b/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/GraphCanvasEditor/GraphCanvasAssetEditorMainWindow.cpp index 13e4f5560f..3e14de48e7 100644 --- a/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/GraphCanvasEditor/GraphCanvasAssetEditorMainWindow.cpp +++ b/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/GraphCanvasEditor/GraphCanvasAssetEditorMainWindow.cpp @@ -41,7 +41,7 @@ namespace GraphCanvas { // Default size percentage that the Node Palette dock widget will take up - static const float DEFAULT_NODE_PALETTE_SIZE = 0.15f; + static const float DEFAULT_NODE_PALETTE_SIZE = 0.25f; void AssetEditorUserSettings::Reflect(AZ::ReflectContext* context) { diff --git a/Gems/ScriptCanvas/Code/Editor/Settings.cpp b/Gems/ScriptCanvas/Code/Editor/Settings.cpp index fd745fa257..8d24a30aab 100644 --- a/Gems/ScriptCanvas/Code/Editor/Settings.cpp +++ b/Gems/ScriptCanvas/Code/Editor/Settings.cpp @@ -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("Experimental", "Settings for features under development that may not behave as expected yet.") diff --git a/Gems/ScriptCanvas/Code/Editor/Settings.h b/Gems/ScriptCanvas/Code/Editor/Settings.h index eefb7454c3..dee55f8272 100644 --- a/Gems/ScriptCanvas/Code/Editor/Settings.h +++ b/Gems/ScriptCanvas/Code/Editor/Settings.h @@ -357,6 +357,8 @@ namespace ScriptCanvasEditor AZ::u32 m_alignmentTimeMS; StylingSettings m_stylingSettings; + + AZ::u32 m_sceneContextMenuNodePaletteWidth = 300; }; } } diff --git a/Gems/ScriptCanvas/Code/Editor/View/Windows/ScriptCanvasContextMenus.cpp b/Gems/ScriptCanvas/Code/Editor/View/Windows/ScriptCanvasContextMenus.cpp index e4a95d7d19..6402a24b3a 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Windows/ScriptCanvasContextMenus.cpp +++ b/Gems/ScriptCanvas/Code/Editor/View/Windows/ScriptCanvasContextMenus.cpp @@ -12,6 +12,8 @@ #include #include +#include + #include #include @@ -41,6 +43,8 @@ #include #include "ScriptCanvasContextMenus.h" +#include "Settings.h" + #include #include #include @@ -53,6 +57,7 @@ #include #include + 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(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); From cffd93642ef8ddae3e68fde10f93097142fbfb5e Mon Sep 17 00:00:00 2001 From: lsemp3d <58790905+lsemp3d@users.noreply.github.com> Date: Mon, 15 Nov 2021 11:48:35 -0800 Subject: [PATCH 2/3] Reverted unnecessary change Signed-off-by: lsemp3d <58790905+lsemp3d@users.noreply.github.com> --- .../GraphCanvasEditor/GraphCanvasAssetEditorMainWindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/GraphCanvasEditor/GraphCanvasAssetEditorMainWindow.cpp b/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/GraphCanvasEditor/GraphCanvasAssetEditorMainWindow.cpp index 3e14de48e7..13e4f5560f 100644 --- a/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/GraphCanvasEditor/GraphCanvasAssetEditorMainWindow.cpp +++ b/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/GraphCanvasEditor/GraphCanvasAssetEditorMainWindow.cpp @@ -41,7 +41,7 @@ namespace GraphCanvas { // Default size percentage that the Node Palette dock widget will take up - static const float DEFAULT_NODE_PALETTE_SIZE = 0.25f; + static const float DEFAULT_NODE_PALETTE_SIZE = 0.15f; void AssetEditorUserSettings::Reflect(AZ::ReflectContext* context) { From 35b4f6a5387cdf190df31a7d3735eee37a98e8af Mon Sep 17 00:00:00 2001 From: lsemp3d <58790905+lsemp3d@users.noreply.github.com> Date: Mon, 15 Nov 2021 14:46:38 -0800 Subject: [PATCH 3/3] Replaced float with AZ::u32 Signed-off-by: lsemp3d <58790905+lsemp3d@users.noreply.github.com> --- .../GraphCanvas/Widgets/EditorContextMenu/EditorContextMenu.cpp | 2 +- .../GraphCanvas/Widgets/EditorContextMenu/EditorContextMenu.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/EditorContextMenu/EditorContextMenu.cpp b/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/EditorContextMenu/EditorContextMenu.cpp index b3bf8f71d9..854918ac19 100644 --- a/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/EditorContextMenu/EditorContextMenu.cpp +++ b/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/EditorContextMenu/EditorContextMenu.cpp @@ -119,7 +119,7 @@ namespace GraphCanvas m_nodePalette->setProperty("HasNoWindowDecorations", true); m_nodePalette->SetupNodePalette(config); - if (m_userNodePaletteWidth > 0.f) + if (m_userNodePaletteWidth > 0) { m_nodePalette->setFixedWidth(m_userNodePaletteWidth); } diff --git a/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/EditorContextMenu/EditorContextMenu.h b/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/EditorContextMenu/EditorContextMenu.h index 9831975a94..08ee8cecbf 100644 --- a/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/EditorContextMenu/EditorContextMenu.h +++ b/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/EditorContextMenu/EditorContextMenu.h @@ -80,7 +80,7 @@ namespace GraphCanvas bool m_finalized; bool m_isToolBarMenu; - float m_userNodePaletteWidth = 300.f; + AZ::u32 m_userNodePaletteWidth = 300; EditorId m_editorId;