diff --git a/project-manager/src/main.rs b/project-manager/src/main.rs index b09d20b27..48fbfd25c 100644 --- a/project-manager/src/main.rs +++ b/project-manager/src/main.rs @@ -236,7 +236,7 @@ fn make_project_items(settings: &Settings, ctx: &mut BuildContext) -> Vec>() } @@ -413,7 +413,9 @@ impl ProjectManager { fn handle_ui_message(&mut self, message: &UiMessage, ui: &mut UserInterface) { if let Some(project_wizard) = self.project_wizard.as_mut() { - project_wizard.handle_ui_message(message, ui) + if project_wizard.handle_ui_message(message, ui, &mut self.settings) { + self.refresh(ui); + } } if let Some(ButtonMessage::Click) = message.data() { diff --git a/project-manager/src/project.rs b/project-manager/src/project.rs index b280b3498..d514e893a 100644 --- a/project-manager/src/project.rs +++ b/project-manager/src/project.rs @@ -1,3 +1,4 @@ +use crate::settings::{Project, Settings}; use crate::{make_button, utils::make_dropdown_list_option}; use fyrox::{ core::pool::Handle, @@ -234,7 +235,12 @@ impl ProjectWizard { )); } - pub fn handle_ui_message(&mut self, message: &UiMessage, ui: &UserInterface) { + pub fn handle_ui_message( + &mut self, + message: &UiMessage, + ui: &UserInterface, + settings: &mut Settings, + ) -> bool { if let Some(ButtonMessage::Click) = message.data() { if message.destination() == self.create { let _ = fyrox_template_core::init_project( @@ -244,7 +250,18 @@ impl ProjectWizard { self.vcs.as_str(), true, ); + settings.projects.push(Project { + manifest_path: self + .path + .join(&self.name) + .join("Cargo.toml") + .canonicalize() + .unwrap_or_default(), + name: self.name.clone(), + hot_reload: false, + }); self.close_and_remove(ui); + return true; } else if message.destination() == self.cancel { self.close_and_remove(ui); } @@ -269,5 +286,6 @@ impl ProjectWizard { self.path.clone_from(path); } } + false } } diff --git a/project-manager/src/settings.rs b/project-manager/src/settings.rs index a680910ce..b8046d642 100644 --- a/project-manager/src/settings.rs +++ b/project-manager/src/settings.rs @@ -30,5 +30,6 @@ impl Settings { #[derive(Serialize, Deserialize)] pub struct Project { pub manifest_path: PathBuf, + pub name: String, pub hot_reload: bool, }