mirror of
https://github.com/godotengine/godot.git
synced 2024-12-03 09:52:18 +08:00
Merge pull request #7063 from volzhs/pm-auto-select
Select newly created or imported project automatically
This commit is contained in:
commit
9a504b650e
@ -335,7 +335,7 @@ private:
|
||||
|
||||
|
||||
hide();
|
||||
emit_signal("project_created");
|
||||
emit_signal("project_created", dir);
|
||||
|
||||
}
|
||||
|
||||
@ -882,6 +882,7 @@ void ProjectManager::_load_recent_projects() {
|
||||
hb->add_child(tf);
|
||||
|
||||
VBoxContainer *vb = memnew(VBoxContainer);
|
||||
vb->set_name("project");
|
||||
hb->add_child(vb);
|
||||
Control *ec = memnew( Control );
|
||||
ec->set_custom_minimum_size(Size2(0,1));
|
||||
@ -891,6 +892,7 @@ void ProjectManager::_load_recent_projects() {
|
||||
title->add_color_override("font_color",font_color);
|
||||
vb->add_child(title);
|
||||
Label *fpath = memnew( Label(path) );
|
||||
fpath->set_name("path");
|
||||
vb->add_child(fpath);
|
||||
fpath->set_opacity(0.5);
|
||||
fpath->add_color_override("font_color",font_color);
|
||||
@ -912,6 +914,43 @@ void ProjectManager::_load_recent_projects() {
|
||||
tabs->set_current_tab(0);
|
||||
}
|
||||
|
||||
void ProjectManager::_on_project_created(const String& dir) {
|
||||
bool has_already=false;
|
||||
for (int i=0;i<scroll_childs->get_child_count();i++) {
|
||||
HBoxContainer *hb=scroll_childs->get_child(i)->cast_to<HBoxContainer>();
|
||||
Label *fpath=hb->get_node(NodePath("project/path"))->cast_to<Label>();
|
||||
if (fpath->get_text()==dir) {
|
||||
has_already=true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (has_already) {
|
||||
_update_scroll_pos(dir);
|
||||
} else {
|
||||
_load_recent_projects();
|
||||
scroll->connect("draw", this, "_update_scroll_pos", varray(dir), CONNECT_ONESHOT);
|
||||
}
|
||||
}
|
||||
|
||||
void ProjectManager::_update_scroll_pos(const String& dir) {
|
||||
for (int i=0;i<scroll_childs->get_child_count();i++) {
|
||||
HBoxContainer *hb=scroll_childs->get_child(i)->cast_to<HBoxContainer>();
|
||||
Label *fpath=hb->get_node(NodePath("project/path"))->cast_to<Label>();
|
||||
if (fpath->get_text()==dir) {
|
||||
last_clicked=hb->get_meta("name");
|
||||
selected_list.clear();
|
||||
selected_list.insert(hb->get_meta("name"), hb->get_meta("main_scene"));
|
||||
_update_project_buttons();
|
||||
int last_y_visible=scroll->get_v_scroll()+scroll->get_size().y;
|
||||
int offset_diff=(hb->get_pos().y + hb->get_size().y)-last_y_visible;
|
||||
|
||||
if (offset_diff>0)
|
||||
scroll->set_v_scroll(scroll->get_v_scroll()+offset_diff);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ProjectManager::_open_project_confirm() {
|
||||
|
||||
for (Map<String,String>::Element *E=selected_list.front(); E; E=E->next()) {
|
||||
@ -1164,6 +1203,8 @@ void ProjectManager::_bind_methods() {
|
||||
ObjectTypeDB::bind_method("_erase_project_confirm",&ProjectManager::_erase_project_confirm);
|
||||
ObjectTypeDB::bind_method("_exit_dialog",&ProjectManager::_exit_dialog);
|
||||
ObjectTypeDB::bind_method("_load_recent_projects",&ProjectManager::_load_recent_projects);
|
||||
ObjectTypeDB::bind_method("_on_project_created",&ProjectManager::_on_project_created);
|
||||
ObjectTypeDB::bind_method("_update_scroll_pos",&ProjectManager::_update_scroll_pos);
|
||||
ObjectTypeDB::bind_method("_panel_draw",&ProjectManager::_panel_draw);
|
||||
ObjectTypeDB::bind_method("_panel_input",&ProjectManager::_panel_input);
|
||||
ObjectTypeDB::bind_method("_unhandled_input",&ProjectManager::_unhandled_input);
|
||||
@ -1382,7 +1423,7 @@ ProjectManager::ProjectManager() {
|
||||
npdialog = memnew( NewProjectDialog );
|
||||
gui_base->add_child(npdialog);
|
||||
|
||||
npdialog->connect("project_created", this,"_load_recent_projects");
|
||||
npdialog->connect("project_created", this,"_on_project_created");
|
||||
_load_recent_projects();
|
||||
|
||||
if ( EditorSettings::get_singleton()->get("global/autoscan_project_path") ) {
|
||||
|
@ -85,6 +85,8 @@ class ProjectManager : public Control {
|
||||
void _scan_begin(const String& p_base);
|
||||
|
||||
void _load_recent_projects();
|
||||
void _on_project_created(const String& dir);
|
||||
void _update_scroll_pos(const String& dir);
|
||||
void _scan_dir(DirAccess *da,float pos, float total,List<String> *r_projects);
|
||||
|
||||
void _install_project(const String& p_zip_path,const String& p_title);
|
||||
|
Loading…
Reference in New Issue
Block a user