/// <summary> /// Renames the model system within the project /// </summary> /// <param name="root">The root structure of the model system to rename</param> /// <param name="newName">The name to set this model system to.</param> /// <param name="error">An error message that describes why this operation has failed.</param> /// <returns>True if the model system was renamed, if not the error will describe why not.</returns> public bool RenameModelSystem(IModelSystemStructure root, string newName, ref string error) { lock (EditingSessionsLock) { var index = Project.ModelSystemStructure.IndexOf(root); if (index < 0) { error = "The model system was not found within the project!"; return(false); } // check to see if the model system is being edited, if it is send a command to that session var editingSession = EditingSessions.FirstOrDefault(s => s.Session != null && s.Session.IsEditing(root)); if (editingSession.Session != null) { editingSession.Session.ModelSystemModel.ChangeModelSystemName(newName, ref error); } //In any case we need to save this change so everything updates accordingly Project.ModelSystemStructure[index].Name = newName; Project.Save(ref error); } return(true); }
/// <summary> /// Loads a project if it exists or creates a new project with the given name. /// </summary> /// <param name="name">The name of the project</param> /// <param name="error">AContains an error message in case of failure</param> /// <returns>The loaded project</returns> public Project LoadOrCreate(string name, ref string error) { lock (EditingSessionLock) { Project alreadyLoaded; if ((alreadyLoaded = Load(name, ref error)) != null) { return(alreadyLoaded); } error = null; if (!ValidateProjectName(name, ref error)) { return(null); } var newProject = new Project(name, Runtime.Configuration); if (!newProject.Save(ref error)) { return(null); } Runtime.Configuration.ProjectRepository.AddProject(newProject); return(newProject); } }