Skip to content

Commit

Permalink
Merge pull request #50674 from starry-abyss/master
Browse files Browse the repository at this point in the history
Reorganize buttons in the project manager
  • Loading branch information
YuriSizov committed Jul 31, 2023
2 parents 54ba3cf + 40eeeb9 commit 438d960
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 42 deletions.
84 changes: 43 additions & 41 deletions editor/project_manager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1977,10 +1977,10 @@ void ProjectManager::_notification(int p_what) {
real_t size = get_size().x / EDSCALE;
// Adjust names of tabs to fit the new size.
if (size < 650) {
local_projects_hb->set_name(TTR("Local"));
local_projects_vb->set_name(TTR("Local"));
asset_library->set_name(TTR("Asset Library"));
} else {
local_projects_hb->set_name(TTR("Local Projects"));
local_projects_vb->set_name(TTR("Local Projects"));
asset_library->set_name(TTR("Asset Library Projects"));
}
}
Expand Down Expand Up @@ -2845,19 +2845,39 @@ ProjectManager::ProjectManager() {
tabs->set_anchors_and_offsets_preset(Control::PRESET_FULL_RECT);
tabs->connect("tab_changed", callable_mp(this, &ProjectManager::_on_tab_changed));

local_projects_hb = memnew(HBoxContainer);
local_projects_hb->set_name(TTR("Local Projects"));
tabs->add_child(local_projects_hb);
local_projects_vb = memnew(VBoxContainer);
local_projects_vb->set_name(TTR("Local Projects"));
tabs->add_child(local_projects_vb);

{
// Projects + search bar
VBoxContainer *search_tree_vb = memnew(VBoxContainer);
local_projects_hb->add_child(search_tree_vb);
search_tree_vb->set_h_size_flags(Control::SIZE_EXPAND_FILL);

// A bar at top with buttons and options.
HBoxContainer *hb = memnew(HBoxContainer);
hb->set_h_size_flags(Control::SIZE_EXPAND_FILL);
search_tree_vb->add_child(hb);
local_projects_vb->add_child(hb);

create_btn = memnew(Button);
create_btn->set_text(TTR("New"));
create_btn->set_shortcut(ED_SHORTCUT("project_manager/new_project", TTR("New Project"), KeyModifierMask::CMD_OR_CTRL | Key::N));
create_btn->connect("pressed", callable_mp(this, &ProjectManager::_new_project));
hb->add_child(create_btn);

import_btn = memnew(Button);
import_btn->set_text(TTR("Import"));
import_btn->set_shortcut(ED_SHORTCUT("project_manager/import_project", TTR("Import Project"), KeyModifierMask::CMD_OR_CTRL | Key::I));
import_btn->connect("pressed", callable_mp(this, &ProjectManager::_import_project));
hb->add_child(import_btn);

scan_btn = memnew(Button);
scan_btn->set_text(TTR("Scan"));
scan_btn->set_shortcut(ED_SHORTCUT("project_manager/scan_projects", TTR("Scan Projects"), KeyModifierMask::CMD_OR_CTRL | Key::S));
scan_btn->connect("pressed", callable_mp(this, &ProjectManager::_scan_projects));
hb->add_child(scan_btn);

loading_label = memnew(Label(TTR("Loading, please wait...")));
loading_label->set_h_size_flags(Control::SIZE_EXPAND_FILL);
hb->add_child(loading_label);
// The loading label is shown later.
loading_label->hide();

search_box = memnew(LineEdit);
search_box->set_placeholder(TTR("Filter Projects"));
Expand All @@ -2867,19 +2887,14 @@ ProjectManager::ProjectManager() {
search_box->set_h_size_flags(Control::SIZE_EXPAND_FILL);
hb->add_child(search_box);

loading_label = memnew(Label(TTR("Loading, please wait...")));
loading_label->set_h_size_flags(Control::SIZE_EXPAND_FILL);
hb->add_child(loading_label);
// The loading label is shown later.
loading_label->hide();

Label *sort_label = memnew(Label);
sort_label->set_text(TTR("Sort:"));
hb->add_child(sort_label);

filter_option = memnew(OptionButton);
filter_option->set_clip_text(true);
filter_option->set_h_size_flags(Control::SIZE_EXPAND_FILL);
filter_option->set_stretch_ratio(0.3);
filter_option->connect("item_selected", callable_mp(this, &ProjectManager::_on_order_option_changed));
hb->add_child(filter_option);

Expand All @@ -2892,41 +2907,28 @@ ProjectManager::ProjectManager() {
for (int i = 0; i < sort_filter_titles.size(); i++) {
filter_option->add_item(sort_filter_titles[i]);
}
}

{
// A container for the project list and for the side bar with buttons.
HBoxContainer *search_tree_hb = memnew(HBoxContainer);
local_projects_vb->add_child(search_tree_hb);
search_tree_hb->set_v_size_flags(Control::SIZE_EXPAND_FILL);

search_panel = memnew(PanelContainer);
search_panel->set_v_size_flags(Control::SIZE_EXPAND_FILL);
search_tree_vb->add_child(search_panel);
search_panel->set_h_size_flags(Control::SIZE_EXPAND_FILL);
search_tree_hb->add_child(search_panel);

_project_list = memnew(ProjectList);
_project_list->connect(ProjectList::SIGNAL_SELECTION_CHANGED, callable_mp(this, &ProjectManager::_update_project_buttons));
_project_list->connect(ProjectList::SIGNAL_PROJECT_ASK_OPEN, callable_mp(this, &ProjectManager::_open_selected_projects_ask));
_project_list->set_horizontal_scroll_mode(ScrollContainer::SCROLL_MODE_DISABLED);
search_panel->add_child(_project_list);
}

{
// Project tab side bar
// The side bar with the edit, run, rename, etc. buttons.
VBoxContainer *tree_vb = memnew(VBoxContainer);
tree_vb->set_custom_minimum_size(Size2(120, 120));
local_projects_hb->add_child(tree_vb);

create_btn = memnew(Button);
create_btn->set_text(TTR("New Project"));
create_btn->set_shortcut(ED_SHORTCUT("project_manager/new_project", TTR("New Project"), KeyModifierMask::CMD_OR_CTRL | Key::N));
create_btn->connect("pressed", callable_mp(this, &ProjectManager::_new_project));
tree_vb->add_child(create_btn);

import_btn = memnew(Button);
import_btn->set_text(TTR("Import"));
import_btn->set_shortcut(ED_SHORTCUT("project_manager/import_project", TTR("Import Project"), KeyModifierMask::CMD_OR_CTRL | Key::I));
import_btn->connect("pressed", callable_mp(this, &ProjectManager::_import_project));
tree_vb->add_child(import_btn);

scan_btn = memnew(Button);
scan_btn->set_text(TTR("Scan"));
scan_btn->set_shortcut(ED_SHORTCUT("project_manager/scan_projects", TTR("Scan Projects"), KeyModifierMask::CMD_OR_CTRL | Key::S));
scan_btn->connect("pressed", callable_mp(this, &ProjectManager::_scan_projects));
tree_vb->add_child(scan_btn);
search_tree_hb->add_child(tree_vb);

tree_vb->add_child(memnew(HSeparator));

Expand Down
2 changes: 1 addition & 1 deletion editor/project_manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,7 @@ class ProjectManager : public Control {
Button *erase_missing_btn = nullptr;
Button *about_btn = nullptr;

HBoxContainer *local_projects_hb = nullptr;
VBoxContainer *local_projects_vb = nullptr;
EditorAssetLibrary *asset_library = nullptr;

Ref<StyleBox> tag_stylebox;
Expand Down

0 comments on commit 438d960

Please sign in to comment.