Plasma Engine  2.0
Loading...
Searching...
No Matches
PropertyWidget.moc.h
1#pragma once
2
3#include <GuiFoundation/GuiFoundationDLL.h>
4
5#include <Foundation/Communication/Event.h>
6#include <Foundation/Containers/HybridArray.h>
7#include <Foundation/Types/Variant.h>
8#include <GuiFoundation/PropertyGrid/PropertyBaseWidget.moc.h>
9
10#include <QFrame>
11#include <QLabel>
12
13class QCheckBox;
14class QDoubleSpinBox;
15class QSpinBox;
16class QLabel;
17class QHBoxLayout;
18class QLineEdit;
19class QPushButton;
20class QComboBox;
21class QStandardItemModel;
22class QStandardItem;
23class QToolButton;
24class QMenu;
27class QSlider;
28
30
32{
33 Q_OBJECT
34
35public:
37
38 virtual void mousePressEvent(QMouseEvent* pEv) override;
39
40private Q_SLOTS:
41 void on_StateChanged_triggered(int state);
42
43protected:
44 virtual void OnInit() override {}
45 virtual void InternalSetValue(const plVariant& value) override;
46
47 QHBoxLayout* m_pLayout;
48 QCheckBox* m_pWidget;
49};
50
51
52
54
56{
57 Q_OBJECT
58
59public:
60 plQtPropertyEditorDoubleSpinboxWidget(plInt8 iNumComponents);
61
62 void SetReadOnly(bool bReadOnly = true) override;
63private Q_SLOTS:
64 void on_EditingFinished_triggered();
65 void SlotSliderValueChanged(int value);
66 void SlotValueChanged();
67
68protected:
69 virtual void OnInit() override;
70 virtual void InternalSetValue(const plVariant& value) override;
71
72 bool m_bUseTemporaryTransaction = false;
73 bool m_bTemporaryCommand = false;
74 plInt8 m_iNumComponents = 0;
75 QSlider* m_pSlider = nullptr;
76 plEnum<plVariantType> m_OriginalType;
77 QHBoxLayout* m_pLayout = nullptr;
78 plQtDoubleSpinBox* m_pWidget[4] = {};
79 QLabel* m_pWidgetLabel[4] = {};
80 const char m_cAxisNames[4] = {'X', 'Y', 'Z', 'W'};
81 const char* m_pWidgetLabelColors[4] = {"#63000D", "#006317", "#000863", "transparent"};
82};
83
85
87{
88 Q_OBJECT
89
90public:
92
93private Q_SLOTS:
94 void on_EditingFinished_triggered();
95 void SlotValueChanged();
96
97protected:
98 virtual void OnInit() override;
99 virtual void InternalSetValue(const plVariant& value) override;
100
101 bool m_bTemporaryCommand;
102 QHBoxLayout* m_pLayout;
103 plQtDoubleSpinBox* m_pWidget;
104};
105
107
109{
110 Q_OBJECT
111
112public:
114
115private Q_SLOTS:
116 void on_EditingFinished_triggered();
117 void SlotValueChanged();
118
119protected:
120 virtual void OnInit() override;
121 virtual void InternalSetValue(const plVariant& value) override;
122
123 bool m_bTemporaryCommand;
124 QHBoxLayout* m_pLayout;
125 plQtDoubleSpinBox* m_pWidget;
126};
127
129
131{
132 Q_OBJECT
133
134public:
135 plQtPropertyEditorIntSpinboxWidget(plInt8 iNumComponents, plInt32 iMinValue, plInt32 iMaxValue);
137
138 void SetReadOnly(bool bReadOnly = true) override;
139
140private Q_SLOTS:
141 void SlotValueChanged();
142 void SlotSliderValueChanged(int value);
143 void on_EditingFinished_triggered();
144
145protected:
146 virtual void OnInit() override;
147 virtual void InternalSetValue(const plVariant& value) override;
148
149 bool m_bUseTemporaryTransaction = false;
150 bool m_bTemporaryCommand = false;
151 plInt8 m_iNumComponents = 0;
152 plEnum<plVariantType> m_OriginalType;
153 QHBoxLayout* m_pLayout = nullptr;
154 plQtDoubleSpinBox* m_pWidget[4] = {};
155 QSlider* m_pSlider = nullptr;
156};
157
159
160class PL_GUIFOUNDATION_DLL plQtImageSliderWidget : public QWidget
161{
162 Q_OBJECT
163public:
164 using ImageGeneratorFunc = QImage (*)(plUInt32 uiWidth, plUInt32 uiHeight, double fMinValue, double fMaxValue);
165
166 plQtImageSliderWidget(ImageGeneratorFunc generator, double fMinValue, double fMaxValue, QWidget* pParent);
167
168 static plMap<plString, ImageGeneratorFunc> s_ImageGenerators;
169
170 double GetValue() const { return m_fValue; }
171 void SetValue(double fValue);
172
173Q_SIGNALS:
174 void valueChanged(double x);
175 void sliderReleased();
176
177protected:
178 virtual void paintEvent(QPaintEvent*) override;
179 virtual void mouseMoveEvent(QMouseEvent*) override;
180 virtual void mousePressEvent(QMouseEvent*) override;
181 virtual void mouseReleaseEvent(QMouseEvent*) override;
182
183 void UpdateImage();
184
185 ImageGeneratorFunc m_Generator = nullptr;
186 QImage m_Image;
187 double m_fValue = 0;
188 double m_fMinValue = 0;
189 double m_fMaxValue = 0;
190};
191
193{
194 Q_OBJECT
195
196public:
199
200private Q_SLOTS:
201 void SlotSliderValueChanged(double fValue);
202 void on_EditingFinished_triggered();
203
204protected:
205 virtual void OnInit() override;
206 virtual void InternalSetValue(const plVariant& value) override;
207
208 bool m_bTemporaryCommand = false;
209 plEnum<plVariantType> m_OriginalType;
210 QHBoxLayout* m_pLayout = nullptr;
211 plQtImageSliderWidget* m_pSlider = nullptr;
212
213 double m_fMinValue = 0;
214 double m_fMaxValue = 0;
215};
216
218
220{
221 Q_OBJECT
222
223public:
225
226private Q_SLOTS:
227 void on_EditingFinished_triggered();
228 void SlotValueChanged();
229
230protected:
231 virtual void OnInit() override;
232 virtual void InternalSetValue(const plVariant& value) override;
233
234protected:
235 bool m_bTemporaryCommand;
236 QHBoxLayout* m_pLayout;
237 plQtDoubleSpinBox* m_pWidget[3];
238 QLabel* m_pWidgetLabel[3];
239 const char m_cAxisNames[3] = {'X', 'Y', 'Z'};
240 const char* m_pWidgetLabelColors[3] = {"#63000D", "#006317", "#000863"};
241};
242
243
245
247{
248 Q_OBJECT
249
250public:
252
253 void SetReadOnly(bool bReadOnly = true) override;
254
255protected Q_SLOTS:
256 void on_TextChanged_triggered(const QString& value);
257 void on_TextFinished_triggered();
258
259protected:
260 virtual void OnInit() override;
261 virtual void InternalSetValue(const plVariant& value) override;
262
263protected:
264 QHBoxLayout* m_pLayout;
265 QLineEdit* m_pWidget;
266 plEnum<plVariantType> m_OriginalType;
267};
268
269
271
272class PL_GUIFOUNDATION_DLL plQtColorButtonWidget : public QFrame
273{
274 Q_OBJECT
275
276public:
277 explicit plQtColorButtonWidget(QWidget* pParent);
278 void SetColor(const plVariant& color);
279
280Q_SIGNALS:
281 void clicked();
282
283protected:
284 virtual void showEvent(QShowEvent* event) override;
285 virtual void mouseReleaseEvent(QMouseEvent* event) override;
286
287 virtual QSize sizeHint() const override;
288 virtual QSize minimumSizeHint() const override;
289
290private:
291 QPalette m_Pal;
292};
293
295{
296 Q_OBJECT
297
298public:
300
301private Q_SLOTS:
302 void on_Button_triggered();
303 void on_CurrentColor_changed(const plColor& color);
304 void on_Color_reset();
305 void on_Color_accepted();
306
307protected:
308 virtual void OnInit() override;
309 virtual void InternalSetValue(const plVariant& value) override;
310
311protected:
312 bool m_bExposeAlpha;
313 QHBoxLayout* m_pLayout;
314 plQtColorButtonWidget* m_pWidget;
315 plVariant m_OriginalValue;
316};
317
318
320
322{
323 Q_OBJECT
324
325public:
327
328private Q_SLOTS:
329 void on_CurrentEnum_changed(int iEnum);
330
331protected:
332 virtual void OnInit() override;
333 virtual void InternalSetValue(const plVariant& value) override;
334
335protected:
336 QHBoxLayout* m_pLayout;
337 QComboBox* m_pWidget;
338 plInt64 m_iCurrentEnum;
339};
340
341
343
345{
346 Q_OBJECT
347
348public:
351
352private Q_SLOTS:
353 void on_Menu_aboutToShow();
354 void on_Menu_aboutToHide();
355
356protected:
357 virtual void OnInit() override;
358 virtual void InternalSetValue(const plVariant& value) override;
359 void SetAllChecked(bool bChecked);
360
361protected:
362 plMap<plInt64, QCheckBox*> m_Constants;
363 QHBoxLayout* m_pLayout = nullptr;
364 QPushButton* m_pWidget = nullptr;
365 QPushButton* m_pAllButton = nullptr;
366 QPushButton* m_pClearButton = nullptr;
367 QMenu* m_pMenu = nullptr;
368 plInt64 m_iCurrentBitflags = 0;
369};
370
371
373
374class PL_GUIFOUNDATION_DLL plQtCurve1DButtonWidget : public QLabel
375{
376 Q_OBJECT
377
378public:
379 explicit plQtCurve1DButtonWidget(QWidget* pParent);
380
381 void UpdatePreview(plObjectAccessorBase* pObjectAccessor, const plDocumentObject* pCurveObject, QColor color, double fLowerExtents, bool bLowerFixed, double fUpperExtents, bool bUpperFixed, double fDefaultValue, double fLowerRange, double fUpperRange);
382
383Q_SIGNALS:
384 void clicked();
385
386protected:
387 virtual void mouseReleaseEvent(QMouseEvent* event) override;
388};
389
390class PL_GUIFOUNDATION_DLL plQtPropertyEditorCurve1DWidget : public plQtPropertyWidget
391{
392 Q_OBJECT
393
394public:
396
397private Q_SLOTS:
398 void on_Button_triggered();
399
400protected:
401 virtual void SetSelection(const plHybridArray<plPropertySelection, 8>& items) override;
402 virtual void OnInit() override;
403 virtual void DoPrepareToDie() override;
404 void UpdatePreview();
405
406protected:
407 QHBoxLayout* m_pLayout = nullptr;
408 plQtCurve1DButtonWidget* m_pButton = nullptr;
409};
plColor represents an RGBA color in linear color space. Values are stored as float,...
Definition Color.h:44
Definition DocumentObjectBase.h:11
A hybrid array uses in-place storage to handle the first few elements without any allocation....
Definition HybridArray.h:12
Definition Map.h:408
Definition ObjectAccessorBase.h:8
*** COLOR ***
Definition PropertyWidget.moc.h:273
*** CURVE1D ***
Definition PropertyWidget.moc.h:375
Definition DoubleSpinBox.moc.h:8
*** SLIDER ***
Definition PropertyWidget.moc.h:161
*** ANGLE SPINBOX ***
Definition PropertyWidget.moc.h:109
*** BITFLAGS COMBOBOX ***
Definition PropertyWidget.moc.h:345
*** CHECKBOX ***
Definition PropertyWidget.moc.h:32
Definition PropertyWidget.moc.h:295
Definition PropertyWidget.moc.h:391
*** DOUBLE SPINBOX ***
Definition PropertyWidget.moc.h:56
*** ENUM COMBOBOX ***
Definition PropertyWidget.moc.h:322
*** INT SPINBOX ***
Definition PropertyWidget.moc.h:131
*** LINEEDIT ***
Definition PropertyWidget.moc.h:247
*** QUATERNION ***
Definition PropertyWidget.moc.h:220
Definition PropertyWidget.moc.h:193
*** TIME SPINBOX ***
Definition PropertyWidget.moc.h:87
Base class for all property widgets.
Definition PropertyBaseWidget.moc.h:28
virtual void SetReadOnly(bool bReadOnly=true)
By default disables the widget, but can be overridden to make a widget more interactable (for example...
Definition PropertyBaseWidget.cpp:436
Base class for most 'simple' property type widgets. Implements some of the standard functionality.
Definition PropertyBaseWidget.moc.h:118
virtual void SetSelection(const plHybridArray< plPropertySelection, 8 > &items) override
This is called whenever the selection in the editor changes and thus the widget may need to display a...
Definition PropertyBaseWidget.cpp:563
plVariant is a class that can store different types of variables, which is useful in situations where...
Definition Variant.h:44
A custom enum implementation that allows to define the underlying storage type to control its memory ...
Definition Enum.h:37