Skip to content

Commit 68b8972

Browse files
committed
Merge pull request #111624 from Meorge/feat/project-manager-show-in-file-manager
Add "Show in File Manager" button to sidebar of Project Manager
2 parents 0400b70 + 769007c commit 68b8972

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

editor/project_manager/project_manager.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,7 @@ void ProjectManager::_update_theme(bool p_skip_creation) {
265265
rename_btn->set_button_icon(get_editor_theme_icon(SNAME("Rename")));
266266
duplicate_btn->set_button_icon(get_editor_theme_icon(SNAME("Duplicate")));
267267
manage_tags_btn->set_button_icon(get_editor_theme_icon("Script"));
268+
show_in_fm_btn->set_button_icon(get_editor_theme_icon("Load"));
268269
erase_btn->set_button_icon(get_editor_theme_icon(SNAME("Remove")));
269270
erase_missing_btn->set_button_icon(get_editor_theme_icon(SNAME("Clear")));
270271
create_tag_btn->set_button_icon(get_editor_theme_icon("Add"));
@@ -280,6 +281,7 @@ void ProjectManager::_update_theme(bool p_skip_creation) {
280281
rename_btn->add_theme_constant_override("h_separation", get_theme_constant(SNAME("sidebar_button_icon_separation"), SNAME("ProjectManager")));
281282
duplicate_btn->add_theme_constant_override("h_separation", get_theme_constant(SNAME("sidebar_button_icon_separation"), SNAME("ProjectManager")));
282283
manage_tags_btn->add_theme_constant_override("h_separation", get_theme_constant(SNAME("sidebar_button_icon_separation"), SNAME("ProjectManager")));
284+
show_in_fm_btn->add_theme_constant_override("h_separation", get_theme_constant(SNAME("sidebar_button_icon_separation"), SNAME("ProjectManager")));
283285
erase_btn->add_theme_constant_override("h_separation", get_theme_constant(SNAME("sidebar_button_icon_separation"), SNAME("ProjectManager")));
284286
erase_missing_btn->add_theme_constant_override("h_separation", get_theme_constant(SNAME("sidebar_button_icon_separation"), SNAME("ProjectManager")));
285287

@@ -738,6 +740,17 @@ void ProjectManager::_duplicate_project_with_action(PostDuplicateAction p_post_a
738740
project_dialog->show_dialog(false);
739741
}
740742

743+
void ProjectManager::_show_project_in_file_manager() {
744+
const Vector<ProjectList::Item> &selected_list = project_list->get_selected_projects();
745+
if (selected_list.is_empty()) {
746+
return;
747+
}
748+
749+
for (const ProjectList::Item &E : selected_list) {
750+
OS::get_singleton()->shell_show_in_file_manager(E.path, true);
751+
}
752+
}
753+
741754
void ProjectManager::_erase_project() {
742755
const HashSet<String> &selected_list = project_list->get_selected_project_keys();
743756

@@ -792,6 +805,7 @@ void ProjectManager::_update_project_buttons() {
792805
rename_btn->set_disabled(empty_selection || is_missing_project_selected);
793806
duplicate_btn->set_disabled(empty_selection || is_missing_project_selected);
794807
manage_tags_btn->set_disabled(empty_selection || is_missing_project_selected || selected_projects.size() > 1);
808+
show_in_fm_btn->set_disabled(empty_selection || is_missing_project_selected);
795809
run_btn->set_disabled(empty_selection || is_missing_project_selected);
796810

797811
erase_missing_btn->set_disabled(!project_list->is_any_project_missing());
@@ -1632,6 +1646,11 @@ ProjectManager::ProjectManager() {
16321646
manage_tags_btn->set_shortcut(ED_SHORTCUT("project_manager/project_tags", TTRC("Manage Tags"), KeyModifierMask::CMD_OR_CTRL | Key::T));
16331647
project_list_sidebar->add_child(manage_tags_btn);
16341648

1649+
show_in_fm_btn = memnew(Button);
1650+
show_in_fm_btn->set_text(TTRC("Show in File Manager"));
1651+
show_in_fm_btn->connect(SceneStringName(pressed), callable_mp(this, &ProjectManager::_show_project_in_file_manager));
1652+
project_list_sidebar->add_child(show_in_fm_btn);
1653+
16351654
erase_btn = memnew(Button);
16361655
erase_btn->set_text(TTRC("Remove"));
16371656
erase_btn->set_shortcut(ED_SHORTCUT("project_manager/remove_project", TTRC("Remove Project"), Key::KEY_DELETE));

editor/project_manager/project_manager.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ class ProjectManager : public Control {
160160
Button *rename_btn = nullptr;
161161
Button *duplicate_btn = nullptr;
162162
Button *manage_tags_btn = nullptr;
163+
Button *show_in_fm_btn = nullptr;
163164
Button *erase_btn = nullptr;
164165
Button *erase_missing_btn = nullptr;
165166

@@ -194,6 +195,7 @@ class ProjectManager : public Control {
194195
void _rename_project();
195196
void _duplicate_project();
196197
void _duplicate_project_with_action(PostDuplicateAction p_action);
198+
void _show_project_in_file_manager();
197199
void _erase_project();
198200
void _erase_missing_projects();
199201
void _erase_project_confirm();

0 commit comments

Comments
 (0)