HelpMenu.cs 7.7 KB

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