/// <summary> /// Clone the given model system with a new name /// </summary> /// <param name="root"></param> /// <param name="name"></param> /// <param name="error"></param> /// <returns></returns> public bool CloneModelSystemAs(IModelSystemStructure root, string name, ref string error) { lock (_EditingSessionsLock) { var index = Project.IndexOf(root); if (index < 0) { error = "The model system was not found within the project!"; return(false); } // If it is currently being edited, save that version var editingSession = _EditingSessions.FirstOrDefault(s => s.Session != null && s.Session.IsEditing(root)); if (editingSession.Session != null) { return(editingSession.Session.SaveAsModelSystem(name, ref error)); } var ms = _Runtime.ModelSystemController.LoadOrCreate(name); ms.Name = name; ms.Description = Project.ModelSystemDescriptions[index]; ms.ModelSystemStructure = Project.CloneModelSystemStructure(out List <ILinkedParameter> lp, out List <IRegionDisplay> regionDisplays, index); ms.LinkedParameters = lp; ms.RegionDisplays = regionDisplays; return(ms.Save(ref error)); } }
public ModelSystemModel(ModelSystemEditingSession session, Project project, int modelSystemIndex) { _Project = project; _ModelSystemIndex = modelSystemIndex; Name = project.ModelSystemStructure[modelSystemIndex].Name; _Description = project.ModelSystemDescriptions[modelSystemIndex]; Root = new ModelSystemStructureModel(session, (project.CloneModelSystemStructure(out List <ILinkedParameter> editingLinkedParameters, modelSystemIndex) as ModelSystemStructure)); _Description = _Project.ModelSystemDescriptions[modelSystemIndex]; LinkedParameters = new LinkedParametersModel(session, this, editingLinkedParameters); }
public ModelSystemModel(ModelSystemEditingSession session, Project project, int modelSystemIndex) { Project = project; ModelSystemIndex = modelSystemIndex; Name = project.ModelSystemStructure[modelSystemIndex].Name; _Description = project.ModelSystemDescriptions[modelSystemIndex]; List<ILinkedParameter> editingLinkedParameters; Root = new ModelSystemStructureModel(session, (project.CloneModelSystemStructure(out editingLinkedParameters, modelSystemIndex) as ModelSystemStructure)); _Description = Project.ModelSystemDescriptions[modelSystemIndex]; LinkedParameters = new LinkedParametersModel(session, this, editingLinkedParameters); }
/// <summary> /// This constructo /// </summary> private Project(Project toClone) { IsLoaded = true; Name = toClone.Name; var numberOfModelSystems = toClone.ModelSystemStructure.Count; ModelSystemStructure = new List<IModelSystemStructure>(numberOfModelSystems); LinkedParameters = new List<List<ILinkedParameter>>(numberOfModelSystems); DirectoryLocation = toClone.DirectoryLocation; Configuration = toClone.Configuration; ClonedFrom = toClone; for (int i = 0; i < numberOfModelSystems; i++) { List<ILinkedParameter> lp; var mss = toClone.CloneModelSystemStructure(out lp, i); ModelSystemStructure.Add(mss); LinkedParameters.Add(lp); } ModelSystemDescriptions = toClone.ModelSystemDescriptions.ToList(); }