!XT (BREAK-16) (Sandbox) Remove double-newlines at the end of files.
[CRYENGINE.git] / Code / Sandbox / Plugins / EditorCommon / NodeGraph / NodeWidget.h
blob98d7528aad376bd1205ec9cc61e8a71ba9a2ed00
1 // Copyright 2001-2018 Crytek GmbH / Crytek Group. All rights reserved.
3 #pragma once
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 {
17 class CNodeGraphView;
18 class CNodeInfoWidget;
19 class CAbstractNodeContentWidget;
21 class EDITOR_COMMON_API CNodeWidget : public CNodeGraphViewGraphicsWidget
23 Q_OBJECT
25 public:
26 enum : int32 { Type = eGraphViewWidgetType_NodeWidget };
28 public:
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;
47 void EditName();
49 void AddHeaderIcon(CHeaderIconWidget* pHeaderIcon, CHeaderWidget::EIconSlot slot);
50 void SetHeaderNameWidth(int32 width);
52 Q_SIGNALS:
53 void SignalNodeMoved();
55 protected:
56 ~CNodeWidget();
58 // QGraphicsWidget
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;
70 // ~QGraphicsWidget
72 virtual void OnItemInvalidated() override;
74 void OnSelectionChanged(bool isSelected);
75 void OnItemValidated(CAbstractNodeItem& item);
77 private:
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;