Load non-essential files and folders in FileSystem property

This commit is contained in:
Michael Becker 2016-02-05 14:29:57 -05:00
parent 30dd4ad1c3
commit 34f9753e1d
2 changed files with 43 additions and 18 deletions

View File

@ -30,16 +30,17 @@ namespace UniversalEditor.DataFormats.Package.OpenPackagingConvention
FileSystemObjectModel fsom = (objectModels.Pop() as FileSystemObjectModel);
PackageObjectModel package = (objectModels.Pop() as PackageObjectModel);
Folder _rels = fsom.Folders["_rels"];
if (_rels != null)
File[] files = fsom.GetAllFiles();
foreach (File file in files)
{
foreach (File file in _rels.Files)
if (file.Name.EndsWith(".rels") && file.Parent.Name == "_rels")
{
string relatedFileName = null;
if (file.Name.EndsWith(".rels") && file.Name != ".rels")
string fn = System.IO.Path.GetFileName(file.Name);
if (fn != ".rels")
{
relatedFileName = file.Name.Substring(0, file.Name.Length - ".rels".Length);
relatedFileName = fn.Substring(0, fn.Length - ".rels".Length);
}
@ -61,19 +62,22 @@ namespace UniversalEditor.DataFormats.Package.OpenPackagingConvention
}
}
}
}
File _Content_Types = fsom.Files["[Content_Types].xml"];
{
byte[] data = _Content_Types.GetData();
OPCContentTypesDataFormat df = new OPCContentTypesDataFormat();
ContentTypesObjectModel contentTypes = new ContentTypesObjectModel();
Document.Load(contentTypes, df, new MemoryAccessor(data));
foreach (ContentType type in contentTypes.ContentTypes)
else if (file.Name == "[Content_Types].xml" && file.Parent == null)
{
package.ContentTypes.Add(type);
byte[] data = file.GetData();
OPCContentTypesDataFormat df = new OPCContentTypesDataFormat();
ContentTypesObjectModel contentTypes = new ContentTypesObjectModel();
Document.Load(contentTypes, df, new MemoryAccessor(data));
foreach (ContentType type in contentTypes.ContentTypes)
{
package.ContentTypes.Add(type);
}
}
else
{
package.FileSystem.AddFile(file.Name, file.GetData());
}
}

View File

@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UniversalEditor.ObjectModels.FileSystem;
using UniversalEditor.ObjectModels.Package.ContentTypes;
using UniversalEditor.ObjectModels.Package.Relationships;
@ -36,5 +37,25 @@ namespace UniversalEditor.ObjectModels.Package
clone.Relationships.Add(item.Clone() as Relationship);
}
}
private FileSystemObjectModel mvarFileSystem = new FileSystemObjectModel();
public FileSystemObjectModel FileSystem { get { return mvarFileSystem; } }
public File[] GetFilesBySchema(string p)
{
List<File> files = new List<File>();
Relationship[] rels = mvarRelationships.GetBySchema(p);
foreach (Relationship rel in rels)
{
if (rel.Target.StartsWith("/"))
{
string target = rel.Target.Substring(1);
File file = mvarFileSystem.FindFile(target);
if (file != null) files.Add(file);
}
}
return files.ToArray();
}
}
}