Moved Project into its own ObjectModel and various other fixes
This commit is contained in:
parent
e712df4873
commit
f04fd3b798
@ -4,7 +4,7 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using UniversalEditor.ObjectModels.PropertyList;
|
||||
|
||||
namespace UniversalEditor.ObjectModels.Solution
|
||||
namespace UniversalEditor.ObjectModels.Project
|
||||
{
|
||||
public class ProjectFile : ICloneable
|
||||
{
|
||||
@ -3,7 +3,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace UniversalEditor.ObjectModels.Solution
|
||||
namespace UniversalEditor.ObjectModels.Project
|
||||
{
|
||||
public class ProjectFileSystem
|
||||
{
|
||||
@ -19,6 +19,11 @@ namespace UniversalEditor.ObjectModels.Solution
|
||||
/// </summary>
|
||||
public ProjectFile.ProjectFileCollection Files { get { return mvarFiles; } }
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
mvarFolders.Clear();
|
||||
mvarFiles.Clear();
|
||||
}
|
||||
public void CopyTo(ProjectFileSystem clone)
|
||||
{
|
||||
foreach (ProjectFile file in mvarFiles)
|
||||
@ -3,7 +3,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace UniversalEditor.ObjectModels.Solution
|
||||
namespace UniversalEditor.ObjectModels.Project
|
||||
{
|
||||
public class ProjectFolder : ICloneable
|
||||
{
|
||||
@ -0,0 +1,76 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UniversalEditor.ObjectModels.FileSystem;
|
||||
using UniversalEditor.ObjectModels.PropertyList;
|
||||
|
||||
namespace UniversalEditor.ObjectModels.Project
|
||||
{
|
||||
public class ProjectObjectModel : ObjectModel
|
||||
{
|
||||
public class ProjectObjectModelCollection
|
||||
: System.Collections.ObjectModel.Collection<ProjectObjectModel>
|
||||
{
|
||||
}
|
||||
|
||||
private static ObjectModelReference _omr = null;
|
||||
public override ObjectModelReference MakeReference()
|
||||
{
|
||||
if (_omr == null)
|
||||
{
|
||||
_omr = base.MakeReference();
|
||||
_omr.Title = "Project";
|
||||
_omr.Description = "Stores a set of related files and folders with an accompanying configuration.";
|
||||
}
|
||||
return _omr;
|
||||
}
|
||||
|
||||
public override void Clear()
|
||||
{
|
||||
mvarConfiguration.Clear();
|
||||
mvarFileSystem.Clear();
|
||||
mvarID = Guid.Empty;
|
||||
mvarProjectType = null;
|
||||
mvarReferences.Clear();
|
||||
mvarRelativeFileName = String.Empty;
|
||||
mvarTitle = String.Empty;
|
||||
}
|
||||
|
||||
public override void CopyTo(ObjectModel where)
|
||||
{
|
||||
ProjectObjectModel clone = (where as ProjectObjectModel);
|
||||
mvarConfiguration.CopyTo(clone.Configuration);
|
||||
mvarFileSystem.CopyTo(clone.FileSystem);
|
||||
clone.ID = mvarID;
|
||||
clone.ProjectType = mvarProjectType;
|
||||
foreach (Reference _ref in mvarReferences)
|
||||
{
|
||||
clone.References.Add(_ref);
|
||||
}
|
||||
clone.RelativeFileName = (mvarRelativeFileName.Clone() as string);
|
||||
clone.Title = (mvarTitle.Clone() as string);
|
||||
}
|
||||
|
||||
private Guid mvarID = Guid.Empty;
|
||||
public Guid ID { get { return mvarID; } set { mvarID = value; } }
|
||||
|
||||
private string mvarTitle = String.Empty;
|
||||
public string Title { get { return mvarTitle; } set { mvarTitle = value; } }
|
||||
|
||||
private PropertyListObjectModel mvarConfiguration = new PropertyListObjectModel();
|
||||
public PropertyListObjectModel Configuration { get { return mvarConfiguration; } }
|
||||
|
||||
private Reference.ReferenceCollection mvarReferences = new Reference.ReferenceCollection();
|
||||
public Reference.ReferenceCollection References { get { return mvarReferences; } }
|
||||
|
||||
private ProjectFileSystem mvarFileSystem = new ProjectFileSystem();
|
||||
public ProjectFileSystem FileSystem { get { return mvarFileSystem; } }
|
||||
|
||||
private ProjectType mvarProjectType = null;
|
||||
public ProjectType ProjectType { get { return mvarProjectType; } set { mvarProjectType = value; } }
|
||||
|
||||
private string mvarRelativeFileName = String.Empty;
|
||||
public string RelativeFileName { get { return mvarRelativeFileName; } set { mvarRelativeFileName = value; } }
|
||||
}
|
||||
}
|
||||
@ -3,7 +3,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace UniversalEditor.ObjectModels.Solution
|
||||
namespace UniversalEditor.ObjectModels.Project
|
||||
{
|
||||
public class Reference
|
||||
{
|
||||
@ -1,38 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UniversalEditor.ObjectModels.FileSystem;
|
||||
using UniversalEditor.ObjectModels.PropertyList;
|
||||
|
||||
namespace UniversalEditor.ObjectModels.Solution
|
||||
{
|
||||
public class Project
|
||||
{
|
||||
public class ProjectCollection
|
||||
: System.Collections.ObjectModel.Collection<Project>
|
||||
{
|
||||
}
|
||||
|
||||
private Guid mvarID = Guid.Empty;
|
||||
public Guid ID { get { return mvarID; } set { mvarID = value; } }
|
||||
|
||||
private string mvarTitle = String.Empty;
|
||||
public string Title { get { return mvarTitle; } set { mvarTitle = value; } }
|
||||
|
||||
private PropertyListObjectModel mvarConfiguration = new PropertyListObjectModel();
|
||||
public PropertyListObjectModel Configuration { get { return mvarConfiguration; } }
|
||||
|
||||
private Reference.ReferenceCollection mvarReferences = new Reference.ReferenceCollection();
|
||||
public Reference.ReferenceCollection References { get { return mvarReferences; } }
|
||||
|
||||
private ProjectFileSystem mvarFileSystem = new ProjectFileSystem();
|
||||
public ProjectFileSystem FileSystem { get { return mvarFileSystem; } }
|
||||
|
||||
private ProjectType mvarProjectType = null;
|
||||
public ProjectType ProjectType { get { return mvarProjectType; } set { mvarProjectType = value; } }
|
||||
|
||||
private string mvarRelativeFileName = String.Empty;
|
||||
public string RelativeFileName { get { return mvarRelativeFileName; } set { mvarRelativeFileName = value; } }
|
||||
}
|
||||
}
|
||||
@ -2,6 +2,7 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UniversalEditor.ObjectModels.Project;
|
||||
|
||||
namespace UniversalEditor.ObjectModels.Solution
|
||||
{
|
||||
@ -20,22 +21,24 @@ namespace UniversalEditor.ObjectModels.Solution
|
||||
|
||||
public override void Clear()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
mvarConfiguration.Clear();
|
||||
mvarProjects.Clear();
|
||||
mvarTitle = String.Empty;
|
||||
}
|
||||
|
||||
public override void CopyTo(ObjectModel where)
|
||||
{
|
||||
SolutionObjectModel solution = (where as SolutionObjectModel);
|
||||
solution.Title = (mvarTitle.Clone() as string);
|
||||
foreach (Project project in mvarProjects)
|
||||
foreach (ProjectObjectModel project in mvarProjects)
|
||||
{
|
||||
solution.Projects.Add(project);
|
||||
}
|
||||
mvarConfiguration.CopyTo(solution.Configuration);
|
||||
}
|
||||
|
||||
private Project.ProjectCollection mvarProjects = new Project.ProjectCollection();
|
||||
public Project.ProjectCollection Projects { get { return mvarProjects; } }
|
||||
private ProjectObjectModel.ProjectObjectModelCollection mvarProjects = new ProjectObjectModel.ProjectObjectModelCollection();
|
||||
public ProjectObjectModel.ProjectObjectModelCollection Projects { get { return mvarProjects; } }
|
||||
|
||||
private string mvarTitle = String.Empty;
|
||||
public string Title { get { return mvarTitle; } set { mvarTitle = value; } }
|
||||
|
||||
@ -78,11 +78,11 @@
|
||||
<Compile Include="ObjectModels\PropertyList\Property.cs" />
|
||||
<Compile Include="ObjectModels\PropertyList\PropertyListObjectModel.cs" />
|
||||
<Compile Include="ObjectModels\PropertyList\PropertyValueType.cs" />
|
||||
<Compile Include="ObjectModels\Solution\Project.cs" />
|
||||
<Compile Include="ObjectModels\Solution\ProjectFile.cs" />
|
||||
<Compile Include="ObjectModels\Solution\ProjectFileSystem.cs" />
|
||||
<Compile Include="ObjectModels\Solution\ProjectFolder.cs" />
|
||||
<Compile Include="ObjectModels\Solution\Reference.cs" />
|
||||
<Compile Include="ObjectModels\Project\ProjectObjectModel.cs" />
|
||||
<Compile Include="ObjectModels\Project\ProjectFile.cs" />
|
||||
<Compile Include="ObjectModels\Project\ProjectFileSystem.cs" />
|
||||
<Compile Include="ObjectModels\Project\ProjectFolder.cs" />
|
||||
<Compile Include="ObjectModels\Project\Reference.cs" />
|
||||
<Compile Include="ObjectModels\Solution\SolutionObjectModel.cs" />
|
||||
<Compile Include="ObjectModels\Text\Plain\PlainTextObjectModel.cs" />
|
||||
<Compile Include="ProjectType.cs" />
|
||||
@ -95,6 +95,7 @@
|
||||
<Name>UniversalEditor.Core</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
|
||||
@ -6,7 +6,7 @@ using System.Text;
|
||||
using UniversalEditor.ObjectModels.Markup;
|
||||
using UniversalEditor.DataFormats.Markup.XML;
|
||||
|
||||
using UniversalEditor.ObjectModels.Solution;
|
||||
using UniversalEditor.ObjectModels.Project;
|
||||
using UniversalEditor.ObjectModels.PropertyList;
|
||||
|
||||
namespace UniversalEditor.DataFormats.Solution.Microsoft.VisualStudio
|
||||
@ -19,7 +19,7 @@ namespace UniversalEditor.DataFormats.Solution.Microsoft.VisualStudio
|
||||
if (_dfr == null)
|
||||
{
|
||||
_dfr = base.MakeReference();
|
||||
_dfr.Capabilities.Add(typeof(SolutionObjectModel), DataFormatCapabilities.All);
|
||||
_dfr.Capabilities.Add(typeof(ProjectObjectModel), DataFormatCapabilities.All);
|
||||
_dfr.Filters.Add("Microsoft Visual Studio project", new string[] { "*.vbproj", "*.csproj", "*.jsproj", "*.wixproj", "*.fsproj", "*.pyproj", "*.sqlproj", "*.phpproj" });
|
||||
}
|
||||
return _dfr;
|
||||
@ -38,15 +38,13 @@ namespace UniversalEditor.DataFormats.Solution.Microsoft.VisualStudio
|
||||
protected override void AfterLoadInternal(Stack<ObjectModel> objectModels)
|
||||
{
|
||||
MarkupObjectModel mom = (objectModels.Pop() as MarkupObjectModel);
|
||||
SolutionObjectModel sln = (objectModels.Pop() as SolutionObjectModel);
|
||||
ProjectObjectModel proj = (objectModels.Pop() as ProjectObjectModel);
|
||||
}
|
||||
protected override void BeforeSaveInternal(Stack<ObjectModel> objectModels)
|
||||
{
|
||||
SolutionObjectModel sln = (objectModels.Pop() as SolutionObjectModel);
|
||||
ProjectObjectModel proj = (objectModels.Pop() as ProjectObjectModel);
|
||||
MarkupObjectModel mom = new MarkupObjectModel();
|
||||
|
||||
Project proj = sln.Projects[0];
|
||||
|
||||
MarkupTagElement tagProject = new MarkupTagElement();
|
||||
tagProject.FullName = "Project";
|
||||
// remove for compatibility with older VS versions
|
||||
@ -4,6 +4,7 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using UniversalEditor.Accessors;
|
||||
using UniversalEditor.IO;
|
||||
using UniversalEditor.ObjectModels.Project;
|
||||
using UniversalEditor.ObjectModels.PropertyList;
|
||||
using UniversalEditor.ObjectModels.Solution;
|
||||
using UniversalEditor.UserInterface;
|
||||
@ -43,6 +44,14 @@ namespace UniversalEditor.DataFormats.Solution.Microsoft.VisualStudio
|
||||
reader.Accessor.Seek(-3, SeekOrigin.Current);
|
||||
}
|
||||
|
||||
string solutionFileName = String.Empty;
|
||||
string solutionPath = String.Empty;
|
||||
if (base.Accessor is FileAccessor)
|
||||
{
|
||||
solutionFileName = (base.Accessor as FileAccessor).FileName;
|
||||
}
|
||||
solutionPath = System.IO.Path.GetDirectoryName(solutionFileName);
|
||||
|
||||
string signature2a = reader.ReadLine();
|
||||
if (!String.IsNullOrEmpty(signature2a)) throw new InvalidDataFormatException("Empty line should be present at beginning of file");
|
||||
|
||||
@ -50,7 +59,7 @@ namespace UniversalEditor.DataFormats.Solution.Microsoft.VisualStudio
|
||||
string signature2 = reader.ReadLine();
|
||||
if (!signature2.StartsWith(signature2Verify)) throw new InvalidDataFormatException("File does not begin with \"" + signature2Verify + "\"");
|
||||
|
||||
Project lastProject = null;
|
||||
ProjectObjectModel lastProject = null;
|
||||
|
||||
while (!reader.EndOfStream)
|
||||
{
|
||||
@ -65,18 +74,20 @@ namespace UniversalEditor.DataFormats.Solution.Microsoft.VisualStudio
|
||||
continue;
|
||||
}
|
||||
|
||||
lastProject = new Project();
|
||||
|
||||
string strProjectTypeID = line.Substring(9, line.IndexOf(')') - 10);
|
||||
Guid projectTypeID = new Guid(strProjectTypeID);
|
||||
|
||||
string restOfDeclaration = line.Substring(line.IndexOf('=') + 1).Trim();
|
||||
string[] paramz = restOfDeclaration.Split(new string[] { "," }, "\"");
|
||||
|
||||
lastProject.Title = paramz[0].Trim();
|
||||
lastProject.RelativeFileName = paramz[1].Trim();
|
||||
lastProject.ID = new Guid(paramz[2].Trim());
|
||||
sol.Projects.Add(lastProject);
|
||||
string projectTitle = paramz[0].Trim();
|
||||
string projectRelativeFileName = paramz[1].Trim();
|
||||
string projectFileName = solutionPath + System.IO.Path.DirectorySeparatorChar.ToString() + projectRelativeFileName;
|
||||
Guid projectID = new Guid(paramz[2].Trim());
|
||||
|
||||
ProjectObjectModel project = UniversalEditor.Common.Reflection.GetAvailableObjectModel<ProjectObjectModel>(projectFileName);
|
||||
sol.Projects.Add(project);
|
||||
lastProject = project;
|
||||
}
|
||||
else if (line == "EndProject")
|
||||
{
|
||||
@ -115,7 +126,7 @@ namespace UniversalEditor.DataFormats.Solution.Microsoft.VisualStudio
|
||||
writer.WriteLine("Microsoft Visual Studio Solution File, Format Version 12.00");
|
||||
writer.WriteLine("# Visual Studio 2012");
|
||||
|
||||
foreach (Project project in sol.Projects)
|
||||
foreach (ProjectObjectModel project in sol.Projects)
|
||||
{
|
||||
string projdir = soldir + "/" + project.Title;
|
||||
project.RelativeFileName = project.Title + "\\" + project.Title + ".ueproj";
|
||||
@ -131,7 +142,7 @@ namespace UniversalEditor.DataFormats.Solution.Microsoft.VisualStudio
|
||||
*/
|
||||
Guid projectTypeGuid = Guid.Empty;
|
||||
if (project.ProjectType != null) projectTypeGuid = project.ProjectType.ID;
|
||||
writer.WriteLine("Project(\"" + projectTypeGuid.ToString("B") + "\") = \"" + project.Title + "\", \"" + project.RelativeFileName + "\", \"" + project.ID.ToString("B") + "\"");
|
||||
writer.WriteLine("Project(\"" + projectTypeGuid.ToString("B").ToUpper() + "\") = \"" + project.Title + "\", \"" + project.RelativeFileName + "\", \"" + project.ID.ToString("B").ToUpper() + "\"");
|
||||
writer.WriteLine("EndProject");
|
||||
/*
|
||||
}
|
||||
@ -154,14 +165,14 @@ namespace UniversalEditor.DataFormats.Solution.Microsoft.VisualStudio
|
||||
writer.WriteLine("\t\tRelease|Any CPU = Release|Any CPU");
|
||||
writer.WriteLine("\tEndGlobalSection");
|
||||
writer.WriteLine("\tGlobalSection(ProjectConfigurationPlatforms) = postSolution");
|
||||
foreach (Project project in sol.Projects)
|
||||
foreach (ProjectObjectModel project in sol.Projects)
|
||||
{
|
||||
writer.WriteLine("\t\t" + project.ID.ToString("B") + ".Debug|Any CPU.ActiveCfg = Debug|Any CPU");
|
||||
writer.WriteLine("\t\t" + project.ID.ToString("B") + ".Debug|Any CPU.Build.0 = Debug|Any CPU");
|
||||
writer.WriteLine("\t\t" + project.ID.ToString("B") + ".Debug|x86.ActiveCfg = Debug|Any CPU");
|
||||
writer.WriteLine("\t\t" + project.ID.ToString("B") + ".Release|Any CPU.ActiveCfg = Release|Any CPU");
|
||||
writer.WriteLine("\t\t" + project.ID.ToString("B") + ".Release|Any CPU.Build.0 = Release|Any CPU");
|
||||
writer.WriteLine("\t\t" + project.ID.ToString("B") + ".Release|x86.ActiveCfg = Release|Any CPU");
|
||||
writer.WriteLine("\t\t" + project.ID.ToString("B").ToUpper() + ".Debug|Any CPU.ActiveCfg = Debug|Any CPU");
|
||||
writer.WriteLine("\t\t" + project.ID.ToString("B").ToUpper() + ".Debug|Any CPU.Build.0 = Debug|Any CPU");
|
||||
writer.WriteLine("\t\t" + project.ID.ToString("B").ToUpper() + ".Debug|x86.ActiveCfg = Debug|Any CPU");
|
||||
writer.WriteLine("\t\t" + project.ID.ToString("B").ToUpper() + ".Release|Any CPU.ActiveCfg = Release|Any CPU");
|
||||
writer.WriteLine("\t\t" + project.ID.ToString("B").ToUpper() + ".Release|Any CPU.Build.0 = Release|Any CPU");
|
||||
writer.WriteLine("\t\t" + project.ID.ToString("B").ToUpper() + ".Release|x86.ActiveCfg = Release|Any CPU");
|
||||
}
|
||||
writer.WriteLine("\tEndGlobalSection");
|
||||
writer.WriteLine("\tGlobalSection(SolutionProperties) = preSolution");
|
||||
|
||||
@ -35,7 +35,7 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="DataFormats\Solution\Microsoft\VisualStudio\VisualStudioProjectDataFormat.cs" />
|
||||
<Compile Include="DataFormats\Project\Microsoft\VisualStudio\VisualStudioProjectDataFormat.cs" />
|
||||
<Compile Include="DataFormats\Solution\Microsoft\VisualStudio\VisualStudioSolutionDataFormat.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
@ -52,6 +52,7 @@
|
||||
<Name>UniversalEditor.Essential</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user