diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2017-11-20 09:12:14 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-20 09:12:14 +0100 |
commit | 3dad0ce8f4815165966751705a07fae6e6e2b796 (patch) | |
tree | db67f749b569777544590d4b3e542a1110cac433 /editor/dependency_editor.cpp | |
parent | 7b5c44730176a17f179a49dde4fbf119e4652221 (diff) | |
parent | 13b07fef8167459a6074759bc989c9380aa05eae (diff) |
Merge pull request #12942 from sersoong/master-test
3.0 - add open feture to dependency_editor.cpp(View Owner..)
Diffstat (limited to 'editor/dependency_editor.cpp')
-rw-r--r-- | editor/dependency_editor.cpp | 53 |
1 files changed, 52 insertions, 1 deletions
diff --git a/editor/dependency_editor.cpp b/editor/dependency_editor.cpp index 29e2423e9b..ec0ca3add5 100644 --- a/editor/dependency_editor.cpp +++ b/editor/dependency_editor.cpp @@ -281,6 +281,47 @@ DependencyEditor::DependencyEditor() { } ///////////////////////////////////// +void DependencyEditorOwners::_list_rmb_select(int p_item, const Vector2 &p_pos) { + + file_options->clear(); + file_options->set_size(Size2(1, 1)); + if (p_item >= 0) { + file_options->add_item(TTR("Open"), FILE_OPEN); + } + + file_options->set_position(owners->get_global_position() + p_pos); + file_options->popup(); +} + +void DependencyEditorOwners::_select_file(int p_idx) { + + String fpath = owners->get_item_text(p_idx); + + if (ResourceLoader::get_resource_type(fpath) == "PackedScene") { + editor->open_request(fpath); + hide(); + emit_signal("confirmed"); + } +} + +void DependencyEditorOwners::_file_option(int p_option) { + + switch (p_option) { + case FILE_OPEN: { + int idx = owners->get_current(); + if (idx < 0 || idx >= owners->get_item_count()) + break; + _select_file(idx); + } break; + } +} + +void DependencyEditorOwners::_bind_methods() { + + ClassDB::bind_method(D_METHOD("_list_rmb_select"), &DependencyEditorOwners::_list_rmb_select); + ClassDB::bind_method(D_METHOD("_file_option"), &DependencyEditorOwners::_file_option); + ClassDB::bind_method(D_METHOD("_select_file"), &DependencyEditorOwners::_select_file); +} void DependencyEditorOwners::_fill_owners(EditorFileSystemDirectory *efsd) { @@ -329,9 +370,19 @@ void DependencyEditorOwners::show(const String &p_path) { set_title(TTR("Owners Of:") + " " + p_path.get_file()); } -DependencyEditorOwners::DependencyEditorOwners() { +DependencyEditorOwners::DependencyEditorOwners(EditorNode *p_editor) { + + editor = p_editor; + + file_options = memnew(PopupMenu); + add_child(file_options); + file_options->connect("id_pressed", this, "_file_option"); owners = memnew(ItemList); + owners->set_select_mode(ItemList::SELECT_SINGLE); + owners->connect("item_rmb_selected", this, "_list_rmb_select"); + owners->connect("item_activated", this, "_select_file"); + owners->set_allow_rmb_select(true); add_child(owners); } |