void ok_pressed() { if (!_test_path()) return; String dir; if (import_mode) { dir=project_path->get_text(); } else { DirAccess *d = DirAccess::create(DirAccess::ACCESS_FILESYSTEM); if (d->change_dir(project_path->get_text())!=OK) { error->set_text("Invalid Path for Project (changed anything?)"); memdelete(d); return; } dir=d->get_current_dir(); memdelete(d); FileAccess *f = FileAccess::open(dir.plus_file("/engine.cfg"),FileAccess::WRITE); if (!f) { error->set_text("Couldn't create engine.cfg in project path"); } else { f->store_line("; Engine configuration file."); f->store_line("; It's best to edit using the editor UI, not directly,"); f->store_line("; becausethe parameters that go here are not obvious."); f->store_line("; "); f->store_line("; Format: "); f->store_line("; [section] ; section goes between []"); f->store_line("; param=value ; assign values to parameters"); f->store_line("\n"); f->store_line("[application]"); f->store_line("name=\""+project_name->get_text()+"\""); f->store_line("icon=\"icon.png\""); memdelete(f); ResourceSaver::save(dir.plus_file("/icon.png"),get_icon("DefaultProjectIcon","EditorIcons")); } } dir=dir.replace("\\","/"); if (dir.ends_with("/")) dir=dir.substr(0,dir.length()-1); String proj=dir.replace("/","::"); EditorSettings::get_singleton()->set("projects/"+proj,dir); EditorSettings::get_singleton()->save(); hide(); emit_signal("project_created"); }
void ScriptCreateDialog::_path_changed(const String& p_path) { path_valid=false; String p =p_path; if (p=="") { path_error_label->set_text("Path is Empty"); path_error_label->add_color_override("font_color",Color(1,0.4,0.0,0.8)); return; } p = Globals::get_singleton()->localize_path(p); if (!p.begins_with("res://")) { path_error_label->set_text("Path is not local"); path_error_label->add_color_override("font_color",Color(1,0.4,0.0,0.8)); return; } if (p.find("/") || p.find("\\")) { DirAccess *d = DirAccess::create(DirAccess::ACCESS_RESOURCES); if (d->change_dir(p.get_base_dir())!=OK) { path_error_label->set_text("Base Path Invalid"); path_error_label->add_color_override("font_color",Color(1,0.4,0.0,0.8)); memdelete(d); return; } memdelete(d); } FileAccess *f = FileAccess::create(FileAccess::ACCESS_RESOURCES); if (f->file_exists(p)) { path_error_label->set_text("File Exists"); path_error_label->add_color_override("font_color",Color(1,0.4,0.0,0.8)); memdelete(f); return; } memdelete(f); String extension=p.extension(); List<String> extensions; int l=language_menu->get_selected(); ScriptServer::get_language( l )->get_recognized_extensions(&extensions); bool found=false; for(List<String>::Element *E=extensions.front();E;E=E->next()) { if (E->get().nocasecmp_to(extension)==0) { found=true; break; } } if (!found) { path_error_label->set_text("Invalid Extension"); path_error_label->add_color_override("font_color",Color(1,0.4,0.0,0.8)); return; } path_error_label->set_text("Path is Valid"); path_error_label->add_color_override("font_color",Color(0,1.0,0.8,0.8)); path_valid=true; }