| Newsgroups |
gmane.comp.gnome.mono.patches |
| Message-ID |
<0000014223f4139e-e91024cd-014b-4452-83f6-72cb440e111c-000000@email.amazonses.com> |
Branch: refs/heads/bpDialog2
Home: https://github.com/mono/monodevelop
Compare: https://github.com/mono/monodevelop/compare/8db700bdb9fc...4f86525bf8f2
Commit: 0e253bf04c60e20d6cd7f9596f81fdd2f6016b82
Author: Therzok <[email protected]> (Therzok)
Date: 2013-11-04 16:18:43 GMT
URL: https://github.com/mono/monodevelop/commit/0e253bf04c60e20d6cd7f9596f81fdd2f6016b82
[Debugger] New Dialog.
Changed paths:
M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml
M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.csproj
M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs
M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs
M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs
Added paths:
A main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog2.cs
Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml
===================================================================
@@ -117,10 +117,6 @@
defaultHandler = "MonoDevelop.Debugger.NewBreakpointHandler"
_label = "New Breakpoint..."
icon = "md-breakpoint-new" />
- <Command id = "MonoDevelop.Debugger.DebugCommands.NewFunctionBreakpoint"
- defaultHandler = "MonoDevelop.Debugger.NewFunctionBreakpointHandler"
- _label = "New Function Breakpoint..."
- icon = "md-breakpoint-new" />
<Command id = "MonoDevelop.Debugger.DebugCommands.RemoveBreakpoint"
defaultHandler = "MonoDevelop.Debugger.RemoveBreakpointHandler"
_label = "Remove Breakpoint" />
@@ -193,7 +189,6 @@
<CommandItem id = "MonoDevelop.Debugger.DebugCommands.StepOut" />
<CommandItem id = "MonoDevelop.Debugger.DebugCommands.ShowCurrentExecutionLine" />
<SeparatorItem id = "MonoDevelop.Debugger.BreakpointsSection" />
- <CommandItem id = "MonoDevelop.Debugger.DebugCommands.NewFunctionBreakpoint" />
<CommandItem id = "MonoDevelop.Debugger.DebugCommands.NewBreakpoint" />
<CommandItem id = "MonoDevelop.Debugger.DebugCommands.ToggleBreakpoint" />
<CommandItem id = "MonoDevelop.Debugger.DebugCommands.AddTracepoint" />
Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.csproj
===================================================================
@@ -22,8 +22,8 @@
<Execution>
<Execution clr-version="Net_2_0" />
</Execution>
- <GenerateDocumentation>true</GenerateDocumentation>
<NoWarn>1591;1573</NoWarn>
+ <DocumentationFile>..\..\..\build\AddIns\MonoDevelop.Debugger\MonoDevelop.Debugger.xml</DocumentationFile>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
@@ -36,8 +36,8 @@
<Execution clr-version="Net_2_0" />
</Execution>
<DebugSymbols>true</DebugSymbols>
- <GenerateDocumentation>true</GenerateDocumentation>
<NoWarn>1591;1573</NoWarn>
+ <DocumentationFile>..\..\..\build\AddIns\MonoDevelop.Debugger\MonoDevelop.Debugger.xml</DocumentationFile>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
@@ -149,6 +149,7 @@
<Compile Include="MonoDevelop.Debugger\DebuggerConsoleView.cs" />
<Compile Include="MonoDevelop.Debugger.Visualizer\CStringVisualizer.cs" />
<Compile Include="MonoDevelop.Debugger.Visualizer\ValueVisualizer.cs" />
+ <Compile Include="MonoDevelop.Debugger\BreakpointPropertiesDialog2.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="MonoDevelop.Debugger.addin.xml">
Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs
===================================================================
@@ -204,8 +204,8 @@ protected void OnProperties ()
TreeIter iter;
if (selected.Length == 1 && store.GetIter (out iter, selected[0])) {
- Breakpoint bp = (Breakpoint) store.GetValue (iter, (int) Columns.Breakpoint);
- if (DebuggingService.ShowBreakpointProperties (bp, false))
+ BreakEvent bp = (BreakEvent) store.GetValue (iter, (int) Columns.Breakpoint);
+ if (DebuggingService.ShowBreakpointProperties (ref bp))
UpdateDisplay ();
}
}
Added: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog2.cs
===================================================================
@@ -0,0 +1,502 @@
+//
+// BreakpointsPropertiesDialog.cs
+//
+// Author:
+// Therzok <[email protected]>
+//
+// Copyright (c) 2013 Therzok
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using System;
+using Mono.Debugging.Client;
+using MonoDevelop.Core;
+using MonoDevelop.Projects;
+using MonoDevelop.Ide;
+
+namespace MonoDevelop.Debugger
+{
+ enum ConditionalHitWhen {
+ ConditionIsTrue,
+ ExpressionChanges
+ }
+
+ class BreakpointPropertiesDialog2 : Xwt.Dialog
+ {
+ // For button sensitivity.
+ Xwt.DialogButton buttonOk;
+
+ // Groupings for sensitivity
+ Xwt.HBox hboxFunction = new Xwt.HBox ();
+ Xwt.HBox hboxLocation = new Xwt.HBox ();
+ Xwt.HBox hboxLineColumn = new Xwt.HBox ();
+ Xwt.HBox hboxException = new Xwt.HBox ();
+
+ // Stop-type radios.
+ readonly Xwt.RadioButton stopOnFunction = new Xwt.RadioButton (GettextCatalog.GetString ("When a function is entered"));
+ readonly Xwt.RadioButton stopOnLocation = new Xwt.RadioButton (GettextCatalog.GetString ("When a location is reached"));
+ readonly Xwt.RadioButton stopOnException = new Xwt.RadioButton (GettextCatalog.GetString ("When an exception is thrown"));
+
+ // Text entries
+ readonly Xwt.TextEntry entryFunctionName = new Xwt.TextEntry ();
+ readonly Xwt.TextEntry entryLocationFile = new Xwt.TextEntry ();
+ readonly Xwt.TextEntry entryLocationLine = new Xwt.TextEntry ();
+ readonly Xwt.TextEntry entryLocationColumn = new Xwt.TextEntry ();
+ readonly Xwt.TextEntry entryExceptionType = new Xwt.TextEntry ();
+ readonly Xwt.TextEntry entryConditionalExpression = new Xwt.TextEntry ();
+ readonly Xwt.TextEntry entryPrintExpression = new Xwt.TextEntry ();
+
+ // Warning icon
+ readonly Xwt.ImageView warningFunction = new Xwt.ImageView (Xwt.StockIcons.Warning);
+ readonly Xwt.ImageView warningLocation = new Xwt.ImageView (Xwt.StockIcons.Warning);
+ readonly Xwt.ImageView warningException = new Xwt.ImageView (Xwt.StockIcons.Warning);
+ readonly Xwt.ImageView warningCondition = new Xwt.ImageView (Xwt.StockIcons.Warning);
+
+ // Combobox + Pager
+ readonly Xwt.SpinButton ignoreHitCount = new Xwt.SpinButton ();
+ readonly Xwt.ComboBox ignoreHitType = new Xwt.ComboBox ();
+ readonly Xwt.ComboBox conditionalHitType = new Xwt.ComboBox ();
+
+ // Optional checkboxes.
+ readonly Xwt.CheckBox checkIncludeSubclass = new Xwt.CheckBox (GettextCatalog.GetString ("Include subclasses"));
+ readonly Xwt.CheckBox checkPrintExpression = new Xwt.CheckBox (GettextCatalog.GetString ("Print an expression to the debugger output"));
+ readonly Xwt.CheckBox checkResumeExecution = new Xwt.CheckBox (GettextCatalog.GetString ("Resume execution automatically"));
+
+ BreakEvent be;
+ string[] parsedParamTypes;
+ string parsedFunction;
+
+ public BreakpointPropertiesDialog2 (ref BreakEvent be)
+ {
+ this.be = be;
+
+ Initialize ();
+ SetInitialData ();
+ SetLayout ();
+ }
+
+ void Initialize ()
+ {
+ // TODO: Make dialog for exceptions.
+ Title = GettextCatalog.GetString (be == null ? "New Breakpoint" : "Breakpoint Properties");
+ var buttonLabel = GettextCatalog.GetString (be == null ? "Add breakpoint" : "Modify breakpoint");
+
+ var stopGroup = new Xwt.RadioButtonGroup ();
+ stopOnFunction.Group = stopGroup;
+ stopOnLocation.Group = stopGroup;
+ stopOnException.Group = stopGroup;
+
+ ignoreHitType.Items.Add (HitCountMode.None, GettextCatalog.GetString ("always"));
+ ignoreHitType.Items.Add (HitCountMode.LessThan, GettextCatalog.GetString ("when hit count is less than"));
+ ignoreHitType.Items.Add (HitCountMode.LessThanOrEqualTo, GettextCatalog.GetString ("when hit count is less than or equal to"));
+ ignoreHitType.Items.Add (HitCountMode.EqualTo, GettextCatalog.GetString ("when hit count is equal to"));
+ ignoreHitType.Items.Add (HitCountMode.GreaterThan, GettextCatalog.GetString ("when hit count is greater than"));
+ ignoreHitType.Items.Add (HitCountMode.GreaterThanOrEqualTo, GettextCatalog.GetString ("when hit count is greater than or equal to"));
+ ignoreHitType.Items.Add (HitCountMode.MultipleOf, GettextCatalog.GetString ("when hit count is a multiple of"));
+
+ ignoreHitCount.IncrementValue = 1;
+
+ conditionalHitType.Items.Add (ConditionalHitWhen.ConditionIsTrue, GettextCatalog.GetString ("is true"));
+ conditionalHitType.Items.Add (ConditionalHitWhen.ExpressionChanges, GettextCatalog.GetString ("expression changes"));
+
+ buttonOk = new Xwt.DialogButton (buttonLabel, Xwt.Command.Ok) {
+ Sensitive = false
+ };
+
+ // Register events.
+ stopGroup.ActiveRadioButtonChanged += OnUpdateControls;
+ entryFunctionName.Changed += OnUpdateControls;
+ entryLocationFile.Changed += OnUpdateControls;
+ entryLocationLine.Changed += OnUpdateControls;
+ entryLocationColumn.Changed += OnUpdateControls;
+
+ entryConditionalExpression.Changed += OnUpdateControls;
+ ignoreHitType.SelectionChanged += OnUpdateControls;
+ checkPrintExpression.Toggled += OnUpdateControls;
+
+ buttonOk.Clicked += OnSave;
+ }
+
+ void SetInitialFunctionBreakpointData (FunctionBreakpoint fb)
+ {
+ stopOnFunction.Active = true;
+ if (fb.ParamTypes != null) {
+ // FIXME: support non-C# syntax based on fb.Language
+ entryFunctionName.Text = fb.FunctionName + " (" + String.Join (", ", fb.ParamTypes) + ")";
+ } else
+ entryFunctionName.Text = fb.FunctionName;
+ }
+
+ void SetInitialBreakpointData (Breakpoint bp)
+ {
+ stopOnLocation.Active = true;
+ entryLocationFile.Text = bp.FileName;
+ entryLocationLine.Text = bp.Line.ToString ();
+ entryLocationColumn.Text = bp.Column.ToString ();
+
+ if (!String.IsNullOrEmpty (bp.ConditionExpression)) {
+ entryConditionalExpression.Text = bp.ConditionExpression;
+ conditionalHitType.SelectedItem = bp.BreakIfConditionChanges ? ConditionalHitWhen.ExpressionChanges : ConditionalHitWhen.ConditionIsTrue;
+ }
+
+ Project project = null;
+ if (!String.IsNullOrEmpty (bp.FileName))
+ project = IdeApp.Workspace.GetProjectContainingFile (bp.FileName);
+
+ if (project != null) {
+ // Check the startup project of the solution too, since the current project may be a library
+ SolutionEntityItem startup = project.ParentSolution.StartupItem;
+ entryConditionalExpression.Sensitive = DebuggingService.IsFeatureSupported (project, DebuggerFeatures.ConditionalBreakpoints) ||
+ DebuggingService.IsFeatureSupported (startup, DebuggerFeatures.ConditionalBreakpoints);
+
+ bool canTrace = DebuggingService.IsFeatureSupported (project, DebuggerFeatures.Tracepoints) ||
+ DebuggingService.IsFeatureSupported (startup, DebuggerFeatures.Tracepoints);
+
+ checkPrintExpression.Sensitive = canTrace;
+ entryPrintExpression.Sensitive = canTrace;
+ }
+ }
+
+ void SetInitialCatchpointData (Catchpoint cp)
+ {
+
+ }
+
+ void SetInitialData ()
+ {
+ if (be != null) {
+ stopOnException.Sensitive = false;
+ stopOnFunction.Sensitive = false;
+ stopOnLocation.Sensitive = false;
+ entryLocationFile.ReadOnly = true;
+ entryLocationLine.ReadOnly = true;
+ entryLocationColumn.ReadOnly = true;
+
+ ignoreHitType.SelectedItem = be.HitCountMode;
+ ignoreHitCount.Value = be.HitCount;
+
+ if (be.HitAction == HitAction.PrintExpression) {
+ checkPrintExpression.Active = true;
+ entryPrintExpression.Text = be.TraceExpression;
+ }
+ } else {
+ if (IdeApp.Workbench.ActiveDocument != null) {
+ entryLocationFile.Text = IdeApp.Workbench.ActiveDocument.FileName;
+ entryLocationLine.Text = IdeApp.Workbench.ActiveDocument.Editor.Caret.Line.ToString ();
+ entryLocationColumn.Text = IdeApp.Workbench.ActiveDocument.Editor.Caret.Column.ToString ();
+ }
+
+ ignoreHitType.SelectedItem = HitCountMode.None;
+ conditionalHitType.SelectedItem = ConditionalHitWhen.ConditionIsTrue;
+ }
+
+ var fb = be as FunctionBreakpoint;
+ if (fb != null)
+ SetInitialFunctionBreakpointData (fb);
+
+ var bp = be as Breakpoint;
+ if (bp != null)
+ SetInitialBreakpointData (bp);
+
+ var cp = be as Catchpoint;
+ if (cp != null)
+ SetInitialCatchpointData (cp);
+ }
+
+ void SaveFunctionBreakpoint (FunctionBreakpoint fb, bool isNew)
+ {
+ if (isNew) {
+ fb.FunctionName = parsedFunction;
+ fb.ParamTypes = parsedParamTypes;
+ }
+ }
+
+ void SaveBreakpoint (Breakpoint bp, bool isNew)
+ {
+ if (isNew) {
+ bp.SetColumn (Int32.Parse (entryLocationColumn.Text));
+ bp.SetLine (Int32.Parse (entryLocationLine.Text));
+ }
+
+ if (!String.IsNullOrEmpty (entryConditionalExpression.Text)) {
+ bp.ConditionExpression = entryConditionalExpression.Text;
+ bp.BreakIfConditionChanges = conditionalHitType.SelectedItem.Equals (ConditionalHitWhen.ExpressionChanges);
+ } else
+ bp.ConditionExpression = null;
+ }
+
+ void SaveCatchpoint (Catchpoint cp, bool isNew)
+ {
+
+ }
+
+ void OnSave (object sender, EventArgs e)
+ {
+ bool isNew = false;
+ if (be == null) {
+ isNew = true;
+
+ if (stopOnFunction.Active)
+ be = new FunctionBreakpoint ("", "C#");
+ else if (stopOnLocation.Active)
+ be = new Breakpoint (entryLocationFile.Text, Int32.Parse (entryLocationLine.Text), Int32.Parse (entryLocationColumn.Text));
+ else if (stopOnException.Active)
+ be = new Catchpoint (entryExceptionType.Text);
+ else
+ return;
+ }
+
+ var fb = be as FunctionBreakpoint;
+ if (fb != null)
+ SaveFunctionBreakpoint (fb, isNew);
+
+ var bp = be as Breakpoint;
+ if (bp != null)
+ SaveBreakpoint (bp, isNew);
+
+ var cp = be as Catchpoint;
+ if (cp != null)
+ SaveCatchpoint (cp, isNew);
+
+ be.HitCountMode = (HitCountMode)ignoreHitType.SelectedItem;
+ be.HitCount = be.HitCountMode != HitCountMode.None ? (int)ignoreHitCount.Value : 0;
+
+ if (checkPrintExpression.Active) {
+ // FIXME: Make HitAction flags.
+ be.HitAction = HitAction.PrintExpression;
+ be.TraceExpression = entryPrintExpression.Text;
+ }
+ be.HitAction = HitAction.Break;
+
+ be.CommitChanges ();
+ }
+
+ void OnUpdateControls (object sender, EventArgs e)
+ {
+ // Check which radio is selected.
+ hboxFunction.Sensitive = stopOnFunction.Active;
+ hboxLineColumn.Sensitive = stopOnLocation.Active;
+ hboxLocation.Sensitive = stopOnLocation.Active;
+ hboxException.Sensitive = stopOnException.Active;
+ checkIncludeSubclass.Sensitive = stopOnException.Active;
+
+ // Check conditional
+ if (!String.IsNullOrEmpty (entryConditionalExpression.Text))
+ conditionalHitType.Show ();
+ else
+ conditionalHitType.Hide ();
+
+ // Check ignoring hit counts.
+ if (ignoreHitType.SelectedItem.Equals (HitCountMode.None))
+ ignoreHitCount.Hide ();
+ else
+ ignoreHitCount.Show ();
+
+ // Check printing an expression.
+ entryPrintExpression.Sensitive = checkPrintExpression.Active;
+ checkResumeExecution.Sensitive = checkPrintExpression.Active;
+
+ // And display warning icons
+ buttonOk.Sensitive = CheckValidity ();
+ }
+
+ bool CheckValidity ()
+ {
+ if (be is FunctionBreakpoint) {
+ string text = entryFunctionName.Text.Trim ();
+
+ if (stopOnFunction.Active) {
+ if (text.Length == 0) {
+ warningFunction.Show ();
+ warningFunction.TooltipText = GettextCatalog.GetString ("Function name not specified");
+ return false;
+ }
+
+ if (!TryParseFunction (text, out parsedFunction, out parsedParamTypes)) {
+ warningFunction.Show ();
+ warningFunction.TooltipText = GettextCatalog.GetString ("Invalid function syntax");
+ return false;
+ }
+ }
+ } else if (be is Breakpoint) {
+ if (!System.IO.File.Exists (entryLocationFile.Text)) {
+ warningLocation.Show ();
+ warningLocation.TooltipText = GettextCatalog.GetString ("File does not exist");
+ return false;
+ }
+
+ int val;
+ if (!Int32.TryParse (entryLocationLine.Text, out val)) {
+ warningLocation.Show ();
+ warningLocation.TooltipText = GettextCatalog.GetString ("Line is not a number");
+ return false;
+ }
+
+ if (!Int32.TryParse (entryLocationColumn.Text, out val)) {
+ warningLocation.Show ();
+ warningLocation.TooltipText = GettextCatalog.GetString ("Column is not a number");
+ return false;
+ }
+
+ if (stopOnLocation.Active) {
+ if (checkPrintExpression.Active && entryPrintExpression.Text.Length == 0) {
+ warningCondition.Show ();
+ warningCondition.TooltipText = GettextCatalog.GetString ("Trace expression not specified");
+ return false;
+ }
+ }
+ } else if (be is Catchpoint) {
+
+ }
+
+ warningFunction.Hide ();
+ warningLocation.Hide ();
+ warningException.Hide ();
+ warningCondition.Hide ();
+
+ // Implement catchpoint
+
+ return true;
+ }
+
+ static bool TryParseFunction (string signature, out string function, out string[] paramTypes)
+ {
+ int paramListStart = signature.IndexOf ('(');
+ int paramListEnd = signature.IndexOf (')');
+
+ if (paramListStart == -1 && paramListEnd == -1) {
+ function = signature;
+ paramTypes = null;
+ return true;
+ }
+
+ if (paramListEnd != signature.Length - 1) {
+ paramTypes = null;
+ function = null;
+ return false;
+ }
+
+ function = signature.Substring (0, paramListStart).Trim ();
+
+ paramListStart++;
+
+ if (!FunctionBreakpoint.TryParseParameters (signature, paramListStart, paramListEnd, out paramTypes)) {
+ paramTypes = null;
+ function = null;
+ return false;
+ }
+
+ return true;
+ }
+
+ void SetLayout ()
+ {
+ var vbox = new Xwt.VBox ();
+ vbox.MinHeight = 400;
+ vbox.MinWidth = 450;
+
+ vbox.PackStart (new Xwt.Label (GettextCatalog.GetString ("Pause program execution in the debugger")));
+
+ // Radio group
+ var vboxRadio = new Xwt.VBox {
+ MarginLeft = 12
+ };
+
+ // Function group
+ vboxRadio.PackStart (stopOnFunction);
+
+ hboxFunction = new Xwt.HBox {
+ MarginLeft = 12
+ };
+ hboxFunction.PackStart (new Xwt.Label (GettextCatalog.GetString ("Function:")));
+ hboxFunction.PackStart (entryFunctionName, true);
+ hboxFunction.PackEnd (warningFunction);
+
+ vboxRadio.PackStart (hboxFunction);
+
+ // Location group
+ vboxRadio.PackStart (stopOnLocation);
+
+ var vboxLocation = new Xwt.VBox {
+ MarginLeft = 12
+ };
+ hboxLocation = new Xwt.HBox ();
+ hboxLocation.PackStart (new Xwt.Label (GettextCatalog.GetString ("Location:")));
+ hboxLocation.PackStart (entryLocationFile, true);
+ hboxLocation.PackEnd (warningLocation);
+ vboxLocation.PackStart (hboxLocation);
+
+ hboxLineColumn = new Xwt.HBox ();
+ hboxLineColumn.PackStart (new Xwt.Label (GettextCatalog.GetString ("Line:")));
+ hboxLineColumn.PackStart (entryLocationLine);
+ hboxLineColumn.PackStart (new Xwt.Label (GettextCatalog.GetString ("Column:")));
+ hboxLineColumn.PackStart (entryLocationColumn);
+ vboxLocation.PackStart (hboxLineColumn);
+
+ vboxRadio.PackStart (vboxLocation);
+
+ // Exception group
+ vboxRadio.PackStart (stopOnException);
+
+ var vboxException = new Xwt.VBox {
+ MarginLeft = 12
+ };
+ hboxException = new Xwt.HBox ();
+ hboxException.PackStart (new Xwt.Label (GettextCatalog.GetString ("Type:")));
+ hboxException.PackStart (entryExceptionType, true);
+ hboxException.PackEnd (warningException);
+
+ vboxException.PackStart (hboxException);
+ vboxException.PackStart (checkIncludeSubclass);
+ vboxRadio.PackStart (vboxException);
+
+ vbox.PackStart (vboxRadio);
+
+ var hboxCondition = new Xwt.HBox ();
+ hboxCondition.PackStart (new Xwt.Label (GettextCatalog.GetString ("Condition:")));
+ hboxCondition.PackStart (entryConditionalExpression, true);
+ hboxCondition.PackEnd (warningCondition);
+ hboxCondition.PackEnd (conditionalHitType);
+
+ vbox.PackStart (hboxCondition);
+
+ var hboxHitCount = new Xwt.HBox ();
+ hboxHitCount.PackStart (new Xwt.Label (GettextCatalog.GetString ("When hit break")));
+ hboxHitCount.PackStart (ignoreHitType);
+ hboxHitCount.PackStart (ignoreHitCount);
+
+ vbox.PackStart (hboxHitCount);
+
+ vbox.PackStart (checkPrintExpression);
+ var vboxExpression = new Xwt.VBox {
+ MarginLeft = 12
+ };
+ vboxExpression.PackStart (entryPrintExpression);
+ vboxExpression.PackStart (checkResumeExecution);
+
+ vbox.PackStart (vboxExpression);
+
+ Buttons.Add (new Xwt.DialogButton (Xwt.Command.Cancel));
+ Buttons.Add (buttonOk);
+
+ Content = vbox;
+
+ OnUpdateControls (null, null);
+ }
+ }
+}
\ No newline at end of file
Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs
===================================================================
@@ -555,46 +555,21 @@ class NewBreakpointHandler: CommandHandler
{
protected override void Run ()
{
- Breakpoint bp = new Breakpoint (IdeApp.Workbench.ActiveDocument.FileName, IdeApp.Workbench.ActiveDocument.Editor.Caret.Line, IdeApp.Workbench.ActiveDocument.Editor.Caret.Column);
- if (DebuggingService.ShowBreakpointProperties (bp, true)) {
- var breakpoints = DebuggingService.Breakpoints;
+ BreakEvent bp = null;
+ if (DebuggingService.ShowBreakpointProperties (ref bp)) {
+ if (bp is Breakpoint) {
+ var breakpoints = DebuggingService.Breakpoints;
- lock (breakpoints)
- breakpoints.Add (bp);
- }
- }
-
- protected override void Update (CommandInfo info)
- {
- info.Visible = DebuggingService.IsFeatureSupported (DebuggerFeatures.Breakpoints);
- if (IdeApp.Workbench.ActiveDocument != null &&
- IdeApp.Workbench.ActiveDocument.Editor != null &&
- IdeApp.Workbench.ActiveDocument.FileName != FilePath.Null &&
- !DebuggingService.Breakpoints.IsReadOnly) {
- info.Enabled = true;
- } else {
- info.Enabled = false;
- }
- }
- }
-
- class NewFunctionBreakpointHandler: CommandHandler
- {
- protected override void Run ()
- {
- FunctionBreakpoint bp = new FunctionBreakpoint ("", "C#");
- if (DebuggingService.ShowBreakpointProperties (bp, true)) {
- var breakpoints = DebuggingService.Breakpoints;
-
- lock (breakpoints)
- breakpoints.Add (bp);
+ lock (breakpoints)
+ breakpoints.Add (bp);
+ }
}
}
protected override void Update (CommandInfo info)
{
info.Visible = DebuggingService.IsFeatureSupported (DebuggerFeatures.Breakpoints);
- info.Enabled = !DebuggingService.Breakpoints.IsReadOnly && IdeApp.Workspace.IsOpen;
+ info.Enabled = !DebuggingService.Breakpoints.IsReadOnly;
}
}
@@ -611,8 +586,10 @@ protected override void Run ()
IdeApp.Workbench.ActiveDocument.Editor.Caret.Line);
}
- if (brs.Count > 0)
- DebuggingService.ShowBreakpointProperties (brs[0], false);
+ if (brs.Count > 0) {
+ BreakEvent be = brs [0];
+ DebuggingService.ShowBreakpointProperties (ref be);
+ }
}
protected override void Update (CommandInfo info)
Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs
===================================================================
@@ -215,12 +215,11 @@ public static void ShowValueVisualizer (ObjectValue val)
MessageService.ShowCustomDialog (dlg);
}
- public static bool ShowBreakpointProperties (Breakpoint bp, bool editNew)
+ public static bool ShowBreakpointProperties (ref BreakEvent bp)
{
- var dlg = new BreakpointPropertiesDialog (bp, editNew);
- if (MessageService.ShowCustomDialog (dlg) == (int) Gtk.ResponseType.Ok)
- return true;
- return false;
+ using (var dlg = new BreakpointPropertiesDialog2 (ref bp)) {
+ return dlg.Run () == Xwt.Command.Ok;
+ }
}
public static void ShowAddTracepointDialog (string file, int line)
Commit: 7fbbaca5ef5dbf9414244907ceab25ca8b581ebc
Author: Therzok <[email protected]> (Therzok)
Date: 2013-11-04 16:18:43 GMT
URL: https://github.com/mono/monodevelop/commit/7fbbaca5ef5dbf9414244907ceab25ca8b581ebc
[Debugger] Fixed new Breakpoints Properties dialog to handle catchpoints.
Changed paths:
M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog2.cs
M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs
M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs
Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog2.cs
===================================================================
@@ -28,6 +28,9 @@
using MonoDevelop.Core;
using MonoDevelop.Projects;
using MonoDevelop.Ide;
+using System.Collections.Generic;
+using MonoDevelop.Ide.TypeSystem;
+using ICSharpCode.NRefactory.TypeSystem;
namespace MonoDevelop.Debugger
{
@@ -80,11 +83,13 @@ class BreakpointPropertiesDialog2 : Xwt.Dialog
BreakEvent be;
string[] parsedParamTypes;
string parsedFunction;
+ readonly HashSet<string> classes = new HashSet<string> ();
- public BreakpointPropertiesDialog2 (ref BreakEvent be)
+ public BreakpointPropertiesDialog2 (BreakEvent be)
{
this.be = be;
+ LoadExceptionList ();
Initialize ();
SetInitialData ();
SetLayout ();
@@ -174,7 +179,7 @@ void SetInitialBreakpointData (Breakpoint bp)
void SetInitialCatchpointData (Catchpoint cp)
{
-
+ entryExceptionType.Text = cp.ExceptionName;
}
void SetInitialData ()
@@ -186,6 +191,7 @@ void SetInitialData ()
entryLocationFile.ReadOnly = true;
entryLocationLine.ReadOnly = true;
entryLocationColumn.ReadOnly = true;
+ entryExceptionType.ReadOnly = true;
ignoreHitType.SelectedItem = be.HitCountMode;
ignoreHitCount.Value = be.HitCount;
@@ -218,12 +224,10 @@ void SetInitialData ()
SetInitialCatchpointData (cp);
}
- void SaveFunctionBreakpoint (FunctionBreakpoint fb, bool isNew)
+ void SaveFunctionBreakpoint (FunctionBreakpoint fb)
{
- if (isNew) {
- fb.FunctionName = parsedFunction;
- fb.ParamTypes = parsedParamTypes;
- }
+ fb.FunctionName = parsedFunction;
+ fb.ParamTypes = parsedParamTypes;
}
void SaveBreakpoint (Breakpoint bp, bool isNew)
@@ -240,9 +244,13 @@ void SaveBreakpoint (Breakpoint bp, bool isNew)
bp.ConditionExpression = null;
}
- void SaveCatchpoint (Catchpoint cp, bool isNew)
+ void SaveCatchpoint (Catchpoint cp)
{
-
+ if (checkIncludeSubclass.Active) {
+ // add stuff
+ } else {
+ // remove stuff
+ }
}
void OnSave (object sender, EventArgs e)
@@ -263,7 +271,7 @@ void OnSave (object sender, EventArgs e)
var fb = be as FunctionBreakpoint;
if (fb != null)
- SaveFunctionBreakpoint (fb, isNew);
+ SaveFunctionBreakpoint (fb);
var bp = be as Breakpoint;
if (bp != null)
@@ -271,7 +279,7 @@ void OnSave (object sender, EventArgs e)
var cp = be as Catchpoint;
if (cp != null)
- SaveCatchpoint (cp, isNew);
+ SaveCatchpoint (cp);
be.HitCountMode = (HitCountMode)ignoreHitType.SelectedItem;
be.HitCount = be.HitCountMode != HitCountMode.None ? (int)ignoreHitCount.Value : 0;
@@ -361,7 +369,11 @@ bool CheckValidity ()
}
}
} else if (be is Catchpoint) {
-
+ if (!classes.Contains (entryExceptionType.Text)) {
+ warningException.Show ();
+ warningException.TooltipText = GettextCatalog.GetString ("Exception not identified");
+ return false;
+ }
}
warningFunction.Hide ();
@@ -369,8 +381,6 @@ bool CheckValidity ()
warningException.Hide ();
warningCondition.Hide ();
- // Implement catchpoint
-
return true;
}
@@ -404,6 +414,30 @@ static bool TryParseFunction (string signature, out string function, out string[
return true;
}
+ void LoadExceptionList ()
+ {
+ classes.Add ("System.Exception");
+ if (IdeApp.ProjectOperations.CurrentSelectedProject != null) {
+ var dom = TypeSystemService.GetCompilation (IdeApp.ProjectOperations.CurrentSelectedProject);
+ foreach (var t in dom.FindType (typeof (Exception)).GetSubTypeDefinitions ())
+ classes.Add (t.ReflectionName);
+ } else {
+ // no need to unload this assembly context, it's not cached.
+ var unresolvedAssembly = TypeSystemService.LoadAssemblyContext (Runtime.SystemAssemblyService.CurrentRuntime, MonoDevelop.Core.Assemblies.TargetFramework.Default, typeof(Uri).Assembly.Location);
+ var mscorlib = TypeSystemService.LoadAssemblyContext (Runtime.SystemAssemblyService.CurrentRuntime, MonoDevelop.Core.Assemblies.TargetFramework.Default, typeof(object).Assembly.Location);
+ if (unresolvedAssembly != null && mscorlib != null) {
+ var dom = new ICSharpCode.NRefactory.TypeSystem.Implementation.SimpleCompilation (unresolvedAssembly, mscorlib);
+ foreach (var t in dom.FindType (typeof (Exception)).GetSubTypeDefinitions ())
+ classes.Add (t.ReflectionName);
+ }
+ }
+ }
+
+ public BreakEvent GetBreakEvent ()
+ {
+ return be;
+ }
+
void SetLayout ()
{
var vbox = new Xwt.VBox ();
Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs
===================================================================
@@ -557,12 +557,10 @@ protected override void Run ()
{
BreakEvent bp = null;
if (DebuggingService.ShowBreakpointProperties (ref bp)) {
- if (bp is Breakpoint) {
- var breakpoints = DebuggingService.Breakpoints;
+ var breakpoints = DebuggingService.Breakpoints;
- lock (breakpoints)
- breakpoints.Add (bp);
- }
+ lock (breakpoints)
+ breakpoints.Add (bp);
}
}
Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs
===================================================================
@@ -217,8 +217,11 @@ public static void ShowValueVisualizer (ObjectValue val)
public static bool ShowBreakpointProperties (ref BreakEvent bp)
{
- using (var dlg = new BreakpointPropertiesDialog2 (ref bp)) {
- return dlg.Run () == Xwt.Command.Ok;
+ using (var dlg = new BreakpointPropertiesDialog2 (bp)) {
+ Xwt.Command response = dlg.Run ();
+ if (bp == null)
+ bp = dlg.GetBreakEvent ();
+ return response == Xwt.Command.Ok;
}
}
Commit: 31a4062d726df925f66b0717c0abd998a531929a
Author: Therzok <[email protected]> (Therzok)
Date: 2013-11-04 16:18:44 GMT
URL: https://github.com/mono/monodevelop/commit/31a4062d726df925f66b0717c0abd998a531929a
[Debugger] Removed Catchpoints dialog.
Integrated catchpoints into breakpoints pad.
Changed paths:
M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml
M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.csproj
M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs
M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog2.cs
M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs
M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs
Removed paths:
D main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ExceptionsDialog.cs
Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml
===================================================================
@@ -154,9 +154,6 @@
_label = "Expression Evaluator"
shortcut = "Shift|F9"
defaultHandler = "MonoDevelop.Debugger.ExpressionEvaluatorCommand" />
- <Command id = "MonoDevelop.Debugger.DebugCommands.SelectExceptions"
- _label = "Exceptions..."
- defaultHandler = "MonoDevelop.Debugger.SelectExceptionsCommand" />
<Command id = "MonoDevelop.Debugger.DebugCommands.ShowCurrentExecutionLine"
_label = "Show Current Execution Line"
shortcut = "Alt|*"
@@ -195,7 +192,6 @@
<CommandItem id = "MonoDevelop.Debugger.DebugCommands.EnableDisableBreakpoint" />
<CommandItem id = "MonoDevelop.Debugger.DebugCommands.DisableAllBreakpoints" />
<CommandItem id = "MonoDevelop.Debugger.DebugCommands.ClearAllBreakpoints" />
- <CommandItem id = "MonoDevelop.Debugger.DebugCommands.SelectExceptions" />
<SeparatorItem id = "MonoDevelop.Debugger.ToolsSection" />
<CommandItem id = "MonoDevelop.Debugger.DebugCommands.ExpressionEvaluator" />
</Extension>
Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.csproj
===================================================================
@@ -116,7 +116,6 @@
<Compile Include="MonoDevelop.Debugger\DebugCommands.cs" />
<Compile Include="MonoDevelop.Debugger\Extensions.cs" />
<Compile Include="MonoDevelop.Debugger\AttachToProcessDialog.cs" />
- <Compile Include="MonoDevelop.Debugger\ExceptionsDialog.cs" />
<Compile Include="gtk-gui\MonoDevelop.Debugger.ExceptionsDialog.cs" />
<Compile Include="gtk-gui\MonoDevelop.Debugger.AttachToProcessDialog.cs" />
<Compile Include="MonoDevelop.Debugger\ExpressionEvaluatorDialog.cs" />
Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs
===================================================================
@@ -45,7 +45,7 @@ public class BreakpointPad : IPadContent
BreakpointStore breakpoints;
PadTreeView tree;
- Gtk.TreeStore store;
+ TreeStore store;
Widget control;
ScrolledWindow sw;
CommandEntrySet menuSet;
@@ -225,7 +225,7 @@ protected void OnEnableDisable ()
if (!store.GetIter (out iter, path))
continue;
- Breakpoint bp = (Breakpoint) store.GetValue (iter, (int) Columns.Breakpoint);
+ BreakEvent bp = (BreakEvent) store.GetValue (iter, (int) Columns.Breakpoint);
if (!bp.Enabled) {
enable = true;
break;
@@ -238,7 +238,7 @@ protected void OnEnableDisable ()
if (!store.GetIter (out iter, path))
continue;
- Breakpoint bp = (Breakpoint) store.GetValue (iter, (int) Columns.Breakpoint);
+ BreakEvent bp = (BreakEvent) store.GetValue (iter, (int) Columns.Breakpoint);
bp.Enabled = enable;
store.SetValue (iter, (int) Columns.Icon, enable ? "md-breakpoint" : "md-breakpoint-disabled");
@@ -256,9 +256,12 @@ protected void OnBpJumpTo ()
TreeIter iter;
if (selected.Length == 1 && store.GetIter (out iter, selected[0])) {
- Breakpoint bp = (Breakpoint) store.GetValue (iter, (int) Columns.Breakpoint);
- if (!string.IsNullOrEmpty (bp.FileName))
- IdeApp.Workbench.OpenDocument (bp.FileName, bp.Line, 1);
+ var be = (BreakEvent) store.GetValue (iter, (int) Columns.Breakpoint);
+ var bp = be as Breakpoint;
+ if (bp != null) {
+ if (!string.IsNullOrEmpty (bp.FileName))
+ IdeApp.Workbench.OpenDocument (bp.FileName, bp.Line, 1);
+ }
}
}
@@ -280,7 +283,7 @@ bool DeleteSelectedBreakpoints ()
if (!store.GetIter (out iter, path))
continue;
- var bp = (Breakpoint) store.GetValue (iter, (int) Columns.Breakpoint);
+ var bp = (BreakEvent) store.GetValue (iter, (int) Columns.Breakpoint);
lock (breakpoints)
breakpoints.Remove (bp);
deleted = true;
@@ -359,7 +362,7 @@ void ItemToggled (object o, ToggledArgs args)
TreeIter iter;
if (store.GetIterFromString (out iter, args.Path)) {
- Breakpoint bp = (Breakpoint) store.GetValue (iter, (int) Columns.Breakpoint);
+ BreakEvent bp = (BreakEvent) store.GetValue (iter, (int) Columns.Breakpoint);
bp.Enabled = !bp.Enabled;
store.SetValue (iter, (int) Columns.Icon, bp.Enabled ? "md-breakpoint" : "md-breakpoint-disabled");
@@ -380,27 +383,32 @@ public void UpdateDisplay ()
store.Clear ();
if (breakpoints != null) {
lock (breakpoints) {
- foreach (Breakpoint bp in breakpoints.GetBreakpoints ()) {
- string hitCount = bp.HitCountMode != HitCountMode.None ? bp.CurrentHitCount.ToString () : "";
- string traceExp = bp.HitAction == HitAction.PrintExpression ? bp.TraceExpression : "";
- string traceVal = bp.HitAction == HitAction.PrintExpression ? bp.LastTraceValue : "";
+ foreach (BreakEvent be in breakpoints.GetBreakevents ()) {
+ string hitCount = be.HitCountMode != HitCountMode.None ? be.CurrentHitCount.ToString () : "";
+ string traceExp = be.HitAction == HitAction.PrintExpression ? be.TraceExpression : "";
+ string traceVal = be.HitAction == HitAction.PrintExpression ? be.LastTraceValue : "";
string name;
- if (bp is FunctionBreakpoint) {
- FunctionBreakpoint fb = (FunctionBreakpoint) bp;
-
+ var fb = be as FunctionBreakpoint;
+ var bp = be as Breakpoint;
+ var cp = be as Catchpoint;
+ if (fb != null) {
if (fb.ParamTypes != null)
name = fb.FunctionName + "(" + string.Join (", ", fb.ParamTypes) + ")";
else
name = fb.FunctionName;
+ } else if (bp != null) {
+ name = String.Format ("{0}:{1},{2}", bp.FileName, bp.Line, bp.Column);
+ } else if (cp != null) {
+ name = cp.ExceptionName;
} else {
- name = string.Format ("{0}:{1},{2}", ((Breakpoint) bp).FileName, bp.Line, bp.Column);
+ name = "";
}
- if (bp.Enabled)
- store.AppendValues ("md-breakpoint", true, name, bp, bp.ConditionExpression, traceExp, hitCount, traceVal);
+ if (be.Enabled)
+ store.AppendValues ("md-breakpoint", true, name, be, bp != null ? bp.ConditionExpression : null, traceExp, hitCount, traceVal);
else
- store.AppendValues ("md-breakpoint-disabled", false, name, bp, bp.ConditionExpression, traceExp, hitCount, traceVal);
+ store.AppendValues ("md-breakpoint-disabled", false, name, be, bp != null ? bp.ConditionExpression : null, traceExp, hitCount, traceVal);
}
}
}
@@ -416,7 +424,7 @@ void OnBreakpointUpdated (object s, BreakpointEventArgs args)
return;
do {
- Breakpoint bp = (Breakpoint) store.GetValue (it, (int) Columns.Breakpoint);
+ var bp = (BreakEvent) store.GetValue (it, (int) Columns.Breakpoint);
if (bp == args.Breakpoint) {
string hitCount = bp.HitCountMode != HitCountMode.None ? bp.CurrentHitCount.ToString () : "";
string traceVal = bp.HitAction == HitAction.PrintExpression ? bp.LastTraceValue : "";
Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog2.cs
===================================================================
@@ -49,6 +49,7 @@ class BreakpointPropertiesDialog2 : Xwt.Dialog
Xwt.HBox hboxLocation = new Xwt.HBox ();
Xwt.HBox hboxLineColumn = new Xwt.HBox ();
Xwt.HBox hboxException = new Xwt.HBox ();
+ Xwt.HBox hboxCondition = new Xwt.HBox ();
// Stop-type radios.
readonly Xwt.RadioButton stopOnFunction = new Xwt.RadioButton (GettextCatalog.GetString ("When a function is entered"));
@@ -97,7 +98,6 @@ public BreakpointPropertiesDialog2 (BreakEvent be)
void Initialize ()
{
- // TODO: Make dialog for exceptions.
Title = GettextCatalog.GetString (be == null ? "New Breakpoint" : "Breakpoint Properties");
var buttonLabel = GettextCatalog.GetString (be == null ? "Add breakpoint" : "Modify breakpoint");
@@ -134,6 +134,10 @@ void Initialize ()
ignoreHitType.SelectionChanged += OnUpdateControls;
checkPrintExpression.Toggled += OnUpdateControls;
+ entryFunctionName.Changed += OnUpdateText;
+ entryLocationFile.Changed += OnUpdateText;
+ entryExceptionType.Changed += OnUpdateText;
+
buttonOk.Clicked += OnSave;
}
@@ -201,14 +205,14 @@ void SetInitialData ()
entryPrintExpression.Text = be.TraceExpression;
}
} else {
+ ignoreHitType.SelectedItem = HitCountMode.None;
+ conditionalHitType.SelectedItem = ConditionalHitWhen.ConditionIsTrue;
+
if (IdeApp.Workbench.ActiveDocument != null) {
entryLocationFile.Text = IdeApp.Workbench.ActiveDocument.FileName;
entryLocationLine.Text = IdeApp.Workbench.ActiveDocument.Editor.Caret.Line.ToString ();
entryLocationColumn.Text = IdeApp.Workbench.ActiveDocument.Editor.Caret.Column.ToString ();
}
-
- ignoreHitType.SelectedItem = HitCountMode.None;
- conditionalHitType.SelectedItem = ConditionalHitWhen.ConditionIsTrue;
}
var fb = be as FunctionBreakpoint;
@@ -302,6 +306,7 @@ void OnUpdateControls (object sender, EventArgs e)
hboxLocation.Sensitive = stopOnLocation.Active;
hboxException.Sensitive = stopOnException.Active;
checkIncludeSubclass.Sensitive = stopOnException.Active;
+ hboxCondition.Sensitive = !stopOnException.Active;
// Check conditional
if (!String.IsNullOrEmpty (entryConditionalExpression.Text))
@@ -323,6 +328,13 @@ void OnUpdateControls (object sender, EventArgs e)
buttonOk.Sensitive = CheckValidity ();
}
+ void OnUpdateText (object sender, EventArgs e)
+ {
+
+
+ buttonOk.Sensitive = CheckValidity ();
+ }
+
bool CheckValidity ()
{
if (be is FunctionBreakpoint) {
@@ -501,7 +513,7 @@ void SetLayout ()
vbox.PackStart (vboxRadio);
- var hboxCondition = new Xwt.HBox ();
+ hboxCondition = new Xwt.HBox ();
hboxCondition.PackStart (new Xwt.Label (GettextCatalog.GetString ("Condition:")));
hboxCondition.PackStart (entryConditionalExpression, true);
hboxCondition.PackEnd (warningCondition);
Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs
===================================================================
@@ -59,7 +59,6 @@ public enum DebugCommands
RemoveBreakpoint,
ShowBreakpointProperties,
ExpressionEvaluator,
- SelectExceptions,
ShowCurrentExecutionLine,
AddTracepoint,
AddWatch,
@@ -620,19 +619,6 @@ protected override void Update (CommandInfo info)
info.Enabled = DebuggingService.CurrentFrame != null;
}
}
-
- class SelectExceptionsCommand: CommandHandler
- {
- protected override void Run ()
- {
- DebuggingService.ShowExceptionsFilters ();
- }
-
- protected override void Update (CommandInfo info)
- {
- info.Visible = DebuggingService.IsFeatureSupported (DebuggerFeatures.Catchpoints);
- }
- }
class ShowCurrentExecutionLineCommand : CommandHandler
{
Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs
===================================================================
@@ -327,11 +327,6 @@ static void HideExceptionCaughtDialog ()
return exceptionDialog;
}
}
-
- public static void ShowExceptionsFilters ()
- {
- MessageService.ShowCustomDialog (new ExceptionsDialog ());
- }
static void SetupSession ()
{
Removed: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ExceptionsDialog.cs
===================================================================
@@ -1,245 +0,0 @@
-// ExceptionsDialog.cs
-//
-// Author:
-// Lluis Sanchez Gual <[email protected]>
-//
-// Copyright (c) 2008 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-//
-//
-
-using System;
-using System.Collections.Generic;
-using Gtk;
-using MonoDevelop.Core;
-using MonoDevelop.Components;
-using Mono.Debugging.Client;
-using MonoDevelop.Ide;
-using ICSharpCode.NRefactory.TypeSystem;
-using MonoDevelop.Ide.TypeSystem;
-
-namespace MonoDevelop.Debugger
-{
- public partial class ExceptionsDialog : Gtk.Dialog
- {
- ListStore storeExceptions;
- ListStore storeSelection;
- HashSet<string> classes = new HashSet<string> ();
- TreeViewState tstateExc;
- TreeViewState tstateSel;
- bool updateScheduled;
- HashSet<string> selectedClasses = new HashSet<string> ();
-
- public ExceptionsDialog()
- {
- this.Build ();
-
- storeExceptions = new ListStore (typeof(String));
- treeExceptions.Selection.Mode = SelectionMode.Multiple;
- treeExceptions.Model = storeExceptions;
- treeExceptions.AppendColumn ("", new CellRendererText (), "text", 0);
- tstateExc = new TreeViewState (treeExceptions, 0);
- storeExceptions.SetSortColumnId (0, SortType.Ascending);
-
- storeSelection = new ListStore (typeof(String));
- treeSelected.Selection.Mode = SelectionMode.Multiple;
- treeSelected.Model = storeSelection;
- treeSelected.AppendColumn ("", new CellRendererText (), "text", 0);
- tstateSel = new TreeViewState (treeSelected, 0);
- storeSelection.SetSortColumnId (0, SortType.Ascending);
-
- var breakpoints = DebuggingService.Breakpoints;
- lock (breakpoints) {
- foreach (Catchpoint cp in breakpoints.GetCatchpoints ())
- selectedClasses.Add (cp.ExceptionName);
- }
-
- LoadExceptions ();
-
- FillSelection ();
- FillExceptions ();
- }
-
- void LoadExceptions ()
- {
- classes.Add ("System.Exception");
- if (IdeApp.ProjectOperations.CurrentSelectedProject != null) {
- var dom = TypeSystemService.GetCompilation (IdeApp.ProjectOperations.CurrentSelectedProject);
- foreach (var t in dom.FindType (typeof (Exception)).GetSubTypeDefinitions ())
- classes.Add (t.ReflectionName);
- } else {
- // no need to unload this assembly context, it's not cached.
- var unresolvedAssembly = TypeSystemService.LoadAssemblyContext (Runtime.SystemAssemblyService.CurrentRuntime, MonoDevelop.Core.Assemblies.TargetFramework.Default, typeof(Uri).Assembly.Location);
- var mscorlib = TypeSystemService.LoadAssemblyContext (Runtime.SystemAssemblyService.CurrentRuntime, MonoDevelop.Core.Assemblies.TargetFramework.Default, typeof(object).Assembly.Location);
- if (unresolvedAssembly != null && mscorlib != null) {
- var dom = new ICSharpCode.NRefactory.TypeSystem.Implementation.SimpleCompilation (unresolvedAssembly, mscorlib);
- foreach (var t in dom.FindType (typeof (Exception)).GetSubTypeDefinitions ())
- classes.Add (t.ReflectionName);
- }
- }
- }
-
- void FillExceptions ()
- {
- tstateExc.Save ();
- storeExceptions.Clear ();
- string filter = entryFilter.Text;
- foreach (string t in classes) {
- if ((filter.Length == 0 || t.IndexOf (filter, StringComparison.OrdinalIgnoreCase) != -1) && !selectedClasses.Contains (t))
- storeExceptions.AppendValues (t);
- }
- tstateExc.Load ();
- if (treeExceptions.Selection.CountSelectedRows () == 0) {
- TreeIter it;
- if (storeExceptions.GetIterFirst (out it))
- treeExceptions.Selection.SelectIter (it);
- }
- }
-
- void FillSelection ()
- {
- tstateSel.Save ();
- storeSelection.Clear ();
- foreach (string exc in selectedClasses)
- storeSelection.AppendValues (exc);
- tstateSel.Load ();
- if (treeSelected.Selection.CountSelectedRows () == 0) {
- TreeIter it;
- if (storeSelection.GetIterFirst (out it))
- treeSelected.Selection.SelectIter (it);
- }
- }
-
- protected virtual void OnEntryFilterChanged (object sender, System.EventArgs e)
- {
- if (!updateScheduled) {
- updateScheduled = true;
- GLib.Timeout.Add (200, delegate {
- updateScheduled = false;
- FillExceptions ();
- return false;
- });
- }
- }
-
- protected virtual void OnButtonAddClicked (object sender, System.EventArgs e)
- {
- foreach (TreePath path in treeExceptions.Selection.GetSelectedRows ()) {
- TreeIter it;
- if (storeExceptions.GetIter (out it, path)) {
- string exc = (string) storeExceptions.GetValue (it, 0);
- selectedClasses.Add (exc);
- }
- }
- SelectNearest (treeExceptions);
- FillSelection ();
- FillExceptions ();
- }
-
- protected virtual void OnButtonRemoveClicked (object sender, System.EventArgs e)
- {
- foreach (TreePath path in treeSelected.Selection.GetSelectedRows ()) {
- TreeIter it;
- if (storeSelection.GetIter (out it, path)) {
- string exc = (string) storeSelection.GetValue (it, 0);
- selectedClasses.Remove (exc);
- }
- }
- SelectNearest (treeSelected);
- FillSelection ();
- FillExceptions ();
- }
-
- void SelectNearest (TreeView view)
- {
- ListStore store = (ListStore) view.Model;
- TreePath[] paths = view.Selection.GetSelectedRows ();
- if (paths.Length == 0)
- return;
- TreeIter it;
- store.GetIter (out it, paths [paths.Length - 1]);
- if (store.IterNext (ref it)) {
- view.Selection.UnselectAll ();
- view.Selection.SelectIter (it);
- return;
- }
- store.GetIter (out it, paths [0]);
- if (store.IterNext (ref it)) {
- view.Selection.UnselectAll ();
- view.Selection.SelectIter (it);
- return;
- }
- }
-
- protected virtual void OnEntryFilterActivated (object sender, EventArgs e)
- {
- OnButtonAddClicked (null, null);
- }
-
- protected virtual void OnButtonOkClicked (object sender, EventArgs e)
- {
- var breakpoints = DebuggingService.Breakpoints;
-
- lock (breakpoints) {
- foreach (Catchpoint cp in new List<Catchpoint> (breakpoints.GetCatchpoints ())) {
- if (!selectedClasses.Contains (cp.ExceptionName))
- breakpoints.Remove (cp);
- else
- selectedClasses.Remove (cp.ExceptionName);
- }
-
- foreach (string exc in selectedClasses)
- breakpoints.AddCatchpoint (exc);
- }
- }
-
- [GLib.ConnectBefore]
- protected virtual void OnTreeSelectedKeyPressEvent (object o, Gtk.KeyPressEventArgs args)
- {
- if (args.Event.Key == Gdk.Key.Return || args.Event.Key == Gdk.Key.KP_Enter) {
- OnButtonRemoveClicked (null, null);
- args.RetVal = true;
- }
- }
-
- [GLib.ConnectBefore]
- protected virtual void OnTreeSelectedButtonPressEvent (object o, Gtk.ButtonPressEventArgs args)
- {
- if (args.Event.Button == 1 && args.Event.Type == Gdk.EventType.TwoButtonPress)
- OnButtonRemoveClicked (o, args);
- }
-
- [GLib.ConnectBefore]
- protected virtual void OnTreeExceptionsKeyPressEvent (object o, Gtk.KeyPressEventArgs args)
- {
- if (args.Event.Key == Gdk.Key.Return || args.Event.Key == Gdk.Key.KP_Enter) {
- OnButtonAddClicked (null, null);
- args.RetVal = true;
- }
- }
-
- [GLib.ConnectBefore]
- protected virtual void OnTreeExceptionsButtonPressEvent (object o, Gtk.ButtonPressEventArgs args)
- {
- if (args.Event.Button == 1 && args.Event.Type == Gdk.EventType.TwoButtonPress)
- OnButtonAddClicked (o, args);
- }
- }
-}
Commit: eea5d0063339dccf05fe270d49039b983d9f3d03
Author: Ungureanu Marius <[email protected]> (Therzok)
Committer: Therzok <[email protected]> (Therzok)
Date: 2013-11-04 16:18:44 GMT
URL: https://github.com/mono/monodevelop/commit/eea5d0063339dccf05fe270d49039b983d9f3d03
Remove tracepoint dialog
Changed paths:
M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.csproj
M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs
M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs
M main/src/addins/MonoDevelop.Debugger/gtk-gui/gui.stetic
Removed paths:
D main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/AddTracePointDialog.cs
D main/src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.AddTracePointDialog.cs
D main/src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.ExceptionsDialog.cs
Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.csproj
===================================================================
@@ -116,7 +116,6 @@
<Compile Include="MonoDevelop.Debugger\DebugCommands.cs" />
<Compile Include="MonoDevelop.Debugger\Extensions.cs" />
<Compile Include="MonoDevelop.Debugger\AttachToProcessDialog.cs" />
- <Compile Include="gtk-gui\MonoDevelop.Debugger.ExceptionsDialog.cs" />
<Compile Include="gtk-gui\MonoDevelop.Debugger.AttachToProcessDialog.cs" />
<Compile Include="MonoDevelop.Debugger\ExpressionEvaluatorDialog.cs" />
<Compile Include="gtk-gui\MonoDevelop.Debugger.ExpressionEvaluatorDialog.cs" />
@@ -129,8 +128,6 @@
<Compile Include="gtk-gui\MonoDevelop.Debugger.BusyEvaluatorDialog.cs" />
<Compile Include="MonoDevelop.Debugger\DebuggerOptionsPanelWidget.cs" />
<Compile Include="gtk-gui\MonoDevelop.Debugger.DebuggerOptionsPanelWidget.cs" />
- <Compile Include="MonoDevelop.Debugger\AddTracePointDialog.cs" />
- <Compile Include="gtk-gui\MonoDevelop.Debugger.AddTracePointDialog.cs" />
<Compile Include="MonoDevelop.Debugger\PinnedWatch.cs" />
<Compile Include="MonoDevelop.Debugger\PinnedWatchStore.cs" />
<Compile Include="MonoDevelop.Debugger\DebuggerEngine.cs" />
Removed: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/AddTracePointDialog.cs
===================================================================
@@ -1,48 +0,0 @@
-//
-// AddTracePointDialog.cs
-//
-// Author:
-// Lluis Sanchez Gual <[email protected]>
-//
-// Copyright (c) 2009 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System;
-
-namespace MonoDevelop.Debugger
-{
-
-
- public partial class AddTracePointDialog : Gtk.Dialog
- {
- public AddTracePointDialog ()
- {
- this.Build ();
- }
-
- public string Text {
- get { return entryTrace.Text; }
- }
-
- public string Condition {
- get { return entryCondition.Text; }
- }
- }
-}
Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs
===================================================================
@@ -60,7 +60,6 @@ public enum DebugCommands
ShowBreakpointProperties,
ExpressionEvaluator,
ShowCurrentExecutionLine,
- AddTracepoint,
AddWatch,
StopEvaluation
}
@@ -424,25 +423,6 @@ protected override void Update (CommandInfo info)
}
}
- class AddTracepointHandler: CommandHandler
- {
- protected override void Run ()
- {
- DebuggingService.ShowAddTracepointDialog (
- IdeApp.Workbench.ActiveDocument.FileName,
- IdeApp.Workbench.ActiveDocument.Editor.Caret.Line);
- }
-
- protected override void Update (CommandInfo info)
- {
- info.Visible = DebuggingService.IsFeatureSupported (DebuggerFeatures.Tracepoints);
- info.Enabled = IdeApp.Workbench.ActiveDocument != null &&
- IdeApp.Workbench.ActiveDocument.Editor != null &&
- IdeApp.Workbench.ActiveDocument.FileName != FilePath.Null &&
- !DebuggingService.Breakpoints.IsReadOnly;
- }
- }
-
class EnableDisableBreakpointHandler: CommandHandler
{
protected override void Run ()
Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs
===================================================================
@@ -225,20 +225,6 @@ public static bool ShowBreakpointProperties (ref BreakEvent bp)
}
}
- public static void ShowAddTracepointDialog (string file, int line)
- {
- AddTracePointDialog dlg = new AddTracePointDialog ();
- if (MessageService.RunCustomDialog (dlg) == (int) Gtk.ResponseType.Ok && dlg.Text.Length > 0) {
- Breakpoint bp = new Breakpoint (file, line);
- bp.HitAction = HitAction.PrintExpression;
- bp.TraceExpression = dlg.Text;
- bp.ConditionExpression = dlg.Condition;
- lock (breakpoints)
- breakpoints.Add (bp);
- }
- dlg.Destroy ();
- }
-
public static void AddWatch (string expression)
{
Pad pad = IdeApp.Workbench.GetPad<WatchPad> ();
Removed: main/src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.AddTracePointDialog.cs
===================================================================
@@ -1,168 +0,0 @@
-
-// This file has been generated by the GUI designer. Do not modify.
-namespace MonoDevelop.Debugger
-{
- public partial class AddTracePointDialog
- {
- private global::Gtk.VBox vbox2;
- private global::Gtk.Table table1;
- private global::Gtk.Entry entryCondition;
- private global::Gtk.Entry entryTrace;
- private global::Gtk.Label label1;
- private global::Gtk.Label label2;
- private global::Gtk.Label label3;
- private global::Gtk.Label label4;
- private global::Gtk.Button buttonCancel;
- private global::Gtk.Button buttonOk;
-
- protected virtual void Build ()
- {
- global::Stetic.Gui.Initialize (this);
- // Widget MonoDevelop.Debugger.AddTracePointDialog
- this.Name = "MonoDevelop.Debugger.AddTracePointDialog";
- this.Title = global::Mono.Unix.Catalog.GetString ("Add Tracepoint");
- this.WindowPosition = ((global::Gtk.WindowPosition)(4));
- // Internal child MonoDevelop.Debugger.AddTracePointDialog.VBox
- global::Gtk.VBox w1 = this.VBox;
- w1.Name = "dialog1_VBox";
- w1.BorderWidth = ((uint)(2));
- // Container child dialog1_VBox.Gtk.Box+BoxChild
- this.vbox2 = new global::Gtk.VBox ();
- this.vbox2.Name = "vbox2";
- this.vbox2.Spacing = 6;
- this.vbox2.BorderWidth = ((uint)(6));
- // Container child vbox2.Gtk.Box+BoxChild
- this.table1 = new global::Gtk.Table (((uint)(4)), ((uint)(2)), false);
- this.table1.Name = "table1";
- this.table1.RowSpacing = ((uint)(6));
- this.table1.ColumnSpacing = ((uint)(6));
- // Container child table1.Gtk.Table+TableChild
- this.entryCondition = new global::Gtk.Entry ();
- this.entryCondition.CanFocus = true;
- this.entryCondition.Name = "entryCondition";
- this.entryCondition.IsEditable = true;
- this.entryCondition.ActivatesDefault = true;
- this.entryCondition.InvisibleChar = '●';
- this.table1.Add (this.entryCondition);
- global::Gtk.Table.TableChild w2 = ((global::Gtk.Table.TableChild)(this.table1 [this.entryCondition]));
- w2.TopAttach = ((uint)(2));
- w2.BottomAttach = ((uint)(3));
- w2.LeftAttach = ((uint)(1));
- w2.RightAttach = ((uint)(2));
- w2.XOptions = ((global::Gtk.AttachOptions)(4));
- w2.YOptions = ((global::Gtk.AttachOptions)(4));
- // Container child table1.Gtk.Table+TableChild
- this.entryTrace = new global::Gtk.Entry ();
- this.entryTrace.CanFocus = true;
- this.entryTrace.Name = "entryTrace";
- this.entryTrace.IsEditable = true;
- this.entryTrace.ActivatesDefault = true;
- this.entryTrace.InvisibleChar = '●';
- this.table1.Add (this.entryTrace);
- global::Gtk.Table.TableChild w3 = ((global::Gtk.Table.TableChild)(this.table1 [this.entryTrace]));
- w3.LeftAttach = ((uint)(1));
- w3.RightAttach = ((uint)(2));
- w3.XOptions = ((global::Gtk.AttachOptions)(4));
- w3.YOptions = ((global::Gtk.AttachOptions)(4));
- // Container child table1.Gtk.Table+TableChild
- this.label1 = new global::Gtk.Label ();
- this.label1.Name = "label1";
- this.label1.Xalign = 0F;
- this.label1.LabelProp = global::Mono.Unix.Catalog.GetString ("Trace Text:");
- this.table1.Add (this.label1);
- global::Gtk.Table.TableChild w4 = ((global::Gtk.Table.TableChild)(this.table1 [this.label1]));
- w4.XOptions = ((global::Gtk.AttachOptions)(4));
- w4.YOptions = ((global::Gtk.AttachOptions)(4));
- // Container child table1.Gtk.Table+TableChild
- this.label2 = new global::Gtk.Label ();
- this.label2.Name = "label2";
- this.label2.Xalign = 0F;
- this.label2.LabelProp = global::Mono.Unix.Catalog.GetString ("Condition:");
- this.table1.Add (this.label2);
- global::Gtk.Table.TableChild w5 = ((global::Gtk.Table.TableChild)(this.table1 [this.label2]));
- w5.TopAttach = ((uint)(2));
- w5.BottomAttach = ((uint)(3));
- w5.XOptions = ((global::Gtk.AttachOptions)(4));
- w5.YOptions = ((global::Gtk.AttachOptions)(4));
- // Container child table1.Gtk.Table+TableChild
- this.label3 = new global::Gtk.Label ();
- this.label3.WidthRequest = 450;
- this.label3.Name = "label3";
- this.label3.Xalign = 0F;
- this.label3.LabelProp = global::Mono.Unix.Catalog.GetString ("<small>Expressions to be evaluated by the debugger can be included in the text by surrounding them with curly braces, for example: \"Value is {n}\".</small>");
- this.label3.UseMarkup = true;
- this.label3.Wrap = true;
- this.table1.Add (this.label3);
- global::Gtk.Table.TableChild w6 = ((global::Gtk.Table.TableChild)(this.table1 [this.label3]));
- w6.TopAttach = ((uint)(1));
- w6.BottomAttach = ((uint)(2));
- w6.LeftAttach = ((uint)(1));
- w6.RightAttach = ((uint)(2));
- w6.XOptions = ((global::Gtk.AttachOptions)(4));
- w6.YOptions = ((global::Gtk.AttachOptions)(4));
- // Container child table1.Gtk.Table+TableChild
- this.label4 = new global::Gtk.Label ();
- this.label4.WidthRequest = 450;
- this.label4.Name = "label4";
- this.label4.Xalign = 0F;
- this.label4.LabelProp = global::Mono.Unix.Catalog.GetString ("<small>When set, the text will be printed only when this condition evaluates to true.</small>");
- this.label4.UseMarkup = true;
- this.label4.Wrap = true;
- this.table1.Add (this.label4);
- global::Gtk.Table.TableChild w7 = ((global::Gtk.Table.TableChild)(this.table1 [this.label4]));
- w7.TopAttach = ((uint)(3));
- w7.BottomAttach = ((uint)(4));
- w7.LeftAttach = ((uint)(1));
- w7.RightAttach = ((uint)(2));
- w7.XOptions = ((global::Gtk.AttachOptions)(4));
- w7.YOptions = ((global::Gtk.AttachOptions)(4));
- this.vbox2.Add (this.table1);
- global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.table1]));
- w8.Position = 0;
- w8.Expand = false;
- w8.Fill = false;
- w1.Add (this.vbox2);
- global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(w1 [this.vbox2]));
- w9.Position = 0;
- w9.Expand = false;
- w9.Fill = false;
- // Internal child MonoDevelop.Debugger.AddTracePointDialog.ActionArea
- global::Gtk.HButtonBox w10 = this.ActionArea;
- w10.Name = "dialog1_ActionArea";
- w10.Spacing = 10;
- w10.BorderWidth = ((uint)(5));
- w10.LayoutStyle = ((global::Gtk.ButtonBoxStyle)(4));
- // Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
- this.buttonCancel = new global::Gtk.Button ();
- this.buttonCancel.CanFocus = true;
- this.buttonCancel.Name = "buttonCancel";
- this.buttonCancel.UseStock = true;
- this.buttonCancel.UseUnderline = true;
- this.buttonCancel.Label = "gtk-cancel";
- this.AddActionWidget (this.buttonCancel, -6);
- global::Gtk.ButtonBox.ButtonBoxChild w11 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w10 [this.buttonCancel]));
- w11.Expand = false;
- w11.Fill = false;
- // Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
- this.buttonOk = new global::Gtk.Button ();
- this.buttonOk.CanDefault = true;
- this.buttonOk.CanFocus = true;
- this.buttonOk.Name = "buttonOk";
- this.buttonOk.UseStock = true;
- this.buttonOk.UseUnderline = true;
- this.buttonOk.Label = "gtk-ok";
- this.AddActionWidget (this.buttonOk, -5);
- global::Gtk.ButtonBox.ButtonBoxChild w12 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w10 [this.buttonOk]));
- w12.Position = 1;
- w12.Expand = false;
- w12.Fill = false;
- if ((this.Child != null)) {
- this.Child.ShowAll ();
- }
- this.DefaultWidth = 540;
- this.DefaultHeight = 208;
- this.buttonOk.HasDefault = true;
- this.Hide ();
- }
- }
-}
Removed: main/src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.ExceptionsDialog.cs
===================================================================
@@ -1,229 +0,0 @@
-
-// This file has been generated by the GUI designer. Do not modify.
-namespace MonoDevelop.Debugger
-{
- public partial class ExceptionsDialog
- {
- private global::Gtk.HBox hbox1;
- private global::Gtk.VBox vbox4;
- private global::Gtk.Label label2;
- private global::Gtk.HBox hbox2;
- private global::Gtk.Image image15;
- private global::Gtk.Entry entryFilter;
- private global::Gtk.ScrolledWindow GtkScrolledWindow;
- private global::Gtk.TreeView treeExceptions;
- private global::Gtk.VBox vbox3;
- private global::Gtk.Label label1;
- private global::Gtk.Button buttonAdd;
- private global::Gtk.Button buttonRemove;
- private global::Gtk.Label label4;
- private global::Gtk.VBox vbox5;
- private global::Gtk.Label label3;
- private global::Gtk.ScrolledWindow GtkScrolledWindow1;
- private global::Gtk.TreeView treeSelected;
- private global::Gtk.Button buttonCancel;
- private global::Gtk.Button buttonOk;
-
- protected virtual void Build ()
- {
- global::Stetic.Gui.Initialize (this);
- // Widget MonoDevelop.Debugger.ExceptionsDialog
- this.Name = "MonoDevelop.Debugger.ExceptionsDialog";
- this.Title = global::Mono.Unix.Catalog.GetString ("Exceptions");
- this.WindowPosition = ((global::Gtk.WindowPosition)(4));
- this.BorderWidth = ((uint)(3));
- // Internal child MonoDevelop.Debugger.ExceptionsDialog.VBox
- global::Gtk.VBox w1 = this.VBox;
- w1.Name = "dialog1_VBox";
- w1.BorderWidth = ((uint)(2));
- // Container child dialog1_VBox.Gtk.Box+BoxChild
- this.hbox1 = new global::Gtk.HBox ();
- this.hbox1.Name = "hbox1";
- this.hbox1.Spacing = 6;
- this.hbox1.BorderWidth = ((uint)(9));
- // Container child hbox1.Gtk.Box+BoxChild
- this.vbox4 = new global::Gtk.VBox ();
- this.vbox4.Name = "vbox4";
- this.vbox4.Spacing = 6;
- // Container child vbox4.Gtk.Box+BoxChild
- this.label2 = new global::Gtk.Label ();
- this.label2.Name = "label2";
- this.label2.Xalign = 0F;
- this.label2.LabelProp = global::Mono.Unix.Catalog.GetString ("Exceptions:");
- this.vbox4.Add (this.label2);
- global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox4 [this.label2]));
- w2.Position = 0;
- w2.Expand = false;
- w2.Fill = false;
- // Container child vbox4.Gtk.Box+BoxChild
- this.hbox2 = new global::Gtk.HBox ();
- this.hbox2.Name = "hbox2";
- this.hbox2.Spacing = 6;
- // Container child hbox2.Gtk.Box+BoxChild
- this.image15 = new global::Gtk.Image ();
- this.image15.Name = "image15";
- this.image15.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-find", global::Gtk.IconSize.Menu);
- this.hbox2.Add (this.image15);
- global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.image15]));
- w3.Position = 0;
- w3.Expand = false;
- w3.Fill = false;
- // Container child hbox2.Gtk.Box+BoxChild
- this.entryFilter = new global::Gtk.Entry ();
- this.entryFilter.CanFocus = true;
- this.entryFilter.Name = "entryFilter";
- this.entryFilter.IsEditable = true;
- this.entryFilter.InvisibleChar = '●';
- this.hbox2.Add (this.entryFilter);
- global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.entryFilter]));
- w4.Position = 1;
- this.vbox4.Add (this.hbox2);
- global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox4 [this.hbox2]));
- w5.Position = 1;
- w5.Expand = false;
- w5.Fill = false;
- // Container child vbox4.Gtk.Box+BoxChild
- this.GtkScrolledWindow = new global::Gtk.ScrolledWindow ();
- this.GtkScrolledWindow.Name = "GtkScrolledWindow";
- this.GtkScrolledWindow.ShadowType = ((global::Gtk.ShadowType)(1));
- // Container child GtkScrolledWindow.Gtk.Container+ContainerChild
- this.treeExceptions = new global::Gtk.TreeView ();
- this.treeExceptions.CanFocus = true;
- this.treeExceptions.Name = "treeExceptions";
- this.treeExceptions.HeadersVisible = false;
- this.GtkScrolledWindow.Add (this.treeExceptions);
- this.vbox4.Add (this.GtkScrolledWindow);
- global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.vbox4 [this.GtkScrolledWindow]));
- w7.Position = 2;
- this.hbox1.Add (this.vbox4);
- global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.vbox4]));
- w8.Position = 0;
- // Container child hbox1.Gtk.Box+BoxChild
- this.vbox3 = new global::Gtk.VBox ();
- this.vbox3.Name = "vbox3";
- this.vbox3.Spacing = 12;
- // Container child vbox3.Gtk.Box+BoxChild
- this.label1 = new global::Gtk.Label ();
- this.label1.Name = "label1";
- this.vbox3.Add (this.label1);
- global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.label1]));
- w9.Position = 0;
- // Container child vbox3.Gtk.Box+BoxChild
- this.buttonAdd = new global::Gtk.Button ();
- this.buttonAdd.CanFocus = true;
- this.buttonAdd.Name = "buttonAdd";
- this.buttonAdd.UseUnderline = true;
- global::Gtk.Image w10 = new global::Gtk.Image ();
- w10.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-go-forward", global::Gtk.IconSize.Menu);
- this.buttonAdd.Image = w10;
- this.vbox3.Add (this.buttonAdd);
- global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.buttonAdd]));
- w11.Position = 1;
- w11.Expand = false;
- w11.Fill = false;
- // Container child vbox3.Gtk.Box+BoxChild
- this.buttonRemove = new global::Gtk.Button ();
- this.buttonRemove.CanFocus = true;
- this.buttonRemove.Name = "buttonRemove";
- this.buttonRemove.UseUnderline = true;
- global::Gtk.Image w12 = new global::Gtk.Image ();
- w12.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-go-back", global::Gtk.IconSize.Menu);
- this.buttonRemove.Image = w12;
- this.vbox3.Add (this.buttonRemove);
- global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.buttonRemove]));
- w13.Position = 2;
- w13.Expand = false;
- w13.Fill = false;
- // Container child vbox3.Gtk.Box+BoxChild
- this.label4 = new global::Gtk.Label ();
- this.label4.Name = "label4";
- this.vbox3.Add (this.label4);
- global::Gtk.Box.BoxChild w14 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.label4]));
- w14.Position = 3;
- this.hbox1.Add (this.vbox3);
- global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.vbox3]));
- w15.Position = 1;
- w15.Expand = false;
- w15.Fill = false;
- // Container child hbox1.Gtk.Box+BoxChild
- this.vbox5 = new global::Gtk.VBox ();
- this.vbox5.Name = "vbox5";
- this.vbox5.Spacing = 6;
- // Container child vbox5.Gtk.Box+BoxChild
- this.label3 = new global::Gtk.Label ();
- this.label3.Name = "label3";
- this.label3.Xalign = 0F;
- this.label3.LabelProp = global::Mono.Unix.Catalog.GetString ("Stop in exceptions:");
- this.vbox5.Add (this.label3);
- global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.vbox5 [this.label3]));
- w16.Position = 0;
- w16.Expand = false;
- w16.Fill = false;
- // Container child vbox5.Gtk.Box+BoxChild
- this.GtkScrolledWindow1 = new global::Gtk.ScrolledWindow ();
- this.GtkScrolledWindow1.Name = "GtkScrolledWindow1";
- this.GtkScrolledWindow1.ShadowType = ((global::Gtk.ShadowType)(1));
- // Container child GtkScrolledWindow1.Gtk.Container+ContainerChild
- this.treeSelected = new global::Gtk.TreeView ();
- this.treeSelected.CanFocus = true;
- this.treeSelected.Name = "treeSelected";
- this.treeSelected.HeadersVisible = false;
- this.GtkScrolledWindow1.Add (this.treeSelected);
- this.vbox5.Add (this.GtkScrolledWindow1);
- global::Gtk.Box.BoxChild w18 = ((global::Gtk.Box.BoxChild)(this.vbox5 [this.GtkScrolledWindow1]));
- w18.Position = 1;
- this.hbox1.Add (this.vbox5);
- global::Gtk.Box.BoxChild w19 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.vbox5]));
- w19.Position = 2;
- w1.Add (this.hbox1);
- global::Gtk.Box.BoxChild w20 = ((global::Gtk.Box.BoxChild)(w1 [this.hbox1]));
- w20.Position = 0;
- // Internal child MonoDevelop.Debugger.ExceptionsDialog.ActionArea
- global::Gtk.HButtonBox w21 = this.ActionArea;
- w21.Name = "dialog1_ActionArea";
- w21.Spacing = 6;
- w21.BorderWidth = ((uint)(5));
- w21.LayoutStyle = ((global::Gtk.ButtonBoxStyle)(4));
- // Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
- this.buttonCancel = new global::Gtk.Button ();
- this.buttonCancel.CanDefault = true;
- this.buttonCancel.CanFocus = true;
- this.buttonCancel.Name = "buttonCancel";
- this.buttonCancel.UseStock = true;
- this.buttonCancel.UseUnderline = true;
- this.buttonCancel.Label = "gtk-cancel";
- this.AddActionWidget (this.buttonCancel, -6);
- global::Gtk.ButtonBox.ButtonBoxChild w22 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w21 [this.buttonCancel]));
- w22.Expand = false;
- w22.Fill = false;
- // Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
- this.buttonOk = new global::Gtk.Button ();
- this.buttonOk.CanDefault = true;
- this.buttonOk.CanFocus = true;
- this.buttonOk.Name = "buttonOk";
- this.buttonOk.UseStock = true;
- this.buttonOk.UseUnderline = true;
- this.buttonOk.Label = "gtk-ok";
- this.AddActionWidget (this.buttonOk, -5);
- global::Gtk.ButtonBox.ButtonBoxChild w23 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w21 [this.buttonOk]));
- w23.Position = 1;
- w23.Expand = false;
- w23.Fill = false;
- if ((this.Child != null)) {
- this.Child.ShowAll ();
- }
- this.DefaultWidth = 910;
- this.DefaultHeight = 451;
- this.Hide ();
- this.entryFilter.Changed += new global::System.EventHandler (this.OnEntryFilterChanged);
- this.entryFilter.Activated += new global::System.EventHandler (this.OnEntryFilterActivated);
- this.treeExceptions.KeyPressEvent += new global::Gtk.KeyPressEventHandler (this.OnTreeExceptionsKeyPressEvent);
- this.treeExceptions.ButtonPressEvent += new global::Gtk.ButtonPressEventHandler (this.OnTreeExceptionsButtonPressEvent);
- this.buttonAdd.Clicked += new global::System.EventHandler (this.OnButtonAddClicked);
- this.buttonRemove.Clicked += new global::System.EventHandler (this.OnButtonRemoveClicked);
- this.treeSelected.KeyPressEvent += new global::Gtk.KeyPressEventHandler (this.OnTreeSelectedKeyPressEvent);
- this.treeSelected.ButtonPressEvent += new global::Gtk.ButtonPressEventHandler (this.OnTreeSelectedButtonPressEvent);
- this.buttonOk.Clicked += new global::System.EventHandler (this.OnButtonOkClicked);
- }
- }
-}
Modified: main/src/addins/MonoDevelop.Debugger/gtk-gui/gui.stetic
===================================================================
@@ -168,263 +168,6 @@
</widget>
</child>
</widget>
- <widget class="Gtk.Dialog" id="MonoDevelop.Debugger.ExceptionsDialog" design-size="910 451">
- <property name="MemberName" />
- <property name="Visible">False</property>
- <property name="Title" translatable="yes">Exceptions</property>
- <property name="WindowPosition">CenterOnParent</property>
- <property name="BorderWidth">3</property>
- <property name="Buttons">2</property>
- <property name="HelpButton">False</property>
- <child internal-child="VBox">
- <widget class="Gtk.VBox" id="dialog1_VBox">
- <property name="MemberName" />
- <property name="BorderWidth">2</property>
- <child>
- <widget class="Gtk.HBox" id="hbox1">
- <property name="MemberName" />
- <property name="Spacing">6</property>
- <property name="BorderWidth">9</property>
- <child>
- <widget class="Gtk.VBox" id="vbox4">
- <property name="MemberName" />
- <property name="Spacing">6</property>
- <child>
- <widget class="Gtk.Label" id="label2">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="LabelProp" translatable="yes">Exceptions:</property>
- </widget>
- <packing>
- <property name="Position">0</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.HBox" id="hbox2">
- <property name="MemberName" />
- <property name="Spacing">6</property>
- <child>
- <widget class="Gtk.Image" id="image15">
- <property name="MemberName" />
- <property name="Pixbuf">stock:gtk-find Menu</property>
- </widget>
- <packing>
- <property name="Position">0</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Entry" id="entryFilter">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="IsEditable">True</property>
- <property name="InvisibleChar">●</property>
- <signal name="Changed" handler="OnEntryFilterChanged" />
- <signal name="Activated" handler="OnEntryFilterActivated" />
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="AutoSize">True</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.ScrolledWindow" id="GtkScrolledWindow">
- <property name="MemberName" />
- <property name="ShadowType">In</property>
- <child>
- <widget class="Gtk.TreeView" id="treeExceptions">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="ShowScrollbars">True</property>
- <property name="HeadersVisible">False</property>
- <signal name="KeyPressEvent" handler="OnTreeExceptionsKeyPressEvent" />
- <signal name="ButtonPressEvent" handler="OnTreeExceptionsButtonPressEvent" />
- </widget>
- </child>
- </widget>
- <packing>
- <property name="Position">2</property>
- <property name="AutoSize">True</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="Position">0</property>
- <property name="AutoSize">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.VBox" id="vbox3">
- <property name="MemberName" />
- <property name="Spacing">12</property>
- <child>
- <widget class="Gtk.Label" id="label1">
- <property name="MemberName" />
- </widget>
- <packing>
- <property name="Position">0</property>
- <property name="AutoSize">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Button" id="buttonAdd">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Type">TextAndIcon</property>
- <property name="Icon">stock:gtk-go-forward Menu</property>
- <property name="Label" translatable="yes" />
- <property name="UseUnderline">True</property>
- <signal name="Clicked" handler="OnButtonAddClicked" />
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Button" id="buttonRemove">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Type">TextAndIcon</property>
- <property name="Icon">stock:gtk-go-back Menu</property>
- <property name="Label" translatable="yes" />
- <property name="UseUnderline">True</property>
- <signal name="Clicked" handler="OnButtonRemoveClicked" />
- </widget>
- <packing>
- <property name="Position">2</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Label" id="label4">
- <property name="MemberName" />
- </widget>
- <packing>
- <property name="Position">3</property>
- <property name="AutoSize">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.VBox" id="vbox5">
- <property name="MemberName" />
- <property name="Spacing">6</property>
- <child>
- <widget class="Gtk.Label" id="label3">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="LabelProp" translatable="yes">Stop in exceptions:</property>
- </widget>
- <packing>
- <property name="Position">0</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.ScrolledWindow" id="GtkScrolledWindow1">
- <property name="MemberName" />
- <property name="ShadowType">In</property>
- <child>
- <widget class="Gtk.TreeView" id="treeSelected">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="ShowScrollbars">True</property>
- <property name="HeadersVisible">False</property>
- <signal name="KeyPressEvent" handler="OnTreeSelectedKeyPressEvent" />
- <signal name="ButtonPressEvent" handler="OnTreeSelectedButtonPressEvent" />
- </widget>
- </child>
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="AutoSize">True</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="Position">2</property>
- <property name="AutoSize">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="Position">0</property>
- <property name="AutoSize">False</property>
- </packing>
- </child>
- </widget>
- </child>
- <child internal-child="ActionArea">
- <widget class="Gtk.HButtonBox" id="dialog1_ActionArea">
- <property name="MemberName" />
- <property name="Spacing">6</property>
- <property name="BorderWidth">5</property>
- <property name="Size">2</property>
- <property name="LayoutStyle">End</property>
- <child>
- <widget class="Gtk.Button" id="buttonCancel">
- <property name="MemberName" />
- <property name="CanDefault">True</property>
- <property name="CanFocus">True</property>
- <property name="UseStock">True</property>
- <property name="Type">StockItem</property>
- <property name="StockId">gtk-cancel</property>
- <property name="ResponseId">-6</property>
- <property name="label">gtk-cancel</property>
- </widget>
- <packing>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Button" id="buttonOk">
- <property name="MemberName" />
- <property name="CanDefault">True</property>
- <property name="CanFocus">True</property>
- <property name="UseStock">True</property>
- <property name="Type">StockItem</property>
- <property name="StockId">gtk-ok</property>
- <property name="ResponseId">-5</property>
- <signal name="Clicked" handler="OnButtonOkClicked" />
- <property name="label">gtk-ok</property>
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
<widget class="Gtk.Dialog" id="MonoDevelop.Debugger.ExpressionEvaluatorDialog" design-size="716 410">
<property name="MemberName" />
<property name="Visible">False</property>
@@ -1533,230 +1276,6 @@ Break when the hit count is a multiple of</property>
</widget>
</child>
</widget>
- <widget class="Gtk.Dialog" id="MonoDevelop.Debugger.AddTracePointDialog" design-size="540 208">
- <property name="MemberName" />
- <property name="Visible">False</property>
- <property name="Title" translatable="yes">Add Tracepoint</property>
- <property name="WindowPosition">CenterOnParent</property>
- <property name="Buttons">2</property>
- <property name="HelpButton">False</property>
- <child internal-child="VBox">
- <widget class="Gtk.VBox" id="dialog1_VBox">
- <property name="MemberName" />
- <property name="BorderWidth">2</property>
- <child>
- <widget class="Gtk.VBox" id="vbox2">
- <property name="MemberName" />
- <property name="Spacing">6</property>
- <property name="BorderWidth">6</property>
- <child>
- <widget class="Gtk.Table" id="table1">
- <property name="MemberName" />
- <property name="NRows">4</property>
- <property name="NColumns">2</property>
- <property name="RowSpacing">6</property>
- <property name="ColumnSpacing">6</property>
- <child>
- <placeholder />
- </child>
- <child>
- <placeholder />
- </child>
- <child>
- <widget class="Gtk.Entry" id="entryCondition">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="IsEditable">True</property>
- <property name="ActivatesDefault">True</property>
- <property name="InvisibleChar">●</property>
- </widget>
- <packing>
- <property name="TopAttach">2</property>
- <property name="BottomAttach">3</property>
- <property name="LeftAttach">1</property>
- <property name="RightAttach">2</property>
- <property name="AutoSize">True</property>
- <property name="XOptions">Fill</property>
- <property name="YOptions">Fill</property>
- <property name="XExpand">False</property>
- <property name="XFill">True</property>
- <property name="XShrink">False</property>
- <property name="YExpand">False</property>
- <property name="YFill">True</property>
- <property name="YShrink">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Entry" id="entryTrace">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="IsEditable">True</property>
- <property name="ActivatesDefault">True</property>
- <property name="InvisibleChar">●</property>
- </widget>
- <packing>
- <property name="LeftAttach">1</property>
- <property name="RightAttach">2</property>
- <property name="AutoSize">True</property>
- <property name="XOptions">Fill</property>
- <property name="YOptions">Fill</property>
- <property name="XExpand">False</property>
- <property name="XFill">True</property>
- <property name="XShrink">False</property>
- <property name="YExpand">False</property>
- <property name="YFill">True</property>
- <property name="YShrink">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Label" id="label1">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="LabelProp" translatable="yes">Trace Text:</property>
- </widget>
- <packing>
- <property name="AutoSize">True</property>
- <property name="XOptions">Fill</property>
- <property name="YOptions">Fill</property>
- <property name="XExpand">False</property>
- <property name="XFill">True</property>
- <property name="XShrink">False</property>
- <property name="YExpand">False</property>
- <property name="YFill">True</property>
- <property name="YShrink">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Label" id="label2">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="LabelProp" translatable="yes">Condition:</property>
- </widget>
- <packing>
- <property name="TopAttach">2</property>
- <property name="BottomAttach">3</property>
- <property name="AutoSize">True</property>
- <property name="XOptions">Fill</property>
- <property name="YOptions">Fill</property>
- <property name="XExpand">False</property>
- <property name="XFill">True</property>
- <property name="XShrink">False</property>
- <property name="YExpand">False</property>
- <property name="YFill">True</property>
- <property name="YShrink">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Label" id="label3">
- <property name="MemberName" />
- <property name="WidthRequest">450</property>
- <property name="Xalign">0</property>
- <property name="LabelProp" translatable="yes"><small>Expressions to be evaluated by the debugger can be included in the text by surrounding them with curly braces, for example: "Value is {n}".</small></property>
- <property name="UseMarkup">True</property>
- <property name="Wrap">True</property>
- </widget>
- <packing>
- <property name="TopAttach">1</property>
- <property name="BottomAttach">2</property>
- <property name="LeftAttach">1</property>
- <property name="RightAttach">2</property>
- <property name="AutoSize">True</property>
- <property name="XOptions">Fill</property>
- <property name="YOptions">Fill</property>
- <property name="XExpand">False</property>
- <property name="XFill">True</property>
- <property name="XShrink">False</property>
- <property name="YExpand">False</property>
- <property name="YFill">True</property>
- <property name="YShrink">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Label" id="label4">
- <property name="MemberName" />
- <property name="WidthRequest">450</property>
- <property name="Xalign">0</property>
- <property name="LabelProp" translatable="yes"><small>When set, the text will be printed only when this condition evaluates to true.</small></property>
- <property name="UseMarkup">True</property>
- <property name="Wrap">True</property>
- </widget>
- <packing>
- <property name="TopAttach">3</property>
- <property name="BottomAttach">4</property>
- <property name="LeftAttach">1</property>
- <property name="RightAttach">2</property>
- <property name="AutoSize">True</property>
- <property name="XOptions">Fill</property>
- <property name="YOptions">Fill</property>
- <property name="XExpand">False</property>
- <property name="XFill">True</property>
- <property name="XShrink">False</property>
- <property name="YExpand">False</property>
- <property name="YFill">True</property>
- <property name="YShrink">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="Position">0</property>
- <property name="AutoSize">False</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="Position">0</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- </widget>
- </child>
- <child internal-child="ActionArea">
- <widget class="Gtk.HButtonBox" id="dialog1_ActionArea">
- <property name="MemberName" />
- <property name="Spacing">10</property>
- <property name="BorderWidth">5</property>
- <property name="Size">2</property>
- <property name="LayoutStyle">End</property>
- <child>
- <widget class="Gtk.Button" id="buttonCancel">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="UseStock">True</property>
- <property name="Type">StockItem</property>
- <property name="StockId">gtk-cancel</property>
- <property name="ResponseId">-6</property>
- <property name="label">gtk-cancel</property>
- </widget>
- <packing>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Button" id="buttonOk">
- <property name="MemberName" />
- <property name="CanDefault">True</property>
- <property name="HasDefault">True</property>
- <property name="CanFocus">True</property>
- <property name="UseStock">True</property>
- <property name="Type">StockItem</property>
- <property name="StockId">gtk-ok</property>
- <property name="ResponseId">-5</property>
- <property name="label">gtk-ok</property>
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
<widget class="Gtk.Bin" id="MonoDevelop.Debugger.ExceptionCaughtWidget" design-size="612 362">
<property name="MemberName" />
<property name="Visible">False</property>
Commit: dfb589db12a47b3704a855c92dfb827e12f3d902
Author: Ungureanu Marius <[email protected]> (Therzok)
Committer: Therzok <[email protected]> (Therzok)
Date: 2013-11-04 16:18:45 GMT
URL: https://github.com/mono/monodevelop/commit/dfb589db12a47b3704a855c92dfb827e12f3d902
Fixed breakpoints running
Changed paths:
M main/src/addins/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32/CorDebuggerSession.cs
M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml
M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs
M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog2.cs
M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs
M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/PinnedWatchStore.cs
M main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs
Modified: main/src/addins/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32/CorDebuggerSession.cs
===================================================================
@@ -280,18 +280,20 @@ void OnBreakpoint (object sender, CorBreakpointEventArgs e)
return;
}
}
- switch (bp.HitAction) {
- case HitAction.CustomAction:
+
+ if ((bp.HitAction & HitAction.CustomAction) != HitAction.None) {
// If custom action returns true, execution must continue
- if (binfo.RunCustomBreakpointAction (bp.CustomActionId))
- return;
- break;
- case HitAction.PrintExpression: {
- string exp = EvaluateTrace (e.Thread, bp.TraceExpression);
- binfo.UpdateLastTraceValue (exp);
+ if (binfo.RunCustomBreakpointAction (bp.CustomActionId))
return;
- }
}
+
+ if ((bp.HitAction & HitAction.PrintExpression) != HitAction.None) {
+ string exp = EvaluateTrace (e.Thread, bp.TraceExpression);
+ binfo.UpdateLastTraceValue (exp);
+ }
+
+ if ((bp.HitAction & HitAction.Break) == HitAction.None)
+ return;
}
OnStopped ();
Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml
===================================================================
@@ -129,10 +129,6 @@
defaultHandler = "MonoDevelop.Debugger.ToggleBreakpointHandler"
shortcut = "F9"
macShortcut = "Meta|\" />
- <Command id = "MonoDevelop.Debugger.DebugCommands.AddTracepoint"
- _label = "Add Tracepoint"
- defaultHandler = "MonoDevelop.Debugger.AddTracepointHandler"
- shortcut = "Control|Shift|F9" />
<Command id = "MonoDevelop.Debugger.DebugCommands.EnableDisableBreakpoint"
_label = "Enable/Disable Breakpoint"
defaultHandler = "MonoDevelop.Debugger.EnableDisableBreakpointHandler"
@@ -188,7 +184,6 @@
<SeparatorItem id = "MonoDevelop.Debugger.BreakpointsSection" />
<CommandItem id = "MonoDevelop.Debugger.DebugCommands.NewBreakpoint" />
<CommandItem id = "MonoDevelop.Debugger.DebugCommands.ToggleBreakpoint" />
- <CommandItem id = "MonoDevelop.Debugger.DebugCommands.AddTracepoint" />
<CommandItem id = "MonoDevelop.Debugger.DebugCommands.EnableDisableBreakpoint" />
<CommandItem id = "MonoDevelop.Debugger.DebugCommands.DisableAllBreakpoints" />
<CommandItem id = "MonoDevelop.Debugger.DebugCommands.ClearAllBreakpoints" />
Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs
===================================================================
@@ -385,8 +385,8 @@ public void UpdateDisplay ()
lock (breakpoints) {
foreach (BreakEvent be in breakpoints.GetBreakevents ()) {
string hitCount = be.HitCountMode != HitCountMode.None ? be.CurrentHitCount.ToString () : "";
- string traceExp = be.HitAction == HitAction.PrintExpression ? be.TraceExpression : "";
- string traceVal = be.HitAction == HitAction.PrintExpression ? be.LastTraceValue : "";
+ string traceExp = (be.HitAction & HitAction.PrintExpression) != HitAction.None ? be.TraceExpression : "";
+ string traceVal = (be.HitAction & HitAction.PrintExpression) != HitAction.None ? be.LastTraceValue : "";
string name;
var fb = be as FunctionBreakpoint;
@@ -427,7 +427,7 @@ void OnBreakpointUpdated (object s, BreakpointEventArgs args)
var bp = (BreakEvent) store.GetValue (it, (int) Columns.Breakpoint);
if (bp == args.Breakpoint) {
string hitCount = bp.HitCountMode != HitCountMode.None ? bp.CurrentHitCount.ToString () : "";
- string traceVal = bp.HitAction == HitAction.PrintExpression ? bp.LastTraceValue : "";
+ string traceVal = (bp.HitAction & HitAction.PrintExpression) != HitAction.None ? bp.LastTraceValue : "";
store.SetValue (it, (int) Columns.HitCount, hitCount);
store.SetValue (it, (int) Columns.LastTrace, traceVal);
break;
Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog2.cs
===================================================================
@@ -137,6 +137,7 @@ void Initialize ()
entryFunctionName.Changed += OnUpdateText;
entryLocationFile.Changed += OnUpdateText;
entryExceptionType.Changed += OnUpdateText;
+ entryPrintExpression.Changed += OnUpdateText;
buttonOk.Clicked += OnSave;
}
@@ -200,10 +201,11 @@ void SetInitialData ()
ignoreHitType.SelectedItem = be.HitCountMode;
ignoreHitCount.Value = be.HitCount;
- if (be.HitAction == HitAction.PrintExpression) {
+ if ((be.HitAction & HitAction.PrintExpression) != HitAction.None) {
checkPrintExpression.Active = true;
entryPrintExpression.Text = be.TraceExpression;
}
+ checkResumeExecution.Active |= (be.HitAction & HitAction.Break) == HitAction.None;
} else {
ignoreHitType.SelectedItem = HitCountMode.None;
conditionalHitType.SelectedItem = ConditionalHitWhen.ConditionIsTrue;
@@ -288,12 +290,13 @@ void OnSave (object sender, EventArgs e)
be.HitCountMode = (HitCountMode)ignoreHitType.SelectedItem;
be.HitCount = be.HitCountMode != HitCountMode.None ? (int)ignoreHitCount.Value : 0;
+ be.HitAction = HitAction.None;
if (checkPrintExpression.Active) {
- // FIXME: Make HitAction flags.
- be.HitAction = HitAction.PrintExpression;
+ be.HitAction |= HitAction.PrintExpression;
be.TraceExpression = entryPrintExpression.Text;
}
- be.HitAction = HitAction.Break;
+ if (!checkResumeExecution.Active)
+ be.HitAction |= HitAction.Break;
be.CommitChanges ();
}
@@ -323,6 +326,7 @@ void OnUpdateControls (object sender, EventArgs e)
// Check printing an expression.
entryPrintExpression.Sensitive = checkPrintExpression.Active;
checkResumeExecution.Sensitive = checkPrintExpression.Active;
+ checkResumeExecution.Active &= checkPrintExpression.Active;
// And display warning icons
buttonOk.Sensitive = CheckValidity ();
Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs
===================================================================
@@ -139,7 +139,7 @@ public static void SetLiveUpdateMode (PinnedWatch watch, bool liveUpdate)
if (liveUpdate) {
Breakpoint bp = new Breakpoint (watch.File, watch.Line);
bp.TraceExpression = "{" + watch.Expression + "}";
- bp.HitAction = HitAction.PrintExpression;
+ bp.HitAction |= HitAction.PrintExpression;
lock (breakpoints)
breakpoints.Add (bp);
pinnedWatches.Bind (watch, bp);
Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/PinnedWatchStore.cs
===================================================================
@@ -91,7 +91,8 @@ internal void BindAll (BreakpointStore bps)
lock (watches) {
foreach (PinnedWatch w in watches) {
foreach (Breakpoint bp in bps.GetBreakpoints ()) {
- if (bp.HitAction == HitAction.PrintExpression && bp.TraceExpression == "{" + w.Expression + "}" && bp.FileName == w.File && bp.Line == w.Line)
+ if ((bp.HitAction & HitAction.PrintExpression) != HitAction.None &&
+ bp.TraceExpression == "{" + w.Expression + "}" && bp.FileName == w.File && bp.Line == w.Line)
Bind (w, bp);
}
}
Modified: main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs
===================================================================
@@ -1308,7 +1308,7 @@ void AddBreakpoint (Breakpoint bp)
if (fp.FullPath == bp.FileName) {
DocumentLine line = widget.TextEditor.Document.GetLine (bp.Line);
var status = bp.GetStatus (DebuggingService.DebuggerSession);
- bool tracepoint = bp.HitAction != HitAction.Break;
+ bool tracepoint = (bp.HitAction & HitAction.Break) == HitAction.None;
if (line == null)
return;
Commit: bef687333f3bcbafbe3a4ab13ce6a33af2b3c346
Author: Ungureanu Marius <[email protected]> (Therzok)
Committer: Therzok <[email protected]> (Therzok)
Date: 2013-11-04 16:18:45 GMT
URL: https://github.com/mono/monodevelop/commit/bef687333f3bcbafbe3a4ab13ce6a33af2b3c346
Add stuff to pushing
Changed paths:
M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog2.cs
M main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj
Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog2.cs
===================================================================
@@ -31,15 +31,17 @@
using System.Collections.Generic;
using MonoDevelop.Ide.TypeSystem;
using ICSharpCode.NRefactory.TypeSystem;
+using System.Linq;
namespace MonoDevelop.Debugger
{
- enum ConditionalHitWhen {
+ enum ConditionalHitWhen
+ {
ConditionIsTrue,
ExpressionChanges
}
- class BreakpointPropertiesDialog2 : Xwt.Dialog
+ sealed class BreakpointPropertiesDialog2 : Xwt.Dialog
{
// For button sensitivity.
Xwt.DialogButton buttonOk;
@@ -189,6 +191,10 @@ void SetInitialCatchpointData (Catchpoint cp)
void SetInitialData ()
{
+ // FIXME: Add support for not doing base add
+ checkIncludeSubclass.Active = true;
+ checkIncludeSubclass.Sensitive = false;
+
if (be != null) {
stopOnException.Sensitive = false;
stopOnFunction.Sensitive = false;
@@ -250,15 +256,6 @@ void SaveBreakpoint (Breakpoint bp, bool isNew)
bp.ConditionExpression = null;
}
- void SaveCatchpoint (Catchpoint cp)
- {
- if (checkIncludeSubclass.Active) {
- // add stuff
- } else {
- // remove stuff
- }
- }
-
void OnSave (object sender, EventArgs e)
{
bool isNew = false;
@@ -283,10 +280,6 @@ void OnSave (object sender, EventArgs e)
if (bp != null)
SaveBreakpoint (bp, isNew);
- var cp = be as Catchpoint;
- if (cp != null)
- SaveCatchpoint (cp);
-
be.HitCountMode = (HitCountMode)ignoreHitType.SelectedItem;
be.HitCount = be.HitCountMode != HitCountMode.None ? (int)ignoreHitCount.Value : 0;
@@ -308,7 +301,8 @@ void OnUpdateControls (object sender, EventArgs e)
hboxLineColumn.Sensitive = stopOnLocation.Active;
hboxLocation.Sensitive = stopOnLocation.Active;
hboxException.Sensitive = stopOnException.Active;
- checkIncludeSubclass.Sensitive = stopOnException.Active;
+ // FIXME: Add support for not doing base add
+ //checkIncludeSubclass.Sensitive = stopOnException.Active;
hboxCondition.Sensitive = !stopOnException.Active;
// Check conditional
@@ -334,8 +328,6 @@ void OnUpdateControls (object sender, EventArgs e)
void OnUpdateText (object sender, EventArgs e)
{
-
-
buttonOk.Sensitive = CheckValidity ();
}
Modified: main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj
===================================================================
@@ -13,7 +13,7 @@
<VcRevision>..\..\..\vcrevision</VcRevision>
</PropertyGroup>
<PropertyGroup Condition="'$(BUILD_REVISION)' != ''">
- <DefineConstants>$(DefineConstants);ENABLE_RAYGUN</DefineConstants>
+ <DefineConstants>$(DefineConstants);ENABLE_RAYGUN</DefineConstants>
</PropertyGroup>
<Choose>
<When Condition=" Exists('c:\Program Files\Git\bin\git.exe') ">
@@ -54,8 +54,8 @@
</Execution>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
<DefineConstants>DEBUG</DefineConstants>
- <GenerateDocumentation>true</GenerateDocumentation>
<NoWarn>1591;1573</NoWarn>
+ <DocumentationFile>..\..\..\build\bin\MonoDevelop.Core.xml</DocumentationFile>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
@@ -68,8 +68,10 @@
</Execution>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
<DebugSymbols>true</DebugSymbols>
- <GenerateDocumentation>true</GenerateDocumentation>
<NoWarn>1591;1573</NoWarn>
+ <DefineConstants>
+ </DefineConstants>
+ <DocumentationFile>..\..\..\build\bin\MonoDevelop.Core.xml</DocumentationFile>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
Commit: 04fc9da329edcfe876d05164b2001613813cfe28
Author: Therzok <[email protected]> (Therzok)
Date: 2013-11-04 16:18:46 GMT
URL: https://github.com/mono/monodevelop/commit/04fc9da329edcfe876d05164b2001613813cfe28
[Debugger] Moved BreakpointPropertiesDialog to be main dialog.
Changed paths:
M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.csproj
M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs
M main/src/addins/MonoDevelop.Debugger/gtk-gui/gui.stetic
Removed paths:
D main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog2.cs
D main/src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.BreakpointPropertiesDialog.cs
Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.csproj
===================================================================
@@ -119,8 +119,6 @@
<Compile Include="gtk-gui\MonoDevelop.Debugger.AttachToProcessDialog.cs" />
<Compile Include="MonoDevelop.Debugger\ExpressionEvaluatorDialog.cs" />
<Compile Include="gtk-gui\MonoDevelop.Debugger.ExpressionEvaluatorDialog.cs" />
- <Compile Include="MonoDevelop.Debugger\BreakpointPropertiesDialog.cs" />
- <Compile Include="gtk-gui\MonoDevelop.Debugger.BreakpointPropertiesDialog.cs" />
<Compile Include="MonoDevelop.Debugger\DebugExecutionModeSet.cs" />
<Compile Include="MonoDevelop.Debugger\IDebuggerEngine.cs" />
<Compile Include="MonoDevelop.Debugger\ImmediatePad.cs" />
@@ -145,7 +143,7 @@
<Compile Include="MonoDevelop.Debugger\DebuggerConsoleView.cs" />
<Compile Include="MonoDevelop.Debugger.Visualizer\CStringVisualizer.cs" />
<Compile Include="MonoDevelop.Debugger.Visualizer\ValueVisualizer.cs" />
- <Compile Include="MonoDevelop.Debugger\BreakpointPropertiesDialog2.cs" />
+ <Compile Include="MonoDevelop.Debugger\BreakpointPropertiesDialog.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="MonoDevelop.Debugger.addin.xml">
Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs
===================================================================
@@ -1,265 +1,548 @@
-// BreakpointPropertiesDialog.cs
-//
-// Author:
-// Lluis Sanchez Gual <[email protected]>
-//
-// Copyright (c) 2008 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-//
-//
-
-using System;
-using System.Collections.Generic;
-
-using MonoDevelop.Core;
-using Mono.Debugging.Client;
-using MonoDevelop.Projects;
-using MonoDevelop.Ide;
-
-namespace MonoDevelop.Debugger
-{
- public partial class BreakpointPropertiesDialog : Gtk.Dialog
- {
- string[] parsedParamTypes;
- string parsedFunction;
- Breakpoint bp;
- bool isNew;
-
- public BreakpointPropertiesDialog (Breakpoint bp, bool isNew)
- {
- this.Build ();
-
- this.isNew = isNew;
- this.bp = bp;
-
- spinColumn.Adjustment.Upper = int.MaxValue;
- spinColumn.Adjustment.Lower = 1;
- spinLine.Adjustment.Upper = int.MaxValue;
- spinLine.Adjustment.Lower = 1;
-
- if (bp is FunctionBreakpoint) {
- FunctionBreakpoint fb = (FunctionBreakpoint) bp;
-
- labelFileFunction.LabelProp = GettextCatalog.GetString ("Function:");
-
- if (fb.ParamTypes != null) {
- // FIXME: support non-C# syntax based on fb.Language
- entryFileFunction.Text = fb.FunctionName + " (" + string.Join (", ", fb.ParamTypes) + ")";
- } else
- entryFileFunction.Text = fb.FunctionName;
-
- if (!isNew) {
- // We don't use ".Sensitive = false" because we want the user to be able to select & copy the text.
- entryFileFunction.ModifyBase (Gtk.StateType.Normal, Style.Backgrounds [(int)Gtk.StateType.Insensitive]);
- entryFileFunction.ModifyBase (Gtk.StateType.Active, Style.Backgrounds [(int)Gtk.StateType.Insensitive]);
- entryFileFunction.IsEditable = false;
- }
-
- // Function breakpoints only support breaking on the first line
- hboxLineColumn.Destroy ();
- labelLine.Destroy ();
- tableLocation.NRows--;
- } else {
- labelFileFunction.LabelProp = GettextCatalog.GetString ("File:");
- entryFileFunction.Text = ((Breakpoint) bp).FileName;
-
- // We don't use ".Sensitive = false" because we want the user to be able to select & copy the text.
- entryFileFunction.ModifyBase (Gtk.StateType.Normal, Style.Backgrounds [(int)Gtk.StateType.Insensitive]);
- entryFileFunction.ModifyBase (Gtk.StateType.Active, Style.Backgrounds [(int)Gtk.StateType.Insensitive]);
- entryFileFunction.IsEditable = false;
-
- spinColumn.Value = bp.Column;
- spinLine.Value = bp.Line;
-
- if (!isNew) {
- spinColumn.IsEditable = false;
- spinColumn.Sensitive = false;
- spinLine.IsEditable = false;
- spinLine.Sensitive = false;
- }
- }
-
- if (string.IsNullOrEmpty (bp.ConditionExpression)) {
- radioBreakAlways.Active = true;
- } else {
- entryCondition.Text = bp.ConditionExpression;
- if (bp.BreakIfConditionChanges)
- radioBreakWhenChanges.Active = true;
- else
- radioBreakWhenTrue.Active = true;
- }
-
- comboHitCountMode.Changed += OnHitCountModeChanged;
- comboHitCountMode.Active = (int) bp.HitCountMode;
- spinHitCount.Value = bp.HitCount;
-
- if (bp.HitAction == HitAction.Break) {
- radioActionBreak.Active = true;
- } else {
- radioActionTrace.Active = true;
- entryTraceExpression.Text = bp.TraceExpression;
- }
-
- Project project = null;
- if (!string.IsNullOrEmpty (bp.FileName))
- project = IdeApp.Workspace.GetProjectContainingFile (bp.FileName);
-
- if (project != null) {
- // Check the startup project of the solution too, since the current project may be a library
- SolutionEntityItem startup = project.ParentSolution.StartupItem;
- vboxConditionOptions.Sensitive = DebuggingService.IsFeatureSupported (project, DebuggerFeatures.ConditionalBreakpoints) ||
- DebuggingService.IsFeatureSupported (startup, DebuggerFeatures.ConditionalBreakpoints);
- vboxAction.Sensitive = DebuggingService.IsFeatureSupported (project, DebuggerFeatures.Tracepoints) ||
- DebuggingService.IsFeatureSupported (startup, DebuggerFeatures.Tracepoints);
- }
-
- UpdateControls ();
- }
-
- void UpdateControls ()
- {
- boxTraceExpression.Sensitive = radioActionTrace.Active;
- hboxConditionExpression.Sensitive = !radioBreakAlways.Active;
-
- if (comboHitCountMode.Active == 0)
- spinHitCount.Hide ();
- else
- spinHitCount.Show ();
- }
-
- static bool TryParseFunction (string signature, out string function, out string[] paramTypes)
- {
- int paramListStart = signature.IndexOf ('(');
- int paramListEnd = signature.IndexOf (')');
-
- if (paramListStart == -1 && paramListEnd == -1) {
- function = signature;
- paramTypes = null;
- return true;
- }
-
- if (paramListEnd != signature.Length - 1) {
- paramTypes = null;
- function = null;
- return false;
- }
-
- function = signature.Substring (0, paramListStart).Trim ();
-
- paramListStart++;
-
- if (!FunctionBreakpoint.TryParseParameters (signature, paramListStart, paramListEnd, out paramTypes)) {
- paramTypes = null;
- function = null;
- return false;
- }
-
- return true;
- }
-
- public bool Check ()
- {
- if (bp is FunctionBreakpoint) {
- string text = entryFileFunction.Text.Trim ();
-
- if (text.Length == 0) {
- MessageService.ShowError (GettextCatalog.GetString ("Function name not specified"));
- return false;
- }
-
- if (!TryParseFunction (text, out parsedFunction, out parsedParamTypes)) {
- MessageService.ShowError (GettextCatalog.GetString ("Invalid function syntax"));
- return false;
- }
- }
-
- if (!radioBreakAlways.Active && entryCondition.Text.Length == 0) {
- MessageService.ShowError (GettextCatalog.GetString ("Condition expression not specified"));
- return false;
- }
-
- if (radioActionTrace.Active && entryTraceExpression.Text.Length == 0) {
- MessageService.ShowError (GettextCatalog.GetString ("Trace expression not specified"));
- return false;
- }
-
- return true;
- }
-
- public void Save ()
- {
- if (isNew) {
- if (bp is FunctionBreakpoint) {
- FunctionBreakpoint fb = (FunctionBreakpoint) bp;
-
- fb.FunctionName = parsedFunction;
- fb.ParamTypes = parsedParamTypes;
- } else {
- bp.SetColumn ((int) spinColumn.Value);
- bp.SetLine ((int) spinLine.Value);
- }
- }
-
- if (!radioBreakAlways.Active) {
- bp.ConditionExpression = entryCondition.Text;
- bp.BreakIfConditionChanges = radioBreakWhenChanges.Active;
- } else
- bp.ConditionExpression = null;
-
- bp.HitCountMode = (HitCountMode) comboHitCountMode.Active;
- if (bp.HitCountMode != HitCountMode.None)
- bp.HitCount = (int) spinHitCount.Value;
- else
- bp.HitCount = 0;
-
- if (radioActionBreak.Active) {
- bp.HitAction = HitAction.Break;
- } else {
- bp.HitAction = HitAction.PrintExpression;
- bp.TraceExpression = entryTraceExpression.Text;
- }
-
- bp.CommitChanges ();
- }
-
- protected virtual void OnButtonOkClicked (object sender, EventArgs e)
- {
- if (Check ()) {
- Save ();
- Respond (Gtk.ResponseType.Ok);
- }
- }
-
- protected virtual void OnRadioBreakAlwaysToggled (object sender, EventArgs e)
- {
- UpdateControls ();
- }
-
- protected virtual void OnRadioActionBreakToggled (object sender,EventArgs e)
- {
- UpdateControls ();
- }
-
- void OnHitCountModeChanged (object sender, EventArgs e)
- {
- UpdateControls ();
- }
- }
-}
+//
+// BreakpointsPropertiesDialog.cs
+//
+// Author:
+// Therzok <[email protected]>
+//
+// Copyright (c) 2013 Therzok
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using System;
+using Mono.Debugging.Client;
+using MonoDevelop.Core;
+using MonoDevelop.Projects;
+using MonoDevelop.Ide;
+using System.Collections.Generic;
+using MonoDevelop.Ide.TypeSystem;
+using ICSharpCode.NRefactory.TypeSystem;
+using MonoDevelop.Ide.CodeCompletion;
+
+namespace MonoDevelop.Debugger
+{
+ enum ConditionalHitWhen
+ {
+ ConditionIsTrue,
+ ExpressionChanges
+ }
+
+ sealed class BreakpointPropertiesDialog2 : Xwt.Dialog
+ {
+ // For button sensitivity.
+ Xwt.DialogButton buttonOk;
+
+ // Groupings for sensitivity
+ Xwt.HBox hboxFunction = new Xwt.HBox ();
+ Xwt.HBox hboxLocation = new Xwt.HBox ();
+ Xwt.HBox hboxLineColumn = new Xwt.HBox ();
+ Xwt.HBox hboxException = new Xwt.HBox ();
+ Xwt.HBox hboxCondition = new Xwt.HBox ();
+
+ // Stop-type radios.
+ readonly Xwt.RadioButton stopOnFunction = new Xwt.RadioButton (GettextCatalog.GetString ("When a function is entered"));
+ readonly Xwt.RadioButton stopOnLocation = new Xwt.RadioButton (GettextCatalog.GetString ("When a location is reached"));
+ readonly Xwt.RadioButton stopOnException = new Xwt.RadioButton (GettextCatalog.GetString ("When an exception is thrown"));
+
+ // Text entries
+ readonly Xwt.TextEntry entryFunctionName = new Xwt.TextEntry ();
+ readonly Xwt.TextEntry entryLocationFile = new Xwt.TextEntry ();
+ readonly Xwt.TextEntry entryLocationLine = new Xwt.TextEntry ();
+ readonly Xwt.TextEntry entryLocationColumn = new Xwt.TextEntry ();
+ readonly Xwt.TextEntry entryExceptionType = new Xwt.TextEntry ();
+ readonly Xwt.TextEntry entryConditionalExpression = new Xwt.TextEntry ();
+ readonly Xwt.TextEntry entryPrintExpression = new Xwt.TextEntry ();
+
+ // Warning icon
+ readonly Xwt.ImageView warningFunction = new Xwt.ImageView (Xwt.StockIcons.Warning);
+ readonly Xwt.ImageView warningLocation = new Xwt.ImageView (Xwt.StockIcons.Warning);
+ readonly Xwt.ImageView warningException = new Xwt.ImageView (Xwt.StockIcons.Warning);
+ readonly Xwt.ImageView warningCondition = new Xwt.ImageView (Xwt.StockIcons.Warning);
+
+ // Combobox + Pager
+ readonly Xwt.SpinButton ignoreHitCount = new Xwt.SpinButton ();
+ readonly Xwt.ComboBox ignoreHitType = new Xwt.ComboBox ();
+ readonly Xwt.ComboBox conditionalHitType = new Xwt.ComboBox ();
+
+ // Optional checkboxes.
+ readonly Xwt.CheckBox checkIncludeSubclass = new Xwt.CheckBox (GettextCatalog.GetString ("Include subclasses"));
+ readonly Xwt.CheckBox checkPrintExpression = new Xwt.CheckBox (GettextCatalog.GetString ("Print an expression to the debugger output"));
+ readonly Xwt.CheckBox checkResumeExecution = new Xwt.CheckBox (GettextCatalog.GetString ("Resume execution automatically"));
+
+ BreakEvent be;
+ string[] parsedParamTypes;
+ string parsedFunction;
+ readonly HashSet<string> classes = new HashSet<string> ();
+
+ public BreakpointPropertiesDialog2 (BreakEvent be)
+ {
+ this.be = be;
+
+ LoadExceptionList ();
+ Initialize ();
+ SetInitialData ();
+ SetLayout ();
+ }
+
+ void Initialize ()
+ {
+ Title = GettextCatalog.GetString (be == null ? "New Breakpoint" : "Breakpoint Properties");
+ var buttonLabel = GettextCatalog.GetString (be == null ? "Add breakpoint" : "Modify breakpoint");
+
+ var stopGroup = new Xwt.RadioButtonGroup ();
+ stopOnFunction.Group = stopGroup;
+ stopOnLocation.Group = stopGroup;
+ stopOnException.Group = stopGroup;
+
+ ignoreHitType.Items.Add (HitCountMode.None, GettextCatalog.GetString ("always"));
+ ignoreHitType.Items.Add (HitCountMode.LessThan, GettextCatalog.GetString ("when hit count is less than"));
+ ignoreHitType.Items.Add (HitCountMode.LessThanOrEqualTo, GettextCatalog.GetString ("when hit count is less than or equal to"));
+ ignoreHitType.Items.Add (HitCountMode.EqualTo, GettextCatalog.GetString ("when hit count is equal to"));
+ ignoreHitType.Items.Add (HitCountMode.GreaterThan, GettextCatalog.GetString ("when hit count is greater than"));
+ ignoreHitType.Items.Add (HitCountMode.GreaterThanOrEqualTo, GettextCatalog.GetString ("when hit count is greater than or equal to"));
+ ignoreHitType.Items.Add (HitCountMode.MultipleOf, GettextCatalog.GetString ("when hit count is a multiple of"));
+
+ ignoreHitCount.IncrementValue = 1;
+
+ conditionalHitType.Items.Add (ConditionalHitWhen.ConditionIsTrue, GettextCatalog.GetString ("is true"));
+ conditionalHitType.Items.Add (ConditionalHitWhen.ExpressionChanges, GettextCatalog.GetString ("expression changes"));
+
+ buttonOk = new Xwt.DialogButton (buttonLabel, Xwt.Command.Ok) {
+ Sensitive = false
+ };
+
+ // Register events.
+ stopGroup.ActiveRadioButtonChanged += OnUpdateControls;
+ entryFunctionName.Changed += OnUpdateControls;
+ entryLocationFile.Changed += OnUpdateControls;
+ entryLocationLine.Changed += OnUpdateControls;
+ entryLocationColumn.Changed += OnUpdateControls;
+
+ entryConditionalExpression.Changed += OnUpdateControls;
+ ignoreHitType.SelectionChanged += OnUpdateControls;
+ checkPrintExpression.Toggled += OnUpdateControls;
+
+ entryFunctionName.Changed += OnUpdateText;
+ entryLocationFile.Changed += OnUpdateText;
+ entryExceptionType.Changed += OnUpdateText;
+ entryPrintExpression.Changed += OnUpdateText;
+
+ // TODO: Fix completion.
+ //entryExceptionType.KeyReleased += OnEditKeyRelease;
+ //entryExceptionType.KeyPressed += PopupCompletion;
+
+ buttonOk.Clicked += OnSave;
+ }
+
+ void SetInitialFunctionBreakpointData (FunctionBreakpoint fb)
+ {
+ stopOnFunction.Active = true;
+ if (fb.ParamTypes != null) {
+ // FIXME: support non-C# syntax based on fb.Language
+ entryFunctionName.Text = fb.FunctionName + " (" + String.Join (", ", fb.ParamTypes) + ")";
+ } else
+ entryFunctionName.Text = fb.FunctionName;
+ }
+
+ void SetInitialBreakpointData (Breakpoint bp)
+ {
+ stopOnLocation.Active = true;
+ entryLocationFile.Text = bp.FileName;
+ entryLocationLine.Text = bp.Line.ToString ();
+ entryLocationColumn.Text = bp.Column.ToString ();
+
+ if (!String.IsNullOrEmpty (bp.ConditionExpression)) {
+ entryConditionalExpression.Text = bp.ConditionExpression;
+ conditionalHitType.SelectedItem = bp.BreakIfConditionChanges ? ConditionalHitWhen.ExpressionChanges : ConditionalHitWhen.ConditionIsTrue;
+ }
+
+ Project project = null;
+ if (!String.IsNullOrEmpty (bp.FileName))
+ project = IdeApp.Workspace.GetProjectContainingFile (bp.FileName);
+
+ if (project != null) {
+ // Check the startup project of the solution too, since the current project may be a library
+ SolutionEntityItem startup = project.ParentSolution.StartupItem;
+ entryConditionalExpression.Sensitive = DebuggingService.IsFeatureSupported (project, DebuggerFeatures.ConditionalBreakpoints) ||
+ DebuggingService.IsFeatureSupported (startup, DebuggerFeatures.ConditionalBreakpoints);
+
+ bool canTrace = DebuggingService.IsFeatureSupported (project, DebuggerFeatures.Tracepoints) ||
+ DebuggingService.IsFeatureSupported (startup, DebuggerFeatures.Tracepoints);
+
+ checkPrintExpression.Sensitive = canTrace;
+ entryPrintExpression.Sensitive = canTrace;
+ }
+ }
+
+ void SetInitialCatchpointData (Catchpoint cp)
+ {
+ entryExceptionType.Text = cp.ExceptionName;
+ }
+
+ void SetInitialData ()
+ {
+ // FIXME: Add support for not doing base add
+ checkIncludeSubclass.Active = true;
+ checkIncludeSubclass.Sensitive = false;
+
+ if (be != null) {
+ stopOnException.Sensitive = false;
+ stopOnFunction.Sensitive = false;
+ stopOnLocation.Sensitive = false;
+ entryLocationFile.ReadOnly = true;
+ entryLocationLine.ReadOnly = true;
+ entryLocationColumn.ReadOnly = true;
+ entryExceptionType.ReadOnly = true;
+
+ ignoreHitType.SelectedItem = be.HitCountMode;
+ ignoreHitCount.Value = be.HitCount;
+
+ if ((be.HitAction & HitAction.PrintExpression) != HitAction.None) {
+ checkPrintExpression.Active = true;
+ entryPrintExpression.Text = be.TraceExpression;
+ }
+ checkResumeExecution.Active |= (be.HitAction & HitAction.Break) == HitAction.None;
+ } else {
+ ignoreHitType.SelectedItem = HitCountMode.None;
+ conditionalHitType.SelectedItem = ConditionalHitWhen.ConditionIsTrue;
+
+ if (IdeApp.Workbench.ActiveDocument != null) {
+ entryLocationFile.Text = IdeApp.Workbench.ActiveDocument.FileName;
+ entryLocationLine.Text = IdeApp.Workbench.ActiveDocument.Editor.Caret.Line.ToString ();
+ entryLocationColumn.Text = IdeApp.Workbench.ActiveDocument.Editor.Caret.Column.ToString ();
+ }
+ }
+
+ var fb = be as FunctionBreakpoint;
+ if (fb != null)
+ SetInitialFunctionBreakpointData (fb);
+
+ var bp = be as Breakpoint;
+ if (bp != null)
+ SetInitialBreakpointData (bp);
+
+ var cp = be as Catchpoint;
+ if (cp != null)
+ SetInitialCatchpointData (cp);
+ }
+
+ void SaveFunctionBreakpoint (FunctionBreakpoint fb)
+ {
+ fb.FunctionName = parsedFunction;
+ fb.ParamTypes = parsedParamTypes;
+ }
+
+ void SaveBreakpoint (Breakpoint bp, bool isNew)
+ {
+ if (isNew) {
+ bp.SetColumn (Int32.Parse (entryLocationColumn.Text));
+ bp.SetLine (Int32.Parse (entryLocationLine.Text));
+ }
+
+ if (!String.IsNullOrEmpty (entryConditionalExpression.Text)) {
+ bp.ConditionExpression = entryConditionalExpression.Text;
+ bp.BreakIfConditionChanges = conditionalHitType.SelectedItem.Equals (ConditionalHitWhen.ExpressionChanges);
+ } else
+ bp.ConditionExpression = null;
+ }
+
+ void OnSave (object sender, EventArgs e)
+ {
+ bool isNew = false;
+ if (be == null) {
+ isNew = true;
+
+ if (stopOnFunction.Active)
+ be = new FunctionBreakpoint ("", "C#");
+ else if (stopOnLocation.Active)
+ be = new Breakpoint (entryLocationFile.Text, Int32.Parse (entryLocationLine.Text), Int32.Parse (entryLocationColumn.Text));
+ else if (stopOnException.Active)
+ be = new Catchpoint (entryExceptionType.Text);
+ else
+ return;
+ }
+
+ var fb = be as FunctionBreakpoint;
+ if (fb != null)
+ SaveFunctionBreakpoint (fb);
+
+ var bp = be as Breakpoint;
+ if (bp != null)
+ SaveBreakpoint (bp, isNew);
+
+ be.HitCountMode = (HitCountMode)ignoreHitType.SelectedItem;
+ be.HitCount = be.HitCountMode != HitCountMode.None ? (int)ignoreHitCount.Value : 0;
+
+ be.HitAction = HitAction.None;
+ if (checkPrintExpression.Active) {
+ be.HitAction |= HitAction.PrintExpression;
+ be.TraceExpression = entryPrintExpression.Text;
+ }
+ if (!checkResumeExecution.Active)
+ be.HitAction |= HitAction.Break;
+
+ be.CommitChanges ();
+ }
+
+ void OnUpdateControls (object sender, EventArgs e)
+ {
+ // Check which radio is selected.
+ hboxFunction.Sensitive = stopOnFunction.Active;
+ hboxLineColumn.Sensitive = stopOnLocation.Active;
+ hboxLocation.Sensitive = stopOnLocation.Active;
+ hboxException.Sensitive = stopOnException.Active;
+ // FIXME: Add support for not doing base add
+ //checkIncludeSubclass.Sensitive = stopOnException.Active;
+ hboxCondition.Sensitive = !stopOnException.Active;
+
+ // Check conditional
+ if (!String.IsNullOrEmpty (entryConditionalExpression.Text))
+ conditionalHitType.Show ();
+ else
+ conditionalHitType.Hide ();
+
+ // Check ignoring hit counts.
+ if (ignoreHitType.SelectedItem.Equals (HitCountMode.None))
+ ignoreHitCount.Hide ();
+ else
+ ignoreHitCount.Show ();
+
+ // Check printing an expression.
+ entryPrintExpression.Sensitive = checkPrintExpression.Active;
+ checkResumeExecution.Sensitive = checkPrintExpression.Active;
+ checkResumeExecution.Active &= checkPrintExpression.Active;
+
+ // And display warning icons
+ buttonOk.Sensitive = CheckValidity ();
+ }
+
+ void OnUpdateText (object sender, EventArgs e)
+ {
+ buttonOk.Sensitive = CheckValidity ();
+ }
+
+ bool CheckValidity ()
+ {
+ if (be is FunctionBreakpoint) {
+ string text = entryFunctionName.Text.Trim ();
+
+ if (stopOnFunction.Active) {
+ if (text.Length == 0) {
+ warningFunction.Show ();
+ warningFunction.TooltipText = GettextCatalog.GetString ("Function name not specified");
+ return false;
+ }
+
+ if (!TryParseFunction (text, out parsedFunction, out parsedParamTypes)) {
+ warningFunction.Show ();
+ warningFunction.TooltipText = GettextCatalog.GetString ("Invalid function syntax");
+ return false;
+ }
+ }
+ } else if (be is Breakpoint) {
+ if (!System.IO.File.Exists (entryLocationFile.Text)) {
+ warningLocation.Show ();
+ warningLocation.TooltipText = GettextCatalog.GetString ("File does not exist");
+ return false;
+ }
+
+ int val;
+ if (!Int32.TryParse (entryLocationLine.Text, out val)) {
+ warningLocation.Show ();
+ warningLocation.TooltipText = GettextCatalog.GetString ("Line is not a number");
+ return false;
+ }
+
+ if (!Int32.TryParse (entryLocationColumn.Text, out val)) {
+ warningLocation.Show ();
+ warningLocation.TooltipText = GettextCatalog.GetString ("Column is not a number");
+ return false;
+ }
+
+ if (stopOnLocation.Active) {
+ if (checkPrintExpression.Active && entryPrintExpression.Text.Length == 0) {
+ warningCondition.Show ();
+ warningCondition.TooltipText = GettextCatalog.GetString ("Trace expression not specified");
+ return false;
+ }
+ }
+ } else if (be is Catchpoint) {
+ if (!classes.Contains (entryExceptionType.Text)) {
+ warningException.Show ();
+ warningException.TooltipText = GettextCatalog.GetString ("Exception not identified");
+ return false;
+ }
+ }
+
+ warningFunction.Hide ();
+ warningLocation.Hide ();
+ warningException.Hide ();
+ warningCondition.Hide ();
+
+ return true;
+ }
+
+ static bool TryParseFunction (string signature, out string function, out string[] paramTypes)
+ {
+ int paramListStart = signature.IndexOf ('(');
+ int paramListEnd = signature.IndexOf (')');
+
+ if (paramListStart == -1 && paramListEnd == -1) {
+ function = signature;
+ paramTypes = null;
+ return true;
+ }
+
+ if (paramListEnd != signature.Length - 1) {
+ paramTypes = null;
+ function = null;
+ return false;
+ }
+
+ function = signature.Substring (0, paramListStart).Trim ();
+
+ paramListStart++;
+
+ if (!FunctionBreakpoint.TryParseParameters (signature, paramListStart, paramListEnd, out paramTypes)) {
+ paramTypes = null;
+ function = null;
+ return false;
+ }
+
+ return true;
+ }
+
+ void LoadExceptionList ()
+ {
+ classes.Add ("System.Exception");
+ if (IdeApp.ProjectOperations.CurrentSelectedProject != null) {
+ var dom = TypeSystemService.GetCompilation (IdeApp.ProjectOperations.CurrentSelectedProject);
+ foreach (var t in dom.FindType (typeof (Exception)).GetSubTypeDefinitions ())
+ classes.Add (t.ReflectionName);
+ } else {
+ // no need to unload this assembly context, it's not cached.
+ var unresolvedAssembly = TypeSystemService.LoadAssemblyContext (Runtime.SystemAssemblyService.CurrentRuntime, MonoDevelop.Core.Assemblies.TargetFramework.Default, typeof(Uri).Assembly.Location);
+ var mscorlib = TypeSystemService.LoadAssemblyContext (Runtime.SystemAssemblyService.CurrentRuntime, MonoDevelop.Core.Assemblies.TargetFramework.Default, typeof(object).Assembly.Location);
+ if (unresolvedAssembly != null && mscorlib != null) {
+ var dom = new ICSharpCode.NRefactory.TypeSystem.Implementation.SimpleCompilation (unresolvedAssembly, mscorlib);
+ foreach (var t in dom.FindType (typeof (Exception)).GetSubTypeDefinitions ())
+ classes.Add (t.ReflectionName);
+ }
+ }
+ }
+
+ public BreakEvent GetBreakEvent ()
+ {
+ return be;
+ }
+
+ void SetLayout ()
+ {
+ var vbox = new Xwt.VBox ();
+ vbox.MinHeight = 400;
+ vbox.MinWidth = 450;
+
+ vbox.PackStart (new Xwt.Label (GettextCatalog.GetString ("Pause program execution in the debugger")));
+
+ // Radio group
+ var vboxRadio = new Xwt.VBox {
+ MarginLeft = 12
+ };
+
+ // Function group
+ vboxRadio.PackStart (stopOnFunction);
+
+ hboxFunction = new Xwt.HBox {
+ MarginLeft = 12
+ };
+ hboxFunction.PackStart (new Xwt.Label (GettextCatalog.GetString ("Function:")));
+ hboxFunction.PackStart (entryFunctionName, true);
+ hboxFunction.PackEnd (warningFunction);
+
+ vboxRadio.PackStart (hboxFunction);
+
+ // Location group
+ vboxRadio.PackStart (stopOnLocation);
+
+ var vboxLocation = new Xwt.VBox {
+ MarginLeft = 12
+ };
+ hboxLocation = new Xwt.HBox ();
+ hboxLocation.PackStart (new Xwt.Label (GettextCatalog.GetString ("Location:")));
+ hboxLocation.PackStart (entryLocationFile, true);
+ hboxLocation.PackEnd (warningLocation);
+ vboxLocation.PackStart (hboxLocation);
+
+ hboxLineColumn = new Xwt.HBox ();
+ hboxLineColumn.PackStart (new Xwt.Label (GettextCatalog.GetString ("Line:")));
+ hboxLineColumn.PackStart (entryLocationLine);
+ hboxLineColumn.PackStart (new Xwt.Label (GettextCatalog.GetString ("Column:")));
+ hboxLineColumn.PackStart (entryLocationColumn);
+ vboxLocation.PackStart (hboxLineColumn);
+
+ vboxRadio.PackStart (vboxLocation);
+
+ // Exception group
+ vboxRadio.PackStart (stopOnException);
+
+ var vboxException = new Xwt.VBox {
+ MarginLeft = 12
+ };
+ hboxException = new Xwt.HBox ();
+ hboxException.PackStart (new Xwt.Label (GettextCatalog.GetString ("Type:")));
+ hboxException.PackStart (entryExceptionType, true);
+ hboxException.PackEnd (warningException);
+
+ vboxException.PackStart (hboxException);
+ vboxException.PackStart (checkIncludeSubclass);
+ vboxRadio.PackStart (vboxException);
+
+ vbox.PackStart (vboxRadio);
+
+ hboxCondition = new Xwt.HBox ();
+ hboxCondition.PackStart (new Xwt.Label (GettextCatalog.GetString ("Condition:")));
+ hboxCondition.PackStart (entryConditionalExpression, true);
+ hboxCondition.PackEnd (warningCondition);
+ hboxCondition.PackEnd (conditionalHitType);
+
+ vbox.PackStart (hboxCondition);
+
+ var hboxHitCount = new Xwt.HBox ();
+ hboxHitCount.PackStart (new Xwt.Label (GettextCatalog.GetString ("When hit break")));
+ hboxHitCount.PackStart (ignoreHitType);
+ hboxHitCount.PackStart (ignoreHitCount);
+
+ vbox.PackStart (hboxHitCount);
+
+ vbox.PackStart (checkPrintExpression);
+ var vboxExpression = new Xwt.VBox {
+ MarginLeft = 12
+ };
+ vboxExpression.PackStart (entryPrintExpression);
+ vboxExpression.PackStart (checkResumeExecution);
+
+ vbox.PackStart (vboxExpression);
+
+ Buttons.Add (new Xwt.DialogButton (Xwt.Command.Cancel));
+ Buttons.Add (buttonOk);
+
+ Content = vbox;
+
+ OnUpdateControls (null, null);
+ }
+ }
+}
\ No newline at end of file
Removed: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog2.cs
===================================================================
@@ -1,544 +0,0 @@
-//
-// BreakpointsPropertiesDialog.cs
-//
-// Author:
-// Therzok <[email protected]>
-//
-// Copyright (c) 2013 Therzok
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-using System;
-using Mono.Debugging.Client;
-using MonoDevelop.Core;
-using MonoDevelop.Projects;
-using MonoDevelop.Ide;
-using System.Collections.Generic;
-using MonoDevelop.Ide.TypeSystem;
-using ICSharpCode.NRefactory.TypeSystem;
-using System.Linq;
-
-namespace MonoDevelop.Debugger
-{
- enum ConditionalHitWhen
- {
- ConditionIsTrue,
- ExpressionChanges
- }
-
- sealed class BreakpointPropertiesDialog2 : Xwt.Dialog
- {
- // For button sensitivity.
- Xwt.DialogButton buttonOk;
-
- // Groupings for sensitivity
- Xwt.HBox hboxFunction = new Xwt.HBox ();
- Xwt.HBox hboxLocation = new Xwt.HBox ();
- Xwt.HBox hboxLineColumn = new Xwt.HBox ();
- Xwt.HBox hboxException = new Xwt.HBox ();
- Xwt.HBox hboxCondition = new Xwt.HBox ();
-
- // Stop-type radios.
- readonly Xwt.RadioButton stopOnFunction = new Xwt.RadioButton (GettextCatalog.GetString ("When a function is entered"));
- readonly Xwt.RadioButton stopOnLocation = new Xwt.RadioButton (GettextCatalog.GetString ("When a location is reached"));
- readonly Xwt.RadioButton stopOnException = new Xwt.RadioButton (GettextCatalog.GetString ("When an exception is thrown"));
-
- // Text entries
- readonly Xwt.TextEntry entryFunctionName = new Xwt.TextEntry ();
- readonly Xwt.TextEntry entryLocationFile = new Xwt.TextEntry ();
- readonly Xwt.TextEntry entryLocationLine = new Xwt.TextEntry ();
- readonly Xwt.TextEntry entryLocationColumn = new Xwt.TextEntry ();
- readonly Xwt.TextEntry entryExceptionType = new Xwt.TextEntry ();
- readonly Xwt.TextEntry entryConditionalExpression = new Xwt.TextEntry ();
- readonly Xwt.TextEntry entryPrintExpression = new Xwt.TextEntry ();
-
- // Warning icon
- readonly Xwt.ImageView warningFunction = new Xwt.ImageView (Xwt.StockIcons.Warning);
- readonly Xwt.ImageView warningLocation = new Xwt.ImageView (Xwt.StockIcons.Warning);
- readonly Xwt.ImageView warningException = new Xwt.ImageView (Xwt.StockIcons.Warning);
- readonly Xwt.ImageView warningCondition = new Xwt.ImageView (Xwt.StockIcons.Warning);
-
- // Combobox + Pager
- readonly Xwt.SpinButton ignoreHitCount = new Xwt.SpinButton ();
- readonly Xwt.ComboBox ignoreHitType = new Xwt.ComboBox ();
- readonly Xwt.ComboBox conditionalHitType = new Xwt.ComboBox ();
-
- // Optional checkboxes.
- readonly Xwt.CheckBox checkIncludeSubclass = new Xwt.CheckBox (GettextCatalog.GetString ("Include subclasses"));
- readonly Xwt.CheckBox checkPrintExpression = new Xwt.CheckBox (GettextCatalog.GetString ("Print an expression to the debugger output"));
- readonly Xwt.CheckBox checkResumeExecution = new Xwt.CheckBox (GettextCatalog.GetString ("Resume execution automatically"));
-
- BreakEvent be;
- string[] parsedParamTypes;
- string parsedFunction;
- readonly HashSet<string> classes = new HashSet<string> ();
-
- public BreakpointPropertiesDialog2 (BreakEvent be)
- {
- this.be = be;
-
- LoadExceptionList ();
- Initialize ();
- SetInitialData ();
- SetLayout ();
- }
-
- void Initialize ()
- {
- Title = GettextCatalog.GetString (be == null ? "New Breakpoint" : "Breakpoint Properties");
- var buttonLabel = GettextCatalog.GetString (be == null ? "Add breakpoint" : "Modify breakpoint");
-
- var stopGroup = new Xwt.RadioButtonGroup ();
- stopOnFunction.Group = stopGroup;
- stopOnLocation.Group = stopGroup;
- stopOnException.Group = stopGroup;
-
- ignoreHitType.Items.Add (HitCountMode.None, GettextCatalog.GetString ("always"));
- ignoreHitType.Items.Add (HitCountMode.LessThan, GettextCatalog.GetString ("when hit count is less than"));
- ignoreHitType.Items.Add (HitCountMode.LessThanOrEqualTo, GettextCatalog.GetString ("when hit count is less than or equal to"));
- ignoreHitType.Items.Add (HitCountMode.EqualTo, GettextCatalog.GetString ("when hit count is equal to"));
- ignoreHitType.Items.Add (HitCountMode.GreaterThan, GettextCatalog.GetString ("when hit count is greater than"));
- ignoreHitType.Items.Add (HitCountMode.GreaterThanOrEqualTo, GettextCatalog.GetString ("when hit count is greater than or equal to"));
- ignoreHitType.Items.Add (HitCountMode.MultipleOf, GettextCatalog.GetString ("when hit count is a multiple of"));
-
- ignoreHitCount.IncrementValue = 1;
-
- conditionalHitType.Items.Add (ConditionalHitWhen.ConditionIsTrue, GettextCatalog.GetString ("is true"));
- conditionalHitType.Items.Add (ConditionalHitWhen.ExpressionChanges, GettextCatalog.GetString ("expression changes"));
-
- buttonOk = new Xwt.DialogButton (buttonLabel, Xwt.Command.Ok) {
- Sensitive = false
- };
-
- // Register events.
- stopGroup.ActiveRadioButtonChanged += OnUpdateControls;
- entryFunctionName.Changed += OnUpdateControls;
- entryLocationFile.Changed += OnUpdateControls;
- entryLocationLine.Changed += OnUpdateControls;
- entryLocationColumn.Changed += OnUpdateControls;
-
- entryConditionalExpression.Changed += OnUpdateControls;
- ignoreHitType.SelectionChanged += OnUpdateControls;
- checkPrintExpression.Toggled += OnUpdateControls;
-
- entryFunctionName.Changed += OnUpdateText;
- entryLocationFile.Changed += OnUpdateText;
- entryExceptionType.Changed += OnUpdateText;
- entryPrintExpression.Changed += OnUpdateText;
-
- buttonOk.Clicked += OnSave;
- }
-
- void SetInitialFunctionBreakpointData (FunctionBreakpoint fb)
- {
- stopOnFunction.Active = true;
- if (fb.ParamTypes != null) {
- // FIXME: support non-C# syntax based on fb.Language
- entryFunctionName.Text = fb.FunctionName + " (" + String.Join (", ", fb.ParamTypes) + ")";
- } else
- entryFunctionName.Text = fb.FunctionName;
- }
-
- void SetInitialBreakpointData (Breakpoint bp)
- {
- stopOnLocation.Active = true;
- entryLocationFile.Text = bp.FileName;
- entryLocationLine.Text = bp.Line.ToString ();
- entryLocationColumn.Text = bp.Column.ToString ();
-
- if (!String.IsNullOrEmpty (bp.ConditionExpression)) {
- entryConditionalExpression.Text = bp.ConditionExpression;
- conditionalHitType.SelectedItem = bp.BreakIfConditionChanges ? ConditionalHitWhen.ExpressionChanges : ConditionalHitWhen.ConditionIsTrue;
- }
-
- Project project = null;
- if (!String.IsNullOrEmpty (bp.FileName))
- project = IdeApp.Workspace.GetProjectContainingFile (bp.FileName);
-
- if (project != null) {
- // Check the startup project of the solution too, since the current project may be a library
- SolutionEntityItem startup = project.ParentSolution.StartupItem;
- entryConditionalExpression.Sensitive = DebuggingService.IsFeatureSupported (project, DebuggerFeatures.ConditionalBreakpoints) ||
- DebuggingService.IsFeatureSupported (startup, DebuggerFeatures.ConditionalBreakpoints);
-
- bool canTrace = DebuggingService.IsFeatureSupported (project, DebuggerFeatures.Tracepoints) ||
- DebuggingService.IsFeatureSupported (startup, DebuggerFeatures.Tracepoints);
-
- checkPrintExpression.Sensitive = canTrace;
- entryPrintExpression.Sensitive = canTrace;
- }
- }
-
- void SetInitialCatchpointData (Catchpoint cp)
- {
- entryExceptionType.Text = cp.ExceptionName;
- }
-
- void SetInitialData ()
- {
- // FIXME: Add support for not doing base add
- checkIncludeSubclass.Active = true;
- checkIncludeSubclass.Sensitive = false;
-
- if (be != null) {
- stopOnException.Sensitive = false;
- stopOnFunction.Sensitive = false;
- stopOnLocation.Sensitive = false;
- entryLocationFile.ReadOnly = true;
- entryLocationLine.ReadOnly = true;
- entryLocationColumn.ReadOnly = true;
- entryExceptionType.ReadOnly = true;
-
- ignoreHitType.SelectedItem = be.HitCountMode;
- ignoreHitCount.Value = be.HitCount;
-
- if ((be.HitAction & HitAction.PrintExpression) != HitAction.None) {
- checkPrintExpression.Active = true;
- entryPrintExpression.Text = be.TraceExpression;
- }
- checkResumeExecution.Active |= (be.HitAction & HitAction.Break) == HitAction.None;
- } else {
- ignoreHitType.SelectedItem = HitCountMode.None;
- conditionalHitType.SelectedItem = ConditionalHitWhen.ConditionIsTrue;
-
- if (IdeApp.Workbench.ActiveDocument != null) {
- entryLocationFile.Text = IdeApp.Workbench.ActiveDocument.FileName;
- entryLocationLine.Text = IdeApp.Workbench.ActiveDocument.Editor.Caret.Line.ToString ();
- entryLocationColumn.Text = IdeApp.Workbench.ActiveDocument.Editor.Caret.Column.ToString ();
- }
- }
-
- var fb = be as FunctionBreakpoint;
- if (fb != null)
- SetInitialFunctionBreakpointData (fb);
-
- var bp = be as Breakpoint;
- if (bp != null)
- SetInitialBreakpointData (bp);
-
- var cp = be as Catchpoint;
- if (cp != null)
- SetInitialCatchpointData (cp);
- }
-
- void SaveFunctionBreakpoint (FunctionBreakpoint fb)
- {
- fb.FunctionName = parsedFunction;
- fb.ParamTypes = parsedParamTypes;
- }
-
- void SaveBreakpoint (Breakpoint bp, bool isNew)
- {
- if (isNew) {
- bp.SetColumn (Int32.Parse (entryLocationColumn.Text));
- bp.SetLine (Int32.Parse (entryLocationLine.Text));
- }
-
- if (!String.IsNullOrEmpty (entryConditionalExpression.Text)) {
- bp.ConditionExpression = entryConditionalExpression.Text;
- bp.BreakIfConditionChanges = conditionalHitType.SelectedItem.Equals (ConditionalHitWhen.ExpressionChanges);
- } else
- bp.ConditionExpression = null;
- }
-
- void OnSave (object sender, EventArgs e)
- {
- bool isNew = false;
- if (be == null) {
- isNew = true;
-
- if (stopOnFunction.Active)
- be = new FunctionBreakpoint ("", "C#");
- else if (stopOnLocation.Active)
- be = new Breakpoint (entryLocationFile.Text, Int32.Parse (entryLocationLine.Text), Int32.Parse (entryLocationColumn.Text));
- else if (stopOnException.Active)
- be = new Catchpoint (entryExceptionType.Text);
- else
- return;
- }
-
- var fb = be as FunctionBreakpoint;
- if (fb != null)
- SaveFunctionBreakpoint (fb);
-
- var bp = be as Breakpoint;
- if (bp != null)
- SaveBreakpoint (bp, isNew);
-
- be.HitCountMode = (HitCountMode)ignoreHitType.SelectedItem;
- be.HitCount = be.HitCountMode != HitCountMode.None ? (int)ignoreHitCount.Value : 0;
-
- be.HitAction = HitAction.None;
- if (checkPrintExpression.Active) {
- be.HitAction |= HitAction.PrintExpression;
- be.TraceExpression = entryPrintExpression.Text;
- }
- if (!checkResumeExecution.Active)
- be.HitAction |= HitAction.Break;
-
- be.CommitChanges ();
- }
-
- void OnUpdateControls (object sender, EventArgs e)
- {
- // Check which radio is selected.
- hboxFunction.Sensitive = stopOnFunction.Active;
- hboxLineColumn.Sensitive = stopOnLocation.Active;
- hboxLocation.Sensitive = stopOnLocation.Active;
- hboxException.Sensitive = stopOnException.Active;
- // FIXME: Add support for not doing base add
- //checkIncludeSubclass.Sensitive = stopOnException.Active;
- hboxCondition.Sensitive = !stopOnException.Active;
-
- // Check conditional
- if (!String.IsNullOrEmpty (entryConditionalExpression.Text))
- conditionalHitType.Show ();
- else
- conditionalHitType.Hide ();
-
- // Check ignoring hit counts.
- if (ignoreHitType.SelectedItem.Equals (HitCountMode.None))
- ignoreHitCount.Hide ();
- else
- ignoreHitCount.Show ();
-
- // Check printing an expression.
- entryPrintExpression.Sensitive = checkPrintExpression.Active;
- checkResumeExecution.Sensitive = checkPrintExpression.Active;
- checkResumeExecution.Active &= checkPrintExpression.Active;
-
- // And display warning icons
- buttonOk.Sensitive = CheckValidity ();
- }
-
- void OnUpdateText (object sender, EventArgs e)
- {
- buttonOk.Sensitive = CheckValidity ();
- }
-
- bool CheckValidity ()
- {
- if (be is FunctionBreakpoint) {
- string text = entryFunctionName.Text.Trim ();
-
- if (stopOnFunction.Active) {
- if (text.Length == 0) {
- warningFunction.Show ();
- warningFunction.TooltipText = GettextCatalog.GetString ("Function name not specified");
- return false;
- }
-
- if (!TryParseFunction (text, out parsedFunction, out parsedParamTypes)) {
- warningFunction.Show ();
- warningFunction.TooltipText = GettextCatalog.GetString ("Invalid function syntax");
- return false;
- }
- }
- } else if (be is Breakpoint) {
- if (!System.IO.File.Exists (entryLocationFile.Text)) {
- warningLocation.Show ();
- warningLocation.TooltipText = GettextCatalog.GetString ("File does not exist");
- return false;
- }
-
- int val;
- if (!Int32.TryParse (entryLocationLine.Text, out val)) {
- warningLocation.Show ();
- warningLocation.TooltipText = GettextCatalog.GetString ("Line is not a number");
- return false;
- }
-
- if (!Int32.TryParse (entryLocationColumn.Text, out val)) {
- warningLocation.Show ();
- warningLocation.TooltipText = GettextCatalog.GetString ("Column is not a number");
- return false;
- }
-
- if (stopOnLocation.Active) {
- if (checkPrintExpression.Active && entryPrintExpression.Text.Length == 0) {
- warningCondition.Show ();
- warningCondition.TooltipText = GettextCatalog.GetString ("Trace expression not specified");
- return false;
- }
- }
- } else if (be is Catchpoint) {
- if (!classes.Contains (entryExceptionType.Text)) {
- warningException.Show ();
- warningException.TooltipText = GettextCatalog.GetString ("Exception not identified");
- return false;
- }
- }
-
- warningFunction.Hide ();
- warningLocation.Hide ();
- warningException.Hide ();
- warningCondition.Hide ();
-
- return true;
- }
-
- static bool TryParseFunction (string signature, out string function, out string[] paramTypes)
- {
- int paramListStart = signature.IndexOf ('(');
- int paramListEnd = signature.IndexOf (')');
-
- if (paramListStart == -1 && paramListEnd == -1) {
- function = signature;
- paramTypes = null;
- return true;
- }
-
- if (paramListEnd != signature.Length - 1) {
- paramTypes = null;
- function = null;
- return false;
- }
-
- function = signature.Substring (0, paramListStart).Trim ();
-
- paramListStart++;
-
- if (!FunctionBreakpoint.TryParseParameters (signature, paramListStart, paramListEnd, out paramTypes)) {
- paramTypes = null;
- function = null;
- return false;
- }
-
- return true;
- }
-
- void LoadExceptionList ()
- {
- classes.Add ("System.Exception");
- if (IdeApp.ProjectOperations.CurrentSelectedProject != null) {
- var dom = TypeSystemService.GetCompilation (IdeApp.ProjectOperations.CurrentSelectedProject);
- foreach (var t in dom.FindType (typeof (Exception)).GetSubTypeDefinitions ())
- classes.Add (t.ReflectionName);
- } else {
- // no need to unload this assembly context, it's not cached.
- var unresolvedAssembly = TypeSystemService.LoadAssemblyContext (Runtime.SystemAssemblyService.CurrentRuntime, MonoDevelop.Core.Assemblies.TargetFramework.Default, typeof(Uri).Assembly.Location);
- var mscorlib = TypeSystemService.LoadAssemblyContext (Runtime.SystemAssemblyService.CurrentRuntime, MonoDevelop.Core.Assemblies.TargetFramework.Default, typeof(object).Assembly.Location);
- if (unresolvedAssembly != null && mscorlib != null) {
- var dom = new ICSharpCode.NRefactory.TypeSystem.Implementation.SimpleCompilation (unresolvedAssembly, mscorlib);
- foreach (var t in dom.FindType (typeof (Exception)).GetSubTypeDefinitions ())
- classes.Add (t.ReflectionName);
- }
- }
- }
-
- public BreakEvent GetBreakEvent ()
- {
- return be;
- }
-
- void SetLayout ()
- {
- var vbox = new Xwt.VBox ();
- vbox.MinHeight = 400;
- vbox.MinWidth = 450;
-
- vbox.PackStart (new Xwt.Label (GettextCatalog.GetString ("Pause program execution in the debugger")));
-
- // Radio group
- var vboxRadio = new Xwt.VBox {
- MarginLeft = 12
- };
-
- // Function group
- vboxRadio.PackStart (stopOnFunction);
-
- hboxFunction = new Xwt.HBox {
- MarginLeft = 12
- };
- hboxFunction.PackStart (new Xwt.Label (GettextCatalog.GetString ("Function:")));
- hboxFunction.PackStart (entryFunctionName, true);
- hboxFunction.PackEnd (warningFunction);
-
- vboxRadio.PackStart (hboxFunction);
-
- // Location group
- vboxRadio.PackStart (stopOnLocation);
-
- var vboxLocation = new Xwt.VBox {
- MarginLeft = 12
- };
- hboxLocation = new Xwt.HBox ();
- hboxLocation.PackStart (new Xwt.Label (GettextCatalog.GetString ("Location:")));
- hboxLocation.PackStart (entryLocationFile, true);
- hboxLocation.PackEnd (warningLocation);
- vboxLocation.PackStart (hboxLocation);
-
- hboxLineColumn = new Xwt.HBox ();
- hboxLineColumn.PackStart (new Xwt.Label (GettextCatalog.GetString ("Line:")));
- hboxLineColumn.PackStart (entryLocationLine);
- hboxLineColumn.PackStart (new Xwt.Label (GettextCatalog.GetString ("Column:")));
- hboxLineColumn.PackStart (entryLocationColumn);
- vboxLocation.PackStart (hboxLineColumn);
-
- vboxRadio.PackStart (vboxLocation);
-
- // Exception group
- vboxRadio.PackStart (stopOnException);
-
- var vboxException = new Xwt.VBox {
- MarginLeft = 12
- };
- hboxException = new Xwt.HBox ();
- hboxException.PackStart (new Xwt.Label (GettextCatalog.GetString ("Type:")));
- hboxException.PackStart (entryExceptionType, true);
- hboxException.PackEnd (warningException);
-
- vboxException.PackStart (hboxException);
- vboxException.PackStart (checkIncludeSubclass);
- vboxRadio.PackStart (vboxException);
-
- vbox.PackStart (vboxRadio);
-
- hboxCondition = new Xwt.HBox ();
- hboxCondition.PackStart (new Xwt.Label (GettextCatalog.GetString ("Condition:")));
- hboxCondition.PackStart (entryConditionalExpression, true);
- hboxCondition.PackEnd (warningCondition);
- hboxCondition.PackEnd (conditionalHitType);
-
- vbox.PackStart (hboxCondition);
-
- var hboxHitCount = new Xwt.HBox ();
- hboxHitCount.PackStart (new Xwt.Label (GettextCatalog.GetString ("When hit break")));
- hboxHitCount.PackStart (ignoreHitType);
- hboxHitCount.PackStart (ignoreHitCount);
-
- vbox.PackStart (hboxHitCount);
-
- vbox.PackStart (checkPrintExpression);
- var vboxExpression = new Xwt.VBox {
- MarginLeft = 12
- };
- vboxExpression.PackStart (entryPrintExpression);
- vboxExpression.PackStart (checkResumeExecution);
-
- vbox.PackStart (vboxExpression);
-
- Buttons.Add (new Xwt.DialogButton (Xwt.Command.Cancel));
- Buttons.Add (buttonOk);
-
- Content = vbox;
-
- OnUpdateControls (null, null);
- }
- }
-}
\ No newline at end of file
Removed: main/src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.BreakpointPropertiesDialog.cs
===================================================================
@@ -1,486 +0,0 @@
-
-// This file has been generated by the GUI designer. Do not modify.
-namespace MonoDevelop.Debugger
-{
- public partial class BreakpointPropertiesDialog
- {
- private global::Gtk.VBox vboxProperties;
- private global::Gtk.Label label1;
- private global::Gtk.Alignment alignLocation;
- private global::Gtk.Table tableLocation;
- private global::Gtk.Entry entryFileFunction;
- private global::Gtk.HBox hboxLineColumn;
- private global::Gtk.SpinButton spinLine;
- private global::Gtk.HBox hboxColumn;
- private global::Gtk.Label label9;
- private global::Gtk.SpinButton spinColumn;
- private global::Gtk.Label labelFileFunction;
- private global::Gtk.Label labelLine;
- private global::Gtk.Label label2;
- private global::Gtk.Alignment alignCondition;
- private global::Gtk.VBox vboxConditionOptions;
- private global::Gtk.RadioButton radioBreakAlways;
- private global::Gtk.RadioButton radioBreakWhenTrue;
- private global::Gtk.RadioButton radioBreakWhenChanges;
- private global::Gtk.Alignment alignConditionExpression;
- private global::Gtk.HBox hboxConditionExpression;
- private global::Gtk.Label labelConditionExpression;
- private global::Gtk.Entry entryCondition;
- private global::Gtk.Label labelHitCount;
- private global::Gtk.Alignment alignHitCount;
- private global::Gtk.VBox vboxHitCount;
- private global::Gtk.Label labelWhenHit;
- private global::Gtk.HBox hbox1;
- private global::Gtk.ComboBox comboHitCountMode;
- private global::Gtk.SpinButton spinHitCount;
- private global::Gtk.Label label3;
- private global::Gtk.Alignment alignAction;
- private global::Gtk.VBox vboxAction;
- private global::Gtk.Label label11;
- private global::Gtk.RadioButton radioActionBreak;
- private global::Gtk.RadioButton radioActionTrace;
- private global::Gtk.Alignment alignTraceExpression;
- private global::Gtk.HBox boxTraceExpression;
- private global::Gtk.Label labelTraceExpression;
- private global::Gtk.Entry entryTraceExpression;
- private global::Gtk.Button buttonCancel;
- private global::Gtk.Button buttonOk;
-
- protected virtual void Build ()
- {
- global::Stetic.Gui.Initialize (this);
- // Widget MonoDevelop.Debugger.BreakpointPropertiesDialog
- this.Name = "MonoDevelop.Debugger.BreakpointPropertiesDialog";
- this.Title = global::Mono.Unix.Catalog.GetString ("Breakpoint Properties");
- this.WindowPosition = ((global::Gtk.WindowPosition)(4));
- this.Modal = true;
- // Internal child MonoDevelop.Debugger.BreakpointPropertiesDialog.VBox
- global::Gtk.VBox w1 = this.VBox;
- w1.Name = "dialog1_VBox";
- w1.BorderWidth = ((uint)(2));
- // Container child dialog1_VBox.Gtk.Box+BoxChild
- this.vboxProperties = new global::Gtk.VBox ();
- this.vboxProperties.Name = "vboxProperties";
- this.vboxProperties.Spacing = 6;
- this.vboxProperties.BorderWidth = ((uint)(9));
- // Container child vboxProperties.Gtk.Box+BoxChild
- this.label1 = new global::Gtk.Label ();
- this.label1.Name = "label1";
- this.label1.Xalign = 0F;
- this.label1.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Location</b>");
- this.label1.UseMarkup = true;
- this.vboxProperties.Add (this.label1);
- global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vboxProperties [this.label1]));
- w2.Position = 0;
- w2.Expand = false;
- w2.Fill = false;
- // Container child vboxProperties.Gtk.Box+BoxChild
- this.alignLocation = new global::Gtk.Alignment (0F, 0.5F, 1F, 1F);
- this.alignLocation.Name = "alignLocation";
- this.alignLocation.LeftPadding = ((uint)(18));
- // Container child alignLocation.Gtk.Container+ContainerChild
- this.tableLocation = new global::Gtk.Table (((uint)(2)), ((uint)(2)), false);
- this.tableLocation.Name = "tableLocation";
- this.tableLocation.RowSpacing = ((uint)(6));
- this.tableLocation.ColumnSpacing = ((uint)(6));
- // Container child tableLocation.Gtk.Table+TableChild
- this.entryFileFunction = new global::Gtk.Entry ();
- this.entryFileFunction.CanFocus = true;
- this.entryFileFunction.Name = "entryFileFunction";
- this.entryFileFunction.IsEditable = true;
- this.entryFileFunction.InvisibleChar = '●';
- this.tableLocation.Add (this.entryFileFunction);
- global::Gtk.Table.TableChild w3 = ((global::Gtk.Table.TableChild)(this.tableLocation [this.entryFileFunction]));
- w3.LeftAttach = ((uint)(1));
- w3.RightAttach = ((uint)(2));
- w3.YOptions = ((global::Gtk.AttachOptions)(4));
- // Container child tableLocation.Gtk.Table+TableChild
- this.hboxLineColumn = new global::Gtk.HBox ();
- this.hboxLineColumn.Name = "hboxLineColumn";
- this.hboxLineColumn.Spacing = 6;
- // Container child hboxLineColumn.Gtk.Box+BoxChild
- this.spinLine = new global::Gtk.SpinButton (1, 100, 1);
- this.spinLine.CanFocus = true;
- this.spinLine.Name = "spinLine";
- this.spinLine.Adjustment.PageIncrement = 10;
- this.spinLine.ClimbRate = 1;
- this.spinLine.Numeric = true;
- this.spinLine.Value = 1;
- this.hboxLineColumn.Add (this.spinLine);
- global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.hboxLineColumn [this.spinLine]));
- w4.Position = 0;
- w4.Expand = false;
- w4.Fill = false;
- // Container child hboxLineColumn.Gtk.Box+BoxChild
- this.hboxColumn = new global::Gtk.HBox ();
- this.hboxColumn.Name = "hboxColumn";
- this.hboxColumn.Spacing = 6;
- // Container child hboxColumn.Gtk.Box+BoxChild
- this.label9 = new global::Gtk.Label ();
- this.label9.Name = "label9";
- this.label9.LabelProp = global::Mono.Unix.Catalog.GetString ("Column:");
- this.label9.Justify = ((global::Gtk.Justification)(1));
- this.hboxColumn.Add (this.label9);
- global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.hboxColumn [this.label9]));
- w5.Position = 0;
- w5.Expand = false;
- w5.Fill = false;
- // Container child hboxColumn.Gtk.Box+BoxChild
- this.spinColumn = new global::Gtk.SpinButton (1, 100, 1);
- this.spinColumn.CanFocus = true;
- this.spinColumn.Name = "spinColumn";
- this.spinColumn.Adjustment.PageIncrement = 10;
- this.spinColumn.ClimbRate = 1;
- this.spinColumn.Numeric = true;
- this.hboxColumn.Add (this.spinColumn);
- global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.hboxColumn [this.spinColumn]));
- w6.Position = 1;
- w6.Expand = false;
- w6.Fill = false;
- this.hboxLineColumn.Add (this.hboxColumn);
- global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.hboxLineColumn [this.hboxColumn]));
- w7.Position = 1;
- w7.Expand = false;
- w7.Fill = false;
- this.tableLocation.Add (this.hboxLineColumn);
- global::Gtk.Table.TableChild w8 = ((global::Gtk.Table.TableChild)(this.tableLocation [this.hboxLineColumn]));
- w8.TopAttach = ((uint)(1));
- w8.BottomAttach = ((uint)(2));
- w8.LeftAttach = ((uint)(1));
- w8.RightAttach = ((uint)(2));
- w8.XOptions = ((global::Gtk.AttachOptions)(4));
- w8.YOptions = ((global::Gtk.AttachOptions)(4));
- // Container child tableLocation.Gtk.Table+TableChild
- this.labelFileFunction = new global::Gtk.Label ();
- this.labelFileFunction.Name = "labelFileFunction";
- this.labelFileFunction.Xalign = 0F;
- this.labelFileFunction.LabelProp = global::Mono.Unix.Catalog.GetString ("File:");
- this.tableLocation.Add (this.labelFileFunction);
- global::Gtk.Table.TableChild w9 = ((global::Gtk.Table.TableChild)(this.tableLocation [this.labelFileFunction]));
- w9.XOptions = ((global::Gtk.AttachOptions)(4));
- w9.YOptions = ((global::Gtk.AttachOptions)(4));
- // Container child tableLocation.Gtk.Table+TableChild
- this.labelLine = new global::Gtk.Label ();
- this.labelLine.Name = "labelLine";
- this.labelLine.LabelProp = global::Mono.Unix.Catalog.GetString ("Line:");
- this.tableLocation.Add (this.labelLine);
- global::Gtk.Table.TableChild w10 = ((global::Gtk.Table.TableChild)(this.tableLocation [this.labelLine]));
- w10.TopAttach = ((uint)(1));
- w10.BottomAttach = ((uint)(2));
- w10.XOptions = ((global::Gtk.AttachOptions)(4));
- w10.YOptions = ((global::Gtk.AttachOptions)(4));
- this.alignLocation.Add (this.tableLocation);
- this.vboxProperties.Add (this.alignLocation);
- global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.vboxProperties [this.alignLocation]));
- w12.Position = 1;
- w12.Expand = false;
- w12.Fill = false;
- // Container child vboxProperties.Gtk.Box+BoxChild
- this.label2 = new global::Gtk.Label ();
- this.label2.Name = "label2";
- this.label2.Xalign = 0F;
- this.label2.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Condition</b>");
- this.label2.UseMarkup = true;
- this.vboxProperties.Add (this.label2);
- global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.vboxProperties [this.label2]));
- w13.Position = 2;
- w13.Expand = false;
- w13.Fill = false;
- // Container child vboxProperties.Gtk.Box+BoxChild
- this.alignCondition = new global::Gtk.Alignment (0F, 0.5F, 1F, 1F);
- this.alignCondition.Name = "alignCondition";
- this.alignCondition.LeftPadding = ((uint)(18));
- // Container child alignCondition.Gtk.Container+ContainerChild
- this.vboxConditionOptions = new global::Gtk.VBox ();
- this.vboxConditionOptions.Name = "vboxConditionOptions";
- this.vboxConditionOptions.Spacing = 6;
- // Container child vboxConditionOptions.Gtk.Box+BoxChild
- this.radioBreakAlways = new global::Gtk.RadioButton (global::Mono.Unix.Catalog.GetString ("Always break"));
- this.radioBreakAlways.CanFocus = true;
- this.radioBreakAlways.Name = "radioBreakAlways";
- this.radioBreakAlways.DrawIndicator = true;
- this.radioBreakAlways.UseUnderline = true;
- this.radioBreakAlways.Group = new global::GLib.SList (global::System.IntPtr.Zero);
- this.vboxConditionOptions.Add (this.radioBreakAlways);
- global::Gtk.Box.BoxChild w14 = ((global::Gtk.Box.BoxChild)(this.vboxConditionOptions [this.radioBreakAlways]));
- w14.Position = 0;
- w14.Expand = false;
- w14.Fill = false;
- // Container child vboxConditionOptions.Gtk.Box+BoxChild
- this.radioBreakWhenTrue = new global::Gtk.RadioButton (global::Mono.Unix.Catalog.GetString ("Break when condition is true"));
- this.radioBreakWhenTrue.CanFocus = true;
- this.radioBreakWhenTrue.Name = "radioBreakWhenTrue";
- this.radioBreakWhenTrue.DrawIndicator = true;
- this.radioBreakWhenTrue.UseUnderline = true;
- this.radioBreakWhenTrue.Group = this.radioBreakAlways.Group;
- this.vboxConditionOptions.Add (this.radioBreakWhenTrue);
- global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.vboxConditionOptions [this.radioBreakWhenTrue]));
- w15.Position = 1;
- w15.Expand = false;
- w15.Fill = false;
- // Container child vboxConditionOptions.Gtk.Box+BoxChild
- this.radioBreakWhenChanges = new global::Gtk.RadioButton (global::Mono.Unix.Catalog.GetString ("Break when the expression changes"));
- this.radioBreakWhenChanges.CanFocus = true;
- this.radioBreakWhenChanges.Name = "radioBreakWhenChanges";
- this.radioBreakWhenChanges.DrawIndicator = true;
- this.radioBreakWhenChanges.UseUnderline = true;
- this.radioBreakWhenChanges.Group = this.radioBreakAlways.Group;
- this.vboxConditionOptions.Add (this.radioBreakWhenChanges);
- global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.vboxConditionOptions [this.radioBreakWhenChanges]));
- w16.Position = 2;
- w16.Expand = false;
- w16.Fill = false;
- // Container child vboxConditionOptions.Gtk.Box+BoxChild
- this.alignConditionExpression = new global::Gtk.Alignment (0F, 0.5F, 1F, 1F);
- this.alignConditionExpression.Name = "alignConditionExpression";
- this.alignConditionExpression.LeftPadding = ((uint)(18));
- // Container child alignConditionExpression.Gtk.Container+ContainerChild
- this.hboxConditionExpression = new global::Gtk.HBox ();
- this.hboxConditionExpression.Name = "hboxConditionExpression";
- this.hboxConditionExpression.Spacing = 6;
- // Container child hboxConditionExpression.Gtk.Box+BoxChild
- this.labelConditionExpression = new global::Gtk.Label ();
- this.labelConditionExpression.Name = "labelConditionExpression";
- this.labelConditionExpression.Xalign = 0F;
- this.labelConditionExpression.LabelProp = global::Mono.Unix.Catalog.GetString ("Condition expression:");
- this.hboxConditionExpression.Add (this.labelConditionExpression);
- global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.hboxConditionExpression [this.labelConditionExpression]));
- w17.Position = 0;
- w17.Expand = false;
- w17.Fill = false;
- // Container child hboxConditionExpression.Gtk.Box+BoxChild
- this.entryCondition = new global::Gtk.Entry ();
- this.entryCondition.CanFocus = true;
- this.entryCondition.Name = "entryCondition";
- this.entryCondition.IsEditable = true;
- this.entryCondition.InvisibleChar = '●';
- this.hboxConditionExpression.Add (this.entryCondition);
- global::Gtk.Box.BoxChild w18 = ((global::Gtk.Box.BoxChild)(this.hboxConditionExpression [this.entryCondition]));
- w18.Position = 1;
- this.alignConditionExpression.Add (this.hboxConditionExpression);
- this.vboxConditionOptions.Add (this.alignConditionExpression);
- global::Gtk.Box.BoxChild w20 = ((global::Gtk.Box.BoxChild)(this.vboxConditionOptions [this.alignConditionExpression]));
- w20.Position = 3;
- w20.Expand = false;
- w20.Fill = false;
- this.alignCondition.Add (this.vboxConditionOptions);
- this.vboxProperties.Add (this.alignCondition);
- global::Gtk.Box.BoxChild w22 = ((global::Gtk.Box.BoxChild)(this.vboxProperties [this.alignCondition]));
- w22.Position = 3;
- w22.Expand = false;
- w22.Fill = false;
- // Container child vboxProperties.Gtk.Box+BoxChild
- this.labelHitCount = new global::Gtk.Label ();
- this.labelHitCount.Name = "labelHitCount";
- this.labelHitCount.Xalign = 0F;
- this.labelHitCount.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Hit Count</b>");
- this.labelHitCount.UseMarkup = true;
- this.vboxProperties.Add (this.labelHitCount);
- global::Gtk.Box.BoxChild w23 = ((global::Gtk.Box.BoxChild)(this.vboxProperties [this.labelHitCount]));
- w23.Position = 4;
- w23.Expand = false;
- w23.Fill = false;
- // Container child vboxProperties.Gtk.Box+BoxChild
- this.alignHitCount = new global::Gtk.Alignment (0F, 0.5F, 1F, 1F);
- this.alignHitCount.Name = "alignHitCount";
- this.alignHitCount.LeftPadding = ((uint)(18));
- // Container child alignHitCount.Gtk.Container+ContainerChild
- this.vboxHitCount = new global::Gtk.VBox ();
- this.vboxHitCount.Name = "vboxHitCount";
- this.vboxHitCount.Spacing = 6;
- // Container child vboxHitCount.Gtk.Box+BoxChild
- this.labelWhenHit = new global::Gtk.Label ();
- this.labelWhenHit.Name = "labelWhenHit";
- this.labelWhenHit.Xalign = 0F;
- this.labelWhenHit.LabelProp = global::Mono.Unix.Catalog.GetString ("When the condition is hit:");
- this.vboxHitCount.Add (this.labelWhenHit);
- global::Gtk.Box.BoxChild w24 = ((global::Gtk.Box.BoxChild)(this.vboxHitCount [this.labelWhenHit]));
- w24.Position = 0;
- w24.Expand = false;
- w24.Fill = false;
- // Container child vboxHitCount.Gtk.Box+BoxChild
- this.hbox1 = new global::Gtk.HBox ();
- this.hbox1.Name = "hbox1";
- this.hbox1.Spacing = 6;
- // Container child hbox1.Gtk.Box+BoxChild
- this.comboHitCountMode = global::Gtk.ComboBox.NewText ();
- this.comboHitCountMode.AppendText (global::Mono.Unix.Catalog.GetString ("Always break"));
- this.comboHitCountMode.AppendText (global::Mono.Unix.Catalog.GetString ("Break when the hit count is less than"));
- this.comboHitCountMode.AppendText (global::Mono.Unix.Catalog.GetString ("Break when the hit count is less than or equal to"));
- this.comboHitCountMode.AppendText (global::Mono.Unix.Catalog.GetString ("Break when the hit count is equal to"));
- this.comboHitCountMode.AppendText (global::Mono.Unix.Catalog.GetString ("Break when the hit count is greater than"));
- this.comboHitCountMode.AppendText (global::Mono.Unix.Catalog.GetString ("Break when the hit count is greater than or equal to"));
- this.comboHitCountMode.AppendText (global::Mono.Unix.Catalog.GetString ("Break when the hit count is a multiple of"));
- this.comboHitCountMode.Name = "comboHitCountMode";
- this.comboHitCountMode.Active = 0;
- this.hbox1.Add (this.comboHitCountMode);
- global::Gtk.Box.BoxChild w25 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.comboHitCountMode]));
- w25.Position = 0;
- w25.Expand = false;
- w25.Fill = false;
- // Container child hbox1.Gtk.Box+BoxChild
- this.spinHitCount = new global::Gtk.SpinButton (0, 100000000, 1);
- this.spinHitCount.CanFocus = true;
- this.spinHitCount.Name = "spinHitCount";
- this.spinHitCount.Adjustment.PageIncrement = 10;
- this.spinHitCount.ClimbRate = 1;
- this.spinHitCount.Numeric = true;
- this.spinHitCount.Value = 1;
- this.hbox1.Add (this.spinHitCount);
- global::Gtk.Box.BoxChild w26 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.spinHitCount]));
- w26.Position = 1;
- w26.Expand = false;
- w26.Fill = false;
- this.vboxHitCount.Add (this.hbox1);
- global::Gtk.Box.BoxChild w27 = ((global::Gtk.Box.BoxChild)(this.vboxHitCount [this.hbox1]));
- w27.Position = 1;
- w27.Expand = false;
- w27.Fill = false;
- this.alignHitCount.Add (this.vboxHitCount);
- this.vboxProperties.Add (this.alignHitCount);
- global::Gtk.Box.BoxChild w29 = ((global::Gtk.Box.BoxChild)(this.vboxProperties [this.alignHitCount]));
- w29.Position = 5;
- w29.Expand = false;
- w29.Fill = false;
- // Container child vboxProperties.Gtk.Box+BoxChild
- this.label3 = new global::Gtk.Label ();
- this.label3.Name = "label3";
- this.label3.Xalign = 0F;
- this.label3.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Action</b>");
- this.label3.UseMarkup = true;
- this.vboxProperties.Add (this.label3);
- global::Gtk.Box.BoxChild w30 = ((global::Gtk.Box.BoxChild)(this.vboxProperties [this.label3]));
- w30.Position = 6;
- w30.Expand = false;
- w30.Fill = false;
- // Container child vboxProperties.Gtk.Box+BoxChild
- this.alignAction = new global::Gtk.Alignment (0F, 0.5F, 1F, 1F);
- this.alignAction.Name = "alignAction";
- this.alignAction.LeftPadding = ((uint)(18));
- // Container child alignAction.Gtk.Container+ContainerChild
- this.vboxAction = new global::Gtk.VBox ();
- this.vboxAction.Name = "vboxAction";
- this.vboxAction.Spacing = 6;
- // Container child vboxAction.Gtk.Box+BoxChild
- this.label11 = new global::Gtk.Label ();
- this.label11.Name = "label11";
- this.label11.Xalign = 0F;
- this.label11.LabelProp = global::Mono.Unix.Catalog.GetString ("When the breakpoint is hit:");
- this.vboxAction.Add (this.label11);
- global::Gtk.Box.BoxChild w31 = ((global::Gtk.Box.BoxChild)(this.vboxAction [this.label11]));
- w31.Position = 0;
- w31.Expand = false;
- w31.Fill = false;
- // Container child vboxAction.Gtk.Box+BoxChild
- this.radioActionBreak = new global::Gtk.RadioButton (global::Mono.Unix.Catalog.GetString ("Break"));
- this.radioActionBreak.CanFocus = true;
- this.radioActionBreak.Name = "radioActionBreak";
- this.radioActionBreak.DrawIndicator = true;
- this.radioActionBreak.UseUnderline = true;
- this.radioActionBreak.Group = new global::GLib.SList (global::System.IntPtr.Zero);
- this.vboxAction.Add (this.radioActionBreak);
- global::Gtk.Box.BoxChild w32 = ((global::Gtk.Box.BoxChild)(this.vboxAction [this.radioActionBreak]));
- w32.Position = 1;
- w32.Expand = false;
- w32.Fill = false;
- // Container child vboxAction.Gtk.Box+BoxChild
- this.radioActionTrace = new global::Gtk.RadioButton (global::Mono.Unix.Catalog.GetString ("Write expression to the output"));
- this.radioActionTrace.CanFocus = true;
- this.radioActionTrace.Name = "radioActionTrace";
- this.radioActionTrace.DrawIndicator = true;
- this.radioActionTrace.UseUnderline = true;
- this.radioActionTrace.Group = this.radioActionBreak.Group;
- this.vboxAction.Add (this.radioActionTrace);
- global::Gtk.Box.BoxChild w33 = ((global::Gtk.Box.BoxChild)(this.vboxAction [this.radioActionTrace]));
- w33.Position = 2;
- w33.Expand = false;
- w33.Fill = false;
- // Container child vboxAction.Gtk.Box+BoxChild
- this.alignTraceExpression = new global::Gtk.Alignment (0F, 0.5F, 1F, 1F);
- this.alignTraceExpression.Name = "alignTraceExpression";
- this.alignTraceExpression.LeftPadding = ((uint)(18));
- // Container child alignTraceExpression.Gtk.Container+ContainerChild
- this.boxTraceExpression = new global::Gtk.HBox ();
- this.boxTraceExpression.Name = "boxTraceExpression";
- this.boxTraceExpression.Spacing = 6;
- // Container child boxTraceExpression.Gtk.Box+BoxChild
- this.labelTraceExpression = new global::Gtk.Label ();
- this.labelTraceExpression.Name = "labelTraceExpression";
- this.labelTraceExpression.LabelProp = global::Mono.Unix.Catalog.GetString ("Expression:");
- this.boxTraceExpression.Add (this.labelTraceExpression);
- global::Gtk.Box.BoxChild w34 = ((global::Gtk.Box.BoxChild)(this.boxTraceExpression [this.labelTraceExpression]));
- w34.Position = 0;
- w34.Expand = false;
- w34.Fill = false;
- // Container child boxTraceExpression.Gtk.Box+BoxChild
- this.entryTraceExpression = new global::Gtk.Entry ();
- this.entryTraceExpression.CanFocus = true;
- this.entryTraceExpression.Name = "entryTraceExpression";
- this.entryTraceExpression.IsEditable = true;
- this.entryTraceExpression.InvisibleChar = '●';
- this.boxTraceExpression.Add (this.entryTraceExpression);
- global::Gtk.Box.BoxChild w35 = ((global::Gtk.Box.BoxChild)(this.boxTraceExpression [this.entryTraceExpression]));
- w35.Position = 1;
- this.alignTraceExpression.Add (this.boxTraceExpression);
- this.vboxAction.Add (this.alignTraceExpression);
- global::Gtk.Box.BoxChild w37 = ((global::Gtk.Box.BoxChild)(this.vboxAction [this.alignTraceExpression]));
- w37.Position = 3;
- w37.Expand = false;
- w37.Fill = false;
- this.alignAction.Add (this.vboxAction);
- this.vboxProperties.Add (this.alignAction);
- global::Gtk.Box.BoxChild w39 = ((global::Gtk.Box.BoxChild)(this.vboxProperties [this.alignAction]));
- w39.Position = 7;
- w39.Expand = false;
- w39.Fill = false;
- w1.Add (this.vboxProperties);
- global::Gtk.Box.BoxChild w40 = ((global::Gtk.Box.BoxChild)(w1 [this.vboxProperties]));
- w40.Position = 0;
- w40.Expand = false;
- w40.Fill = false;
- // Internal child MonoDevelop.Debugger.BreakpointPropertiesDialog.ActionArea
- global::Gtk.HButtonBox w41 = this.ActionArea;
- w41.Name = "dialog1_ActionArea";
- w41.Spacing = 6;
- w41.BorderWidth = ((uint)(5));
- w41.LayoutStyle = ((global::Gtk.ButtonBoxStyle)(4));
- // Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
- this.buttonCancel = new global::Gtk.Button ();
- this.buttonCancel.CanDefault = true;
- this.buttonCancel.CanFocus = true;
- this.buttonCancel.Name = "buttonCancel";
- this.buttonCancel.UseStock = true;
- this.buttonCancel.UseUnderline = true;
- this.buttonCancel.Label = "gtk-cancel";
- this.AddActionWidget (this.buttonCancel, -6);
- global::Gtk.ButtonBox.ButtonBoxChild w42 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w41 [this.buttonCancel]));
- w42.Expand = false;
- w42.Fill = false;
- // Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
- this.buttonOk = new global::Gtk.Button ();
- this.buttonOk.CanDefault = true;
- this.buttonOk.CanFocus = true;
- this.buttonOk.Name = "buttonOk";
- this.buttonOk.UseStock = true;
- this.buttonOk.UseUnderline = true;
- this.buttonOk.Label = "gtk-ok";
- w41.Add (this.buttonOk);
- global::Gtk.ButtonBox.ButtonBoxChild w43 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w41 [this.buttonOk]));
- w43.Position = 1;
- w43.Expand = false;
- w43.Fill = false;
- if ((this.Child != null)) {
- this.Child.ShowAll ();
- }
- this.DefaultWidth = 512;
- this.DefaultHeight = 522;
- this.Hide ();
- this.radioBreakAlways.Toggled += new global::System.EventHandler (this.OnRadioBreakAlwaysToggled);
- this.radioBreakWhenTrue.Toggled += new global::System.EventHandler (this.OnRadioBreakAlwaysToggled);
- this.radioBreakWhenChanges.Toggled += new global::System.EventHandler (this.OnRadioBreakAlwaysToggled);
- this.radioActionBreak.Toggled += new global::System.EventHandler (this.OnRadioActionBreakToggled);
- this.radioActionTrace.Toggled += new global::System.EventHandler (this.OnRadioActionBreakToggled);
- this.buttonOk.Clicked += new global::System.EventHandler (this.OnButtonOkClicked);
- }
- }
-}
Modified: main/src/addins/MonoDevelop.Debugger/gtk-gui/gui.stetic
===================================================================
@@ -286,607 +286,6 @@
</widget>
</child>
</widget>
- <widget class="Gtk.Dialog" id="MonoDevelop.Debugger.BreakpointPropertiesDialog" design-size="512 522">
- <property name="MemberName" />
- <property name="Visible">False</property>
- <property name="Title" translatable="yes">Breakpoint Properties</property>
- <property name="WindowPosition">CenterOnParent</property>
- <property name="Modal">True</property>
- <property name="Buttons">2</property>
- <property name="HelpButton">False</property>
- <child internal-child="VBox">
- <widget class="Gtk.VBox" id="dialog1_VBox">
- <property name="MemberName" />
- <property name="BorderWidth">2</property>
- <child>
- <widget class="Gtk.VBox" id="vboxProperties">
- <property name="MemberName" />
- <property name="Spacing">6</property>
- <property name="BorderWidth">9</property>
- <child>
- <widget class="Gtk.Label" id="label1">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="LabelProp" translatable="yes"><b>Location</b></property>
- <property name="UseMarkup">True</property>
- </widget>
- <packing>
- <property name="Position">0</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Alignment" id="alignLocation">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="LeftPadding">18</property>
- <child>
- <widget class="Gtk.Table" id="tableLocation">
- <property name="MemberName" />
- <property name="NRows">2</property>
- <property name="NColumns">2</property>
- <property name="RowSpacing">6</property>
- <property name="ColumnSpacing">6</property>
- <child>
- <widget class="Gtk.Entry" id="entryFileFunction">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="IsEditable">True</property>
- <property name="InvisibleChar">●</property>
- </widget>
- <packing>
- <property name="LeftAttach">1</property>
- <property name="RightAttach">2</property>
- <property name="AutoSize">False</property>
- <property name="YOptions">Fill</property>
- <property name="XExpand">True</property>
- <property name="XFill">True</property>
- <property name="XShrink">False</property>
- <property name="YExpand">False</property>
- <property name="YFill">True</property>
- <property name="YShrink">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.HBox" id="hboxLineColumn">
- <property name="MemberName" />
- <property name="Spacing">6</property>
- <child>
- <widget class="Gtk.SpinButton" id="spinLine">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Lower">1</property>
- <property name="Upper">100</property>
- <property name="PageIncrement">10</property>
- <property name="StepIncrement">1</property>
- <property name="ClimbRate">1</property>
- <property name="Numeric">True</property>
- <property name="Value">1</property>
- </widget>
- <packing>
- <property name="Position">0</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.HBox" id="hboxColumn">
- <property name="MemberName" />
- <property name="Spacing">6</property>
- <child>
- <widget class="Gtk.Label" id="label9">
- <property name="MemberName" />
- <property name="LabelProp" translatable="yes">Column:</property>
- <property name="Justify">Right</property>
- </widget>
- <packing>
- <property name="Position">0</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.SpinButton" id="spinColumn">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Lower">1</property>
- <property name="Upper">100</property>
- <property name="PageIncrement">10</property>
- <property name="StepIncrement">1</property>
- <property name="ClimbRate">1</property>
- <property name="Numeric">True</property>
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="TopAttach">1</property>
- <property name="BottomAttach">2</property>
- <property name="LeftAttach">1</property>
- <property name="RightAttach">2</property>
- <property name="AutoSize">True</property>
- <property name="XOptions">Fill</property>
- <property name="YOptions">Fill</property>
- <property name="XExpand">False</property>
- <property name="XFill">True</property>
- <property name="XShrink">False</property>
- <property name="YExpand">False</property>
- <property name="YFill">True</property>
- <property name="YShrink">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Label" id="labelFileFunction">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="LabelProp" translatable="yes">File:</property>
- </widget>
- <packing>
- <property name="AutoSize">True</property>
- <property name="XOptions">Fill</property>
- <property name="YOptions">Fill</property>
- <property name="XExpand">False</property>
- <property name="XFill">True</property>
- <property name="XShrink">False</property>
- <property name="YExpand">False</property>
- <property name="YFill">True</property>
- <property name="YShrink">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Label" id="labelLine">
- <property name="MemberName" />
- <property name="LabelProp" translatable="yes">Line:</property>
- </widget>
- <packing>
- <property name="TopAttach">1</property>
- <property name="BottomAttach">2</property>
- <property name="AutoSize">True</property>
- <property name="XOptions">Fill</property>
- <property name="YOptions">Fill</property>
- <property name="XExpand">False</property>
- <property name="XFill">True</property>
- <property name="XShrink">False</property>
- <property name="YExpand">False</property>
- <property name="YFill">True</property>
- <property name="YShrink">False</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Label" id="label2">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="LabelProp" translatable="yes"><b>Condition</b></property>
- <property name="UseMarkup">True</property>
- </widget>
- <packing>
- <property name="Position">2</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Alignment" id="alignCondition">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="LeftPadding">18</property>
- <child>
- <widget class="Gtk.VBox" id="vboxConditionOptions">
- <property name="MemberName" />
- <property name="Spacing">6</property>
- <child>
- <widget class="Gtk.RadioButton" id="radioBreakAlways">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Label" translatable="yes">Always break</property>
- <property name="Active">True</property>
- <property name="DrawIndicator">True</property>
- <property name="HasLabel">True</property>
- <property name="UseUnderline">True</property>
- <property name="Group">group1</property>
- <signal name="Toggled" handler="OnRadioBreakAlwaysToggled" />
- </widget>
- <packing>
- <property name="Position">0</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.RadioButton" id="radioBreakWhenTrue">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Label" translatable="yes">Break when condition is true</property>
- <property name="DrawIndicator">True</property>
- <property name="HasLabel">True</property>
- <property name="UseUnderline">True</property>
- <property name="Group">group1</property>
- <signal name="Toggled" handler="OnRadioBreakAlwaysToggled" />
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.RadioButton" id="radioBreakWhenChanges">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Label" translatable="yes">Break when the expression changes</property>
- <property name="DrawIndicator">True</property>
- <property name="HasLabel">True</property>
- <property name="UseUnderline">True</property>
- <property name="Group">group1</property>
- <signal name="Toggled" handler="OnRadioBreakAlwaysToggled" />
- </widget>
- <packing>
- <property name="Position">2</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Alignment" id="alignConditionExpression">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="LeftPadding">18</property>
- <child>
- <widget class="Gtk.HBox" id="hboxConditionExpression">
- <property name="MemberName" />
- <property name="Spacing">6</property>
- <child>
- <widget class="Gtk.Label" id="labelConditionExpression">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="LabelProp" translatable="yes">Condition expression:</property>
- </widget>
- <packing>
- <property name="Position">0</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Entry" id="entryCondition">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="IsEditable">True</property>
- <property name="InvisibleChar">●</property>
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="AutoSize">True</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="Position">3</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="Position">3</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Label" id="labelHitCount">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="LabelProp" translatable="yes"><b>Hit Count</b></property>
- <property name="UseMarkup">True</property>
- </widget>
- <packing>
- <property name="Position">4</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Alignment" id="alignHitCount">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="LeftPadding">18</property>
- <child>
- <widget class="Gtk.VBox" id="vboxHitCount">
- <property name="MemberName" />
- <property name="Spacing">6</property>
- <child>
- <widget class="Gtk.Label" id="labelWhenHit">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="LabelProp" translatable="yes">When the condition is hit:</property>
- </widget>
- <packing>
- <property name="Position">0</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.HBox" id="hbox1">
- <property name="MemberName" />
- <property name="Spacing">6</property>
- <child>
- <widget class="Gtk.ComboBox" id="comboHitCountMode">
- <property name="MemberName" />
- <property name="IsTextCombo">True</property>
- <property name="Items" translatable="yes">Always break
-Break when the hit count is less than
-Break when the hit count is less than or equal to
-Break when the hit count is equal to
-Break when the hit count is greater than
-Break when the hit count is greater than or equal to
-Break when the hit count is a multiple of</property>
- <property name="Active">0</property>
- </widget>
- <packing>
- <property name="Position">0</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.SpinButton" id="spinHitCount">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Upper">100000000</property>
- <property name="PageIncrement">10</property>
- <property name="StepIncrement">1</property>
- <property name="ClimbRate">1</property>
- <property name="Numeric">True</property>
- <property name="Value">1</property>
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="Position">5</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Label" id="label3">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="LabelProp" translatable="yes"><b>Action</b></property>
- <property name="UseMarkup">True</property>
- </widget>
- <packing>
- <property name="Position">6</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Alignment" id="alignAction">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="LeftPadding">18</property>
- <child>
- <widget class="Gtk.VBox" id="vboxAction">
- <property name="MemberName" />
- <property name="Spacing">6</property>
- <child>
- <widget class="Gtk.Label" id="label11">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="LabelProp" translatable="yes">When the breakpoint is hit:</property>
- </widget>
- <packing>
- <property name="Position">0</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.RadioButton" id="radioActionBreak">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Label" translatable="yes">Break</property>
- <property name="Active">True</property>
- <property name="DrawIndicator">True</property>
- <property name="HasLabel">True</property>
- <property name="UseUnderline">True</property>
- <property name="Group">group2</property>
- <signal name="Toggled" handler="OnRadioActionBreakToggled" />
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.RadioButton" id="radioActionTrace">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Label" translatable="yes">Write expression to the output</property>
- <property name="DrawIndicator">True</property>
- <property name="HasLabel">True</property>
- <property name="UseUnderline">True</property>
- <property name="Group">group2</property>
- <signal name="Toggled" handler="OnRadioActionBreakToggled" />
- </widget>
- <packing>
- <property name="Position">2</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Alignment" id="alignTraceExpression">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="LeftPadding">18</property>
- <child>
- <widget class="Gtk.HBox" id="boxTraceExpression">
- <property name="MemberName" />
- <property name="Spacing">6</property>
- <child>
- <widget class="Gtk.Label" id="labelTraceExpression">
- <property name="MemberName" />
- <property name="LabelProp" translatable="yes">Expression:</property>
- </widget>
- <packing>
- <property name="Position">0</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Entry" id="entryTraceExpression">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="IsEditable">True</property>
- <property name="InvisibleChar">●</property>
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="AutoSize">True</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="Position">3</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="Position">7</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="Position">0</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- </widget>
- </child>
- <child internal-child="ActionArea">
- <widget class="Gtk.HButtonBox" id="dialog1_ActionArea">
- <property name="MemberName" />
- <property name="Spacing">6</property>
- <property name="BorderWidth">5</property>
- <property name="Size">2</property>
- <property name="LayoutStyle">End</property>
- <child>
- <widget class="Gtk.Button" id="buttonCancel">
- <property name="MemberName" />
- <property name="CanDefault">True</property>
- <property name="CanFocus">True</property>
- <property name="UseStock">True</property>
- <property name="Type">StockItem</property>
- <property name="StockId">gtk-cancel</property>
- <property name="ResponseId">-6</property>
- <property name="label">gtk-cancel</property>
- </widget>
- <packing>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Button" id="buttonOk">
- <property name="MemberName" />
- <property name="CanDefault">True</property>
- <property name="CanFocus">True</property>
- <property name="UseStock">True</property>
- <property name="Type">StockItem</property>
- <property name="StockId">gtk-ok</property>
- <property name="ResponseId">-1</property>
- <signal name="Clicked" handler="OnButtonOkClicked" />
- <property name="label">gtk-ok</property>
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
<widget class="Gtk.Dialog" id="MonoDevelop.Debugger.BusyEvaluatorDialog" design-size="381 126">
<property name="MemberName" />
<property name="Visible">False</property>
Commit: 364cc607817f9bb5020e0b76ab644f616cbbf7f5
Author: Therzok <[email protected]> (Therzok)
Date: 2013-11-04 16:18:46 GMT
URL: https://github.com/mono/monodevelop/commit/364cc607817f9bb5020e0b76ab644f616cbbf7f5
[Debugger] Combo unavailable in case of features not being available.
Changed paths:
M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs
Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs
===================================================================
@@ -301,13 +301,13 @@ void OnSave (object sender, EventArgs e)
void OnUpdateControls (object sender, EventArgs e)
{
// Check which radio is selected.
- hboxFunction.Sensitive = stopOnFunction.Active;
- hboxLineColumn.Sensitive = stopOnLocation.Active;
- hboxLocation.Sensitive = stopOnLocation.Active;
- hboxException.Sensitive = stopOnException.Active;
+ hboxFunction.Sensitive = stopOnFunction.Active && DebuggingService.IsFeatureSupported (DebuggerFeatures.Breakpoints);
+ hboxLineColumn.Sensitive = stopOnLocation.Active && DebuggingService.IsFeatureSupported (DebuggerFeatures.Breakpoints);
+ hboxLocation.Sensitive = stopOnLocation.Active && DebuggingService.IsFeatureSupported (DebuggerFeatures.Breakpoints);
+ hboxException.Sensitive = stopOnException.Active && DebuggingService.IsFeatureSupported (DebuggerFeatures.Catchpoints);
// FIXME: Add support for not doing base add
//checkIncludeSubclass.Sensitive = stopOnException.Active;
- hboxCondition.Sensitive = !stopOnException.Active;
+ hboxCondition.Sensitive = !stopOnException.Active && DebuggingService.IsFeatureSupported (DebuggerFeatures.ConditionalBreakpoints);
// Check conditional
if (!String.IsNullOrEmpty (entryConditionalExpression.Text))
@@ -322,7 +322,7 @@ void OnUpdateControls (object sender, EventArgs e)
ignoreHitCount.Show ();
// Check printing an expression.
- entryPrintExpression.Sensitive = checkPrintExpression.Active;
+ entryPrintExpression.Sensitive = checkPrintExpression.Active && DebuggingService.IsFeatureSupported (DebuggerFeatures.Tracepoints);
checkResumeExecution.Sensitive = checkPrintExpression.Active;
checkResumeExecution.Active &= checkPrintExpression.Active;
Commit: e71984aaddbd4fbec0755784aacfe2c16de299cf
Author: Therzok <[email protected]> (Therzok)
Date: 2013-11-04 16:18:46 GMT
URL: https://github.com/mono/monodevelop/commit/e71984aaddbd4fbec0755784aacfe2c16de299cf
[Debugger] Implement usage of include subclasses tick.
Changed paths:
M main/src/addins/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32/CorDebuggerSession.cs
M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs
Modified: main/src/addins/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32/CorDebuggerSession.cs
===================================================================
@@ -506,17 +506,26 @@ private bool IsCatchpoint (CorException2EventArgs e)
{
// Build up the exception type hierachy
CorValue v = e.Thread.CurrentException;
- List<string> exceptions = new List<string>();
+ var exceptions = new HashSet<string>();
+
CorType t = v.ExactType;
+ string baseName = t.GetTypeInfo (this).FullName;
while (t != null) {
- exceptions.Add(t.GetTypeInfo(this).FullName);
+ exceptions.Add (t.GetTypeInfo (this).FullName);
t = t.Base;
}
// See if a catchpoint is set for this exception.
foreach (Catchpoint cp in Breakpoints.GetCatchpoints()) {
- if (cp.Enabled && exceptions.Contains(cp.ExceptionName)) {
- return true;
+ if (cp.Enabled) {
+ if (cp.IncludeSubclasses) {
+ if (exceptions.Contains (cp.ExceptionName))
+ return true;
+ continue;
+ }
+
+ if (baseName == cp.ExceptionName)
+ return true;
}
}
Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs
===================================================================
@@ -195,10 +195,6 @@ void SetInitialCatchpointData (Catchpoint cp)
void SetInitialData ()
{
- // FIXME: Add support for not doing base add
- checkIncludeSubclass.Active = true;
- checkIncludeSubclass.Sensitive = false;
-
if (be != null) {
stopOnException.Sensitive = false;
stopOnFunction.Sensitive = false;
@@ -271,7 +267,7 @@ void OnSave (object sender, EventArgs e)
else if (stopOnLocation.Active)
be = new Breakpoint (entryLocationFile.Text, Int32.Parse (entryLocationLine.Text), Int32.Parse (entryLocationColumn.Text));
else if (stopOnException.Active)
- be = new Catchpoint (entryExceptionType.Text);
+ be = new Catchpoint (entryExceptionType.Text, checkIncludeSubclass.Active);
else
return;
}
@@ -305,8 +301,7 @@ void OnUpdateControls (object sender, EventArgs e)
hboxLineColumn.Sensitive = stopOnLocation.Active && DebuggingService.IsFeatureSupported (DebuggerFeatures.Breakpoints);
hboxLocation.Sensitive = stopOnLocation.Active && DebuggingService.IsFeatureSupported (DebuggerFeatures.Breakpoints);
hboxException.Sensitive = stopOnException.Active && DebuggingService.IsFeatureSupported (DebuggerFeatures.Catchpoints);
- // FIXME: Add support for not doing base add
- //checkIncludeSubclass.Sensitive = stopOnException.Active;
+ checkIncludeSubclass.Sensitive = stopOnException.Active;
hboxCondition.Sensitive = !stopOnException.Active && DebuggingService.IsFeatureSupported (DebuggerFeatures.ConditionalBreakpoints);
// Check conditional
Commit: 4f86525bf8f2d2c46e6d4e0dbd300bfc7ef97475
Author: Therzok <[email protected]> (Therzok)
Date: 2013-11-04 16:18:47 GMT
URL: https://github.com/mono/monodevelop/commit/4f86525bf8f2d2c46e6d4e0dbd300bfc7ef97475
[Debugger] Conditional hit type combo should always be visible.
Changed paths:
M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs
M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs
Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs
===================================================================
@@ -41,7 +41,7 @@ enum ConditionalHitWhen
ExpressionChanges
}
- sealed class BreakpointPropertiesDialog2 : Xwt.Dialog
+ sealed class BreakpointPropertiesDialog : Xwt.Dialog
{
// For button sensitivity.
Xwt.DialogButton buttonOk;
@@ -88,7 +88,7 @@ sealed class BreakpointPropertiesDialog2 : Xwt.Dialog
string parsedFunction;
readonly HashSet<string> classes = new HashSet<string> ();
- public BreakpointPropertiesDialog2 (BreakEvent be)
+ public BreakpointPropertiesDialog (BreakEvent be)
{
this.be = be;
@@ -117,6 +117,9 @@ void Initialize ()
ignoreHitType.Items.Add (HitCountMode.MultipleOf, GettextCatalog.GetString ("when hit count is a multiple of"));
ignoreHitCount.IncrementValue = 1;
+ ignoreHitCount.ClimbRate = 1;
+ ignoreHitCount.MinimumValue = 0;
+ ignoreHitCount.MaximumValue = Int32.MaxValue;
conditionalHitType.Items.Add (ConditionalHitWhen.ConditionIsTrue, GettextCatalog.GetString ("is true"));
conditionalHitType.Items.Add (ConditionalHitWhen.ExpressionChanges, GettextCatalog.GetString ("expression changes"));
@@ -305,10 +308,7 @@ void OnUpdateControls (object sender, EventArgs e)
hboxCondition.Sensitive = !stopOnException.Active && DebuggingService.IsFeatureSupported (DebuggerFeatures.ConditionalBreakpoints);
// Check conditional
- if (!String.IsNullOrEmpty (entryConditionalExpression.Text))
- conditionalHitType.Show ();
- else
- conditionalHitType.Hide ();
+ conditionalHitType.Sensitive = !String.IsNullOrEmpty (entryConditionalExpression.Text);
// Check ignoring hit counts.
if (ignoreHitType.SelectedItem.Equals (HitCountMode.None))
Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs
===================================================================
@@ -217,7 +217,7 @@ public static void ShowValueVisualizer (ObjectValue val)
public static bool ShowBreakpointProperties (ref BreakEvent bp)
{
- using (var dlg = new BreakpointPropertiesDialog2 (bp)) {
+ using (var dlg = new BreakpointPropertiesDialog (bp)) {
Xwt.Command response = dlg.Run ();
if (bp == null)
bp = dlg.GetBreakEvent ();
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches