예제 #1
0
        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);
            }
        }
예제 #2
0
 private void SaveTo(Stream file)
 {
     file.Position = 0;
     file.SetLength(0);
     m_serializer.Write(SerializationUtils.MakeDomainData(Nodes, new ConversationEditorData(Groups)), file);
 }