mirror of
https://github.com/godotengine/godot.git
synced 2025-10-15 02:49:24 +00:00
Merge pull request #111624 from Meorge/feat/project-manager-show-in-file-manager
Add "Show in File Manager" button to sidebar of Project Manager
This commit is contained in:
@@ -265,6 +265,7 @@ void ProjectManager::_update_theme(bool p_skip_creation) {
|
|||||||
rename_btn->set_button_icon(get_editor_theme_icon(SNAME("Rename")));
|
rename_btn->set_button_icon(get_editor_theme_icon(SNAME("Rename")));
|
||||||
duplicate_btn->set_button_icon(get_editor_theme_icon(SNAME("Duplicate")));
|
duplicate_btn->set_button_icon(get_editor_theme_icon(SNAME("Duplicate")));
|
||||||
manage_tags_btn->set_button_icon(get_editor_theme_icon("Script"));
|
manage_tags_btn->set_button_icon(get_editor_theme_icon("Script"));
|
||||||
|
show_in_fm_btn->set_button_icon(get_editor_theme_icon("Load"));
|
||||||
erase_btn->set_button_icon(get_editor_theme_icon(SNAME("Remove")));
|
erase_btn->set_button_icon(get_editor_theme_icon(SNAME("Remove")));
|
||||||
erase_missing_btn->set_button_icon(get_editor_theme_icon(SNAME("Clear")));
|
erase_missing_btn->set_button_icon(get_editor_theme_icon(SNAME("Clear")));
|
||||||
create_tag_btn->set_button_icon(get_editor_theme_icon("Add"));
|
create_tag_btn->set_button_icon(get_editor_theme_icon("Add"));
|
||||||
@@ -280,6 +281,7 @@ void ProjectManager::_update_theme(bool p_skip_creation) {
|
|||||||
rename_btn->add_theme_constant_override("h_separation", get_theme_constant(SNAME("sidebar_button_icon_separation"), SNAME("ProjectManager")));
|
rename_btn->add_theme_constant_override("h_separation", get_theme_constant(SNAME("sidebar_button_icon_separation"), SNAME("ProjectManager")));
|
||||||
duplicate_btn->add_theme_constant_override("h_separation", get_theme_constant(SNAME("sidebar_button_icon_separation"), SNAME("ProjectManager")));
|
duplicate_btn->add_theme_constant_override("h_separation", get_theme_constant(SNAME("sidebar_button_icon_separation"), SNAME("ProjectManager")));
|
||||||
manage_tags_btn->add_theme_constant_override("h_separation", get_theme_constant(SNAME("sidebar_button_icon_separation"), SNAME("ProjectManager")));
|
manage_tags_btn->add_theme_constant_override("h_separation", get_theme_constant(SNAME("sidebar_button_icon_separation"), SNAME("ProjectManager")));
|
||||||
|
show_in_fm_btn->add_theme_constant_override("h_separation", get_theme_constant(SNAME("sidebar_button_icon_separation"), SNAME("ProjectManager")));
|
||||||
erase_btn->add_theme_constant_override("h_separation", get_theme_constant(SNAME("sidebar_button_icon_separation"), SNAME("ProjectManager")));
|
erase_btn->add_theme_constant_override("h_separation", get_theme_constant(SNAME("sidebar_button_icon_separation"), SNAME("ProjectManager")));
|
||||||
erase_missing_btn->add_theme_constant_override("h_separation", get_theme_constant(SNAME("sidebar_button_icon_separation"), SNAME("ProjectManager")));
|
erase_missing_btn->add_theme_constant_override("h_separation", get_theme_constant(SNAME("sidebar_button_icon_separation"), SNAME("ProjectManager")));
|
||||||
|
|
||||||
@@ -738,6 +740,17 @@ void ProjectManager::_duplicate_project_with_action(PostDuplicateAction p_post_a
|
|||||||
project_dialog->show_dialog(false);
|
project_dialog->show_dialog(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ProjectManager::_show_project_in_file_manager() {
|
||||||
|
const Vector<ProjectList::Item> &selected_list = project_list->get_selected_projects();
|
||||||
|
if (selected_list.is_empty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const ProjectList::Item &E : selected_list) {
|
||||||
|
OS::get_singleton()->shell_show_in_file_manager(E.path, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ProjectManager::_erase_project() {
|
void ProjectManager::_erase_project() {
|
||||||
const HashSet<String> &selected_list = project_list->get_selected_project_keys();
|
const HashSet<String> &selected_list = project_list->get_selected_project_keys();
|
||||||
|
|
||||||
@@ -792,6 +805,7 @@ void ProjectManager::_update_project_buttons() {
|
|||||||
rename_btn->set_disabled(empty_selection || is_missing_project_selected);
|
rename_btn->set_disabled(empty_selection || is_missing_project_selected);
|
||||||
duplicate_btn->set_disabled(empty_selection || is_missing_project_selected);
|
duplicate_btn->set_disabled(empty_selection || is_missing_project_selected);
|
||||||
manage_tags_btn->set_disabled(empty_selection || is_missing_project_selected || selected_projects.size() > 1);
|
manage_tags_btn->set_disabled(empty_selection || is_missing_project_selected || selected_projects.size() > 1);
|
||||||
|
show_in_fm_btn->set_disabled(empty_selection || is_missing_project_selected);
|
||||||
run_btn->set_disabled(empty_selection || is_missing_project_selected);
|
run_btn->set_disabled(empty_selection || is_missing_project_selected);
|
||||||
|
|
||||||
erase_missing_btn->set_disabled(!project_list->is_any_project_missing());
|
erase_missing_btn->set_disabled(!project_list->is_any_project_missing());
|
||||||
@@ -1632,6 +1646,11 @@ ProjectManager::ProjectManager() {
|
|||||||
manage_tags_btn->set_shortcut(ED_SHORTCUT("project_manager/project_tags", TTRC("Manage Tags"), KeyModifierMask::CMD_OR_CTRL | Key::T));
|
manage_tags_btn->set_shortcut(ED_SHORTCUT("project_manager/project_tags", TTRC("Manage Tags"), KeyModifierMask::CMD_OR_CTRL | Key::T));
|
||||||
project_list_sidebar->add_child(manage_tags_btn);
|
project_list_sidebar->add_child(manage_tags_btn);
|
||||||
|
|
||||||
|
show_in_fm_btn = memnew(Button);
|
||||||
|
show_in_fm_btn->set_text(TTRC("Show in File Manager"));
|
||||||
|
show_in_fm_btn->connect(SceneStringName(pressed), callable_mp(this, &ProjectManager::_show_project_in_file_manager));
|
||||||
|
project_list_sidebar->add_child(show_in_fm_btn);
|
||||||
|
|
||||||
erase_btn = memnew(Button);
|
erase_btn = memnew(Button);
|
||||||
erase_btn->set_text(TTRC("Remove"));
|
erase_btn->set_text(TTRC("Remove"));
|
||||||
erase_btn->set_shortcut(ED_SHORTCUT("project_manager/remove_project", TTRC("Remove Project"), Key::KEY_DELETE));
|
erase_btn->set_shortcut(ED_SHORTCUT("project_manager/remove_project", TTRC("Remove Project"), Key::KEY_DELETE));
|
||||||
|
@@ -160,6 +160,7 @@ class ProjectManager : public Control {
|
|||||||
Button *rename_btn = nullptr;
|
Button *rename_btn = nullptr;
|
||||||
Button *duplicate_btn = nullptr;
|
Button *duplicate_btn = nullptr;
|
||||||
Button *manage_tags_btn = nullptr;
|
Button *manage_tags_btn = nullptr;
|
||||||
|
Button *show_in_fm_btn = nullptr;
|
||||||
Button *erase_btn = nullptr;
|
Button *erase_btn = nullptr;
|
||||||
Button *erase_missing_btn = nullptr;
|
Button *erase_missing_btn = nullptr;
|
||||||
|
|
||||||
@@ -194,6 +195,7 @@ class ProjectManager : public Control {
|
|||||||
void _rename_project();
|
void _rename_project();
|
||||||
void _duplicate_project();
|
void _duplicate_project();
|
||||||
void _duplicate_project_with_action(PostDuplicateAction p_action);
|
void _duplicate_project_with_action(PostDuplicateAction p_action);
|
||||||
|
void _show_project_in_file_manager();
|
||||||
void _erase_project();
|
void _erase_project();
|
||||||
void _erase_missing_projects();
|
void _erase_missing_projects();
|
||||||
void _erase_project_confirm();
|
void _erase_project_confirm();
|
||||||
|
Reference in New Issue
Block a user