/* * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or * its licensors. * * For complete copyright and license terms please see the LICENSE at the root of this * distribution (the "License"). All use of this software is governed by the License, * or, if provided, by the license below or the license accompanying this file. Do not * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * */ #pragma once #include #include #include #include #include #include #include #include #include #include namespace GraphCanvas { class ExtenderSlotLayoutComponent; class ExtenderSlotConnectionPin; class GraphCanvasLabel; class ExtenderSlotLayout : public QGraphicsLinearLayout , public SlotNotificationBus::Handler , public SceneMemberNotificationBus::Handler , public StyleNotificationBus::Handler { public: AZ_CLASS_ALLOCATOR(ExtenderSlotLayout, AZ::SystemAllocator, 0); ExtenderSlotLayout(ExtenderSlotLayoutComponent& owner); ~ExtenderSlotLayout(); void Activate(); void Deactivate(); // SceneMemberNotificationBus void OnSceneSet(const AZ::EntityId&) override; void OnSceneReady() override; //// // SlotNotificationBus void OnRegisteredToNode(const AZ::EntityId& nodeId) override; void OnNameChanged(const TranslationKeyedString& name) override; void OnTooltipChanged(const TranslationKeyedString& tooltip) override; //// // StyleNotificationBus void OnStyleChanged(); //// private: void UpdateLayout(); void UpdateGeometry(); ConnectionType m_connectionType; Styling::StyleHelper m_style; ExtenderSlotLayoutComponent& m_owner; ExtenderSlotConnectionPin* m_slotConnectionPin; GraphCanvasLabel* m_slotText; QGraphicsItem* m_slotLabelFilter; }; //! Lays out the parts of a Extender Slot class ExtenderSlotLayoutComponent : public SlotLayoutComponent { public: AZ_COMPONENT(ExtenderSlotLayoutComponent, "{596E1A76-6F84-4C1A-B32D-0B6B069FC9AB}", SlotLayoutComponent); static void Reflect(AZ::ReflectContext* context); ExtenderSlotLayoutComponent(); ~ExtenderSlotLayoutComponent() override = default; void Init(); void Activate(); void Deactivate(); private: ExtenderSlotLayout* m_layout; }; }