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
monroegm-disable-blank-issue-2
Luis Sempé 4 years ago committed by GitHub
commit 9cf49845a4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -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);

@ -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);

Loading…
Cancel
Save