public SettingsLoadedEventArgs(ProjectSettings settings) { _settings = settings; }
/// <summary> /// Handles the <see cref="DialogProject"/> form, checks all the directories and builds the <see cref="Project"/> object. /// </summary> public void NewProject() { using (var dialog = new DialogProject()) { var result = dialog.ShowDialog(); if (result != DialogResult.OK) return; if (Project != null) { var dialogResult = MessageBox.Show(@"Creating a new project will close the current one. Continue?", @"New Project", MessageBoxButtons.YesNo); if (dialogResult != DialogResult.Yes) return; CloseProject(); } var name = dialog.ProjectName; var author = dialog.Author; var description = dialog.Description; var path = dialog.FilePath; Project = new Project(name, author, description, path); if (ProjectLoaded != null) ProjectLoaded.Invoke(this, new ProjectLoadedEventArgs(Project)); Settings = new ProjectSettings(); if (SettingsLoaded != null) SettingsLoaded.Invoke(this, new SettingsLoadedEventArgs(Settings)); SaveProject(); Console.WriteLine(@"Project {0} created.", name); } }
/// <summary> /// Destroys the <see cref="Project"/> object. /// </summary> public bool CloseProject() { if (Project != null) { List<string> files = new List<string>(); foreach (var map in MapManager.Instance.Maps) { if (map.UnsavedChanges) { files.Add(map.Name); } } if (files.Count > 0) { using (var closeDialog = new DialogClose(files)) { var closeResult = closeDialog.ShowDialog(); if (closeResult == DialogResult.Cancel) return false; if (closeResult == DialogResult.Yes) MapManager.Instance.SaveMaps(); if (closeResult == DialogResult.No) { foreach (var map in MapManager.Instance.Maps) { map.UnsavedChanges = false; } } } } Console.WriteLine(@"Project {0} closed.", Project.Name); } if (Settings != null) Settings.Ignore = true; if (Project != null) Project.Closing = true; if (ProjectClosed != null) ProjectClosed.Invoke(this, new ProjectClosedEventArgs(Project)); if (Settings != null && Project != null) Settings.SaveToXml(Path.Combine(Project.SettingsPath, "settings.xml")); Project = null; Settings = null; return true; }
/// <summary> /// Deserializes the <see cref="Project"/> object. /// </summary> public void LoadProject() { using (var folderDialog = new OpenFileDialog()) { folderDialog.FileName = "Project.xml"; folderDialog.DefaultExt = ".xml"; var folderResult = folderDialog.ShowDialog(); if (folderResult != DialogResult.OK) return; if (Project != null) { var dialogResult = MessageBox.Show(@"Opening a project will close the current one. Continue?", @"Open Project", MessageBoxButtons.YesNo); if (dialogResult != DialogResult.Yes) return; if (!CloseProject()) return; } string path = folderDialog.FileName; if (!File.Exists(path)) { MessageBox.Show(@"This is not a valid Crystal Toolset Project.", @"Open Project"); return; } Project = Project.LoadFromXml(path); Project.FilePath = Path.GetDirectoryName(path); Project.CheckDirectories(); Console.WriteLine(@"Project {0} loaded.", Project.Name); if (ProjectLoaded != null) ProjectLoaded.Invoke(this, new ProjectLoadedEventArgs(Project)); var settingsPath = Path.Combine(Project.SettingsPath, "settings.xml"); Settings = File.Exists(settingsPath) ? ProjectSettings.LoadFromXml(settingsPath) : new ProjectSettings(); Settings.Ignore = true; if (SettingsLoaded != null) SettingsLoaded.Invoke(this, new SettingsLoadedEventArgs(Settings)); Settings.Ignore = false; } }