Changes to the Project Manager's New Project/Export dialogs.
This commit is contained in:
parent
5c636875e4
commit
0930f4cbcb
@ -89,33 +89,50 @@ private:
|
|||||||
String created_folder_path;
|
String created_folder_path;
|
||||||
|
|
||||||
void set_message(const String &p_msg, MessageType p_type = MESSAGE_SUCCESS) {
|
void set_message(const String &p_msg, MessageType p_type = MESSAGE_SUCCESS) {
|
||||||
|
|
||||||
msg->set_text(p_msg);
|
msg->set_text(p_msg);
|
||||||
if (p_msg == "") {
|
Ref<Texture> current_icon = status_btn->get_icon();
|
||||||
status_btn->set_icon(get_icon("StatusSuccess", "EditorIcons"));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
msg->hide();
|
|
||||||
switch (p_type) {
|
switch (p_type) {
|
||||||
case MESSAGE_ERROR:
|
|
||||||
|
case MESSAGE_ERROR: {
|
||||||
|
|
||||||
msg->add_color_override("font_color", get_color("error_color", "Editor"));
|
msg->add_color_override("font_color", get_color("error_color", "Editor"));
|
||||||
status_btn->set_icon(get_icon("StatusError", "EditorIcons"));
|
Ref<Texture> new_icon = get_icon("StatusError", "EditorIcons");
|
||||||
msg->show();
|
if (current_icon != new_icon) {
|
||||||
break;
|
|
||||||
case MESSAGE_WARNING:
|
status_btn->set_icon(new_icon);
|
||||||
|
msg->show();
|
||||||
|
}
|
||||||
|
} break;
|
||||||
|
case MESSAGE_WARNING: {
|
||||||
|
|
||||||
msg->add_color_override("font_color", get_color("warning_color", "Editor"));
|
msg->add_color_override("font_color", get_color("warning_color", "Editor"));
|
||||||
status_btn->set_icon(get_icon("StatusWarning", "EditorIcons"));
|
Ref<Texture> new_icon = get_icon("StatusWarning", "EditorIcons");
|
||||||
break;
|
if (current_icon != new_icon) {
|
||||||
case MESSAGE_SUCCESS:
|
|
||||||
|
status_btn->set_icon(new_icon);
|
||||||
|
if (current_icon != get_icon("StatusSuccess", "EditorIcons"))
|
||||||
|
msg->hide();
|
||||||
|
}
|
||||||
|
} break;
|
||||||
|
case MESSAGE_SUCCESS: {
|
||||||
|
|
||||||
msg->add_color_override("font_color", get_color("success_color", "Editor"));
|
msg->add_color_override("font_color", get_color("success_color", "Editor"));
|
||||||
status_btn->set_icon(get_icon("StatusSuccess", "EditorIcons"));
|
Ref<Texture> new_icon = get_icon("StatusSuccess", "EditorIcons");
|
||||||
break;
|
if (current_icon != new_icon) {
|
||||||
|
|
||||||
|
status_btn->set_icon(new_icon);
|
||||||
|
msg->hide();
|
||||||
|
}
|
||||||
|
} break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
set_size(Size2(500, 0) * EDSCALE);
|
||||||
}
|
}
|
||||||
|
|
||||||
String _test_path() {
|
String _test_path() {
|
||||||
|
|
||||||
set_message(" ");
|
|
||||||
get_ok()->set_disabled(true);
|
|
||||||
DirAccess *d = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
DirAccess *d = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
||||||
String valid_path;
|
String valid_path;
|
||||||
if (d->change_dir(project_path->get_text()) == OK) {
|
if (d->change_dir(project_path->get_text()) == OK) {
|
||||||
@ -127,6 +144,7 @@ private:
|
|||||||
if (valid_path == "") {
|
if (valid_path == "") {
|
||||||
set_message(TTR("The path does not exist."), MESSAGE_ERROR);
|
set_message(TTR("The path does not exist."), MESSAGE_ERROR);
|
||||||
memdelete(d);
|
memdelete(d);
|
||||||
|
get_ok()->set_disabled(true);
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -136,6 +154,7 @@ private:
|
|||||||
|
|
||||||
set_message(TTR("Please choose a 'project.godot' file."), MESSAGE_ERROR);
|
set_message(TTR("Please choose a 'project.godot' file."), MESSAGE_ERROR);
|
||||||
memdelete(d);
|
memdelete(d);
|
||||||
|
get_ok()->set_disabled(true);
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -155,19 +174,22 @@ private:
|
|||||||
d->list_dir_end();
|
d->list_dir_end();
|
||||||
|
|
||||||
if (!is_empty) {
|
if (!is_empty) {
|
||||||
|
|
||||||
set_message(TTR("Your project will be created in a non empty folder (you might want to create a new folder)."), MESSAGE_WARNING);
|
set_message(TTR("Your project will be created in a non empty folder (you might want to create a new folder)."), MESSAGE_WARNING);
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
if (d->file_exists("project.godot")) {
|
|
||||||
|
|
||||||
set_message(TTR("Please choose a folder that does not contain a 'project.godot' file."), MESSAGE_ERROR);
|
|
||||||
memdelete(d);
|
memdelete(d);
|
||||||
return "";
|
get_ok()->set_disabled(false);
|
||||||
|
return valid_path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} else if (d->file_exists("project.godot")) {
|
||||||
|
|
||||||
|
set_message(TTR("Please choose a folder that does not contain a 'project.godot' file."), MESSAGE_ERROR);
|
||||||
|
memdelete(d);
|
||||||
|
get_ok()->set_disabled(true);
|
||||||
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
set_message(TTR("That's a BINGO!"));
|
||||||
memdelete(d);
|
memdelete(d);
|
||||||
get_ok()->set_disabled(false);
|
get_ok()->set_disabled(false);
|
||||||
return valid_path;
|
return valid_path;
|
||||||
@ -213,7 +235,6 @@ private:
|
|||||||
}
|
}
|
||||||
String sp = p.simplify_path();
|
String sp = p.simplify_path();
|
||||||
project_path->set_text(sp);
|
project_path->set_text(sp);
|
||||||
set_message(" "); // just so it does not disappear
|
|
||||||
get_ok()->call_deferred("grab_focus");
|
get_ok()->call_deferred("grab_focus");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -242,21 +263,32 @@ private:
|
|||||||
|
|
||||||
void _create_folder() {
|
void _create_folder() {
|
||||||
|
|
||||||
if (project_name->get_text() == "" || created_folder_path != "") {
|
if (project_name->get_text() == "" || created_folder_path != "")
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
DirAccess *d = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
DirAccess *d = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
||||||
if (d->change_dir(project_path->get_text()) == OK) {
|
if (d->change_dir(project_path->get_text()) == OK) {
|
||||||
|
|
||||||
if (!d->dir_exists(project_name->get_text())) {
|
if (!d->dir_exists(project_name->get_text())) {
|
||||||
|
|
||||||
if (d->make_dir(project_name->get_text()) == OK) {
|
if (d->make_dir(project_name->get_text()) == OK) {
|
||||||
|
|
||||||
d->change_dir(project_name->get_text());
|
d->change_dir(project_name->get_text());
|
||||||
project_path->set_text(d->get_current_dir());
|
project_path->set_text(d->get_current_dir());
|
||||||
created_folder_path = d->get_current_dir();
|
created_folder_path = d->get_current_dir();
|
||||||
create_dir->set_disabled(true);
|
create_dir->set_disabled(true);
|
||||||
|
} else {
|
||||||
|
|
||||||
|
dialog_error->set_text(TTR("Couldn't create folder."));
|
||||||
|
dialog_error->popup_centered_minsize();
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
|
||||||
|
dialog_error->set_text(TTR("There is already a folder in this path with the specified name."));
|
||||||
|
dialog_error->popup_centered_minsize();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
memdelete(d);
|
memdelete(d);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -337,6 +369,7 @@ private:
|
|||||||
if (!pkg) {
|
if (!pkg) {
|
||||||
|
|
||||||
dialog_error->set_text(TTR("Error opening package file, not in zip format."));
|
dialog_error->set_text(TTR("Error opening package file, not in zip format."));
|
||||||
|
dialog_error->popup_centered_minsize();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -448,7 +481,10 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _toggle_message() {
|
void _toggle_message() {
|
||||||
|
|
||||||
msg->set_visible(!msg->is_visible());
|
msg->set_visible(!msg->is_visible());
|
||||||
|
if (!msg->is_visible())
|
||||||
|
set_size(Size2(500, 0) * EDSCALE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cancel_pressed() {
|
void cancel_pressed() {
|
||||||
@ -457,6 +493,15 @@ private:
|
|||||||
|
|
||||||
project_path->clear();
|
project_path->clear();
|
||||||
project_name->clear();
|
project_name->clear();
|
||||||
|
|
||||||
|
if (status_btn->get_icon() == get_icon("StatusError", "EditorIcons"))
|
||||||
|
msg->show();
|
||||||
|
}
|
||||||
|
|
||||||
|
void _notification(int p_what) {
|
||||||
|
|
||||||
|
if (p_what == MainLoop::NOTIFICATION_WM_QUIT_REQUEST)
|
||||||
|
_remove_created_folder();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -558,7 +603,7 @@ public:
|
|||||||
_test_path();
|
_test_path();
|
||||||
}
|
}
|
||||||
|
|
||||||
popup_centered(Size2(500, 125) * EDSCALE);
|
popup_centered(Size2(500, 0) * EDSCALE);
|
||||||
}
|
}
|
||||||
|
|
||||||
ProjectDialog() {
|
ProjectDialog() {
|
||||||
@ -610,7 +655,6 @@ public:
|
|||||||
pphb->add_child(browse);
|
pphb->add_child(browse);
|
||||||
|
|
||||||
msg = memnew(Label);
|
msg = memnew(Label);
|
||||||
msg->set_text(TTR("That's a BINGO!"));
|
|
||||||
msg->set_align(Label::ALIGN_CENTER);
|
msg->set_align(Label::ALIGN_CENTER);
|
||||||
msg->hide();
|
msg->hide();
|
||||||
vb->add_child(msg);
|
vb->add_child(msg);
|
||||||
@ -652,19 +696,20 @@ struct ProjectItem {
|
|||||||
|
|
||||||
void ProjectManager::_notification(int p_what) {
|
void ProjectManager::_notification(int p_what) {
|
||||||
|
|
||||||
if (p_what == NOTIFICATION_ENTER_TREE) {
|
switch (p_what) {
|
||||||
|
case NOTIFICATION_ENTER_TREE: {
|
||||||
|
|
||||||
Engine::get_singleton()->set_editor_hint(false);
|
Engine::get_singleton()->set_editor_hint(false);
|
||||||
|
} break;
|
||||||
|
case NOTIFICATION_READY: {
|
||||||
|
|
||||||
} else if (p_what == NOTIFICATION_READY) {
|
if (scroll_childs->get_child_count() == 0)
|
||||||
|
open_templates->popup_centered_minsize();
|
||||||
|
} break;
|
||||||
|
case NOTIFICATION_VISIBILITY_CHANGED: {
|
||||||
|
|
||||||
if (scroll_childs->get_child_count() == 0) {
|
set_process_unhandled_input(is_visible_in_tree());
|
||||||
open_templates->popup_centered_minsize();
|
} break;
|
||||||
}
|
|
||||||
|
|
||||||
} else if (p_what == NOTIFICATION_VISIBILITY_CHANGED) {
|
|
||||||
|
|
||||||
set_process_unhandled_input(is_visible_in_tree());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1214,7 +1259,6 @@ void ProjectManager::_run_project_confirm() {
|
|||||||
Error err = OS::get_singleton()->execute(exec, args, false, &pid);
|
Error err = OS::get_singleton()->execute(exec, args, false, &pid);
|
||||||
ERR_FAIL_COND(err);
|
ERR_FAIL_COND(err);
|
||||||
}
|
}
|
||||||
//get_scene()->quit(); do not quit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProjectManager::_run_project() {
|
void ProjectManager::_run_project() {
|
||||||
@ -1556,9 +1600,6 @@ ProjectManager::ProjectManager() {
|
|||||||
scroll_childs->set_h_size_flags(SIZE_EXPAND_FILL);
|
scroll_childs->set_h_size_flags(SIZE_EXPAND_FILL);
|
||||||
scroll->add_child(scroll_childs);
|
scroll->add_child(scroll_childs);
|
||||||
|
|
||||||
//HBoxContainer *hb = memnew( HBoxContainer );
|
|
||||||
//vb->add_child(hb);
|
|
||||||
|
|
||||||
Button *open = memnew(Button);
|
Button *open = memnew(Button);
|
||||||
open->set_text(TTR("Edit"));
|
open->set_text(TTR("Edit"));
|
||||||
tree_vb->add_child(open);
|
tree_vb->add_child(open);
|
||||||
@ -1663,7 +1704,7 @@ ProjectManager::ProjectManager() {
|
|||||||
cancel->connect("pressed", this, "_exit_dialog");
|
cancel->connect("pressed", this, "_exit_dialog");
|
||||||
vb->add_child(cc);
|
vb->add_child(cc);
|
||||||
|
|
||||||
//
|
//////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
language_restart_ask = memnew(ConfirmationDialog);
|
language_restart_ask = memnew(ConfirmationDialog);
|
||||||
language_restart_ask->get_ok()->set_text(TTR("Restart Now"));
|
language_restart_ask->get_ok()->set_text(TTR("Restart Now"));
|
||||||
@ -1772,12 +1813,9 @@ void ProjectListFilter::_filter_option_selected(int p_idx) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ProjectListFilter::_notification(int p_what) {
|
void ProjectListFilter::_notification(int p_what) {
|
||||||
switch (p_what) {
|
|
||||||
case NOTIFICATION_ENTER_TREE: {
|
|
||||||
clear_search_button->set_icon(get_icon("Close", "EditorIcons"));
|
|
||||||
|
|
||||||
} break;
|
if (p_what == NOTIFICATION_ENTER_TREE)
|
||||||
}
|
clear_search_button->set_icon(get_icon("Close", "EditorIcons"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProjectListFilter::_bind_methods() {
|
void ProjectListFilter::_bind_methods() {
|
||||||
|
Loading…
Reference in New Issue
Block a user