public static DomainFile CreateEmpty(DirectoryInfo directory, DomainDomain datasource, ISerializer <TData> serializer, Func <FileInfo, bool> pathOk, INodeFactory nodeFactory, Func <IDomainUsage <ConversationNode, TransitionNoduleUIInfo> > domainUsage, Func <IDynamicEnumParameter, object, DynamicEnumParameter.Source> getDocumentSource, UpToDateFile.BackEnd backEnd, DirectoryInfo origin) { //Create a stream under an available filename FileInfo path = null; for (int i = 0; path == null; i++) { path = new FileInfo(directory.FullName + Path.DirectorySeparatorChar + "New Domain " + i + ".dom"); if (!pathOk(path)) { path = null; } } using (MemoryStream m = new MemoryStream()) { using (var stream = Util.LoadFileStream(path, FileMode.CreateNew, FileAccess.Write)) { serializer.Write(SerializationUtils.MakeDomainData(Enumerable.Empty <ConversationNode>(), new ConversationEditorData()), m); m.CopyTo(stream); } var result = new DomainFile(new List <GraphAndUI <NodeUIData> >(), new List <NodeGroup>(), m, Id <FileInProject> .New(), DocumentPath.FromPath(path, origin), new ReadOnlyCollection <LoadError>(new LoadError[0]), datasource, serializer, nodeFactory, domainUsage, getDocumentSource, new List <IAutoCompletePattern>(), backEnd); result.m_file.Save(); //Make sure the file starts life as a valid xml document return(result); } }
private void SaveTo(Stream file) { file.Position = 0; file.SetLength(0); m_serializer.Write(SerializationUtils.MakeDomainData(Nodes, new ConversationEditorData(Groups)), file); }