Files
AddinManager/AddInManager/AddinItem.cs
2026-01-02 11:14:44 +08:00

132 lines
3.6 KiB
C#

using System;
using System.IO;
using Autodesk.Revit.Attributes;
namespace AddInManager
{
public class AddinItem : IAddinNode
{
public AddinItem(AddinType type)
{
AddinType = type;
MClientId = Guid.NewGuid();
ClientIdString = MClientId.ToString();
MAssemblyPath = string.Empty;
AssemblyName = string.Empty;
FullClassName = string.Empty;
_mName = string.Empty;
Save = true;
VisibilityMode = VisibilityMode.AlwaysVisible;
}
public AddinItem(string assemblyPath, Guid clientId, string fullClassName, AddinType type, TransactionMode? transactionMode, RegenerationOption? regenerationOption, JournalingMode? journalingMode)
{
TransactionMode = transactionMode;
RegenerationMode = regenerationOption;
JournalingMode = journalingMode;
AddinType = type;
MAssemblyPath = assemblyPath;
AssemblyName = Path.GetFileName(MAssemblyPath);
MClientId = clientId;
ClientIdString = clientId.ToString();
FullClassName = fullClassName;
var num = fullClassName.LastIndexOf(".");
_mName = fullClassName.Substring(num + 1);
Save = true;
VisibilityMode = VisibilityMode.AlwaysVisible;
}
public void SaveToManifest()
{
var manifestFile = new ManifestFile($"{_mName}.addin");
if (AddinType == AddinType.Application)
{
manifestFile.Applications.Add(this);
}
else if (AddinType == AddinType.Command)
{
manifestFile.Commands.Add(this);
}
manifestFile.Save();
}
public AddinType AddinType { get; set; }
public string AssemblyPath
{
get => MAssemblyPath;
set
{
MAssemblyPath = value;
AssemblyName = Path.GetFileName(MAssemblyPath);
}
}
public string AssemblyName { get; set; }
public Guid ClientId
{
get => MClientId;
set
{
MClientId = value;
ClientIdString = MClientId.ToString();
}
}
protected internal string ClientIdString { get; set; }
public string FullClassName { get; set; }
public string Name
{
get => string.IsNullOrEmpty(_mName) ? "External Tool" : _mName;
set
{
if (!string.IsNullOrEmpty(value))
{
_mName = value;
return;
}
_mName = "External Tool";
}
}
public string Description
{
get => string.IsNullOrEmpty(field) ? "\"\"" : field;
set
{
if (string.IsNullOrEmpty(value))
{
field = "\"\"";
return;
}
field = value;
}
}
public VisibilityMode VisibilityMode { get; set; }
public bool Save { get; set; }
public bool Hidden { get; set; }
public TransactionMode? TransactionMode { get; set; }
public RegenerationOption? RegenerationMode { get; set; }
public JournalingMode? JournalingMode { get; set; }
public override string ToString()
{
return _mName;
}
protected string MAssemblyPath;
protected Guid MClientId;
private string _mName;
}
}