using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml.Serialization; using RainmeterStudio.Core.Storage; using RainmeterStudio.Core.Utils; using Version = RainmeterStudio.Core.Utils.Version; namespace RainmeterStudio.Core.Model { /// /// Defines a Rainmeter Studio project /// public class Project { #region Properties /// /// Gets or sets the name of the project /// [XmlElement(ElementName = "name", Order = 1)] public string Name { get { return Root.Name; } set { Root.Name = value; } } /// /// Gets or sets the file path of this project /// [XmlIgnore] public string Path { get { return Root.StoragePath; } set { Root.StoragePath = value; } } /// /// Gets or sets the author of the project /// [XmlElement(ElementName = "author", Order = 2)] public string Author { get; set; } /// /// Gets or sets the version of the project /// [XmlElement(ElementName = "version", Order = 3)] public Version Version { get; set; } /// /// Gets or sets the reference to the file that automatically loads at package installation /// [XmlIgnore] public Reference AutoLoadFile { get; set; } /// /// Gets or sets the qualified name of the auto load file /// [XmlElement(ElementName = "autoLoadFile", Order = 7)] public string AutoLoadFileQualifiedName { get { return ((AutoLoadFile == null) ? null : AutoLoadFile.QualifiedName); } set { AutoLoadFile = Root.GetReference(value); } } /// /// Gets or sets the list of variable files /// [XmlIgnore] public List VariableFiles { get; set; } /// /// Gets or sets the list of variable files qualified names /// [XmlArray(ElementName = "variableFiles", Order = 8)] public string[] VariableFilesQualifiedNames { get { return VariableFiles.Select(x => x.QualifiedName).ToArray(); } set { VariableFiles.Clear(); VariableFiles.AddRange(value.Select(x => Root.GetReference(x))); } } /// /// Gets or sets the minimum rainmeter version /// [XmlElement(ElementName = "minimumRainmeter", Order = 4)] public Version MinimumRainmeter { get; set; } /// /// Gets or sets the minimum Windows version /// [XmlElement(ElementName = "minimumWindows", Order = 5)] public Version MinimumWindows { get; set; } /// /// Gets or sets the root node /// [XmlElement(ElementName = "root", Order = 6)] public Reference Root { get; set; } #endregion #region Constructor /// /// Initializes a project /// public Project() { Root = new Reference(String.Empty); VariableFiles = new List(); Version = new Version(); MinimumRainmeter = new Version("3.1"); MinimumWindows = new Version("5.1"); } #endregion #region Operations /// /// Looks for reference in project /// /// Reference /// True if reference was found public bool Contains(Reference reference) { return Root.TreeContains(reference); } #endregion } }