using System; using System.Collections.Generic; using System.IO; using System.Linq; using SAGA.RevitUtils; namespace SAGA.RevitMenu.Configuration { public class TszPanelData { private List _mButtons; public TszPanelData(string strPanelName, bool boolGroupFlag, string strGroupImage, ButtonStyles buttonLayers) { this.PanelName = strPanelName; this.GroupFlag = boolGroupFlag; this.GroupImage = strGroupImage; this.Styles = buttonLayers; this.Visible = true; } public TszButtonData[] ClearSameNameAndAppTypeButtons() { List list = new List(); foreach (TszButtonData data in this.Buttons) { bool flag = false; foreach (TszButtonData data2 in list) { if (data == data2) { flag = true; break; } if (data.ButtonName == data2.ButtonName) { if ((data.AssemblyName == data2.AssemblyName) && (data.ClassName == data2.ClassName)) { flag = true; break; } data.ButtonName = data.ButtonName + Guid.NewGuid(); } } if (!flag) { list.Add(data); } } if (list.Count <= 0) { return null; } return list.ToArray(); } public bool ExistsSameName() { foreach (TszButtonData data in this.Buttons) { foreach (TszButtonData data2 in this.Buttons) { if ((data != data2) && (data.ButtonName == data2.ButtonName)) { return true; } } } return false; } public TszButtonData[] FilterButtons(string menuTab) { List list = new List(); foreach (TszButtonData data in this.Buttons) { if (data.MenuTab.IndexOf(menuTab, StringComparison.Ordinal) > -1) { list.Add(data); } } if (list.Count <= 0) { return null; } return list.ToArray(); } /// /// 验证Panel是否包含不可执行的命令 /// /// public bool ValidateData() { foreach (TszButtonData data in this.Buttons) { if (data.Styles == ButtonStyles.Separator || (!string.IsNullOrEmpty(data.AssemblyName) && File.Exists(data.AssemblyName))) continue; MessageShow.Infomation(data.AssemblyName + " 不存在!"); return false; } return true; } /// /// 有可见的Button /// /// public bool HasVisibleItem() { var item = this.Buttons.FirstOrDefault(t => t.Visible); return item != null; } public List Buttons { get { if (this._mButtons == null) { this._mButtons = new List(); } return this._mButtons; } } public bool Enabled { get; set; } public bool GroupFlag { get; set; } public string GroupImage { get; set; } public string PanelName { get; set; } public ButtonStyles Styles { get; set; } public string Title { get; set; } public RevitVer UseVersion { get; set; } public bool Visible { get; set; } } }