3#include <Foundation/Communication/Event.h>
4#include <Foundation/Containers/HybridArray.h>
5#include <GuiFoundation/GuiFoundationDLL.h>
6#include <GuiFoundation/PropertyGrid/Implementation/PropertyEventHandler.h>
8#include <ToolsFoundation/Object/DocumentObjectManager.h>
9#include <ToolsFoundation/Reflection/ReflectedType.h>
51 virtual void ExtendContextMenu(QMenu& ref_menu);
54 virtual void SetIsDefault(
bool bIsDefault) { m_bIsDefault = bIsDefault; }
58 bool GetCommonVariantSubType(
65 virtual void SetReadOnly(
bool bReadOnly =
true);
69 static QColor SetPaletteBackgroundColor(
plColorGammaUB inputColor, QPalette& ref_palette);
72 void OnCustomContextMenu(
const QPoint& pt);
75 void Broadcast(plPropertyEvent::Type type);
78 virtual void OnInit() = 0;
79 bool IsUndead()
const {
return m_bUndead; }
82 virtual void DoPrepareToDie() = 0;
84 virtual bool eventFilter(QObject* pWatched, QEvent* pEvent)
override;
88 const plRTTI* m_pType =
nullptr;
107 virtual void OnInit()
override;
108 virtual void DoPrepareToDie()
override {}
110 QHBoxLayout* m_pLayout;
127 void BroadcastValueChanged(
const plVariant& NewValue);
128 virtual void DoPrepareToDie()
override {}
130 const plVariant& GetOldValue()
const {
return m_OldValue; }
131 virtual void InternalSetValue(
const plVariant& value) = 0;
153 virtual void OnInit()
override;
154 virtual void DoPrepareToDie()
override;
155 virtual void OnPropertyChanged(
const plString& sProperty) = 0;
160 void FlushQueuedChanges();
163 bool m_bTemporaryCommand =
false;
164 const plRTTI* m_pResolvedType =
nullptr;
183 virtual bool HasLabel()
const override {
return false; }
184 virtual void SetIsDefault(
bool bIsDefault)
override;
187 virtual void OnInit()
override;
188 virtual void DoPrepareToDie()
override;
191 QVBoxLayout* m_pLayout;
193 QVBoxLayout* m_pGroupLayout;
207 virtual bool HasLabel()
const override {
return false; }
211 void OnDeleteButtonClicked();
214 virtual void OnInit()
override;
216 virtual void DoPrepareToDie()
override;
217 void UpdateTitle(
const plRTTI* pType =
nullptr);
220 QHBoxLayout* m_pLayout =
nullptr;
224 QHBoxLayout* m_pGroupLayout =
nullptr;
239 virtual bool HasLabel()
const override {
return false; }
240 virtual void SetIsDefault(
bool bIsDefault)
override;
243 void OnElementButtonClicked();
244 void OnDragStarted(QMimeData& ref_mimeData);
245 void OnContainerContextMenu(
const QPoint& pt);
246 void OnCustomElementContextMenu(
const QPoint& pt);
254 : m_pSubGroup(pSubGroup)
256 , m_pHelpButton(pHelpButton)
267 virtual Element& AddElement(plUInt32 index);
268 virtual void RemoveElement(plUInt32 index);
269 virtual void UpdateElement(plUInt32 index) = 0;
270 void UpdateElements();
271 virtual plUInt32 GetRequiredElementCount()
const;
272 virtual void UpdatePropertyMetaState();
275 virtual void OnInit()
override;
279 virtual void DoPrepareToDie()
override;
280 virtual void dragEnterEvent(QDragEnterEvent* event)
override;
281 virtual void dragMoveEvent(QDragMoveEvent* event)
override;
282 virtual void dragLeaveEvent(QDragLeaveEvent* event)
override;
283 virtual void dropEvent(QDropEvent* event)
override;
284 virtual void paintEvent(QPaintEvent* event)
override;
285 virtual void showEvent(QShowEvent* event)
override;
288 bool updateDropIndex(QDropEvent* pEvent);
291 QHBoxLayout* m_pLayout;
293 QVBoxLayout* m_pGroupLayout;
299 plInt32 m_iDropSource = -1;
300 plInt32 m_iDropTarget = -1;
315 virtual Element& AddElement(plUInt32 index)
override;
316 virtual void RemoveElement(plUInt32 index)
override;
317 virtual void UpdateElement(plUInt32 index)
override;
329 virtual void OnInit()
override;
330 virtual void UpdateElement(plUInt32 index)
override;
336 bool m_bNeedsUpdate =
false;
348 virtual void OnInit()
override;
349 virtual void InternalSetValue(
const plVariant& value)
override;
350 virtual void DoPrepareToDie()
override;
357 QVBoxLayout* m_pLayout =
nullptr;
358 QComboBox* m_pTypeList =
nullptr;
360 const plRTTI* m_pCurrentSubType =
nullptr;
This is the base interface for all properties in the reflection system. It provides enough informatio...
Definition AbstractProperty.h:150
A 8bit per channel unsigned normalized (values interpreted as 0-1) color storage format that represen...
Definition Color8UNorm.h:99
Definition DocumentObjectBase.h:11
Definition DynamicArray.h:81
A hybrid array uses in-place storage to handle the first few elements without any allocation....
Definition HybridArray.h:12
Definition ObjectAccessorBase.h:8
Definition GroupBoxBase.moc.h:10
This class holds information about reflected types. Each instance represents one type that is known t...
Definition RTTI.h:30
plStringBuilder is a class that is meant for creating and modifying strings.
Definition StringBuilder.h:35
plVariant is a class that can store different types of variables, which is useful in situations where...
Definition Variant.h:44
Definition CommandHistory.h:31
Used by plDocumentObjectManager::m_PropertyEvents.
Definition DocumentObjectManager.h:77
Used by plDocumentObjectManager::m_StructureEvents.
Definition DocumentObjectManager.h:45
Definition PropertyEventHandler.h:10
Default enum for returning failure or success, instead of using a bool.
Definition Types.h:54
Enum
This enum describes the type of data that is currently stored inside the variant. Note that changes t...
Definition VariantType.h:26