summaryrefslogtreecommitdiff
path: root/editor/editor_properties.h
diff options
context:
space:
mode:
authorJuan Linietsky <reduzio@gmail.com>2018-05-15 17:12:35 -0300
committerJuan Linietsky <reduzio@gmail.com>2018-05-15 17:14:31 -0300
commit005b69cf6e276209464cc8c36ebc7376679925b6 (patch)
tree2271a91a727cb9afcc2f58b4b91023f4a0a7f7f8 /editor/editor_properties.h
parent3b8bd50b41e0197ab3bce653548715872a93ea80 (diff)
-New inspector.
-Changed UI resizing code, gained huge amount of speed. -Reorganized timer sync to clean up behavior (sorry forgot commit this before) -
Diffstat (limited to 'editor/editor_properties.h')
-rw-r--r--editor/editor_properties.h490
1 files changed, 490 insertions, 0 deletions
diff --git a/editor/editor_properties.h b/editor/editor_properties.h
new file mode 100644
index 0000000000..0a831bfcfe
--- /dev/null
+++ b/editor/editor_properties.h
@@ -0,0 +1,490 @@
+#ifndef EDITOR_PROPERTIES_H
+#define EDITOR_PROPERTIES_H
+
+#include "editor/create_dialog.h"
+#include "editor/editor_file_system.h"
+#include "editor/editor_inspector.h"
+#include "editor/editor_spin_slider.h"
+#include "editor/property_selector.h"
+#include "editor/scene_tree_editor.h"
+#include "scene/gui/color_picker.h"
+
+class EditorPropertyText : public EditorProperty {
+ GDCLASS(EditorPropertyText, EditorProperty)
+ LineEdit *text;
+
+ bool updating;
+ void _text_changed(const String &p_string);
+
+protected:
+ static void _bind_methods();
+
+public:
+ virtual void update_property();
+ EditorPropertyText();
+};
+
+class EditorPropertyMultilineText : public EditorProperty {
+ GDCLASS(EditorPropertyMultilineText, EditorProperty)
+ TextEdit *text;
+
+ AcceptDialog *big_text_dialog;
+ TextEdit *big_text;
+ Button *open_big_text;
+
+ void _big_text_changed();
+ void _text_changed();
+ void _open_big_text();
+
+protected:
+ void _notification(int p_what);
+ static void _bind_methods();
+
+public:
+ virtual void update_property();
+ EditorPropertyMultilineText();
+};
+
+class EditorPropertyTextEnum : public EditorProperty {
+ GDCLASS(EditorPropertyTextEnum, EditorProperty)
+ OptionButton *options;
+
+ void _option_selected(int p_which);
+
+protected:
+ static void _bind_methods();
+
+public:
+ void setup(const Vector<String> &p_options);
+ virtual void update_property();
+ EditorPropertyTextEnum();
+};
+
+class EditorPropertyPath : public EditorProperty {
+ GDCLASS(EditorPropertyPath, EditorProperty)
+ Vector<String> extensions;
+ bool folder;
+ bool global;
+ EditorFileDialog *dialog;
+ Button *path;
+
+ void _path_selected(const String &p_path);
+ void _path_pressed();
+
+protected:
+ static void _bind_methods();
+
+public:
+ void setup(const Vector<String> &p_extensions, bool p_folder, bool p_global);
+ virtual void update_property();
+ EditorPropertyPath();
+};
+
+class EditorPropertyMember : public EditorProperty {
+ GDCLASS(EditorPropertyMember, EditorProperty)
+public:
+ enum Type {
+ MEMBER_METHOD_OF_VARIANT_TYPE, ///< a method of a type
+ MEMBER_METHOD_OF_BASE_TYPE, ///< a method of a base type
+ MEMBER_METHOD_OF_INSTANCE, ///< a method of an instance
+ MEMBER_METHOD_OF_SCRIPT, ///< a method of a script & base
+ MEMBER_PROPERTY_OF_VARIANT_TYPE, ///< a property of a type
+ MEMBER_PROPERTY_OF_BASE_TYPE, ///< a property of a base type
+ MEMBER_PROPERTY_OF_INSTANCE, ///< a property of an instance
+ MEMBER_PROPERTY_OF_SCRIPT, ///< a property of a script & base
+
+ };
+
+private:
+ Type hint;
+ PropertySelector *selector;
+ Button *property;
+ String hint_text;
+
+ void _property_selected(const String &p_selected);
+ void _property_select();
+
+protected:
+ static void _bind_methods();
+
+public:
+ void setup(Type p_hint, const String &p_hint_text);
+ virtual void update_property();
+ EditorPropertyMember();
+};
+
+class EditorPropertyCheck : public EditorProperty {
+ GDCLASS(EditorPropertyCheck, EditorProperty)
+ CheckBox *checkbox;
+
+ void _checkbox_pressed();
+
+protected:
+ static void _bind_methods();
+
+public:
+ virtual void update_property();
+ EditorPropertyCheck();
+};
+
+class EditorPropertyEnum : public EditorProperty {
+ GDCLASS(EditorPropertyEnum, EditorProperty)
+ OptionButton *options;
+
+ void _option_selected(int p_which);
+
+protected:
+ static void _bind_methods();
+
+public:
+ void setup(const Vector<String> &p_options);
+ virtual void update_property();
+ EditorPropertyEnum();
+};
+
+class EditorPropertyFlags : public EditorProperty {
+ GDCLASS(EditorPropertyFlags, EditorProperty)
+ VBoxContainer *vbox;
+ Vector<CheckBox *> flags;
+ Vector<int> flag_indices;
+
+ void _flag_toggled();
+
+protected:
+ static void _bind_methods();
+
+public:
+ void setup(const Vector<String> &p_options);
+ virtual void update_property();
+ EditorPropertyFlags();
+};
+
+class EditorPropertyLayersGrid;
+
+class EditorPropertyLayers : public EditorProperty {
+ GDCLASS(EditorPropertyLayers, EditorProperty)
+public:
+ enum LayerType {
+ LAYER_PHYSICS_2D,
+ LAYER_RENDER_2D,
+ LAYER_PHYSICS_3D,
+ LAYER_RENDER_3D,
+ };
+
+private:
+ EditorPropertyLayersGrid *grid;
+ void _grid_changed(uint32_t p_grid);
+ LayerType layer_type;
+ PopupMenu *layers;
+ Button *button;
+
+ void _button_pressed();
+ void _menu_pressed(int p_menu);
+
+protected:
+ static void _bind_methods();
+
+public:
+ void setup(LayerType p_layer_type);
+ virtual void update_property();
+ EditorPropertyLayers();
+};
+
+class EditorPropertyInteger : public EditorProperty {
+ GDCLASS(EditorPropertyInteger, EditorProperty)
+ EditorSpinSlider *spin;
+ bool setting;
+ void _value_changed(double p_val);
+
+protected:
+ static void _bind_methods();
+
+public:
+ virtual void update_property();
+ void setup(int p_min, int p_max);
+ EditorPropertyInteger();
+};
+
+class EditorPropertyObjectID : public EditorProperty {
+ GDCLASS(EditorPropertyObjectID, EditorProperty)
+ Button *edit;
+ String base_type;
+ void _edit_pressed();
+
+protected:
+ static void _bind_methods();
+
+public:
+ virtual void update_property();
+ void setup(const String &p_base_type);
+ EditorPropertyObjectID();
+};
+
+class EditorPropertyFloat : public EditorProperty {
+ GDCLASS(EditorPropertyFloat, EditorProperty)
+ EditorSpinSlider *spin;
+ bool setting;
+ void _value_changed(double p_val);
+
+protected:
+ static void _bind_methods();
+
+public:
+ virtual void update_property();
+ void setup(double p_min, double p_max, double p_step, bool p_no_slider, bool p_exp_range);
+ EditorPropertyFloat();
+};
+
+class EditorPropertyEasing : public EditorProperty {
+ GDCLASS(EditorPropertyEasing, EditorProperty)
+ Control *easing_draw;
+ ToolButton *button_out, *button_in, *button_linear, *button_constant;
+ ToolButton *button_in_out, *button_out_in;
+ VBoxContainer *vb;
+
+ bool flip;
+
+ void _drag_easing(const Ref<InputEvent> &p_ev);
+ void _draw_easing();
+ void _notification(int p_what);
+ void _set_preset(float p_val);
+
+protected:
+ static void _bind_methods();
+
+public:
+ virtual void update_property();
+ void setup(bool p_full, bool p_flip);
+ EditorPropertyEasing();
+};
+
+class EditorPropertyVector2 : public EditorProperty {
+ GDCLASS(EditorPropertyVector2, EditorProperty)
+ EditorSpinSlider *spin[2];
+ bool setting;
+ void _value_changed(double p_val);
+
+protected:
+ static void _bind_methods();
+
+public:
+ virtual void update_property();
+ void setup(double p_min, double p_max, double p_step, bool p_no_slider);
+ EditorPropertyVector2();
+};
+
+class EditorPropertyRect2 : public EditorProperty {
+ GDCLASS(EditorPropertyRect2, EditorProperty)
+ EditorSpinSlider *spin[4];
+ bool setting;
+ void _value_changed(double p_val);
+
+protected:
+ static void _bind_methods();
+
+public:
+ virtual void update_property();
+ void setup(double p_min, double p_max, double p_step, bool p_no_slider);
+ EditorPropertyRect2();
+};
+
+class EditorPropertyVector3 : public EditorProperty {
+ GDCLASS(EditorPropertyVector3, EditorProperty)
+ EditorSpinSlider *spin[3];
+ bool setting;
+ void _value_changed(double p_val);
+
+protected:
+ static void _bind_methods();
+
+public:
+ virtual void update_property();
+ void setup(double p_min, double p_max, double p_step, bool p_no_slider);
+ EditorPropertyVector3();
+};
+
+class EditorPropertyPlane : public EditorProperty {
+ GDCLASS(EditorPropertyPlane, EditorProperty)
+ EditorSpinSlider *spin[4];
+ bool setting;
+ void _value_changed(double p_val);
+
+protected:
+ static void _bind_methods();
+
+public:
+ virtual void update_property();
+ void setup(double p_min, double p_max, double p_step, bool p_no_slider);
+ EditorPropertyPlane();
+};
+
+class EditorPropertyQuat : public EditorProperty {
+ GDCLASS(EditorPropertyQuat, EditorProperty)
+ EditorSpinSlider *spin[4];
+ bool setting;
+ void _value_changed(double p_val);
+
+protected:
+ static void _bind_methods();
+
+public:
+ virtual void update_property();
+ void setup(double p_min, double p_max, double p_step, bool p_no_slider);
+ EditorPropertyQuat();
+};
+
+class EditorPropertyAABB : public EditorProperty {
+ GDCLASS(EditorPropertyAABB, EditorProperty)
+ EditorSpinSlider *spin[6];
+ bool setting;
+ void _value_changed(double p_val);
+
+protected:
+ static void _bind_methods();
+
+public:
+ virtual void update_property();
+ void setup(double p_min, double p_max, double p_step, bool p_no_slider);
+ EditorPropertyAABB();
+};
+
+class EditorPropertyTransform2D : public EditorProperty {
+ GDCLASS(EditorPropertyTransform2D, EditorProperty)
+ EditorSpinSlider *spin[6];
+ bool setting;
+ void _value_changed(double p_val);
+
+protected:
+ static void _bind_methods();
+
+public:
+ virtual void update_property();
+ void setup(double p_min, double p_max, double p_step, bool p_no_slider);
+ EditorPropertyTransform2D();
+};
+
+class EditorPropertyBasis : public EditorProperty {
+ GDCLASS(EditorPropertyBasis, EditorProperty)
+ EditorSpinSlider *spin[9];
+ bool setting;
+ void _value_changed(double p_val);
+
+protected:
+ static void _bind_methods();
+
+public:
+ virtual void update_property();
+ void setup(double p_min, double p_max, double p_step, bool p_no_slider);
+ EditorPropertyBasis();
+};
+
+class EditorPropertyTransform : public EditorProperty {
+ GDCLASS(EditorPropertyTransform, EditorProperty)
+ EditorSpinSlider *spin[12];
+ bool setting;
+ void _value_changed(double p_val);
+
+protected:
+ static void _bind_methods();
+
+public:
+ virtual void update_property();
+ void setup(double p_min, double p_max, double p_step, bool p_no_slider);
+ EditorPropertyTransform();
+};
+
+class EditorPropertyColor : public EditorProperty {
+ GDCLASS(EditorPropertyColor, EditorProperty)
+ ColorPickerButton *picker;
+ void _color_changed(const Color &p_color);
+
+protected:
+ static void _bind_methods();
+
+public:
+ virtual void update_property();
+ void setup(bool p_show_alpha);
+ EditorPropertyColor();
+};
+
+class EditorPropertyNodePath : public EditorProperty {
+ GDCLASS(EditorPropertyNodePath, EditorProperty)
+ Button *assign;
+ Button *clear;
+ SceneTreeDialog *scene_tree;
+ NodePath base_hint;
+
+ void _node_selected(const NodePath &p_path);
+ void _node_assign();
+ void _node_clear();
+
+protected:
+ static void _bind_methods();
+ void _notification(int p_what);
+
+public:
+ virtual void update_property();
+ void setup(const NodePath &p_base_hint);
+ EditorPropertyNodePath();
+};
+
+class EditorPropertyResource : public EditorProperty {
+ GDCLASS(EditorPropertyResource, EditorProperty)
+
+ enum MenuOption {
+
+ OBJ_MENU_LOAD = 0,
+ OBJ_MENU_EDIT = 1,
+ OBJ_MENU_CLEAR = 2,
+ OBJ_MENU_MAKE_UNIQUE = 3,
+ OBJ_MENU_COPY = 4,
+ OBJ_MENU_PASTE = 5,
+ OBJ_MENU_NEW_SCRIPT = 6,
+ OBJ_MENU_SHOW_IN_FILE_SYSTEM = 7,
+ TYPE_BASE_ID = 100,
+ CONVERT_BASE_ID = 1000
+
+ };
+
+ Button *assign;
+ Button *edit;
+ PopupMenu *menu;
+ EditorFileDialog *file;
+ Vector<String> inheritors_array;
+
+ String base_type;
+
+ SceneTreeDialog *scene_tree;
+
+ void _file_selected(const String &p_path);
+ void _menu_option(int p_which);
+ void _resource_preview(const String &p_path, const Ref<Texture> &p_preview, ObjectID p_obj);
+ void _resource_selected();
+ void _viewport_selected(const NodePath &p_path);
+
+ void _update_menu();
+
+protected:
+ static void _bind_methods();
+ void _notification(int p_what);
+
+public:
+ virtual void update_property();
+ void setup(const String &p_base_type);
+ EditorPropertyResource();
+};
+
+///////////////////////////////////////////////////
+/// \brief The EditorInspectorDefaultPlugin class
+///
+class EditorInspectorDefaultPlugin : public EditorInspectorPlugin {
+ GDCLASS(EditorInspectorDefaultPlugin, EditorInspectorPlugin)
+
+public:
+ virtual bool can_handle(Object *p_object);
+ virtual void parse_begin(Object *p_object);
+ virtual bool parse_property(Object *p_object, Variant::Type p_type, const String &p_path, PropertyHint p_hint, const String &p_hint_text, int p_usage);
+ virtual void parse_end();
+};
+
+#endif // EDITOR_PROPERTIES_H