diff options
Diffstat (limited to 'editor/groups_editor.h')
-rw-r--r-- | editor/groups_editor.h | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/editor/groups_editor.h b/editor/groups_editor.h index ad3d5cd14f..461cf0f8c2 100644 --- a/editor/groups_editor.h +++ b/editor/groups_editor.h @@ -31,9 +31,13 @@ #ifndef GROUPS_EDITOR_H #define GROUPS_EDITOR_H +#include "editor/scene_tree_editor.h" #include "scene/gui/button.h" #include "scene/gui/dialogs.h" +#include "scene/gui/item_list.h" #include "scene/gui/line_edit.h" +#include "scene/gui/popup.h" +#include "scene/gui/tool_button.h" #include "scene/gui/tree.h" #include "undo_redo.h" @@ -41,12 +45,71 @@ @author Juan Linietsky <reduzio@gmail.com> */ +class GroupDialog : public ConfirmationDialog { + + GDCLASS(GroupDialog, ConfirmationDialog); + + ConfirmationDialog *error; + + SceneTree *scene_tree; + TreeItem *groups_root; + + LineEdit *add_group_text; + + Tree *groups; + + Tree *nodes_to_add; + TreeItem *add_node_root; + LineEdit *add_filter; + + Tree *nodes_to_remove; + TreeItem *remove_node_root; + LineEdit *remove_filter; + + ToolButton *add_button; + ToolButton *remove_button; + + String selected_group; + + void ok_pressed(); + void _cancel_pressed(); + void _group_selected(); + + void _remove_filter_changed(const String &p_filter); + void _add_filter_changed(const String &p_filter); + + void _add_pressed(); + void _removed_pressed(); + void _add_group_pressed(); + + void _group_renamed(); + + void _add_group(String p_name); + void _delete_group_pressed(Object *p_item, int p_column, int p_id); + + bool _can_edit(Node *p_node, String p_group); + + void _load_groups(Node *p_current); + void _load_nodes(Node *p_current); + +protected: + void _notification(int p_what); + static void _bind_methods(); + +public: + void edit(); + + GroupDialog(); +}; + class GroupsEditor : public VBoxContainer { GDCLASS(GroupsEditor, VBoxContainer); Node *node; + GroupDialog *group_dialog; + LineEdit *group_name; Button *add; Tree *tree; @@ -58,6 +121,9 @@ class GroupsEditor : public VBoxContainer { void _remove_group(Object *p_item, int p_column, int p_id); void _close(); + void _show_group_dialog(); + void _group_dialog_closed(); + protected: static void _bind_methods(); |