MeasureMenu.cs 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. using Resources;
  2. using SmartCoalApplication.Core;
  3. using System;
  4. using System.Globalization;
  5. using System.Windows.Forms;
  6. namespace SmartCoalApplication.Menus
  7. {
  8. /// <summary>
  9. /// 自动量测
  10. /// </summary>
  11. internal sealed class MeasureMenu : PdnMenuItem
  12. {
  13. private PdnMenuItem menuAutoMeasure;
  14. public MeasureMenu(int menuId)
  15. {
  16. InitializeComponent();
  17. this.MenuId = menuId;
  18. //在脚本中不显示
  19. this.CanUseInScript = false;
  20. this.AutomaticScript = false;
  21. }
  22. protected override void OnAppWorkspaceChanged()
  23. {
  24. base.OnAppWorkspaceChanged();
  25. }
  26. private void InitializeComponent()
  27. {
  28. this.menuAutoMeasure = new PdnMenuItem(ActionType.AutoMeasure);
  29. //
  30. // MeasureMenu
  31. //
  32. this.DropDownItems.AddRange(
  33. new ToolStripItem[]
  34. {
  35. this.menuAutoMeasure
  36. });
  37. this.Name = "Menu.Measure";
  38. this.Text = "自动量测";
  39. //
  40. // 自动量测
  41. //
  42. this.menuAutoMeasure.Click += new EventHandler(this.MenuAutoMeasure_Click);
  43. this.menuAutoMeasure.Text = "自动量测";
  44. this.menuAutoMeasure.Image = PdnResources.GetImageResource("Icons.AutoMeasure.png").Reference;
  45. ////
  46. //// 加载菜单的文字和icon
  47. ////
  48. //this.LoadNames(this.Name);
  49. this.namesLoaded = true;
  50. this.LoadIcons();
  51. }
  52. /// <summary>
  53. /// 自动量测
  54. /// </summary>
  55. /// <param name="sender"></param>
  56. /// <param name="e"></param>
  57. private void MenuAutoMeasure_Click(object sender, System.EventArgs e)
  58. {
  59. using (AutomaticMeasurement.AutomaticMeasurement af = new AutomaticMeasurement.AutomaticMeasurement(AppWorkspace))
  60. {
  61. af.StartPosition = FormStartPosition.CenterScreen;
  62. af.ShowDialog(AppWorkspace);
  63. }
  64. }
  65. private class MenuTitleAndLocale
  66. {
  67. public string title;
  68. public string locale;
  69. public MenuTitleAndLocale(string title, string locale)
  70. {
  71. this.title = title;
  72. this.locale = locale;
  73. }
  74. }
  75. private string GetCultureInfoName(CultureInfo ci)
  76. {
  77. CultureInfo en_US = new CultureInfo("en-US");
  78. // For "English (United States)" we'd rather just display "English"
  79. if (ci.Equals(en_US))
  80. {
  81. return GetCultureInfoName(ci.Parent);
  82. }
  83. else
  84. {
  85. return ci.NativeName;
  86. }
  87. }
  88. private void MenuHelpLanguage_DropDownOpening(object sender, EventArgs e)
  89. {
  90. //this.menuHelpLanguage.DropDownItems.Clear();
  91. string[] locales = PdnResources.GetInstalledLocales();
  92. MenuTitleAndLocale[] mtals = new MenuTitleAndLocale[locales.Length];
  93. for (int i = 0; i < locales.Length; ++i)
  94. {
  95. string locale = locales[i];
  96. CultureInfo ci = new CultureInfo(locale);
  97. mtals[i] = new MenuTitleAndLocale(ci.DisplayName, locale);
  98. }
  99. Array.Sort(
  100. mtals,
  101. delegate (MenuTitleAndLocale x, MenuTitleAndLocale y)
  102. {
  103. return string.Compare(x.title, y.title, StringComparison.InvariantCultureIgnoreCase);
  104. });
  105. foreach (MenuTitleAndLocale mtal in mtals)
  106. {
  107. ToolStripMenuItem menuItem = new ToolStripMenuItem();
  108. menuItem.Text = GetCultureInfoName(new CultureInfo(mtal.locale));
  109. menuItem.Tag = mtal.locale;
  110. menuItem.Click += new EventHandler(LanguageMenuItem_Click);
  111. if (0 == string.Compare(mtal.locale, CultureInfo.CurrentUICulture.Name, StringComparison.InvariantCultureIgnoreCase))
  112. {
  113. menuItem.Checked = true;
  114. }
  115. //this.menuHelpLanguage.DropDownItems.Add(menuItem);
  116. }
  117. }
  118. /// <summary>
  119. /// 原来切换语言的功能
  120. /// </summary>
  121. /// <param name="sender"></param>
  122. /// <param name="e"></param>
  123. private void LanguageMenuItem_Click(object sender, EventArgs e)
  124. {
  125. /**
  126. // Save off the old locale name in case they decide to cancel
  127. string oldLocaleName = PdnResources.Culture.Name;
  128. // Now, apply the chosen language so that the confirmation buttons show up in the right language
  129. ToolStripMenuItem miwt = (ToolStripMenuItem)sender;
  130. string newLocaleName = (string)miwt.Tag;
  131. PdnResources.SetNewCulture(newLocaleName);
  132. // Load the text and buttons in the new language
  133. Icon formIcon = Utility.ImageToIcon(PdnResources.GetImageResource("Icons.MenuHelpLanguageIcon.png").Reference);
  134. string title = PdnResources.GetString("ConfirmLanguageDialog.Title");
  135. Image taskImage = null;
  136. string introText = PdnResources.GetString("ConfirmLanguageDialog.IntroText");
  137. Image restartImage = PdnResources.GetImageResource("Icons.RightArrowBlue.png").Reference;
  138. string explanationTextFormat = PdnResources.GetString("ConfirmLanguageDialog.RestartTB.ExplanationText.Format");
  139. CultureInfo newCI = new CultureInfo(newLocaleName);
  140. // We prefer to show "English (United States)" as just "English"
  141. CultureInfo en_US = new CultureInfo("en-US");
  142. if (newCI.Equals(en_US))
  143. {
  144. newCI = newCI.Parent;
  145. }
  146. string languageName = newCI.NativeName;
  147. string explanationText = string.Format(explanationTextFormat, languageName);
  148. TaskButton restartTB = new TaskButton(
  149. restartImage,
  150. PdnResources.GetString("ConfirmLanguageDialog.RestartTB.ActionText"),
  151. explanationText);
  152. Image cancelImage = PdnResources.GetImageResource("Icons.CancelIcon.png").Reference;
  153. TaskButton cancelTB = new TaskButton(
  154. cancelImage,
  155. PdnResources.GetString("ConfirmLanguageDialog.CancelTB.ActionText"),
  156. PdnResources.GetString("ConfirmLanguageDialog.CancelTB.ExplanationText"));
  157. int width96dpi = (TaskDialog.DefaultPixelWidth96Dpi * 5) / 4;
  158. TaskButton clickedTB = TaskDialog.Show(
  159. AppWorkspace,
  160. formIcon,
  161. title,
  162. taskImage,
  163. true,
  164. introText,
  165. new TaskButton[] { restartTB, cancelTB },
  166. restartTB,
  167. cancelTB,
  168. width96dpi,
  169. false,
  170. 0,
  171. out bool unuse);
  172. if (clickedTB == restartTB)
  173. {
  174. // Next, apply restart logic
  175. CloseAllWorkspacesAction cawa = new CloseAllWorkspacesAction();
  176. cawa.PerformAction(AppWorkspace);
  177. if (!cawa.Cancelled)
  178. {
  179. SystemLayer.Shell.RestartApplication();
  180. Startup.CloseApplication();
  181. }
  182. }
  183. else
  184. {
  185. // Revert to the old language
  186. PdnResources.SetNewCulture(oldLocaleName);
  187. }
  188. **/
  189. }
  190. }
  191. }