TszPanelData.cs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using SAGA.RevitUtils;
  6. namespace SAGA.RevitMenu.Configuration
  7. {
  8. public class TszPanelData
  9. {
  10. private List<TszButtonData> _mButtons;
  11. public TszPanelData(string strPanelName, bool boolGroupFlag, string strGroupImage, ButtonStyles buttonLayers)
  12. {
  13. this.PanelName = strPanelName;
  14. this.GroupFlag = boolGroupFlag;
  15. this.GroupImage = strGroupImage;
  16. this.Styles = buttonLayers;
  17. this.Visible = true;
  18. }
  19. public TszButtonData[] ClearSameNameAndAppTypeButtons()
  20. {
  21. List<TszButtonData> list = new List<TszButtonData>();
  22. foreach (TszButtonData data in this.Buttons)
  23. {
  24. bool flag = false;
  25. foreach (TszButtonData data2 in list)
  26. {
  27. if (data == data2)
  28. {
  29. flag = true;
  30. break;
  31. }
  32. if (data.ButtonName == data2.ButtonName)
  33. {
  34. if ((data.AssemblyName == data2.AssemblyName) && (data.ClassName == data2.ClassName))
  35. {
  36. flag = true;
  37. break;
  38. }
  39. data.ButtonName = data.ButtonName + Guid.NewGuid();
  40. }
  41. }
  42. if (!flag)
  43. {
  44. list.Add(data);
  45. }
  46. }
  47. if (list.Count <= 0)
  48. {
  49. return null;
  50. }
  51. return list.ToArray();
  52. }
  53. public bool ExistsSameName()
  54. {
  55. foreach (TszButtonData data in this.Buttons)
  56. {
  57. foreach (TszButtonData data2 in this.Buttons)
  58. {
  59. if ((data != data2) && (data.ButtonName == data2.ButtonName))
  60. {
  61. return true;
  62. }
  63. }
  64. }
  65. return false;
  66. }
  67. public TszButtonData[] FilterButtons(string menuTab)
  68. {
  69. List<TszButtonData> list = new List<TszButtonData>();
  70. foreach (TszButtonData data in this.Buttons)
  71. {
  72. if (data.MenuTab.IndexOf(menuTab, StringComparison.Ordinal) > -1)
  73. {
  74. list.Add(data);
  75. }
  76. }
  77. if (list.Count <= 0)
  78. {
  79. return null;
  80. }
  81. return list.ToArray();
  82. }
  83. /// <summary>
  84. /// 验证Panel是否包含不可执行的命令
  85. /// </summary>
  86. /// <returns></returns>
  87. public bool ValidateData()
  88. {
  89. foreach (TszButtonData data in this.Buttons)
  90. {
  91. if (data.Styles == ButtonStyles.Separator ||
  92. (!string.IsNullOrEmpty(data.AssemblyName) && File.Exists(data.AssemblyName))) continue;
  93. MessageShow.Infomation(data.AssemblyName + " 不存在!");
  94. return false;
  95. }
  96. return true;
  97. }
  98. /// <summary>
  99. /// 有可见的Button
  100. /// </summary>
  101. /// <returns></returns>
  102. public bool HasVisibleItem()
  103. {
  104. var item = this.Buttons.FirstOrDefault(t => t.Visible);
  105. return item != null;
  106. }
  107. public List<TszButtonData> Buttons
  108. {
  109. get
  110. {
  111. if (this._mButtons == null)
  112. {
  113. this._mButtons = new List<TszButtonData>();
  114. }
  115. return this._mButtons;
  116. }
  117. }
  118. public bool Enabled { get; set; }
  119. public bool GroupFlag { get; set; }
  120. public string GroupImage { get; set; }
  121. public string PanelName { get; set; }
  122. public ButtonStyles Styles { get; set; }
  123. public string Title { get; set; }
  124. public RevitVer UseVersion { get; set; }
  125. public bool Visible { get; set; }
  126. }
  127. }