/// <summary> /// Initializes important variables /// </summary> private void InitBasics() { String dataPath = Path.Combine(PathHelper.DataDir, "FlashDebugger"); if (!Directory.Exists(dataPath)) { Directory.CreateDirectory(dataPath); } this.settingFilename = Path.Combine(dataPath, "Settings.fdb"); this.pluginImage = PluginBase.MainForm.FindImage("54|23|5|4"); breakPointManager = new BreakPointManager(); debugManager = new DebuggerManager(); liveDataTip = new LiveDataTip(); }
private void Manager_OnMouseHover(ScintillaControl sci, Int32 position) { if (m_ToolTip == null) { Initialize(); } DebuggerManager debugManager = PluginMain.debugManager; FlashInterface flashInterface = debugManager.FlashInterface; if (!PluginBase.MainForm.EditorMenu.Visible && flashInterface != null && flashInterface.isDebuggerStarted && flashInterface.isDebuggerSuspended) { if (debugManager.CurrentLocation != null && debugManager.CurrentLocation.getFile() != null) { String localPath = debugManager.GetLocalPath(debugManager.CurrentLocation.getFile()); if (localPath == null || localPath != PluginBase.MainForm.CurrentDocument.FileName) { return; } } else { return; } Point dataTipPoint = Control.MousePosition; Rectangle rect = new Rectangle(m_ToolTip.Location, m_ToolTip.Size); if (m_ToolTip.Visible && rect.Contains(dataTipPoint)) { return; } position = sci.WordEndPosition(position, true); String leftword = GetWordAtPosition(sci, position); if (leftword != String.Empty) { try { IASTBuilder b = new ASTBuilder(false); ValueExp exp = b.parse(new StringReader(leftword)); var ctx = new ExpressionContext(flashInterface.Session, flashInterface.GetFrames()[debugManager.CurrentFrame]); var obj = exp.evaluate(ctx); if (obj as Variable != null) { Show(dataTipPoint, (Variable)obj, leftword); } } catch (Exception) {} } } }
/// <summary> /// Initializes important variables /// </summary> private void InitBasics() { String dataPath = Path.Combine(PathHelper.DataDir, "FlashDebugger"); if (!Directory.Exists(dataPath)) Directory.CreateDirectory(dataPath); this.settingFilename = Path.Combine(dataPath, "Settings.fdb"); this.pluginImage = PluginBase.MainForm.FindImage("54|23|5|4"); breakPointManager = new BreakPointManager(); debugManager = new DebuggerManager(); liveDataTip = new LiveDataTip(); }
/// <summary> /// Creates a menu item for the plugin and adds a ignored key /// </summary> public MenusHelper(Image pluginImage, DebuggerManager debugManager, Settings settings) { settingObject = settings; imageList = new ImageList(); imageList.Images.Add("StartContinue", Resource.StartContinue); imageList.Images.Add("Pause", Resource.Pause); imageList.Images.Add("Stop", Resource.Stop); imageList.Images.Add("Current", Resource.Current); imageList.Images.Add("RunToCursor", Resource.RunToCursor); imageList.Images.Add("Step", Resource.Step); imageList.Images.Add("Next", Resource.Next); imageList.Images.Add("Finish", Resource.Finish); ToolStripMenuItem tempItem; ToolStripMenuItem viewMenu = (ToolStripMenuItem)PluginBase.MainForm.FindMenuItem("ViewMenu"); tempItem = new ToolStripMenuItem(TextHelper.GetString("Label.ViewBreakpointsPanel"), pluginImage, new EventHandler(this.OpenBreakPointPanel)); PluginBase.MainForm.RegisterShortcutItem("ViewMenu.ShowBreakpoints", tempItem); viewMenu.DropDownItems.Add(tempItem); tempItem = new ToolStripMenuItem(TextHelper.GetString("Label.ViewLocalVariablesPanel"), pluginImage, new EventHandler(this.OpenLocalVariablesPanel)); PluginBase.MainForm.RegisterShortcutItem("ViewMenu.ShowLocalVariables", tempItem); viewMenu.DropDownItems.Add(tempItem); tempItem = new ToolStripMenuItem(TextHelper.GetString("Label.ViewStackframePanel"), pluginImage, new EventHandler(this.OpenStackframePanel)); PluginBase.MainForm.RegisterShortcutItem("ViewMenu.ShowStackframe", tempItem); viewMenu.DropDownItems.Add(tempItem); tempItem = new ToolStripMenuItem(TextHelper.GetString("Label.ViewWatchPanel"), pluginImage, new EventHandler(this.OpenWatchPanel)); PluginBase.MainForm.RegisterShortcutItem("ViewMenu.ShowWatch", tempItem); viewMenu.DropDownItems.Add(tempItem); tempItem = new ToolStripMenuItem(TextHelper.GetString("Label.ViewImmediatePanel"), pluginImage, new EventHandler(this.OpenImmediatePanel)); PluginBase.MainForm.RegisterShortcutItem("ViewMenu.ShowImmediate", tempItem); viewMenu.DropDownItems.Add(tempItem); tempItem = new ToolStripMenuItem(TextHelper.GetString("Label.ViewThreadsPanel"), pluginImage, new EventHandler(this.OpenThreadsPanel)); PluginBase.MainForm.RegisterShortcutItem("ViewMenu.ShowThreads", tempItem); viewMenu.DropDownItems.Add(tempItem); // Menu ToolStripMenuItem debugMenu = (ToolStripMenuItem)PluginBase.MainForm.FindMenuItem("DebugMenu"); if (debugMenu == null) { debugMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Debug")); ToolStripMenuItem insertMenu = (ToolStripMenuItem)PluginBase.MainForm.FindMenuItem("InsertMenu"); Int32 idx = PluginBase.MainForm.MenuStrip.Items.IndexOf(insertMenu); if (idx < 0) idx = PluginBase.MainForm.MenuStrip.Items.Count - 1; PluginBase.MainForm.MenuStrip.Items.Insert(idx, debugMenu); } StartContinueMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Start"), imageList.Images["StartContinue"], new EventHandler(StartContinue_Click), Keys.None); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.Start", StartContinueMenu); PauseMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Pause"), imageList.Images["Pause"], new EventHandler(debugManager.Pause_Click), Keys.Control | Keys.Shift | Keys.F5); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.Pause", PauseMenu); StopMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Stop"), imageList.Images["Stop"], new EventHandler(debugManager.Stop_Click), Keys.Shift | Keys.F5); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.Stop", StopMenu); CurrentMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Current"), imageList.Images["Current"], new EventHandler(debugManager.Current_Click), Keys.Shift | Keys.F10); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.Current", CurrentMenu); RunToCursorMenu = new ToolStripMenuItem(TextHelper.GetString("Label.RunToCursor"), imageList.Images["RunToCursor"], new EventHandler(ScintillaHelper.RunToCursor_Click), Keys.Control | Keys.F10); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.RunToCursor", RunToCursorMenu); StepMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Step"), imageList.Images["Step"], new EventHandler(debugManager.Step_Click), Keys.F11); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.StepInto", StepMenu); NextMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Next"), imageList.Images["Next"], new EventHandler(debugManager.Next_Click), Keys.F10); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.StepOver", NextMenu); FinishMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Finish"), imageList.Images["Finish"], new EventHandler(debugManager.Finish_Click), Keys.Shift | Keys.F11); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.StepOut", FinishMenu); ToggleBreakPointMenu = new ToolStripMenuItem(TextHelper.GetString("Label.ToggleBreakpoint"), null, new EventHandler(ScintillaHelper.ToggleBreakPoint_Click), Keys.F9); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.ToggleBreakpoint", ToggleBreakPointMenu); DeleteAllBreakPointsMenu = new ToolStripMenuItem(TextHelper.GetString("Label.DeleteAllBreakpoints"), null, new EventHandler(ScintillaHelper.DeleteAllBreakPoints_Click), Keys.Control | Keys.Shift | Keys.F9); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.DeleteAllBreakpoints", DeleteAllBreakPointsMenu); ToggleBreakPointEnableMenu = new ToolStripMenuItem(TextHelper.GetString("Label.ToggleBreakpointEnabled"), null, new EventHandler(ScintillaHelper.ToggleBreakPointEnable_Click), Keys.None); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.ToggleBreakpointEnabled", ToggleBreakPointEnableMenu); DisableAllBreakPointsMenu = new ToolStripMenuItem(TextHelper.GetString("Label.DisableAllBreakpoints"), null, new EventHandler(ScintillaHelper.DisableAllBreakPoints_Click), Keys.None); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.DisableAllBreakpoints", DisableAllBreakPointsMenu); EnableAllBreakPointsMenu = new ToolStripMenuItem(TextHelper.GetString("Label.EnableAllBreakpoints"), null, new EventHandler(ScintillaHelper.EnableAllBreakPoints_Click), Keys.None); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.EnableAllBreakpoints", EnableAllBreakPointsMenu); StartRemoteDebuggingMenu = new ToolStripMenuItem(TextHelper.GetString("Label.StartRemoteDebugging"), null, new EventHandler(StartRemote_Click), Keys.None); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.StartRemoteDebugging", StartRemoteDebuggingMenu); debugItems = new List<ToolStripItem>(new ToolStripItem[] { StartContinueMenu, PauseMenu, StopMenu, new ToolStripSeparator(), CurrentMenu, RunToCursorMenu, StepMenu, NextMenu, FinishMenu, new ToolStripSeparator(), ToggleBreakPointMenu, DeleteAllBreakPointsMenu, ToggleBreakPointEnableMenu ,DisableAllBreakPointsMenu, EnableAllBreakPointsMenu, new ToolStripSeparator(), StartRemoteDebuggingMenu }); debugMenu.DropDownItems.AddRange(debugItems.ToArray()); // ToolStrip m_ToolStripSeparator = new ToolStripSeparator(); m_ToolStripSeparator.Margin = new Padding(1, 0, 0, 0); StartContinueButton = new ToolStripButton(TextHelper.GetString("Label.Start"), imageList.Images["StartContinue"], new EventHandler(StartContinue_Click)); StartContinueButton.DisplayStyle = ToolStripItemDisplayStyle.Image; PauseButton = new ToolStripButton(TextHelper.GetString("Label.Pause"), imageList.Images["Pause"], new EventHandler(debugManager.Pause_Click)); PauseButton.DisplayStyle = ToolStripItemDisplayStyle.Image; StopButton = new ToolStripButton(TextHelper.GetString("Label.Stop"), imageList.Images["Stop"], new EventHandler(debugManager.Stop_Click)); StopButton.DisplayStyle = ToolStripItemDisplayStyle.Image; CurrentButton = new ToolStripButton(TextHelper.GetString("Label.Current"), imageList.Images["Current"], new EventHandler(debugManager.Current_Click)); CurrentButton.DisplayStyle = ToolStripItemDisplayStyle.Image; RunToCursorButton = new ToolStripButton(TextHelper.GetString("Label.RunToCursor"), imageList.Images["RunToCursor"], new EventHandler(ScintillaHelper.RunToCursor_Click)); RunToCursorButton.DisplayStyle = ToolStripItemDisplayStyle.Image; StepButton = new ToolStripButton(TextHelper.GetString("Label.Step"), imageList.Images["Step"], new EventHandler(debugManager.Step_Click)); StepButton.DisplayStyle = ToolStripItemDisplayStyle.Image; NextButton = new ToolStripButton(TextHelper.GetString("Label.Next"), imageList.Images["Next"], new EventHandler(debugManager.Next_Click)); NextButton.DisplayStyle = ToolStripItemDisplayStyle.Image; FinishButton = new ToolStripButton(TextHelper.GetString("Label.Finish"), imageList.Images["Finish"], new EventHandler(debugManager.Finish_Click)); FinishButton.DisplayStyle = ToolStripItemDisplayStyle.Image; m_ToolStripButtons = new ToolStripItem[] { m_ToolStripSeparator, StartContinueButton, PauseButton, StopButton, new ToolStripSeparator(), CurrentButton, RunToCursorButton, StepButton, NextButton, FinishButton }; // Events PluginMain.debugManager.StateChangedEvent += UpdateMenuState; }
/// <summary> /// Creates a menu item for the plugin and adds a ignored key /// </summary> public MenusHelper(Image pluginImage, DebuggerManager debugManager, Settings settings) { settingObject = settings; imageList = new ImageList(); imageList.Images.Add("StartContinue", Resource.StartContinue); imageList.Images.Add("Pause", Resource.Pause); imageList.Images.Add("Stop", Resource.Stop); imageList.Images.Add("Current", Resource.Current); imageList.Images.Add("RunToCursor", Resource.RunToCursor); imageList.Images.Add("Step", Resource.Step); imageList.Images.Add("Next", Resource.Next); imageList.Images.Add("Finish", Resource.Finish); ToolStripMenuItem tempItem; ToolStripMenuItem viewMenu = (ToolStripMenuItem)PluginBase.MainForm.FindMenuItem("ViewMenu"); tempItem = new ToolStripMenuItem(TextHelper.GetString("Label.ViewBreakpointsPanel"), pluginImage, new EventHandler(this.OpenBreakPointPanel)); PluginBase.MainForm.RegisterShortcutItem("ViewMenu.ShowBreakpoints", tempItem); viewMenu.DropDownItems.Add(tempItem); tempItem = new ToolStripMenuItem(TextHelper.GetString("Label.ViewLocalVariablesPanel"), pluginImage, new EventHandler(this.OpenLocalVariablesPanel)); PluginBase.MainForm.RegisterShortcutItem("ViewMenu.ShowLocalVariables", tempItem); viewMenu.DropDownItems.Add(tempItem); tempItem = new ToolStripMenuItem(TextHelper.GetString("Label.ViewStackframePanel"), pluginImage, new EventHandler(this.OpenStackframePanel)); PluginBase.MainForm.RegisterShortcutItem("ViewMenu.ShowStackframe", tempItem); viewMenu.DropDownItems.Add(tempItem); tempItem = new ToolStripMenuItem(TextHelper.GetString("Label.ViewWatchPanel"), pluginImage, new EventHandler(this.OpenWatchPanel)); PluginBase.MainForm.RegisterShortcutItem("ViewMenu.ShowWatch", tempItem); viewMenu.DropDownItems.Add(tempItem); tempItem = new ToolStripMenuItem(TextHelper.GetString("Label.ViewImmediatePanel"), pluginImage, new EventHandler(this.OpenImmediatePanel)); PluginBase.MainForm.RegisterShortcutItem("ViewMenu.ShowImmediate", tempItem); viewMenu.DropDownItems.Add(tempItem); // Menu ToolStripMenuItem debugMenu = (ToolStripMenuItem)PluginBase.MainForm.FindMenuItem("DebugMenu"); if (debugMenu == null) { debugMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Debug")); ToolStripMenuItem insertMenu = (ToolStripMenuItem)PluginBase.MainForm.FindMenuItem("InsertMenu"); Int32 idx = PluginBase.MainForm.MenuStrip.Items.IndexOf(insertMenu); if (idx < 0) { idx = PluginBase.MainForm.MenuStrip.Items.Count - 1; } PluginBase.MainForm.MenuStrip.Items.Insert(idx, debugMenu); } StartContinueMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Start"), imageList.Images["StartContinue"], new EventHandler(StartContinue_Click), Keys.None); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.Start", StartContinueMenu); PauseMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Pause"), imageList.Images["Pause"], new EventHandler(debugManager.Pause_Click), Keys.Control | Keys.Shift | Keys.F5); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.Pause", PauseMenu); StopMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Stop"), imageList.Images["Stop"], new EventHandler(debugManager.Stop_Click), Keys.Shift | Keys.F5); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.Stop", StopMenu); CurrentMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Current"), imageList.Images["Current"], new EventHandler(debugManager.Current_Click), Keys.Shift | Keys.F10); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.Current", CurrentMenu); RunToCursorMenu = new ToolStripMenuItem(TextHelper.GetString("Label.RunToCursor"), imageList.Images["RunToCursor"], new EventHandler(ScintillaHelper.RunToCursor_Click), Keys.Control | Keys.F10); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.RunToCursor", RunToCursorMenu); StepMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Step"), imageList.Images["Step"], new EventHandler(debugManager.Step_Click), Keys.F11); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.StepInto", StepMenu); NextMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Next"), imageList.Images["Next"], new EventHandler(debugManager.Next_Click), Keys.F10); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.StepOver", NextMenu); FinishMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Finish"), imageList.Images["Finish"], new EventHandler(debugManager.Finish_Click), Keys.Shift | Keys.F11); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.StepOut", FinishMenu); ToggleBreakPointMenu = new ToolStripMenuItem(TextHelper.GetString("Label.ToggleBreakpoint"), null, new EventHandler(ScintillaHelper.ToggleBreakPoint_Click), Keys.F9); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.ToggleBreakpoint", ToggleBreakPointMenu); DeleteAllBreakPointsMenu = new ToolStripMenuItem(TextHelper.GetString("Label.DeleteAllBreakpoints"), null, new EventHandler(ScintillaHelper.DeleteAllBreakPoints_Click), Keys.Control | Keys.Shift | Keys.F9); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.DeleteAllBreakpoints", DeleteAllBreakPointsMenu); ToggleBreakPointEnableMenu = new ToolStripMenuItem(TextHelper.GetString("Label.ToggleBreakpointEnabled"), null, new EventHandler(ScintillaHelper.ToggleBreakPointEnable_Click), Keys.None); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.ToggleBreakpointEnabled", ToggleBreakPointEnableMenu); DisableAllBreakPointsMenu = new ToolStripMenuItem(TextHelper.GetString("Label.DisableAllBreakpoints"), null, new EventHandler(ScintillaHelper.DisableAllBreakPoints_Click), Keys.None); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.DisableAllBreakpoints", DisableAllBreakPointsMenu); EnableAllBreakPointsMenu = new ToolStripMenuItem(TextHelper.GetString("Label.EnableAllBreakpoints"), null, new EventHandler(ScintillaHelper.EnableAllBreakPoints_Click), Keys.None); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.EnableAllBreakpoints", EnableAllBreakPointsMenu); StartRemoteDebuggingMenu = new ToolStripMenuItem(TextHelper.GetString("Label.StartRemoteDebugging"), null, new EventHandler(StartRemote_Click), Keys.None); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.StartRemoteDebugging", StartRemoteDebuggingMenu); debugItems = new List <ToolStripItem>(new ToolStripItem[] { StartContinueMenu, PauseMenu, StopMenu, new ToolStripSeparator(), CurrentMenu, RunToCursorMenu, StepMenu, NextMenu, FinishMenu, new ToolStripSeparator(), ToggleBreakPointMenu, DeleteAllBreakPointsMenu, ToggleBreakPointEnableMenu, DisableAllBreakPointsMenu, EnableAllBreakPointsMenu, new ToolStripSeparator(), StartRemoteDebuggingMenu }); debugMenu.DropDownItems.AddRange(debugItems.ToArray()); // ToolStrip m_ToolStripSeparator = new ToolStripSeparator(); m_ToolStripSeparator.Margin = new Padding(1, 0, 0, 0); StartContinueButton = new ToolStripButton(TextHelper.GetString("Label.Start"), imageList.Images["StartContinue"], new EventHandler(StartContinue_Click)); StartContinueButton.DisplayStyle = ToolStripItemDisplayStyle.Image; PauseButton = new ToolStripButton(TextHelper.GetString("Label.Pause"), imageList.Images["Pause"], new EventHandler(debugManager.Pause_Click)); PauseButton.DisplayStyle = ToolStripItemDisplayStyle.Image; StopButton = new ToolStripButton(TextHelper.GetString("Label.Stop"), imageList.Images["Stop"], new EventHandler(debugManager.Stop_Click)); StopButton.DisplayStyle = ToolStripItemDisplayStyle.Image; CurrentButton = new ToolStripButton(TextHelper.GetString("Label.Current"), imageList.Images["Current"], new EventHandler(debugManager.Current_Click)); CurrentButton.DisplayStyle = ToolStripItemDisplayStyle.Image; RunToCursorButton = new ToolStripButton(TextHelper.GetString("Label.RunToCursor"), imageList.Images["RunToCursor"], new EventHandler(ScintillaHelper.RunToCursor_Click)); RunToCursorButton.DisplayStyle = ToolStripItemDisplayStyle.Image; StepButton = new ToolStripButton(TextHelper.GetString("Label.Step"), imageList.Images["Step"], new EventHandler(debugManager.Step_Click)); StepButton.DisplayStyle = ToolStripItemDisplayStyle.Image; NextButton = new ToolStripButton(TextHelper.GetString("Label.Next"), imageList.Images["Next"], new EventHandler(debugManager.Next_Click)); NextButton.DisplayStyle = ToolStripItemDisplayStyle.Image; FinishButton = new ToolStripButton(TextHelper.GetString("Label.Finish"), imageList.Images["Finish"], new EventHandler(debugManager.Finish_Click)); FinishButton.DisplayStyle = ToolStripItemDisplayStyle.Image; m_ToolStripButtons = new ToolStripItem[] { m_ToolStripSeparator, StartContinueButton, PauseButton, StopButton, new ToolStripSeparator(), CurrentButton, RunToCursorButton, StepButton, NextButton, FinishButton }; // Events PluginMain.debugManager.StateChangedEvent += UpdateMenuState; }
/// <summary> /// Creates a menu item for the plugin and adds a ignored key /// </summary> public MenusHelper(Image pluginImage, DebuggerManager debugManager, Settings settings) { settingObject = settings; imageList = new ImageListManager(); imageList.ColorDepth = ColorDepth.Depth32Bit; imageList.Populate += ImageList_Populate; imageList.Initialize(); Image imgStartContinue = PluginBase.MainForm.GetAutoAdjustedImage(Resource.StartContinue); Image imgPause = PluginBase.MainForm.GetAutoAdjustedImage(Resource.Pause); Image imgStop = PluginBase.MainForm.GetAutoAdjustedImage(Resource.Stop); Image imgCurrent = PluginBase.MainForm.GetAutoAdjustedImage(Resource.Current); Image imgRunToCursor = PluginBase.MainForm.GetAutoAdjustedImage(Resource.RunToCursor); Image imgStep = PluginBase.MainForm.GetAutoAdjustedImage(Resource.Step); Image imgNext = PluginBase.MainForm.GetAutoAdjustedImage(Resource.Next); Image imgFinish = PluginBase.MainForm.GetAutoAdjustedImage(Resource.Finish); ToolStripMenuItem tempItem; ToolStripMenuItem viewMenu = (ToolStripMenuItem)PluginBase.MainForm.FindMenuItem("ViewMenu"); tempItem = new ToolStripMenuItem(TextHelper.GetString("Label.ViewBreakpointsPanel"), pluginImage, OpenBreakPointPanel); PluginBase.MainForm.RegisterShortcutItem("ViewMenu.ShowBreakpoints", tempItem); viewMenu.DropDownItems.Add(tempItem); tempItem = new ToolStripMenuItem(TextHelper.GetString("Label.ViewLocalVariablesPanel"), pluginImage, OpenLocalVariablesPanel); PluginBase.MainForm.RegisterShortcutItem("ViewMenu.ShowLocalVariables", tempItem); viewMenu.DropDownItems.Add(tempItem); tempItem = new ToolStripMenuItem(TextHelper.GetString("Label.ViewStackframePanel"), pluginImage, OpenStackframePanel); PluginBase.MainForm.RegisterShortcutItem("ViewMenu.ShowStackframe", tempItem); viewMenu.DropDownItems.Add(tempItem); tempItem = new ToolStripMenuItem(TextHelper.GetString("Label.ViewWatchPanel"), pluginImage, OpenWatchPanel); PluginBase.MainForm.RegisterShortcutItem("ViewMenu.ShowWatch", tempItem); viewMenu.DropDownItems.Add(tempItem); tempItem = new ToolStripMenuItem(TextHelper.GetString("Label.ViewImmediatePanel"), pluginImage, OpenImmediatePanel); PluginBase.MainForm.RegisterShortcutItem("ViewMenu.ShowImmediate", tempItem); viewMenu.DropDownItems.Add(tempItem); tempItem = new ToolStripMenuItem(TextHelper.GetString("Label.ViewThreadsPanel"), pluginImage, OpenThreadsPanel); PluginBase.MainForm.RegisterShortcutItem("ViewMenu.ShowThreads", tempItem); viewMenu.DropDownItems.Add(tempItem); // Menu ToolStripMenuItem debugMenu = (ToolStripMenuItem)PluginBase.MainForm.FindMenuItem("DebugMenu"); if (debugMenu == null) { debugMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Debug")); ToolStripMenuItem insertMenu = (ToolStripMenuItem)PluginBase.MainForm.FindMenuItem("InsertMenu"); Int32 idx = PluginBase.MainForm.MenuStrip.Items.IndexOf(insertMenu); if (idx < 0) idx = PluginBase.MainForm.MenuStrip.Items.Count - 1; PluginBase.MainForm.MenuStrip.Items.Insert(idx, debugMenu); } StartContinueMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Start"), imgStartContinue, StartContinue_Click, Keys.None); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.Start", StartContinueMenu); PauseMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Pause"), imgPause, debugManager.Pause_Click, Keys.Control | Keys.Shift | Keys.F5); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.Pause", PauseMenu); StopMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Stop"), imgStop, debugManager.Stop_Click, Keys.Shift | Keys.F5); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.Stop", StopMenu); BreakOnAllMenu = new ToolStripMenuItem(TextHelper.GetString("Label.BreakOnAllErrors"), null, BreakOnAll_Click, Keys.Control | Keys.Alt | Keys.E); BreakOnAllMenu.Checked = PluginMain.settingObject.BreakOnThrow; PluginBase.MainForm.RegisterShortcutItem("DebugMenu.BreakOnAllErrors", BreakOnAllMenu); CurrentMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Current"), imgCurrent, debugManager.Current_Click, Keys.Shift | Keys.F10); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.Current", CurrentMenu); RunToCursorMenu = new ToolStripMenuItem(TextHelper.GetString("Label.RunToCursor"), imgRunToCursor, ScintillaHelper.RunToCursor_Click, Keys.Control | Keys.F10); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.RunToCursor", RunToCursorMenu); StepMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Step"), imgStep, debugManager.Step_Click, Keys.F11); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.StepInto", StepMenu); NextMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Next"), imgNext, debugManager.Next_Click, Keys.F10); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.StepOver", NextMenu); FinishMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Finish"), imgFinish, debugManager.Finish_Click, Keys.Shift | Keys.F11); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.StepOut", FinishMenu); ToggleBreakPointMenu = new ToolStripMenuItem(TextHelper.GetString("Label.ToggleBreakpoint"), null, ScintillaHelper.ToggleBreakPoint_Click, Keys.F9); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.ToggleBreakpoint", ToggleBreakPointMenu); DeleteAllBreakPointsMenu = new ToolStripMenuItem(TextHelper.GetString("Label.DeleteAllBreakpoints"), null, ScintillaHelper.DeleteAllBreakPoints_Click, Keys.Control | Keys.Shift | Keys.F9); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.DeleteAllBreakpoints", DeleteAllBreakPointsMenu); ToggleBreakPointEnableMenu = new ToolStripMenuItem(TextHelper.GetString("Label.ToggleBreakpointEnabled"), null, ScintillaHelper.ToggleBreakPointEnable_Click, Keys.None); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.ToggleBreakpointEnabled", ToggleBreakPointEnableMenu); DisableAllBreakPointsMenu = new ToolStripMenuItem(TextHelper.GetString("Label.DisableAllBreakpoints"), null, ScintillaHelper.DisableAllBreakPoints_Click, Keys.None); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.DisableAllBreakpoints", DisableAllBreakPointsMenu); EnableAllBreakPointsMenu = new ToolStripMenuItem(TextHelper.GetString("Label.EnableAllBreakpoints"), null, ScintillaHelper.EnableAllBreakPoints_Click, Keys.None); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.EnableAllBreakpoints", EnableAllBreakPointsMenu); StartRemoteDebuggingMenu = new ToolStripMenuItem(TextHelper.GetString("Label.StartRemoteDebugging"), null, StartRemote_Click, Keys.None); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.StartRemoteDebugging", StartRemoteDebuggingMenu); debugMenu.DropDownItems.AddRange(new ToolStripItem[] { StartContinueMenu, PauseMenu, StopMenu, BreakOnAllMenu, new ToolStripSeparator(), CurrentMenu, RunToCursorMenu, StepMenu, NextMenu, FinishMenu, new ToolStripSeparator(), ToggleBreakPointMenu, DeleteAllBreakPointsMenu, ToggleBreakPointEnableMenu ,DisableAllBreakPointsMenu, EnableAllBreakPointsMenu, new ToolStripSeparator(), StartRemoteDebuggingMenu }); // ToolStrip m_ToolStripSeparator = new ToolStripSeparator(); m_ToolStripSeparator.Margin = new Padding(1, 0, 0, 0); m_ToolStripSeparator2 = new ToolStripSeparator(); StartContinueButton = new ToolStripButton(TextHelper.GetString("Label.Start"), imgStartContinue, StartContinue_Click); StartContinueButton.DisplayStyle = ToolStripItemDisplayStyle.Image; PluginBase.MainForm.RegisterSecondaryItem("DebugMenu.Start", StartContinueButton); PauseButton = new ToolStripButton(TextHelper.GetString("Label.Pause"), imgPause, debugManager.Pause_Click); PauseButton.DisplayStyle = ToolStripItemDisplayStyle.Image; PluginBase.MainForm.RegisterSecondaryItem("DebugMenu.Pause", PauseButton); StopButton = new ToolStripButton(TextHelper.GetString("Label.Stop"), imgStop, debugManager.Stop_Click); StopButton.DisplayStyle = ToolStripItemDisplayStyle.Image; PluginBase.MainForm.RegisterSecondaryItem("DebugMenu.Stop", StopButton); CurrentButton = new ToolStripButton(TextHelper.GetString("Label.Current"), imgCurrent, debugManager.Current_Click); CurrentButton.DisplayStyle = ToolStripItemDisplayStyle.Image; PluginBase.MainForm.RegisterSecondaryItem("DebugMenu.Current", CurrentButton); RunToCursorButton = new ToolStripButton(TextHelper.GetString("Label.RunToCursor"), imgRunToCursor, ScintillaHelper.RunToCursor_Click); RunToCursorButton.DisplayStyle = ToolStripItemDisplayStyle.Image; PluginBase.MainForm.RegisterSecondaryItem("DebugMenu.RunToCursor", RunToCursorButton); StepButton = new ToolStripButton(TextHelper.GetString("Label.Step"), imgStep, debugManager.Step_Click); StepButton.DisplayStyle = ToolStripItemDisplayStyle.Image; PluginBase.MainForm.RegisterSecondaryItem("DebugMenu.StepInto", StepButton); NextButton = new ToolStripButton(TextHelper.GetString("Label.Next"), imgNext, debugManager.Next_Click); NextButton.DisplayStyle = ToolStripItemDisplayStyle.Image; PluginBase.MainForm.RegisterSecondaryItem("DebugMenu.StepOver", NextButton); FinishButton = new ToolStripButton(TextHelper.GetString("Label.Finish"), imgFinish, debugManager.Finish_Click); FinishButton.DisplayStyle = ToolStripItemDisplayStyle.Image; PluginBase.MainForm.RegisterSecondaryItem("DebugMenu.StepOut", FinishButton); m_ToolStripButtons = new ToolStripItem[] { m_ToolStripSeparator, StartContinueButton, PauseButton, StopButton, m_ToolStripSeparator2, CurrentButton, RunToCursorButton, StepButton, NextButton, FinishButton }; // Events PluginMain.debugManager.StateChangedEvent += UpdateMenuState; PluginMain.settingObject.BreakOnThrowChanged += BreakOnThrowChanged; }
/// <summary> /// Creates a menu item for the plugin and adds a ignored key /// </summary> public MenusHelper(Image pluginImage, DebuggerManager debugManager, Settings settings) { settingObject = settings; imageList = new ImageListManager(); imageList.ColorDepth = ColorDepth.Depth32Bit; imageList.Populate += ImageList_Populate; imageList.Initialize(); Image imgStartContinue = PluginBase.MainForm.GetAutoAdjustedImage(Resource.StartContinue); Image imgPause = PluginBase.MainForm.GetAutoAdjustedImage(Resource.Pause); Image imgStop = PluginBase.MainForm.GetAutoAdjustedImage(Resource.Stop); Image imgCurrent = PluginBase.MainForm.GetAutoAdjustedImage(Resource.Current); Image imgRunToCursor = PluginBase.MainForm.GetAutoAdjustedImage(Resource.RunToCursor); Image imgStep = PluginBase.MainForm.GetAutoAdjustedImage(Resource.Step); Image imgNext = PluginBase.MainForm.GetAutoAdjustedImage(Resource.Next); Image imgFinish = PluginBase.MainForm.GetAutoAdjustedImage(Resource.Finish); ToolStripMenuItem tempItem; ToolStripMenuItem viewMenu = (ToolStripMenuItem)PluginBase.MainForm.FindMenuItem("ViewMenu"); tempItem = new ToolStripMenuItem(TextHelper.GetString("Label.ViewBreakpointsPanel"), pluginImage, OpenBreakPointPanel); PluginBase.MainForm.RegisterShortcutItem("ViewMenu.ShowBreakpoints", tempItem); viewMenu.DropDownItems.Add(tempItem); tempItem = new ToolStripMenuItem(TextHelper.GetString("Label.ViewLocalVariablesPanel"), pluginImage, OpenLocalVariablesPanel); PluginBase.MainForm.RegisterShortcutItem("ViewMenu.ShowLocalVariables", tempItem); viewMenu.DropDownItems.Add(tempItem); tempItem = new ToolStripMenuItem(TextHelper.GetString("Label.ViewStackframePanel"), pluginImage, OpenStackframePanel); PluginBase.MainForm.RegisterShortcutItem("ViewMenu.ShowStackframe", tempItem); viewMenu.DropDownItems.Add(tempItem); tempItem = new ToolStripMenuItem(TextHelper.GetString("Label.ViewWatchPanel"), pluginImage, OpenWatchPanel); PluginBase.MainForm.RegisterShortcutItem("ViewMenu.ShowWatch", tempItem); viewMenu.DropDownItems.Add(tempItem); tempItem = new ToolStripMenuItem(TextHelper.GetString("Label.ViewImmediatePanel"), pluginImage, OpenImmediatePanel); PluginBase.MainForm.RegisterShortcutItem("ViewMenu.ShowImmediate", tempItem); viewMenu.DropDownItems.Add(tempItem); tempItem = new ToolStripMenuItem(TextHelper.GetString("Label.ViewThreadsPanel"), pluginImage, OpenThreadsPanel); PluginBase.MainForm.RegisterShortcutItem("ViewMenu.ShowThreads", tempItem); viewMenu.DropDownItems.Add(tempItem); // Menu ToolStripMenuItem debugMenu = (ToolStripMenuItem)PluginBase.MainForm.FindMenuItem("DebugMenu"); if (debugMenu == null) { debugMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Debug")); ToolStripMenuItem insertMenu = (ToolStripMenuItem)PluginBase.MainForm.FindMenuItem("InsertMenu"); Int32 idx = PluginBase.MainForm.MenuStrip.Items.IndexOf(insertMenu); if (idx < 0) { idx = PluginBase.MainForm.MenuStrip.Items.Count - 1; } PluginBase.MainForm.MenuStrip.Items.Insert(idx, debugMenu); } StartContinueMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Start"), imgStartContinue, StartContinue_Click, Keys.None); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.Start", StartContinueMenu); PauseMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Pause"), imgPause, debugManager.Pause_Click, Keys.Control | Keys.Shift | Keys.F5); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.Pause", PauseMenu); StopMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Stop"), imgStop, debugManager.Stop_Click, Keys.Shift | Keys.F5); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.Stop", StopMenu); BreakOnAllMenu = new ToolStripMenuItem(TextHelper.GetString("Label.BreakOnAllErrors"), null, BreakOnAll_Click, Keys.Control | Keys.Alt | Keys.E); BreakOnAllMenu.Checked = PluginMain.settingObject.BreakOnThrow; PluginBase.MainForm.RegisterShortcutItem("DebugMenu.BreakOnAllErrors", BreakOnAllMenu); CurrentMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Current"), imgCurrent, debugManager.Current_Click, Keys.Shift | Keys.F10); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.Current", CurrentMenu); RunToCursorMenu = new ToolStripMenuItem(TextHelper.GetString("Label.RunToCursor"), imgRunToCursor, ScintillaHelper.RunToCursor_Click, Keys.Control | Keys.F10); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.RunToCursor", RunToCursorMenu); StepMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Step"), imgStep, debugManager.Step_Click, Keys.F11); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.StepInto", StepMenu); NextMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Next"), imgNext, debugManager.Next_Click, Keys.F10); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.StepOver", NextMenu); FinishMenu = new ToolStripMenuItem(TextHelper.GetString("Label.Finish"), imgFinish, debugManager.Finish_Click, Keys.Shift | Keys.F11); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.StepOut", FinishMenu); ToggleBreakPointMenu = new ToolStripMenuItem(TextHelper.GetString("Label.ToggleBreakpoint"), null, ScintillaHelper.ToggleBreakPoint_Click, Keys.F9); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.ToggleBreakpoint", ToggleBreakPointMenu); DeleteAllBreakPointsMenu = new ToolStripMenuItem(TextHelper.GetString("Label.DeleteAllBreakpoints"), null, ScintillaHelper.DeleteAllBreakPoints_Click, Keys.Control | Keys.Shift | Keys.F9); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.DeleteAllBreakpoints", DeleteAllBreakPointsMenu); ToggleBreakPointEnableMenu = new ToolStripMenuItem(TextHelper.GetString("Label.ToggleBreakpointEnabled"), null, ScintillaHelper.ToggleBreakPointEnable_Click, Keys.None); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.ToggleBreakpointEnabled", ToggleBreakPointEnableMenu); DisableAllBreakPointsMenu = new ToolStripMenuItem(TextHelper.GetString("Label.DisableAllBreakpoints"), null, ScintillaHelper.DisableAllBreakPoints_Click, Keys.None); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.DisableAllBreakpoints", DisableAllBreakPointsMenu); EnableAllBreakPointsMenu = new ToolStripMenuItem(TextHelper.GetString("Label.EnableAllBreakpoints"), null, ScintillaHelper.EnableAllBreakPoints_Click, Keys.None); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.EnableAllBreakpoints", EnableAllBreakPointsMenu); StartRemoteDebuggingMenu = new ToolStripMenuItem(TextHelper.GetString("Label.StartRemoteDebugging"), null, StartRemote_Click, Keys.None); PluginBase.MainForm.RegisterShortcutItem("DebugMenu.StartRemoteDebugging", StartRemoteDebuggingMenu); debugMenu.DropDownItems.AddRange(new ToolStripItem[] { StartContinueMenu, PauseMenu, StopMenu, BreakOnAllMenu, new ToolStripSeparator(), CurrentMenu, RunToCursorMenu, StepMenu, NextMenu, FinishMenu, new ToolStripSeparator(), ToggleBreakPointMenu, DeleteAllBreakPointsMenu, ToggleBreakPointEnableMenu, DisableAllBreakPointsMenu, EnableAllBreakPointsMenu, new ToolStripSeparator(), StartRemoteDebuggingMenu }); // ToolStrip m_ToolStripSeparator = new ToolStripSeparator(); m_ToolStripSeparator.Margin = new Padding(1, 0, 0, 0); m_ToolStripSeparator2 = new ToolStripSeparator(); StartContinueButton = new ToolStripButton(TextHelper.GetString("Label.Start"), imgStartContinue, StartContinue_Click); StartContinueButton.DisplayStyle = ToolStripItemDisplayStyle.Image; PluginBase.MainForm.RegisterSecondaryItem("DebugMenu.Start", StartContinueButton); PauseButton = new ToolStripButton(TextHelper.GetString("Label.Pause"), imgPause, debugManager.Pause_Click); PauseButton.DisplayStyle = ToolStripItemDisplayStyle.Image; PluginBase.MainForm.RegisterSecondaryItem("DebugMenu.Pause", PauseButton); StopButton = new ToolStripButton(TextHelper.GetString("Label.Stop"), imgStop, debugManager.Stop_Click); StopButton.DisplayStyle = ToolStripItemDisplayStyle.Image; PluginBase.MainForm.RegisterSecondaryItem("DebugMenu.Stop", StopButton); CurrentButton = new ToolStripButton(TextHelper.GetString("Label.Current"), imgCurrent, debugManager.Current_Click); CurrentButton.DisplayStyle = ToolStripItemDisplayStyle.Image; PluginBase.MainForm.RegisterSecondaryItem("DebugMenu.Current", CurrentButton); RunToCursorButton = new ToolStripButton(TextHelper.GetString("Label.RunToCursor"), imgRunToCursor, ScintillaHelper.RunToCursor_Click); RunToCursorButton.DisplayStyle = ToolStripItemDisplayStyle.Image; PluginBase.MainForm.RegisterSecondaryItem("DebugMenu.RunToCursor", RunToCursorButton); StepButton = new ToolStripButton(TextHelper.GetString("Label.Step"), imgStep, debugManager.Step_Click); StepButton.DisplayStyle = ToolStripItemDisplayStyle.Image; PluginBase.MainForm.RegisterSecondaryItem("DebugMenu.StepInto", StepButton); NextButton = new ToolStripButton(TextHelper.GetString("Label.Next"), imgNext, debugManager.Next_Click); NextButton.DisplayStyle = ToolStripItemDisplayStyle.Image; PluginBase.MainForm.RegisterSecondaryItem("DebugMenu.StepOver", NextButton); FinishButton = new ToolStripButton(TextHelper.GetString("Label.Finish"), imgFinish, debugManager.Finish_Click); FinishButton.DisplayStyle = ToolStripItemDisplayStyle.Image; PluginBase.MainForm.RegisterSecondaryItem("DebugMenu.StepOut", FinishButton); m_ToolStripButtons = new ToolStripItem[] { m_ToolStripSeparator, StartContinueButton, PauseButton, StopButton, m_ToolStripSeparator2, CurrentButton, RunToCursorButton, StepButton, NextButton, FinishButton }; // Events PluginMain.debugManager.StateChangedEvent += UpdateMenuState; PluginMain.settingObject.BreakOnThrowChanged += BreakOnThrowChanged; }