using PaintDotNet.Actions; using PaintDotNet.Base.Functionodel; using PaintDotNet.Base.CommTool; using PaintDotNet.Data.Param; using PaintDotNet.Hardware; using System; using System.Collections.Generic; using System.Drawing; using System.Globalization; using System.IO; using System.Windows.Forms; using PaintDotNet.Base; namespace PaintDotNet.Menus { /// /// 帮助菜单 /// internal sealed class HelpMenu : PdnMenuItem { private PdnMenuItem menuHelpHelpTopics; private PdnMenuItem menuHelpHelpIndex; private ToolStripSeparator menuHelpSeparator1; //private PdnMenuItem menuHelpLanguage; //private PdnMenuItem menuHelpLanguageSentinel; //private ToolStripSeparator menuHelpSeparator2; private PdnMenuItem menuHelpAbout; private PdnMenuItem menuHelpSoftWareComposition; public HelpMenu(int menuId) { InitializeComponent(); this.MenuId = menuId; //在脚本中不显示 this.CanUseInScript = false; this.AutomaticScript = false; } protected override void OnAppWorkspaceChanged() { base.OnAppWorkspaceChanged(); } private void InitializeComponent() { this.menuHelpHelpTopics = new PdnMenuItem(ActionType.HelpTopics); this.menuHelpHelpIndex = new PdnMenuItem(ActionType.HelpIndex); this.menuHelpSeparator1 = new ToolStripSeparator(); //this.menuHelpLanguage = new PdnMenuItem(); //this.menuHelpLanguageSentinel = new PdnMenuItem(); //this.menuHelpSeparator2 = new ToolStripSeparator(); this.menuHelpAbout = new PdnMenuItem(ActionType.About); this.menuHelpSoftWareComposition = new PdnMenuItem(ActionType.SoftWareComposition); // // HelpMenu // this.DropDownItems.AddRange( new ToolStripItem[] { this.menuHelpHelpTopics, this.menuHelpHelpIndex, this.menuHelpSeparator1, //this.menuHelpLanguage, //this.menuHelpSeparator2, this.menuHelpAbout, this.menuHelpSoftWareComposition }); this.Name = "Menu.Help"; this.Text = PdnResources.GetString("Menu.Help.Text"); // // 目录 // this.menuHelpHelpTopics.Click += new EventHandler(this.MenuHelpHelpTopics_Click); // // 索引 // this.menuHelpHelpIndex.Click += new EventHandler(this.MenuHelpHelpIndex_Click); /*// // menuHelpLanguage // this.menuHelpLanguage.Name = "Language"; this.menuHelpLanguage.DropDownItems.AddRange( new ToolStripItem[] { this.menuHelpLanguageSentinel }); this.menuHelpLanguage.DropDownOpening += new EventHandler(MenuHelpLanguage_DropDownOpening); // // menuHelpLanguageSentinel // this.menuHelpLanguageSentinel.Text = "(sentinel)";*/ // // 关于 // this.menuHelpAbout.Click += new System.EventHandler(this.MenuHelpAbout_Click); // // 软件构成 // this.menuHelpSoftWareComposition.Click += new EventHandler(this.MenuHelpSoftWareComposition_Click); // // 加载菜单的文字和icon // this.LoadNames(this.Name); this.LoadIcons(); } /// /// 关于我们 /// /// /// private void MenuHelpAbout_Click(object sender, System.EventArgs e) { if (AppWorkspace.startScriptRecording) { AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List()); } using (AboutDialog af = new AboutDialog(AppWorkspace,1)) { af.ShowDialog(AppWorkspace); } } /// /// 软件构成 /// /// /// private void MenuHelpSoftWareComposition_Click(object sender, System.EventArgs e) { if (AppWorkspace.startScriptRecording) { AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List()); } using (AboutDialog af = new AboutDialog(AppWorkspace, 2)) { af.ShowDialog(AppWorkspace); } } /// /// 目录 /// /// /// private void MenuHelpHelpTopics_Click(object sender, System.EventArgs e) { if (AppWorkspace.startScriptRecording) { AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List()); } Utility.ShowHelp(AppWorkspace,1); } /// /// 索引 /// /// /// private void MenuHelpHelpIndex_Click(object sender, System.EventArgs e) { if (AppWorkspace.startScriptRecording) { AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List()); } Utility.ShowHelp(AppWorkspace,2); } private class MenuTitleAndLocale { public string title; public string locale; public MenuTitleAndLocale(string title, string locale) { this.title = title; this.locale = locale; } } private string GetCultureInfoName(CultureInfo ci) { CultureInfo en_US = new CultureInfo("en-US"); // For "English (United States)" we'd rather just display "English" if (ci.Equals(en_US)) { return GetCultureInfoName(ci.Parent); } else { return ci.NativeName; } } private void MenuHelpLanguage_DropDownOpening(object sender, EventArgs e) { //this.menuHelpLanguage.DropDownItems.Clear(); string[] locales = PdnResources.GetInstalledLocales(); MenuTitleAndLocale[] mtals = new MenuTitleAndLocale[locales.Length]; for (int i = 0; i < locales.Length; ++i) { string locale = locales[i]; CultureInfo ci = new CultureInfo(locale); mtals[i] = new MenuTitleAndLocale(ci.DisplayName, locale); } Array.Sort( mtals, delegate (MenuTitleAndLocale x, MenuTitleAndLocale y) { return string.Compare(x.title, y.title, StringComparison.InvariantCultureIgnoreCase); }); foreach (MenuTitleAndLocale mtal in mtals) { ToolStripMenuItem menuItem = new ToolStripMenuItem(); menuItem.Text = GetCultureInfoName(new CultureInfo(mtal.locale)); menuItem.Tag = mtal.locale; menuItem.Click += new EventHandler(LanguageMenuItem_Click); if (0 == string.Compare(mtal.locale, CultureInfo.CurrentUICulture.Name, StringComparison.InvariantCultureIgnoreCase)) { menuItem.Checked = true; } //this.menuHelpLanguage.DropDownItems.Add(menuItem); } } /// /// 原来切换语言的功能 /// /// /// private void LanguageMenuItem_Click(object sender, EventArgs e) { /** // Save off the old locale name in case they decide to cancel string oldLocaleName = PdnResources.Culture.Name; // Now, apply the chosen language so that the confirmation buttons show up in the right language ToolStripMenuItem miwt = (ToolStripMenuItem)sender; string newLocaleName = (string)miwt.Tag; PdnResources.SetNewCulture(newLocaleName); // Load the text and buttons in the new language Icon formIcon = Utility.ImageToIcon(PdnResources.GetImageResource("Icons.MenuHelpLanguageIcon.png").Reference); string title = PdnResources.GetString("ConfirmLanguageDialog.Title"); Image taskImage = null; string introText = PdnResources.GetString("ConfirmLanguageDialog.IntroText"); Image restartImage = PdnResources.GetImageResource("Icons.RightArrowBlue.png").Reference; string explanationTextFormat = PdnResources.GetString("ConfirmLanguageDialog.RestartTB.ExplanationText.Format"); CultureInfo newCI = new CultureInfo(newLocaleName); // We prefer to show "English (United States)" as just "English" CultureInfo en_US = new CultureInfo("en-US"); if (newCI.Equals(en_US)) { newCI = newCI.Parent; } string languageName = newCI.NativeName; string explanationText = string.Format(explanationTextFormat, languageName); TaskButton restartTB = new TaskButton( restartImage, PdnResources.GetString("ConfirmLanguageDialog.RestartTB.ActionText"), explanationText); Image cancelImage = PdnResources.GetImageResource("Icons.CancelIcon.png").Reference; TaskButton cancelTB = new TaskButton( cancelImage, PdnResources.GetString("ConfirmLanguageDialog.CancelTB.ActionText"), PdnResources.GetString("ConfirmLanguageDialog.CancelTB.ExplanationText")); int width96dpi = (TaskDialog.DefaultPixelWidth96Dpi * 5) / 4; TaskButton clickedTB = TaskDialog.Show( AppWorkspace, formIcon, title, taskImage, true, introText, new TaskButton[] { restartTB, cancelTB }, restartTB, cancelTB, width96dpi, false, 0, out bool unuse); if (clickedTB == restartTB) { // Next, apply restart logic CloseAllWorkspacesAction cawa = new CloseAllWorkspacesAction(); cawa.PerformAction(AppWorkspace); if (!cawa.Cancelled) { SystemLayer.Shell.RestartApplication(); Startup.CloseApplication(); } } else { // Revert to the old language PdnResources.SetNewCulture(oldLocaleName); } **/ } } }