1 // Copyright 2001-2018 Crytek GmbH / Crytek Group. All rights reserved.
5 #include "EditorCommonAPI.h"
7 #include "NodeWidgetStyle.h"
8 #include "NodeGraphViewGraphicsWidget.h"
9 #include "HeaderWidget.h"
11 #include "AbstractNodeItem.h"
13 class QGraphicsLinearLayout
;
15 namespace CryGraphEditor
{
18 class CNodeInfoWidget
;
19 class CAbstractNodeContentWidget
;
21 class EDITOR_COMMON_API CNodeWidget
: public CNodeGraphViewGraphicsWidget
26 enum : int32
{ Type
= eGraphViewWidgetType_NodeWidget
};
29 CNodeWidget(CAbstractNodeItem
& item
, CNodeGraphView
& view
);
31 // CNodeGraphViewGraphicsWidget
32 virtual void DeleteLater() override
;
33 virtual int32
GetType() const override
{ return Type
; }
34 virtual CAbstractNodeGraphViewModelItem
* GetAbstractItem() const override
{ return &m_item
; }
35 virtual const CNodeWidgetStyle
& GetStyle() const override
{ return *m_pStyle
; }
36 // ~CNodeGraphViewGraphicsWidget
38 CAbstractNodeItem
& GetItem() const { return m_item
; }
41 virtual void SetContentWidget(CAbstractNodeContentWidget
* pContent
);
42 virtual void DetachContentWidget();
43 virtual CAbstractNodeContentWidget
* GetContentWidget() const;
44 virtual void UpdateContentWidget();
46 QString
GetName() const;
49 void AddHeaderIcon(CHeaderIconWidget
* pHeaderIcon
, CHeaderWidget::EIconSlot slot
);
50 void SetHeaderNameWidth(int32 width
);
53 void SignalNodeMoved();
59 virtual void paint(QPainter
* pPainter
, const QStyleOptionGraphicsItem
* pOption
, QWidget
* pWidget
) override
;
61 virtual void hoverEnterEvent(QGraphicsSceneHoverEvent
* pEvent
) override
;
62 virtual void hoverMoveEvent(QGraphicsSceneHoverEvent
* pEvent
) override
;
63 virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent
* pEvent
) override
;
65 virtual void mousePressEvent(QGraphicsSceneMouseEvent
* pEvent
) override
;
66 virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent
* pEvent
) override
;
67 virtual void mouseMoveEvent(QGraphicsSceneMouseEvent
* pEvent
) override
;
69 virtual void moveEvent(QGraphicsSceneMoveEvent
* pEvent
) override
;
72 virtual void OnItemInvalidated() override
;
74 void OnSelectionChanged(bool isSelected
);
75 void OnItemValidated(CAbstractNodeItem
& item
);
78 const CNodeWidgetStyle
* m_pStyle
;
79 CAbstractNodeItem
& m_item
;
80 QGraphicsLinearLayout
* m_pContentLayout
;
81 CHeaderWidget
* m_pHeader
;
82 CNodeInfoWidget
* m_pInfoBar
;
83 CAbstractNodeContentWidget
* m_pContent
;