using FastReport.Design.Toolbars; using FastReport.Design.ToolWindows; using FastReport.Forms; using FastReport.Utils; using System; using System.ComponentModel; using System.Windows.Forms; namespace FastReport.Design.StandardDesigner { /// /// Represents the designer's main menu. /// /// /// To get this menu, use the following code: /// /// Designer designer; /// DesignerMenu menu = designer.Plugins.FindType("DesignerMenu") as DesignerMenu; /// /// [ToolboxItem(false)] public class DesignerMenu : MenuStrip, IDesignerPlugin { #region Fields private Designer FDesigner; /// /// The "File" menu. /// public ToolStripMenuItem miFile; /// /// The "File|New..." menu. /// public ToolStripMenuItem miFileNew; /// /// The "File|Open..." menu. /// public ToolStripMenuItem miFileOpen; /// /// The "File|Open page..." menu. /// public ToolStripMenuItem miFileOpenPage; /// /// The "File|Open via Cloud..." menu. /// public ToolStripMenuItem miFileOpenViaCloud; /// /// The "File|Recent Files" menu. /// public ToolStripMenuItem miFileRecentFiles; /// /// The "File|Close" menu. /// public ToolStripMenuItem miFileClose; /// /// The "File|Save" menu. /// public ToolStripMenuItem miFileSave; /// /// The "File|Save as..." menu. /// public ToolStripMenuItem miFileSaveAs; /// /// The "File|Save to Cloud..." menu. /// public ToolStripMenuItem miFileSaveToCloud; /// /// The "File|Save With Random Data..." menu. /// public ToolStripMenuItem miFileSaveWithRandomData; /// /// The "File|Save All" menu. /// public ToolStripMenuItem miFileSaveAll; /// /// The "File|Page Setup..." menu. /// public ToolStripMenuItem miFilePageSetup; /// /// The "File|Printer Setup..." menu. /// public ToolStripMenuItem miFilePrinterSetup; /// /// The "File|Preview..." menu. /// public ToolStripMenuItem miFilePreview; /// /// The "File|Web preview..." menu. /// public ToolStripMenuItem miFileCloudPreview; /// /// The "File|Select Language" menu. /// public ToolStripMenuItem miFileSelectLanguage; /// /// The "File|Exit" menu. /// public ToolStripMenuItem miFileExit; /// /// The "Edit" menu. /// public ToolStripMenuItem miEdit; /// /// The "Edit|Undo" menu. /// public ToolStripMenuItem miEditUndo; /// /// The "Edit|Redo" menu. /// public ToolStripMenuItem miEditRedo; /// /// The "Edit|Cut" menu. /// public ToolStripMenuItem miEditCut; /// /// The "Edit|Copy" menu. /// public ToolStripMenuItem miEditCopy; /// /// The "Edit|Paste" menu. /// public ToolStripMenuItem miEditPaste; /// /// The "Edit|Delete" menu. /// public ToolStripMenuItem miEditDelete; /// /// The "Edit|New Page" menu. /// public ToolStripMenuItem miEditNewPage; /// /// The "Edit|Delete Page" menu. /// public ToolStripMenuItem miEditDeletePage; /// /// The "Edit|Copy Page" menu. /// public ToolStripMenuItem miEditCopyPage; /// /// The "Edit|Select All" menu. /// public ToolStripMenuItem miEditSelectAll; /// /// The "Edit|Group" menu. /// public ToolStripMenuItem miEditGroup; /// /// The "Edit|Ungroup" menu. /// public ToolStripMenuItem miEditUngroup; /// /// The "Edit|Find..." menu. /// public ToolStripMenuItem miEditFind; /// /// The "Edit|Replace..." menu. /// public ToolStripMenuItem miEditReplace; /// /// The "View" menu. /// public ToolStripMenuItem miView; /// /// The "View|Toolbars" menu. /// public ToolStripMenuItem miViewToolbars; /// /// The "View|Start Page" menu. /// public ToolStripMenuItem miViewStartPage; /// /// The "View|Messages" menu. /// public ToolStripMenuItem miViewMessages; /// /// The "View|Options..." menu. /// public ToolStripMenuItem miViewOptions; /// /// The "Insert" menu. /// public ToolStripMenuItem miInsert; /// /// The "Report" menu. /// public ToolStripMenuItem miReport; /// /// The "Report|Validation" menu. /// public ToolStripMenuItem miReportValidation; /// /// The "Report|Options..." menu. /// public ToolStripMenuItem miReportOptions; /// /// The "Data" menu. /// public ToolStripMenuItem miData; /// /// The "Data|Choose Report Data..." menu. /// public ToolStripMenuItem miDataChoose; /// /// The "Data|Add Data Source..." menu. /// public ToolStripMenuItem miDataAdd; /// /// The "Data|Show Data Dictionary" menu. /// public ToolStripMenuItem miDataShowData; /// /// The "Window" menu. /// public ToolStripMenuItem miWindow; /// /// The "Window|Close All" menu. /// public ToolStripMenuItem miWindowCloseAll; /// /// The "Help" menu. /// public ToolStripMenuItem miHelp; /// /// The "Help|Help Contents..." menu. /// public ToolStripMenuItem miHelpContents; /// /// The "Help|About..." menu. /// public ToolStripMenuItem miHelpAbout; /// /// The "Help|Account..." menu. /// public ToolStripMenuItem miHelpAccount; #endregion #region Properties internal Designer Designer { get { return FDesigner; } } /// public string PluginName { get { return Name; } } #endregion #region Private Methods private void UpdateControls() { miFileNew.Enabled = Designer.cmdNew.Enabled; miFileOpenPage.Enabled = Designer.cmdOpenPage.Enabled; miFileOpen.Enabled = Designer.cmdOpen.Enabled; miFileOpenViaCloud.Enabled = Designer.cmdOpenViaCloud.Enabled; miFileClose.Enabled = Designer.cmdClose.Enabled; miFileClose.Visible = Designer.MdiMode; miFileSave.Enabled = Designer.cmdSave.Enabled; miFileSaveAs.Enabled = Designer.cmdSaveAs.Enabled; miFileSaveToCloud.Enabled = Designer.cmdSaveToCloudCommand.Enabled; miFileSaveWithRandomData.Enabled = Designer.cmdSaveWithRandomData.Enabled; miFileSaveAll.Visible = Designer.MdiMode; miFileSaveAll.Enabled = Designer.cmdSaveAll.Enabled; miFilePageSetup.Enabled = Designer.cmdPageSetup.Enabled; miFilePrinterSetup.Enabled = Designer.cmdPrinterSetup.Enabled; miFilePreview.Enabled = Designer.cmdPreview.Enabled; miFileCloudPreview.Enabled = Designer.cmdPreviewCloud.Enabled; miEditUndo.Enabled = Designer.cmdUndo.Enabled; miEditRedo.Enabled = Designer.cmdRedo.Enabled; miEditCut.Enabled = Designer.cmdCut.Enabled; miEditCopy.Enabled = Designer.cmdCopy.Enabled; miEditDelete.Enabled = Designer.cmdDelete.Enabled; miEditNewPage.Enabled = Designer.cmdNewPage.Enabled; miEditCopyPage.Enabled = Designer.cmdCopyPage.Enabled; miEditDeletePage.Enabled = Designer.cmdDeletePage.Enabled; miEditSelectAll.Enabled = Designer.cmdSelectAll.Enabled; miEditGroup.Enabled = Designer.cmdGroup.Enabled; miEditUngroup.Enabled = Designer.cmdUngroup.Enabled; miEditFind.Enabled = Designer.cmdFind.Enabled; miEditReplace.Enabled = Designer.cmdReplace.Enabled; miInsert.Visible = Designer.cmdInsert.Enabled; miDataChoose.Enabled = Designer.cmdChooseData.Enabled; miDataAdd.Enabled = Designer.cmdAddData.Enabled; miReportValidation.Enabled = Designer.cmdReportValidation.Enabled; miReportOptions.Enabled = Designer.cmdReportSettings.Enabled; miViewStartPage.Visible = Designer.MdiMode; miWindow.Visible = Designer.MdiMode; miHelpContents.Enabled = Designer.cmdHelpContents.Enabled; Refresh(); } private void InsertMenuCreateMenus(ObjectInfo rootItem, ToolStripItemCollection rootMenu) { foreach (ObjectInfo item in rootItem.Items) { ToolStripMenuItem menuItem = new ToolStripMenuItem(); menuItem.Text = Res.TryGet(item.Text); menuItem.Tag = item; rootMenu.Add(menuItem); if (item.Items.Count > 0) { // it's a category InsertMenuCreateMenus(item, menuItem.DropDownItems); } else { menuItem.Image = this.GetImage(item.ImageIndex); menuItem.Click += insertMenu_Click; } } } private void CreateInsertMenu() { if (Designer.ActiveReportTab != null && Designer.ActiveReportTab.ActivePage != null) { ObjectInfo pageItem = new ObjectInfo(); ObjectInfo info = RegisteredObjects.FindObject(Designer.ActiveReportTab.ActivePage); bool contain; if (info != null) { foreach (ObjectInfo item in info.Items) { contain = true; foreach (ObjectInfo obj_item in pageItem.Items) { if (item.Text == obj_item.Text) { contain = false; break; } } if (contain) { pageItem.Items.Add(item); } } InsertMenuCreateMenus(pageItem, miInsert.DropDownItems); } } } private void miFile_DropDownOpening(object sender, EventArgs e) { // recent items miFileRecentFiles.DropDownItems.Clear(); if (Designer.cmdRecentFiles.Enabled && Designer.RecentFiles.Count > 0) { foreach (string s in Designer.RecentFiles) { ToolStripMenuItem menuItem = new ToolStripMenuItem(); menuItem.Text = s; if (Designer.cmdRecentFiles.IsCloudFile(s)) menuItem.Image = Designer.GetImage(259); menuItem.Click += recentFile_Click; miFileRecentFiles.DropDownItems.Insert(0, menuItem); } } miFileRecentFiles.Enabled = miFileRecentFiles.DropDownItems.Count > 0; } private void miEdit_DropDownOpening(object sender, EventArgs e) { miEditPaste.Enabled = Designer.cmdPaste.Enabled; } private void miInsert_DropDownOpening(object sender, EventArgs e) { miInsert.DropDownItems.Clear(); CreateInsertMenu(); } private void miDataShowDataSources_Click(object sender, EventArgs e) { ToolWindowBase window = Designer.Plugins.Find("DictionaryWindow") as ToolWindowBase; window.Show(); } private void miView_DropDownOpening(object sender, EventArgs e) { // delete list of toolbars miViewToolbars.DropDownItems.Clear(); // create list of toolbars foreach (IDesignerPlugin plugin in Designer.Plugins) { if (plugin is DesignerToolbarBase toolbar) { var menuItem = new ToolStripMenuItem(); menuItem.Text = toolbar.Text; menuItem.Tag = plugin; menuItem.Checked = toolbar.Visible; menuItem.Click += toolbar_Click; miViewToolbars.DropDownItems.Add(menuItem); } } miViewToolbars.Visible = miViewToolbars.DropDownItems.Count != 0; miViewMessages.Checked = Designer.MessageWindowEnabled; } private void miWindow_DropDownOpening(object sender, EventArgs e) { // delete list of windows while (miWindow.DropDownItems.Count > 0 && !(miWindow.DropDownItems[0] is ToolStripSeparator)) miWindow.DropDownItems[0].Dispose(); // create list of windows int i = 0; foreach (DocumentWindow c in Designer.Documents) { ToolStripMenuItem menuItem = new ToolStripMenuItem(); menuItem.Text = (i + 1).ToString() + " " + c.Text; menuItem.Tag = c; menuItem.Checked = c == Designer.ActiveReportTab; menuItem.Click += window_Click; miWindow.DropDownItems.Insert(i, menuItem); i++; } } private void miViewMessages_Click(object sender, EventArgs e) { Designer.MessageWindowEnabled = miViewMessages.Checked; } private void toolbar_Click(object sender, EventArgs e) { var toolbar = (sender as ToolStripMenuItem).Tag as DesignerToolbarBase; toolbar.Visible = !toolbar.Visible; (Designer as DesignerControl).LayoutToolbars(); } private void recentFile_Click(object sender, EventArgs e) { Designer.cmdRecentFiles.LoadFile((sender as ToolStripMenuItem).Text); } private void window_Click(object sender, EventArgs e) { DocumentWindow window = (sender as ToolStripMenuItem).Tag as DocumentWindow; window.Activate(); } private void insertMenu_Click(object sender, EventArgs e) { ObjectInfo info = (sender as ToolStripMenuItem).Tag as ObjectInfo; Designer.InsertObject(info, InsertFrom.NewObject); } #endregion #region IDesignerPlugin /// public void SaveState() { } /// public void RestoreState() { } /// public void SelectionChanged() { UpdateControls(); } /// public void UpdateContent() { UpdateControls(); } /// public void Lock() { } /// public void Unlock() { UpdateContent(); } /// public void Localize() { MyRes res = new MyRes("Designer,Menu"); miFile.Text = res.Get("File"); miFileNew.Text = res.Get("File,New"); miFileOpen.Text = res.Get("File,Open"); miFileOpenPage.Text = res.Get("File,OpenPage"); miFileOpenViaCloud.Text = res.Get("File,OpenViaCloud"); miFileRecentFiles.Text = res.Get("File,RecentFiles"); miFileClose.Text = res.Get("File,Close"); miFileSave.Text = res.Get("File,Save"); miFileSaveAs.Text = res.Get("File,SaveAs"); miFileSaveWithRandomData.Text = res.Get("File,SaveWithRandomData"); miFileSaveAll.Text = res.Get("File,SaveAll"); miFileSaveToCloud.Text = res.Get("File,SaveToCloud"); miFilePageSetup.Text = res.Get("File,PageSetup"); miFilePrinterSetup.Text = res.Get("File,PrinterSetup"); miFilePreview.Text = res.Get("File,Preview"); miFileCloudPreview.Text = res.Get("File,PreviewCloud"); miFileSelectLanguage.Text = res.Get("File,SelectLanguage"); miFileExit.Text = res.Get("File,Exit"); miEdit.Text = res.Get("Edit"); miEditUndo.Text = res.Get("Edit,Undo"); miEditRedo.Text = res.Get("Edit,Redo"); miEditCut.Text = res.Get("Edit,Cut"); miEditCopy.Text = res.Get("Edit,Copy"); miEditPaste.Text = res.Get("Edit,Paste"); miEditDelete.Text = res.Get("Edit,Delete"); miEditNewPage.Text = res.Get("Edit,NewPage"); miEditCopyPage.Text = res.Get("Edit,CopyPage"); miEditDeletePage.Text = res.Get("Edit,DeletePage"); miEditSelectAll.Text = res.Get("Edit,SelectAll"); miEditGroup.Text = res.Get("Edit,Group"); miEditUngroup.Text = res.Get("Edit,Ungroup"); miEditFind.Text = res.Get("Edit,Find"); miEditReplace.Text = res.Get("Edit,Replace"); miInsert.Text = res.Get("Insert"); miReport.Text = res.Get("Report"); miReportValidation.Text = res.Get("Report,Validate"); miReportOptions.Text = res.Get("Report,Options"); miData.Text = res.Get("Data"); miDataChoose.Text = res.Get("Data,Choose"); miDataAdd.Text = res.Get("Data,Add"); miDataShowData.Text = res.Get("Data,ShowData"); miView.Text = res.Get("View"); miViewToolbars.Text = res.Get("View,Toolbars"); miViewStartPage.Text = res.Get("View,StartPage"); miViewMessages.Text = Res.Get("Designer,ToolWindow,Messages"); miViewOptions.Text = res.Get("View,Options"); miWindow.Text = res.Get("Window"); miWindowCloseAll.Text = res.Get("Window,CloseAll"); miHelp.Text = res.Get("Help"); miHelpContents.Text = res.Get("Help,Contents"); miHelpAbout.Text = res.Get("Help,About"); miHelpAccount.Text = res.Get("Help,Account"); } /// public virtual DesignerOptionsPage GetOptionsPage() { return null; } /// public void UpdateUIStyle() { Renderer = UIStyleUtils.GetToolStripRenderer(Designer.UIStyle); } /// public void UpdateDpiDependencies() { ImageList = Designer.GetImages(); Height = Designer.LogicalToDevice(24); } #endregion #region Public Methods /// /// Creates a new menu item. /// /// New menu item. public ToolStripMenuItem CreateMenuItem() { return CreateMenuItem(null); } /// /// Creates a new menu item. /// /// Click handler. /// New menu item. public ToolStripMenuItem CreateMenuItem(EventHandler click) { return CreateMenuItem(-1, "", click); } /// /// Creates a new menu item. /// /// Item's image index. /// Click handler. /// New menu item. public ToolStripMenuItem CreateMenuItem(int imageIndex, EventHandler click) { return CreateMenuItem(imageIndex, "", click); } /// /// Creates a new menu item. /// /// Item's text. /// Click handler. /// New menu item. public ToolStripMenuItem CreateMenuItem(string text, EventHandler click) { return CreateMenuItem(-1, text, click); } /// /// Creates a new menu item. /// /// Item's image index. /// Item's text. /// Click handler. /// New menu item. public ToolStripMenuItem CreateMenuItem(int imageIndex, string text, EventHandler click) { ToolStripMenuItem item = new ToolStripMenuItem(); #if !(WPF || AVALONIA) item.Image = this.GetImage(imageIndex); #else item.ImageIndex = imageIndex; #endif item.Text = text; if (click != null) { item.Click += click; } return item; } #endregion /// /// Initializes a new instance of the class with default settings. /// /// The report designer. public DesignerMenu(Designer designer) : base() { FDesigner = designer; Name = "MainMenu"; Font = DrawUtils.DefaultFont; GripStyle = ToolStripGripStyle.Hidden; Dock = DockStyle.Top; // create menu items miFile = CreateMenuItem(); miFileNew = CreateMenuItem(Designer.cmdNew.Invoke); miFileOpen = CreateMenuItem(1, Designer.cmdOpen.Invoke); miFileOpenPage = CreateMenuItem(Designer.cmdOpenPage.Invoke); miFileOpenViaCloud = CreateMenuItem(261, Designer.cmdOpenViaCloud.Invoke); miFileRecentFiles = CreateMenuItem(); miFileClose = CreateMenuItem(Designer.cmdClose.Invoke); miFileSave = CreateMenuItem(2, Designer.cmdSave.Invoke); miFileSaveAs = CreateMenuItem(Designer.cmdSaveAs.Invoke); miFileSaveWithRandomData = CreateMenuItem(Designer.cmdSaveWithRandomData.Invoke); miFileSaveAll = CreateMenuItem(178, Designer.cmdSaveAll.Invoke); miFileSaveToCloud = CreateMenuItem(262, Designer.cmdSaveToCloudCommand.Invoke); miFilePageSetup = CreateMenuItem(Designer.cmdPageSetup.Invoke); miFilePrinterSetup = CreateMenuItem(Designer.cmdPrinterSetup.Invoke); miFilePreview = CreateMenuItem(3, Designer.cmdPreview.Invoke); miFileCloudPreview = CreateMenuItem(263, Designer.cmdPreviewCloud.Invoke); miFileSelectLanguage = CreateMenuItem(Designer.cmdSelectLanguage.Invoke); miFileExit = CreateMenuItem(Designer.Exit); miEdit = CreateMenuItem(); miEditUndo = CreateMenuItem(8, Designer.cmdUndo.Invoke); miEditRedo = CreateMenuItem(9, Designer.cmdRedo.Invoke); miEditCut = CreateMenuItem(5, Designer.cmdCut.Invoke); miEditCopy = CreateMenuItem(6, Designer.cmdCopy.Invoke); miEditPaste = CreateMenuItem(7, Designer.cmdPaste.Invoke); miEditDelete = CreateMenuItem(51, Designer.cmdDelete.Invoke); miEditNewPage = CreateMenuItem(10, Designer.cmdNewPage.Invoke); miEditCopyPage = CreateMenuItem(Designer.cmdCopyPage.Invoke); miEditDeletePage = CreateMenuItem(12, Designer.cmdDeletePage.Invoke); miEditSelectAll = CreateMenuItem(Designer.cmdSelectAll.Invoke); miEditGroup = CreateMenuItem(17, Designer.cmdGroup.Invoke); miEditUngroup = CreateMenuItem(16, Designer.cmdUngroup.Invoke); miEditFind = CreateMenuItem(181, Designer.cmdFind.Invoke); miEditReplace = CreateMenuItem(Designer.cmdReplace.Invoke); miView = CreateMenuItem(); miViewStartPage = CreateMenuItem(179, Designer.cmdViewStartPage.Invoke); miViewToolbars = CreateMenuItem(); miViewMessages = CreateMenuItem(70, miViewMessages_Click); miViewMessages.CheckOnClick = true; miViewOptions = CreateMenuItem(Designer.cmdOptions.Invoke); miInsert = CreateMenuItem(); miInsert.DropDownItems.Add(CreateMenuItem()); // need to allow miInsert open its dropdown miReport = CreateMenuItem(); miReportValidation = CreateMenuItem(70, Designer.cmdReportValidation.Invoke); miReportOptions = CreateMenuItem(Designer.cmdReportSettings.Invoke); miData = CreateMenuItem(); miDataChoose = CreateMenuItem(Designer.cmdChooseData.Invoke); miDataAdd = CreateMenuItem(137, Designer.cmdAddData.Invoke); miDataShowData = CreateMenuItem(72, miDataShowDataSources_Click); miWindow = CreateMenuItem(); miWindowCloseAll = CreateMenuItem(202, Designer.cmdCloseAll.Invoke); miHelp = CreateMenuItem(); miHelpContents = CreateMenuItem(90, Designer.cmdHelpContents.Invoke); miHelpAccount = CreateMenuItem(259, Designer.cmdAccount.Invoke); miHelpAbout = CreateMenuItem(Designer.cmdAbout.Invoke); // create menu structure Items.AddRange(new ToolStripItem[] { miFile, miEdit, miView, miInsert, miReport, miData, miWindow, miHelp }); miFile.DropDownItems.AddRange(new ToolStripItem[] { miFileNew, miFileOpen, miFileOpenPage, miFileOpenViaCloud, new ToolStripSeparator(), miFileRecentFiles, miFileClose, new ToolStripSeparator(), miFileSave, miFileSaveAll, miFileSaveAs, miFileSaveToCloud, miFileSaveWithRandomData, new ToolStripSeparator(), miFilePageSetup, miFilePrinterSetup, miFilePreview, miFileCloudPreview, new ToolStripSeparator(), miFileSelectLanguage, new ToolStripSeparator(), miFileExit }); miEdit.DropDownItems.AddRange(new ToolStripItem[] { miEditUndo, miEditRedo, new ToolStripSeparator(), miEditCut, miEditCopy, miEditPaste, miEditDelete, new ToolStripSeparator(), miEditNewPage, miEditCopyPage, miEditDeletePage, new ToolStripSeparator(), miEditSelectAll, new ToolStripSeparator(), miEditGroup, miEditUngroup, new ToolStripSeparator(), miEditFind, miEditReplace }); miView.DropDownItems.AddRange(new ToolStripItem[] { miViewStartPage, miViewToolbars, miViewMessages, new ToolStripSeparator(), miViewOptions }); miReport.DropDownItems.Add(miReportValidation); miReport.DropDownItems.Add(miReportOptions); miData.DropDownItems.AddRange(new ToolStripItem[] { miDataChoose, miDataAdd }); miWindow.DropDownItems.Add(miWindowCloseAll); miHelp.DropDownItems.AddRange(new ToolStripItem[] { miHelpContents, new ToolStripSeparator(), miHelpAccount, new ToolStripSeparator(), miHelpAbout }); if (!Config.DisableHotkeys) { // shortcuts Keys shortcut; if (Config.Shortcuts.TryGetValue("File,Open", out shortcut)) miFileOpen.ShortcutKeys = shortcut; if (Config.Shortcuts.TryGetValue("File,Save", out shortcut)) miFileSave.ShortcutKeys = shortcut; if (Config.Shortcuts.TryGetValue("File,SaveAs", out shortcut)) miFileSaveAs.ShortcutKeys = shortcut; if (Config.Shortcuts.TryGetValue("File,SaveAll", out shortcut)) miFileSaveAll.ShortcutKeys = shortcut; #if !COMMUNITY if (Config.Shortcuts.TryGetValue("File,Preview", out shortcut)) miFilePreview.ShortcutKeys = shortcut; #endif if (Config.Shortcuts.TryGetValue("Editing,Undo", out shortcut)) miEditUndo.ShortcutKeys = shortcut; if (Config.Shortcuts.TryGetValue("Editing,Redo", out shortcut)) miEditRedo.ShortcutKeys = shortcut; if (Config.Shortcuts.TryGetValue("Editing,Cut", out shortcut)) miEditCut.ShortcutKeys = shortcut; if (Config.Shortcuts.TryGetValue("Editing,Copy", out shortcut)) miEditCopy.ShortcutKeys = shortcut; if (Config.Shortcuts.TryGetValue("Editing,Paste", out shortcut)) miEditPaste.ShortcutKeys = shortcut; if (Config.Shortcuts.TryGetValue("Editing,NewPage", out shortcut)) miEditNewPage.ShortcutKeys = shortcut; if (Config.Shortcuts.TryGetValue("Editing,SelectAll", out shortcut)) miEditSelectAll.ShortcutKeys = shortcut; if (Config.Shortcuts.TryGetValue("Editing,Find", out shortcut)) miEditFind.ShortcutKeys = shortcut; if (Config.Shortcuts.TryGetValue("Editing,Replace", out shortcut)) miEditReplace.ShortcutKeys = shortcut; if (Config.Shortcuts.TryGetValue("Help,Contents", out shortcut)) miHelpContents.ShortcutKeys = shortcut; } // events miFile.DropDownOpening += miFile_DropDownOpening; miEdit.DropDownOpening += miEdit_DropDownOpening; miInsert.DropDownOpening += miInsert_DropDownOpening; miView.DropDownOpening += miView_DropDownOpening; miWindow.DropDownOpening += miWindow_DropDownOpening; Localize(); Designer.Controls.Add(this); } } }