ScreenMenu.cs 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. using SAGY.RevitMenu;
  2. using SAGY.RevitMenu.Configuration;
  3. namespace TSZ.RevitMenu
  4. {
  5. using Autodesk.Revit.UI;
  6. using System;
  7. using System.CodeDom.Compiler;
  8. using System.ComponentModel;
  9. using System.Diagnostics;
  10. using System.Drawing;
  11. using System.IO;
  12. using System.Windows;
  13. using System.Windows.Controls;
  14. using System.Windows.Forms;
  15. using System.Windows.Forms.Integration;
  16. using System.Windows.Markup;
  17. using TSZ.RevitBaseDll.Extends;
  18. using TSZ.RevitMenu.Configuration;
  19. public class ScreenMenu : Page, IDockablePaneProvider, IComponentConnector
  20. {
  21. private bool _contentLoaded;
  22. private TszButtonData _curCmd;
  23. private ExternalCommandData _extCmdData;
  24. private ExternalEvent _externalEvent;
  25. private RvtCmdExternalEventHandler _handler;
  26. private int m_bottom = 1;
  27. private int m_left = 1;
  28. private DockPosition m_position = DockPosition.Bottom;
  29. private int m_right = 1;
  30. private Guid m_targetGuid;
  31. private int m_top = 1;
  32. internal OutlookBar obMenu;
  33. public ScreenMenu()
  34. {
  35. this.InitializeComponent();
  36. this._handler = new RvtCmdExternalEventHandler(this._extCmdData);
  37. this._externalEvent = ExternalEvent.Create(this._handler);
  38. }
  39. [GeneratedCode("PresentationBuildTasks", "4.0.0.0"), DebuggerNonUserCode]
  40. internal Delegate _CreateDelegate(System.Type delegateType, string handler)
  41. {
  42. return Delegate.CreateDelegate(delegateType, this, handler);
  43. }
  44. private void Host_SizeChanged(object sender, SizeChangedEventArgs e)
  45. {
  46. this.obMenu.UpdateSize(e.NewSize.Width, e.NewSize.Height);
  47. }
  48. [GeneratedCode("PresentationBuildTasks", "4.0.0.0"), DebuggerNonUserCode]
  49. public void InitializeComponent()
  50. {
  51. if (!this._contentLoaded)
  52. {
  53. this._contentLoaded = true;
  54. Uri resourceLocator = new Uri("/TSZ.RevitMenu;component/screenmenu.xaml", UriKind.Relative);
  55. System.Windows.Application.LoadComponent(this, resourceLocator);
  56. }
  57. }
  58. private void Page_FocusableChanged(object sender, DependencyPropertyChangedEventArgs e)
  59. {
  60. this.UpdateSize();
  61. }
  62. public void PanelEvent(object sender, EventArgs e)
  63. {
  64. try
  65. {
  66. if (this._extCmdData != null)
  67. {
  68. System.Windows.Forms.Control control = (System.Windows.Forms.Control) sender;
  69. this._curCmd = control.Tag as TszButtonData;
  70. if (this._curCmd != null)
  71. {
  72. this._extCmdData.Application.ActiveViewFocus();
  73. this._handler.CurBtnCmd = this._curCmd;
  74. this._externalEvent.Raise();
  75. this.UpdateSize();
  76. }
  77. }
  78. }
  79. catch (Exception exception)
  80. {
  81. MessageShow.Show(exception, false, "");
  82. }
  83. }
  84. private void ScreenMenu_OnLoaded(object sender, RoutedEventArgs e)
  85. {
  86. if (this.obMenu.Controls.Count <= 0)
  87. {
  88. try
  89. {
  90. bool blnRevit = false;
  91. foreach (TszTabData data in MenuConfig.GetConfigTabs(Globals.UiApp.ControlledApplication.VersionNumber, out blnRevit))
  92. {
  93. if (data.TabText != "MTSMENU")
  94. {
  95. CmdPanel panel = new CmdPanel();
  96. this.obMenu.AddTabButton(data.TabName, panel);
  97. foreach (TszPanelData data2 in data.Panels)
  98. {
  99. foreach (TszButtonData data3 in data2.Buttons)
  100. {
  101. string path = data3.ImageName + "16.png";
  102. if (File.Exists(path))
  103. {
  104. string caption = data3.ButtonText.Replace(" ", "").Replace("\r\n", "").Replace("\n", "");
  105. panel.AddCmdButton(caption, System.Drawing.Image.FromFile(path), data3, new EventHandler(this.PanelEvent));
  106. }
  107. }
  108. }
  109. }
  110. }
  111. this.obMenu.SelectTabButton(0);
  112. }
  113. catch (Exception exception)
  114. {
  115. MessageShow.Show(exception, false, "");
  116. }
  117. }
  118. }
  119. public void SetCmdData(ExternalCommandData cmdData)
  120. {
  121. this.ExtCmdData = cmdData;
  122. if (this._handler != null)
  123. {
  124. this._handler.ExtCmdData = cmdData;
  125. }
  126. }
  127. public void SetInitialDockingParameters(int left, int right, int top, int bottom, DockPosition position, Guid targetGuid)
  128. {
  129. this.m_position = position;
  130. this.m_left = left;
  131. this.m_right = right;
  132. this.m_top = top;
  133. this.m_bottom = bottom;
  134. this.m_targetGuid = targetGuid;
  135. }
  136. public void SetupDockablePane(DockablePaneProviderData data)
  137. {
  138. DockablePaneId id;
  139. data.FrameworkElement = this;
  140. data.InitialState = new DockablePaneState();
  141. data.InitialState.DockPosition = this.m_position;
  142. if (this.m_targetGuid == Guid.Empty)
  143. {
  144. id = null;
  145. }
  146. else
  147. {
  148. id = new DockablePaneId(this.m_targetGuid);
  149. }
  150. if (this.m_position == DockPosition.Tabbed)
  151. {
  152. data.InitialState.TabBehind = id;
  153. }
  154. if (this.m_position == DockPosition.Floating)
  155. {
  156. data.InitialState.SetFloatingRectangle(new Autodesk.Revit.UI.Rectangle(this.m_left, this.m_top, this.m_right, this.m_bottom));
  157. }
  158. }
  159. [GeneratedCode("PresentationBuildTasks", "4.0.0.0"), EditorBrowsable(EditorBrowsableState.Never), DebuggerNonUserCode]
  160. void IComponentConnector.Connect(int connectionId, object target)
  161. {
  162. switch (connectionId)
  163. {
  164. case 1:
  165. ((ScreenMenu) target).Loaded += new RoutedEventHandler(this.ScreenMenu_OnLoaded);
  166. ((ScreenMenu) target).SizeChanged += new SizeChangedEventHandler(this.Host_SizeChanged);
  167. ((ScreenMenu) target).FocusableChanged += new DependencyPropertyChangedEventHandler(this.Page_FocusableChanged);
  168. return;
  169. case 2:
  170. ((WindowsFormsHost) target).SizeChanged += new SizeChangedEventHandler(this.Host_SizeChanged);
  171. ((WindowsFormsHost) target).FocusableChanged += new DependencyPropertyChangedEventHandler(this.Page_FocusableChanged);
  172. return;
  173. case 3:
  174. ((Grid) target).SizeChanged += new SizeChangedEventHandler(this.Host_SizeChanged);
  175. return;
  176. case 4:
  177. ((WindowsFormsHost) target).SizeChanged += new SizeChangedEventHandler(this.Host_SizeChanged);
  178. return;
  179. case 5:
  180. this.obMenu = (OutlookBar) target;
  181. return;
  182. }
  183. this._contentLoaded = true;
  184. }
  185. private void UpdateSize()
  186. {
  187. this.obMenu.UpdateSize(base.RenderSize.Width, base.RenderSize.Height);
  188. }
  189. public ExternalCommandData ExtCmdData
  190. {
  191. set
  192. {
  193. this._extCmdData = value;
  194. }
  195. }
  196. }
  197. }