180 lines
4 KiB
C#
180 lines
4 KiB
C#
using System;
|
|
using JD.Kernel.StaticHelpers;
|
|
|
|
namespace JD.TeaBoxAddinSystem.Addins.Internal
|
|
{
|
|
/// <summary>
|
|
/// An <see cref="AddinManifest"/> forms the identity of an <see cref="Addin"/>.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// All fields are optional.
|
|
/// </remarks>
|
|
public class AddinManifest
|
|
{
|
|
#region Variables
|
|
|
|
private readonly Addin m_owner;
|
|
|
|
private readonly string m_id;
|
|
private string m_name;
|
|
private Version m_version = new Version();
|
|
private string m_author;
|
|
private string m_url;
|
|
private string m_description;
|
|
private string m_category;
|
|
private bool m_x86only;
|
|
|
|
private static int m_nextAutogeneratedId = 1;
|
|
|
|
#endregion
|
|
|
|
#region Constructor
|
|
|
|
/// <summary>
|
|
/// Constructor. Id is generated.
|
|
/// </summary>
|
|
/// <param name="addin"></param>
|
|
public AddinManifest(Addin addin)
|
|
: this(addin, null)
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// Constructor.
|
|
/// </summary>
|
|
/// <param name="addin"></param>
|
|
/// <param name="id">Id of the addin. If null or empty, it will be autogenerated.</param>
|
|
public AddinManifest(Addin addin, string id)
|
|
{
|
|
Throw.IfNull(addin, "addin");
|
|
|
|
m_owner = addin;
|
|
m_id = string.IsNullOrEmpty(id) ? AutogenerateId() : id;
|
|
m_name = id;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Properties
|
|
|
|
/// <summary>
|
|
/// Id of the addin.
|
|
/// </summary>
|
|
public string Id
|
|
{
|
|
get { return m_id; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Name of the addin.
|
|
/// </summary>
|
|
public string Name
|
|
{
|
|
get { return m_name; }
|
|
set
|
|
{
|
|
m_owner.ThrowIfLoaded();
|
|
m_name = value;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Version of the addin.
|
|
/// </summary>
|
|
public Version Version
|
|
{
|
|
get { return m_version; }
|
|
set
|
|
{
|
|
Throw.IfNull(value, "Version");
|
|
m_owner.ThrowIfLoaded();
|
|
m_version = value;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Author of the addin.
|
|
/// </summary>
|
|
public string Author
|
|
{
|
|
get { return m_author; }
|
|
set
|
|
{
|
|
m_owner.ThrowIfLoaded();
|
|
m_author = value;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Url of the addin.
|
|
/// </summary>
|
|
public string Url
|
|
{
|
|
get { return m_url; }
|
|
set
|
|
{
|
|
m_owner.ThrowIfLoaded();
|
|
m_url = value;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Description of the addin.
|
|
/// </summary>
|
|
public string Description
|
|
{
|
|
get { return m_description; }
|
|
set
|
|
{
|
|
m_owner.ThrowIfLoaded();
|
|
m_description = value;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Category of the addin.
|
|
/// </summary>
|
|
public string Category
|
|
{
|
|
get { return m_category; }
|
|
set
|
|
{
|
|
m_owner.ThrowIfLoaded();
|
|
m_category = value;
|
|
}
|
|
}
|
|
|
|
public bool X86Only
|
|
{
|
|
get { return m_x86only; }
|
|
set
|
|
{
|
|
m_owner.ThrowIfLoaded();
|
|
m_x86only = value;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Full Id.
|
|
/// </summary>
|
|
public string FullId
|
|
{
|
|
get
|
|
{
|
|
return Id;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Methods
|
|
|
|
private static string AutogenerateId()
|
|
{
|
|
const string AutogeneratedIdPrefix = "__autoid__";
|
|
return AutogeneratedIdPrefix + m_nextAutogeneratedId++;
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|