[mono/monodevelop] [10 commits] dea7b132: [Debugger] New Dialog.

"Therzok ([email protected])" <[email protected]>
Newsgroups gmane.comp.gnome.mono.patches
Message-ID <000001420f7b11d9-2040f93e-47cd-47e4-8e2d-73e02f86fe8e-000000@email.amazonses.com>
   Branch: refs/heads/bpDialog2
     Home: https://github.com/mono/monodevelop
  Compare: https://github.com/mono/monodevelop/compare/c4269467b116...6f6a8c3a3d09

   Commit: dea7b132dd0930e8fa27a88935d77a9398d1833b
   Author: Therzok <[email protected]> (Therzok)
     Date: 2013-10-31 15:32:47 GMT
      URL: https://github.com/mono/monodevelop/commit/dea7b132dd0930e8fa27a88935d77a9398d1833b

[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: 8fad8eea60300d6c4b2b0eaa7d0505e8df8afdb1
   Author: Therzok <[email protected]> (Therzok)
     Date: 2013-10-31 15:32:48 GMT
      URL: https://github.com/mono/monodevelop/commit/8fad8eea60300d6c4b2b0eaa7d0505e8df8afdb1

[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: 52772c6d99d6c7ce25cc011a189f643d5c5ca059
   Author: Therzok <[email protected]> (Therzok)
     Date: 2013-10-31 15:32:48 GMT
      URL: https://github.com/mono/monodevelop/commit/52772c6d99d6c7ce25cc011a189f643d5c5ca059

[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: 87ecb0ffe9ccacd78c52a5c5b9b599864087ff43
   Author: Ungureanu Marius <[email protected]> (Therzok)
Committer: Therzok <[email protected]> (Therzok)
     Date: 2013-10-31 15:32:49 GMT
      URL: https://github.com/mono/monodevelop/commit/87ecb0ffe9ccacd78c52a5c5b9b599864087ff43

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">&lt;small&gt;Expressions to be evaluated by the debugger can be included in the text by surrounding them with curly braces, for example: "Value is {n}".&lt;/small&gt;</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">&lt;small&gt;When set, the text will be printed only when this condition evaluates to true.&lt;/small&gt;</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: b03416fc1f7a626259db941ea22aa52a30d6c87e
   Author: Ungureanu Marius <[email protected]> (Therzok)
Committer: Therzok <[email protected]> (Therzok)
     Date: 2013-10-31 15:32:49 GMT
      URL: https://github.com/mono/monodevelop/commit/b03416fc1f7a626259db941ea22aa52a30d6c87e

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: cab51b8a6c6f170be27ce92408f247a6b6459504
   Author: Ungureanu Marius <[email protected]> (Therzok)
Committer: Therzok <[email protected]> (Therzok)
     Date: 2013-10-31 15:32:50 GMT
      URL: https://github.com/mono/monodevelop/commit/cab51b8a6c6f170be27ce92408f247a6b6459504

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: ac6bfff8a286cb32ee4d317eada5898f21060fb6
   Author: Therzok <[email protected]> (Therzok)
     Date: 2013-10-31 15:32:51 GMT
      URL: https://github.com/mono/monodevelop/commit/ac6bfff8a286cb32ee4d317eada5898f21060fb6

[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">&lt;b&gt;Location&lt;/b&gt;</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">&lt;b&gt;Condition&lt;/b&gt;</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">&lt;b&gt;Hit Count&lt;/b&gt;</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">&lt;b&gt;Action&lt;/b&gt;</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: c87b6a5a741f28d962a8c970dbfda69204cb57d8
   Author: Therzok <[email protected]> (Therzok)
     Date: 2013-10-31 15:32:51 GMT
      URL: https://github.com/mono/monodevelop/commit/c87b6a5a741f28d962a8c970dbfda69204cb57d8

[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: 18bdcd0b246371462064f5d4efa094bc88c81b42
   Author: Therzok <[email protected]> (Therzok)
     Date: 2013-10-31 15:32:52 GMT
      URL: https://github.com/mono/monodevelop/commit/18bdcd0b246371462064f5d4efa094bc88c81b42

[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: 6f6a8c3a3d0944e163adc91073feba240edef9e2
   Author: Therzok <[email protected]> (Therzok)
     Date: 2013-10-31 15:32:53 GMT
      URL: https://github.com/mono/monodevelop/commit/6f6a8c3a3d0944e163adc91073feba240edef9e2

[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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.