forked from CleverRaven/Cataclysm-DDA
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsimple_property_widget.h
82 lines (69 loc) · 2.8 KB
/
simple_property_widget.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#ifndef CATA_OBJECT_CREATOR_SIMPLE_PROPERTY_WIDGET_H
#define CATA_OBJECT_CREATOR_SIMPLE_PROPERTY_WIDGET_H
#include "item_group.h"
#include "QtWidgets/qlistwidget.h"
#include <QtWidgets/qlineedit.h>
#include <QtWidgets/qplaintextedit.h>
#include "QtWidgets/qpushbutton.h"
#include <QtWidgets/qlayout.h>
#include <QtWidgets/QSpinBox>
#include <QtWidgets/QComboBox>
#include "QtWidgets/qlabel.h"
#include <QtWidgets/qcheckbox.h>
namespace creator
{
enum class property_type : int {
LINEEDIT, // Just a label and a one-line text box
MINMAX, // Label, spinbox for minimum and a spinbox for maximum number
NUMBER, // Label and one spinbox holding a number
BOOLEAN, // Label and one checkbox
NUM_TYPES // always keep at the end, number of property types
};
//A widget for the most simple properties
class simple_property_widget : public QFrame
{
public:
/* The constructor function
* @param parent: required by parent class but unused here. just provide the parent widget
* @param propertyText: the name of the property in json. Used as a label and for writing json
* @param prop_type: The type of property. See property_type enum for options
* @param to_notify: A widget that will receive the change notification if something changes
* you need to specify the property_changed event in the to_notify widget's code
*/
explicit simple_property_widget( QWidget* parent, QString propertyText,
property_type prop_type, QObject* to_notify );
void get_json( JsonOut &jo );
void allow_hiding( bool allow );
QString get_propertyName();
/* Set the minimum and maximum limits for the MINMAX property
* @param min_min: The minimum possible value for the minimum box
* @param min_max: The maximum possible value for the minimum box
* @param max_min: The minimum possible value for the maximum box
* @param max_max: The maximum possible value for the maximum box
*/
void set_minmax_limits( int min_min, int min_max, int max_min, int max_max );
private:
void change_notify_widget();
void min_changed();
void max_changed();
QLabel* prop_label;
QSpinBox* prop_number;
QSpinBox* prop_min;
QSpinBox* prop_max;
QCheckBox* prop_bool;
QLineEdit* prop_line;
QObject* widget_to_notify;
QPushButton* btnHide;
property_type p_type;
QString propertyName;
};
class property_changed : public QEvent
{
public:
property_changed() : QEvent( registeredType() ) { }
static QEvent::Type eventType;
private:
static QEvent::Type registeredType();
};
}
#endif