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

"Therzok ([email protected])" <[email protected]> Mon, 4 Nov 2013 16:31:07 +0000
Newsgroups gmane.comp.gnome.mono.patches
Message-ID <0000014223f4139e-e91024cd-014b-4452-83f6-72cb440e111c-000000@email.amazonses.com>
   Branch: refs/heads/bpDialog2
     Home: https://github.com/mono/monodevelop
  Compare: https://github.com/mono/monodevelop/compare/8db700bdb9fc...4f86525bf8f2

   Commit: 0e253bf04c60e20d6cd7f9596f81fdd2f6016b82
   Author: Therzok <[email protected]> (Therzok)
     Date: 2013-11-04 16:18:43 GMT
      URL: https://github.com/mono/monodevelop/commit/0e253bf04c60e20d6cd7f9596f81fdd2f6016b82

[Debugger] New Dialog.

Changed paths:
  M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml
  M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.csproj
  M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs
  M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs
  M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs
Added paths:
  A main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog2.cs

Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml
===================================================================
@@ -117,10 +117,6 @@
 				defaultHandler = "MonoDevelop.Debugger.NewBreakpointHandler"
 				_label = "New Breakpoint..."
 				icon = "md-breakpoint-new" />
-		<Command id = "MonoDevelop.Debugger.DebugCommands.NewFunctionBreakpoint"
-				defaultHandler = "MonoDevelop.Debugger.NewFunctionBreakpointHandler"
-				_label = "New Function Breakpoint..."
-				icon = "md-breakpoint-new" />
 		<Command id = "MonoDevelop.Debugger.DebugCommands.RemoveBreakpoint"
 				defaultHandler = "MonoDevelop.Debugger.RemoveBreakpointHandler"
 				_label = "Remove Breakpoint" />
@@ -193,7 +189,6 @@
 		<CommandItem id = "MonoDevelop.Debugger.DebugCommands.StepOut" />
 		<CommandItem id = "MonoDevelop.Debugger.DebugCommands.ShowCurrentExecutionLine" />
 		<SeparatorItem id = "MonoDevelop.Debugger.BreakpointsSection" />
-		<CommandItem id = "MonoDevelop.Debugger.DebugCommands.NewFunctionBreakpoint" />
 		<CommandItem id = "MonoDevelop.Debugger.DebugCommands.NewBreakpoint" />
 		<CommandItem id = "MonoDevelop.Debugger.DebugCommands.ToggleBreakpoint" />
 		<CommandItem id = "MonoDevelop.Debugger.DebugCommands.AddTracepoint" />

Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.csproj
===================================================================
@@ -22,8 +22,8 @@
     <Execution>
       <Execution clr-version="Net_2_0" />
     </Execution>
-    <GenerateDocumentation>true</GenerateDocumentation>
     <NoWarn>1591;1573</NoWarn>
+    <DocumentationFile>..\..\..\build\AddIns\MonoDevelop.Debugger\MonoDevelop.Debugger.xml</DocumentationFile>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -36,8 +36,8 @@
       <Execution clr-version="Net_2_0" />
     </Execution>
     <DebugSymbols>true</DebugSymbols>
-    <GenerateDocumentation>true</GenerateDocumentation>
     <NoWarn>1591;1573</NoWarn>
+    <DocumentationFile>..\..\..\build\AddIns\MonoDevelop.Debugger\MonoDevelop.Debugger.xml</DocumentationFile>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
@@ -149,6 +149,7 @@
     <Compile Include="MonoDevelop.Debugger\DebuggerConsoleView.cs" />
     <Compile Include="MonoDevelop.Debugger.Visualizer\CStringVisualizer.cs" />
     <Compile Include="MonoDevelop.Debugger.Visualizer\ValueVisualizer.cs" />
+    <Compile Include="MonoDevelop.Debugger\BreakpointPropertiesDialog2.cs" />
   </ItemGroup>
   <ItemGroup>
     <EmbeddedResource Include="MonoDevelop.Debugger.addin.xml">

Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs
===================================================================
@@ -204,8 +204,8 @@ protected void OnProperties ()
 			TreeIter iter;
 
 			if (selected.Length == 1 && store.GetIter (out iter, selected[0])) {
-				Breakpoint bp = (Breakpoint) store.GetValue (iter, (int) Columns.Breakpoint);
-				if (DebuggingService.ShowBreakpointProperties (bp, false))
+				BreakEvent bp = (BreakEvent) store.GetValue (iter, (int) Columns.Breakpoint);
+				if (DebuggingService.ShowBreakpointProperties (ref bp))
 					UpdateDisplay ();
 			}
 		}

Added: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog2.cs
===================================================================
@@ -0,0 +1,502 @@
+//
+// BreakpointsPropertiesDialog.cs
+//
+// Author:
+//       Therzok <[email protected]>
+//
+// Copyright (c) 2013 Therzok
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using System;
+using Mono.Debugging.Client;
+using MonoDevelop.Core;
+using MonoDevelop.Projects;
+using MonoDevelop.Ide;
+
+namespace MonoDevelop.Debugger
+{
+	enum ConditionalHitWhen {
+		ConditionIsTrue,
+		ExpressionChanges
+	}
+
+	class BreakpointPropertiesDialog2 : Xwt.Dialog
+	{
+		// For button sensitivity.
+		Xwt.DialogButton buttonOk;
+
+		// Groupings for sensitivity
+		Xwt.HBox hboxFunction = new Xwt.HBox ();
+		Xwt.HBox hboxLocation = new Xwt.HBox ();
+		Xwt.HBox hboxLineColumn = new Xwt.HBox ();
+		Xwt.HBox hboxException = new Xwt.HBox ();
+
+		// Stop-type radios.
+		readonly Xwt.RadioButton stopOnFunction = new Xwt.RadioButton (GettextCatalog.GetString ("When a function is entered"));
+		readonly Xwt.RadioButton stopOnLocation = new Xwt.RadioButton (GettextCatalog.GetString ("When a location is reached"));
+		readonly Xwt.RadioButton stopOnException = new Xwt.RadioButton (GettextCatalog.GetString ("When an exception is thrown"));
+
+		// Text entries
+		readonly Xwt.TextEntry entryFunctionName = new Xwt.TextEntry ();
+		readonly Xwt.TextEntry entryLocationFile = new Xwt.TextEntry ();
+		readonly Xwt.TextEntry entryLocationLine = new Xwt.TextEntry ();
+		readonly Xwt.TextEntry entryLocationColumn = new Xwt.TextEntry ();
+		readonly Xwt.TextEntry entryExceptionType = new Xwt.TextEntry ();
+		readonly Xwt.TextEntry entryConditionalExpression = new Xwt.TextEntry ();
+		readonly Xwt.TextEntry entryPrintExpression = new Xwt.TextEntry ();
+
+		// Warning icon
+		readonly Xwt.ImageView warningFunction = new Xwt.ImageView (Xwt.StockIcons.Warning);
+		readonly Xwt.ImageView warningLocation = new Xwt.ImageView (Xwt.StockIcons.Warning);
+		readonly Xwt.ImageView warningException = new Xwt.ImageView (Xwt.StockIcons.Warning);
+		readonly Xwt.ImageView warningCondition = new Xwt.ImageView (Xwt.StockIcons.Warning);
+
+		// Combobox + Pager
+		readonly Xwt.SpinButton ignoreHitCount = new Xwt.SpinButton ();
+		readonly Xwt.ComboBox ignoreHitType = new Xwt.ComboBox ();
+		readonly Xwt.ComboBox conditionalHitType = new Xwt.ComboBox ();
+
+		// Optional checkboxes.
+		readonly Xwt.CheckBox checkIncludeSubclass = new Xwt.CheckBox (GettextCatalog.GetString ("Include subclasses"));
+		readonly Xwt.CheckBox checkPrintExpression = new Xwt.CheckBox (GettextCatalog.GetString ("Print an expression to the debugger output"));
+		readonly Xwt.CheckBox checkResumeExecution = new Xwt.CheckBox (GettextCatalog.GetString ("Resume execution automatically"));
+
+		BreakEvent be;
+		string[] parsedParamTypes;
+		string parsedFunction;
+
+		public BreakpointPropertiesDialog2 (ref BreakEvent be)
+		{
+			this.be = be;
+
+			Initialize ();
+			SetInitialData ();
+			SetLayout ();
+		}
+
+		void Initialize ()
+		{
+			// TODO: Make dialog for exceptions.
+			Title = GettextCatalog.GetString (be == null ? "New Breakpoint" : "Breakpoint Properties");
+			var buttonLabel = GettextCatalog.GetString (be == null ? "Add breakpoint" : "Modify breakpoint");
+
+			var stopGroup = new Xwt.RadioButtonGroup ();
+			stopOnFunction.Group = stopGroup;
+			stopOnLocation.Group = stopGroup;
+			stopOnException.Group = stopGroup;
+
+			ignoreHitType.Items.Add (HitCountMode.None, GettextCatalog.GetString ("always"));
+			ignoreHitType.Items.Add (HitCountMode.LessThan, GettextCatalog.GetString ("when hit count is less than"));
+			ignoreHitType.Items.Add (HitCountMode.LessThanOrEqualTo, GettextCatalog.GetString ("when hit count is less than or equal to"));
+			ignoreHitType.Items.Add (HitCountMode.EqualTo, GettextCatalog.GetString ("when hit count is equal to"));
+			ignoreHitType.Items.Add (HitCountMode.GreaterThan, GettextCatalog.GetString ("when hit count is greater than"));
+			ignoreHitType.Items.Add (HitCountMode.GreaterThanOrEqualTo, GettextCatalog.GetString ("when hit count is greater than or equal to"));
+			ignoreHitType.Items.Add (HitCountMode.MultipleOf, GettextCatalog.GetString ("when hit count is a multiple of"));
+
+			ignoreHitCount.IncrementValue = 1;
+
+			conditionalHitType.Items.Add (ConditionalHitWhen.ConditionIsTrue, GettextCatalog.GetString ("is true"));
+			conditionalHitType.Items.Add (ConditionalHitWhen.ExpressionChanges, GettextCatalog.GetString ("expression changes"));
+
+			buttonOk = new Xwt.DialogButton (buttonLabel, Xwt.Command.Ok) {
+				Sensitive = false
+			};
+
+			// Register events.
+			stopGroup.ActiveRadioButtonChanged += OnUpdateControls;
+			entryFunctionName.Changed += OnUpdateControls;
+			entryLocationFile.Changed += OnUpdateControls;
+			entryLocationLine.Changed += OnUpdateControls;
+			entryLocationColumn.Changed += OnUpdateControls;
+
+			entryConditionalExpression.Changed += OnUpdateControls;
+			ignoreHitType.SelectionChanged += OnUpdateControls;
+			checkPrintExpression.Toggled += OnUpdateControls;
+
+			buttonOk.Clicked += OnSave;
+		}
+
+		void SetInitialFunctionBreakpointData (FunctionBreakpoint fb)
+		{
+			stopOnFunction.Active = true;
+			if (fb.ParamTypes != null) {
+				// FIXME: support non-C# syntax based on fb.Language
+				entryFunctionName.Text = fb.FunctionName + " (" + String.Join (", ", fb.ParamTypes) + ")";
+			} else
+				entryFunctionName.Text = fb.FunctionName;
+		}
+
+		void SetInitialBreakpointData (Breakpoint bp)
+		{
+			stopOnLocation.Active = true;
+			entryLocationFile.Text = bp.FileName;
+			entryLocationLine.Text = bp.Line.ToString ();
+			entryLocationColumn.Text = bp.Column.ToString ();
+
+			if (!String.IsNullOrEmpty (bp.ConditionExpression)) {
+				entryConditionalExpression.Text = bp.ConditionExpression;
+				conditionalHitType.SelectedItem = bp.BreakIfConditionChanges ? ConditionalHitWhen.ExpressionChanges : ConditionalHitWhen.ConditionIsTrue;
+			}
+
+			Project project = null;
+			if (!String.IsNullOrEmpty (bp.FileName))
+				project = IdeApp.Workspace.GetProjectContainingFile (bp.FileName);
+
+			if (project != null) {
+				// Check the startup project of the solution too, since the current project may be a library
+				SolutionEntityItem startup = project.ParentSolution.StartupItem;
+				entryConditionalExpression.Sensitive = DebuggingService.IsFeatureSupported (project, DebuggerFeatures.ConditionalBreakpoints) ||
+				                                       DebuggingService.IsFeatureSupported (startup, DebuggerFeatures.ConditionalBreakpoints);
+
+				bool canTrace = DebuggingService.IsFeatureSupported (project, DebuggerFeatures.Tracepoints) ||
+				                DebuggingService.IsFeatureSupported (startup, DebuggerFeatures.Tracepoints);
+
+				checkPrintExpression.Sensitive = canTrace;
+				entryPrintExpression.Sensitive = canTrace;
+			}
+		}
+
+		void SetInitialCatchpointData (Catchpoint cp)
+		{
+
+		}
+
+		void SetInitialData ()
+		{
+			if (be != null) {
+				stopOnException.Sensitive = false;
+				stopOnFunction.Sensitive = false;
+				stopOnLocation.Sensitive = false;
+				entryLocationFile.ReadOnly = true;
+				entryLocationLine.ReadOnly = true;
+				entryLocationColumn.ReadOnly = true;
+
+				ignoreHitType.SelectedItem = be.HitCountMode;
+				ignoreHitCount.Value = be.HitCount;
+
+				if (be.HitAction == HitAction.PrintExpression) {
+					checkPrintExpression.Active = true;
+					entryPrintExpression.Text = be.TraceExpression;
+				}
+			} else {
+				if (IdeApp.Workbench.ActiveDocument != null) {
+					entryLocationFile.Text = IdeApp.Workbench.ActiveDocument.FileName;
+					entryLocationLine.Text = IdeApp.Workbench.ActiveDocument.Editor.Caret.Line.ToString ();
+					entryLocationColumn.Text = IdeApp.Workbench.ActiveDocument.Editor.Caret.Column.ToString ();
+				}
+
+				ignoreHitType.SelectedItem = HitCountMode.None;
+				conditionalHitType.SelectedItem = ConditionalHitWhen.ConditionIsTrue;
+			}
+
+			var fb = be as FunctionBreakpoint;
+			if (fb != null)
+				SetInitialFunctionBreakpointData (fb);
+
+			var bp = be as Breakpoint;
+			if (bp != null)
+				SetInitialBreakpointData (bp);
+
+			var cp = be as Catchpoint;
+			if (cp != null)
+				SetInitialCatchpointData (cp);
+		}
+
+		void SaveFunctionBreakpoint (FunctionBreakpoint fb, bool isNew)
+		{
+			if (isNew) {
+				fb.FunctionName = parsedFunction;
+				fb.ParamTypes = parsedParamTypes;
+			}
+		}
+
+		void SaveBreakpoint (Breakpoint bp, bool isNew)
+		{
+			if (isNew) {
+				bp.SetColumn (Int32.Parse (entryLocationColumn.Text));
+				bp.SetLine (Int32.Parse (entryLocationLine.Text));
+			}
+
+			if (!String.IsNullOrEmpty (entryConditionalExpression.Text)) {
+				bp.ConditionExpression = entryConditionalExpression.Text;
+				bp.BreakIfConditionChanges = conditionalHitType.SelectedItem.Equals (ConditionalHitWhen.ExpressionChanges);
+			} else
+				bp.ConditionExpression = null;
+		}
+
+		void SaveCatchpoint (Catchpoint cp, bool isNew)
+		{
+
+		}
+
+		void OnSave (object sender, EventArgs e)
+		{
+			bool isNew = false;
+			if (be == null) {
+				isNew = true;
+
+				if (stopOnFunction.Active)
+					be = new FunctionBreakpoint ("", "C#");
+				else if (stopOnLocation.Active)
+					be = new Breakpoint (entryLocationFile.Text, Int32.Parse (entryLocationLine.Text), Int32.Parse (entryLocationColumn.Text));
+				else if (stopOnException.Active)
+					be = new Catchpoint (entryExceptionType.Text);
+				else
+					return;
+			}
+
+			var fb = be as FunctionBreakpoint;
+			if (fb != null)
+				SaveFunctionBreakpoint (fb, isNew);
+
+			var bp = be as Breakpoint;
+			if (bp != null)
+				SaveBreakpoint (bp, isNew);
+
+			var cp = be as Catchpoint;
+			if (cp != null)
+				SaveCatchpoint (cp, isNew);
+
+			be.HitCountMode = (HitCountMode)ignoreHitType.SelectedItem;
+			be.HitCount = be.HitCountMode != HitCountMode.None ? (int)ignoreHitCount.Value : 0;
+
+			if (checkPrintExpression.Active) {
+				// FIXME: Make HitAction flags.
+				be.HitAction = HitAction.PrintExpression;
+				be.TraceExpression = entryPrintExpression.Text;
+			}
+			be.HitAction = HitAction.Break;
+
+			be.CommitChanges ();
+		}
+
+		void OnUpdateControls (object sender, EventArgs e)
+		{
+			// Check which radio is selected.
+			hboxFunction.Sensitive = stopOnFunction.Active;
+			hboxLineColumn.Sensitive = stopOnLocation.Active;
+			hboxLocation.Sensitive = stopOnLocation.Active;
+			hboxException.Sensitive = stopOnException.Active;
+			checkIncludeSubclass.Sensitive = stopOnException.Active;
+
+			// Check conditional
+			if (!String.IsNullOrEmpty (entryConditionalExpression.Text))
+				conditionalHitType.Show ();
+			else
+				conditionalHitType.Hide ();
+
+			// Check ignoring hit counts.
+			if (ignoreHitType.SelectedItem.Equals (HitCountMode.None))
+				ignoreHitCount.Hide ();
+			else
+				ignoreHitCount.Show ();
+
+			// Check printing an expression.
+			entryPrintExpression.Sensitive = checkPrintExpression.Active;
+			checkResumeExecution.Sensitive = checkPrintExpression.Active;
+
+			// And display warning icons
+			buttonOk.Sensitive = CheckValidity ();
+		}
+
+		bool CheckValidity ()
+		{
+			if (be is FunctionBreakpoint) {
+				string text = entryFunctionName.Text.Trim ();
+
+				if (stopOnFunction.Active) {
+					if (text.Length == 0) {
+						warningFunction.Show ();
+						warningFunction.TooltipText = GettextCatalog.GetString ("Function name not specified");
+						return false;
+					}
+
+					if (!TryParseFunction (text, out parsedFunction, out parsedParamTypes)) {
+						warningFunction.Show ();
+						warningFunction.TooltipText = GettextCatalog.GetString ("Invalid function syntax");
+						return false;
+					}
+				}
+			} else if (be is Breakpoint) {
+				if (!System.IO.File.Exists (entryLocationFile.Text)) {
+					warningLocation.Show ();
+					warningLocation.TooltipText = GettextCatalog.GetString ("File does not exist");
+					return false;
+				}
+
+				int val;
+				if (!Int32.TryParse (entryLocationLine.Text, out val)) {
+					warningLocation.Show ();
+					warningLocation.TooltipText = GettextCatalog.GetString ("Line is not a number");
+					return false;
+				}
+
+				if (!Int32.TryParse (entryLocationColumn.Text, out val)) {
+					warningLocation.Show ();
+					warningLocation.TooltipText = GettextCatalog.GetString ("Column is not a number");
+					return false;
+				}
+
+				if (stopOnLocation.Active) {
+					if (checkPrintExpression.Active && entryPrintExpression.Text.Length == 0) {
+						warningCondition.Show ();
+						warningCondition.TooltipText = GettextCatalog.GetString ("Trace expression not specified");
+						return false;
+					}
+				}
+			} else if (be is Catchpoint) {
+
+			}
+
+			warningFunction.Hide ();
+			warningLocation.Hide ();
+			warningException.Hide ();
+			warningCondition.Hide ();
+
+			// Implement catchpoint
+
+			return true;
+		}
+
+		static bool TryParseFunction (string signature, out string function, out string[] paramTypes)
+		{
+			int paramListStart = signature.IndexOf ('(');
+			int paramListEnd = signature.IndexOf (')');
+
+			if (paramListStart == -1 && paramListEnd == -1) {
+				function = signature;
+				paramTypes = null;
+				return true;
+			}
+
+			if (paramListEnd != signature.Length - 1) {
+				paramTypes = null;
+				function = null;
+				return false;
+			}
+
+			function = signature.Substring (0, paramListStart).Trim ();
+
+			paramListStart++;
+
+			if (!FunctionBreakpoint.TryParseParameters (signature, paramListStart, paramListEnd, out paramTypes)) {
+				paramTypes = null;
+				function = null;
+				return false;
+			}
+
+			return true;
+		}
+
+		void SetLayout ()
+		{
+			var vbox = new Xwt.VBox ();
+			vbox.MinHeight = 400;
+			vbox.MinWidth = 450;
+
+			vbox.PackStart (new Xwt.Label (GettextCatalog.GetString ("Pause program execution in the debugger")));
+
+			// Radio group
+			var vboxRadio = new Xwt.VBox {
+				MarginLeft = 12
+			};
+
+			// Function group
+			vboxRadio.PackStart (stopOnFunction);
+
+			hboxFunction = new Xwt.HBox {
+				MarginLeft = 12
+			};
+			hboxFunction.PackStart (new Xwt.Label (GettextCatalog.GetString ("Function:")));
+			hboxFunction.PackStart (entryFunctionName, true);
+			hboxFunction.PackEnd (warningFunction);
+
+			vboxRadio.PackStart (hboxFunction);
+
+			// Location group
+			vboxRadio.PackStart (stopOnLocation);
+
+			var vboxLocation = new Xwt.VBox {
+				MarginLeft = 12
+			};
+			hboxLocation = new Xwt.HBox ();
+			hboxLocation.PackStart (new Xwt.Label (GettextCatalog.GetString ("Location:")));
+			hboxLocation.PackStart (entryLocationFile, true);
+			hboxLocation.PackEnd (warningLocation);
+			vboxLocation.PackStart (hboxLocation);
+
+			hboxLineColumn = new Xwt.HBox ();
+			hboxLineColumn.PackStart (new Xwt.Label (GettextCatalog.GetString ("Line:")));
+			hboxLineColumn.PackStart (entryLocationLine);
+			hboxLineColumn.PackStart (new Xwt.Label (GettextCatalog.GetString ("Column:")));
+			hboxLineColumn.PackStart (entryLocationColumn);
+			vboxLocation.PackStart (hboxLineColumn);
+
+			vboxRadio.PackStart (vboxLocation);
+
+			// Exception group
+			vboxRadio.PackStart (stopOnException);
+
+			var vboxException = new Xwt.VBox {
+				MarginLeft = 12
+			};
+			hboxException = new Xwt.HBox ();
+			hboxException.PackStart (new Xwt.Label (GettextCatalog.GetString ("Type:")));
+			hboxException.PackStart (entryExceptionType, true);
+			hboxException.PackEnd (warningException);
+
+			vboxException.PackStart (hboxException);
+			vboxException.PackStart (checkIncludeSubclass);
+			vboxRadio.PackStart (vboxException);
+
+			vbox.PackStart (vboxRadio);
+
+			var hboxCondition = new Xwt.HBox ();
+			hboxCondition.PackStart (new Xwt.Label (GettextCatalog.GetString ("Condition:")));
+			hboxCondition.PackStart (entryConditionalExpression, true);
+			hboxCondition.PackEnd (warningCondition);
+			hboxCondition.PackEnd (conditionalHitType);
+
+			vbox.PackStart (hboxCondition);
+
+			var hboxHitCount = new Xwt.HBox ();
+			hboxHitCount.PackStart (new Xwt.Label (GettextCatalog.GetString ("When hit break")));
+			hboxHitCount.PackStart (ignoreHitType);
+			hboxHitCount.PackStart (ignoreHitCount);
+
+			vbox.PackStart (hboxHitCount);
+
+			vbox.PackStart (checkPrintExpression);
+			var vboxExpression = new Xwt.VBox {
+				MarginLeft = 12
+			};
+			vboxExpression.PackStart (entryPrintExpression);
+			vboxExpression.PackStart (checkResumeExecution);
+
+			vbox.PackStart (vboxExpression);
+
+			Buttons.Add (new Xwt.DialogButton (Xwt.Command.Cancel));
+			Buttons.Add (buttonOk);
+
+			Content = vbox;
+
+			OnUpdateControls (null, null);
+		}
+	}
+}
\ No newline at end of file

Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs
===================================================================
@@ -555,46 +555,21 @@ class NewBreakpointHandler: CommandHandler
 	{
 		protected override void Run ()
 		{
-			Breakpoint bp = new Breakpoint (IdeApp.Workbench.ActiveDocument.FileName, IdeApp.Workbench.ActiveDocument.Editor.Caret.Line, IdeApp.Workbench.ActiveDocument.Editor.Caret.Column);
-			if (DebuggingService.ShowBreakpointProperties (bp, true)) {
-				var breakpoints = DebuggingService.Breakpoints;
+			BreakEvent bp = null;
+			if (DebuggingService.ShowBreakpointProperties (ref bp)) {
+				if (bp is Breakpoint) {
+					var breakpoints = DebuggingService.Breakpoints;
 
-				lock (breakpoints)
-					breakpoints.Add (bp);
-			}
-		}
-		
-		protected override void Update (CommandInfo info)
-		{
-			info.Visible = DebuggingService.IsFeatureSupported (DebuggerFeatures.Breakpoints);
-			if (IdeApp.Workbench.ActiveDocument != null && 
-					IdeApp.Workbench.ActiveDocument.Editor != null &&
-					IdeApp.Workbench.ActiveDocument.FileName != FilePath.Null &&
-			        !DebuggingService.Breakpoints.IsReadOnly) {
-				info.Enabled = true;
-			} else {
-				info.Enabled = false;
-			}
-		}
-	}
-	
-	class NewFunctionBreakpointHandler: CommandHandler
-	{
-		protected override void Run ()
-		{
-			FunctionBreakpoint bp = new FunctionBreakpoint ("", "C#");
-			if (DebuggingService.ShowBreakpointProperties (bp, true)) {
-				var breakpoints = DebuggingService.Breakpoints;
-
-				lock (breakpoints)
-					breakpoints.Add (bp);
+					lock (breakpoints)
+						breakpoints.Add (bp);
+				}
 			}
 		}
 		
 		protected override void Update (CommandInfo info)
 		{
 			info.Visible = DebuggingService.IsFeatureSupported (DebuggerFeatures.Breakpoints);
-			info.Enabled = !DebuggingService.Breakpoints.IsReadOnly && IdeApp.Workspace.IsOpen;
+			info.Enabled = !DebuggingService.Breakpoints.IsReadOnly;
 		}
 	}
 	
@@ -611,8 +586,10 @@ protected override void Run ()
 					IdeApp.Workbench.ActiveDocument.Editor.Caret.Line);
 			}
 
-			if (brs.Count > 0)
-				DebuggingService.ShowBreakpointProperties (brs[0], false);
+			if (brs.Count > 0) {
+				BreakEvent be = brs [0];
+				DebuggingService.ShowBreakpointProperties (ref be);
+			}
 		}
 		
 		protected override void Update (CommandInfo info)

Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs
===================================================================
@@ -215,12 +215,11 @@ public static void ShowValueVisualizer (ObjectValue val)
 			MessageService.ShowCustomDialog (dlg);
 		}
 		
-		public static bool ShowBreakpointProperties (Breakpoint bp, bool editNew)
+		public static bool ShowBreakpointProperties (ref BreakEvent bp)
 		{
-			var dlg = new BreakpointPropertiesDialog (bp, editNew);
-			if (MessageService.ShowCustomDialog (dlg) == (int) Gtk.ResponseType.Ok)
-				return true;
-			return false;
+			using (var dlg = new BreakpointPropertiesDialog2 (ref bp)) {
+				return dlg.Run () == Xwt.Command.Ok;
+			}
 		}
 		
 		public static void ShowAddTracepointDialog (string file, int line)

   Commit: 7fbbaca5ef5dbf9414244907ceab25ca8b581ebc
   Author: Therzok <[email protected]> (Therzok)
     Date: 2013-11-04 16:18:43 GMT
      URL: https://github.com/mono/monodevelop/commit/7fbbaca5ef5dbf9414244907ceab25ca8b581ebc

[Debugger] Fixed new Breakpoints Properties dialog to handle catchpoints.

Changed paths:
  M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog2.cs
  M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs
  M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs

Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog2.cs
===================================================================
@@ -28,6 +28,9 @@
 using MonoDevelop.Core;
 using MonoDevelop.Projects;
 using MonoDevelop.Ide;
+using System.Collections.Generic;
+using MonoDevelop.Ide.TypeSystem;
+using ICSharpCode.NRefactory.TypeSystem;
 
 namespace MonoDevelop.Debugger
 {
@@ -80,11 +83,13 @@ class BreakpointPropertiesDialog2 : Xwt.Dialog
 		BreakEvent be;
 		string[] parsedParamTypes;
 		string parsedFunction;
+		readonly HashSet<string> classes = new HashSet<string> ();
 
-		public BreakpointPropertiesDialog2 (ref BreakEvent be)
+		public BreakpointPropertiesDialog2 (BreakEvent be)
 		{
 			this.be = be;
 
+			LoadExceptionList ();
 			Initialize ();
 			SetInitialData ();
 			SetLayout ();
@@ -174,7 +179,7 @@ void SetInitialBreakpointData (Breakpoint bp)
 
 		void SetInitialCatchpointData (Catchpoint cp)
 		{
-
+			entryExceptionType.Text = cp.ExceptionName;
 		}
 
 		void SetInitialData ()
@@ -186,6 +191,7 @@ void SetInitialData ()
 				entryLocationFile.ReadOnly = true;
 				entryLocationLine.ReadOnly = true;
 				entryLocationColumn.ReadOnly = true;
+				entryExceptionType.ReadOnly = true;
 
 				ignoreHitType.SelectedItem = be.HitCountMode;
 				ignoreHitCount.Value = be.HitCount;
@@ -218,12 +224,10 @@ void SetInitialData ()
 				SetInitialCatchpointData (cp);
 		}
 
-		void SaveFunctionBreakpoint (FunctionBreakpoint fb, bool isNew)
+		void SaveFunctionBreakpoint (FunctionBreakpoint fb)
 		{
-			if (isNew) {
-				fb.FunctionName = parsedFunction;
-				fb.ParamTypes = parsedParamTypes;
-			}
+			fb.FunctionName = parsedFunction;
+			fb.ParamTypes = parsedParamTypes;
 		}
 
 		void SaveBreakpoint (Breakpoint bp, bool isNew)
@@ -240,9 +244,13 @@ void SaveBreakpoint (Breakpoint bp, bool isNew)
 				bp.ConditionExpression = null;
 		}
 
-		void SaveCatchpoint (Catchpoint cp, bool isNew)
+		void SaveCatchpoint (Catchpoint cp)
 		{
-
+			if (checkIncludeSubclass.Active) {
+				// add stuff
+			} else {
+				// remove stuff
+			}
 		}
 
 		void OnSave (object sender, EventArgs e)
@@ -263,7 +271,7 @@ void OnSave (object sender, EventArgs e)
 
 			var fb = be as FunctionBreakpoint;
 			if (fb != null)
-				SaveFunctionBreakpoint (fb, isNew);
+				SaveFunctionBreakpoint (fb);
 
 			var bp = be as Breakpoint;
 			if (bp != null)
@@ -271,7 +279,7 @@ void OnSave (object sender, EventArgs e)
 
 			var cp = be as Catchpoint;
 			if (cp != null)
-				SaveCatchpoint (cp, isNew);
+				SaveCatchpoint (cp);
 
 			be.HitCountMode = (HitCountMode)ignoreHitType.SelectedItem;
 			be.HitCount = be.HitCountMode != HitCountMode.None ? (int)ignoreHitCount.Value : 0;
@@ -361,7 +369,11 @@ bool CheckValidity ()
 					}
 				}
 			} else if (be is Catchpoint) {
-
+				if (!classes.Contains (entryExceptionType.Text)) {
+					warningException.Show ();
+					warningException.TooltipText = GettextCatalog.GetString ("Exception not identified");
+					return false;
+				}
 			}
 
 			warningFunction.Hide ();
@@ -369,8 +381,6 @@ bool CheckValidity ()
 			warningException.Hide ();
 			warningCondition.Hide ();
 
-			// Implement catchpoint
-
 			return true;
 		}
 
@@ -404,6 +414,30 @@ static bool TryParseFunction (string signature, out string function, out string[
 			return true;
 		}
 
+		void LoadExceptionList ()
+		{
+			classes.Add ("System.Exception");
+			if (IdeApp.ProjectOperations.CurrentSelectedProject != null) {
+				var dom = TypeSystemService.GetCompilation (IdeApp.ProjectOperations.CurrentSelectedProject);
+				foreach (var t in dom.FindType (typeof (Exception)).GetSubTypeDefinitions ())
+					classes.Add (t.ReflectionName);
+			} else {
+				// no need to unload this assembly context, it's not cached.
+				var unresolvedAssembly = TypeSystemService.LoadAssemblyContext (Runtime.SystemAssemblyService.CurrentRuntime, MonoDevelop.Core.Assemblies.TargetFramework.Default, typeof(Uri).Assembly.Location);
+				var mscorlib = TypeSystemService.LoadAssemblyContext (Runtime.SystemAssemblyService.CurrentRuntime, MonoDevelop.Core.Assemblies.TargetFramework.Default, typeof(object).Assembly.Location);
+				if (unresolvedAssembly != null && mscorlib != null) {
+					var dom = new ICSharpCode.NRefactory.TypeSystem.Implementation.SimpleCompilation (unresolvedAssembly, mscorlib);
+					foreach (var t in dom.FindType (typeof (Exception)).GetSubTypeDefinitions ())
+						classes.Add (t.ReflectionName);
+				}
+			}
+		}
+
+		public BreakEvent GetBreakEvent ()
+		{
+			return be;
+		}
+
 		void SetLayout ()
 		{
 			var vbox = new Xwt.VBox ();


Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs
===================================================================
@@ -557,12 +557,10 @@ protected override void Run ()
 		{
 			BreakEvent bp = null;
 			if (DebuggingService.ShowBreakpointProperties (ref bp)) {
-				if (bp is Breakpoint) {
-					var breakpoints = DebuggingService.Breakpoints;
+				var breakpoints = DebuggingService.Breakpoints;
 
-					lock (breakpoints)
-						breakpoints.Add (bp);
-				}
+				lock (breakpoints)
+					breakpoints.Add (bp);
 			}
 		}
 		

Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs
===================================================================
@@ -217,8 +217,11 @@ public static void ShowValueVisualizer (ObjectValue val)
 		
 		public static bool ShowBreakpointProperties (ref BreakEvent bp)
 		{
-			using (var dlg = new BreakpointPropertiesDialog2 (ref bp)) {
-				return dlg.Run () == Xwt.Command.Ok;
+			using (var dlg = new BreakpointPropertiesDialog2 (bp)) {
+				Xwt.Command response = dlg.Run ();
+				if (bp == null)
+					bp = dlg.GetBreakEvent ();
+				return response == Xwt.Command.Ok;
 			}
 		}
 		

   Commit: 31a4062d726df925f66b0717c0abd998a531929a
   Author: Therzok <[email protected]> (Therzok)
     Date: 2013-11-04 16:18:44 GMT
      URL: https://github.com/mono/monodevelop/commit/31a4062d726df925f66b0717c0abd998a531929a

[Debugger] Removed Catchpoints dialog.

Integrated catchpoints into breakpoints pad.

Changed paths:
  M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml
  M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.csproj
  M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs
  M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog2.cs
  M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs
  M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs
Removed paths:
  D main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ExceptionsDialog.cs

Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml
===================================================================
@@ -154,9 +154,6 @@
 				_label = "Expression Evaluator"
 				shortcut = "Shift|F9"
 				defaultHandler = "MonoDevelop.Debugger.ExpressionEvaluatorCommand" />
-		<Command id = "MonoDevelop.Debugger.DebugCommands.SelectExceptions"
-				_label = "Exceptions..."
-				defaultHandler = "MonoDevelop.Debugger.SelectExceptionsCommand" />
 		<Command id = "MonoDevelop.Debugger.DebugCommands.ShowCurrentExecutionLine"
 				_label = "Show Current Execution Line"
 				shortcut = "Alt|*"
@@ -195,7 +192,6 @@
 		<CommandItem id = "MonoDevelop.Debugger.DebugCommands.EnableDisableBreakpoint" />
 		<CommandItem id = "MonoDevelop.Debugger.DebugCommands.DisableAllBreakpoints" />
 		<CommandItem id = "MonoDevelop.Debugger.DebugCommands.ClearAllBreakpoints" />
-		<CommandItem id = "MonoDevelop.Debugger.DebugCommands.SelectExceptions" />
 		<SeparatorItem id = "MonoDevelop.Debugger.ToolsSection" />
 		<CommandItem id = "MonoDevelop.Debugger.DebugCommands.ExpressionEvaluator" />
 	</Extension>

Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.csproj
===================================================================
@@ -116,7 +116,6 @@
     <Compile Include="MonoDevelop.Debugger\DebugCommands.cs" />
     <Compile Include="MonoDevelop.Debugger\Extensions.cs" />
     <Compile Include="MonoDevelop.Debugger\AttachToProcessDialog.cs" />
-    <Compile Include="MonoDevelop.Debugger\ExceptionsDialog.cs" />
     <Compile Include="gtk-gui\MonoDevelop.Debugger.ExceptionsDialog.cs" />
     <Compile Include="gtk-gui\MonoDevelop.Debugger.AttachToProcessDialog.cs" />
     <Compile Include="MonoDevelop.Debugger\ExpressionEvaluatorDialog.cs" />

Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs
===================================================================
@@ -45,7 +45,7 @@ public class BreakpointPad : IPadContent
 		BreakpointStore breakpoints;
 		
 		PadTreeView tree;
-		Gtk.TreeStore store;
+		TreeStore store;
 		Widget control;
 		ScrolledWindow sw;
 		CommandEntrySet menuSet;
@@ -225,7 +225,7 @@ protected void OnEnableDisable ()
 					if (!store.GetIter (out iter, path))
 						continue;
 
-					Breakpoint bp = (Breakpoint) store.GetValue (iter, (int) Columns.Breakpoint);
+					BreakEvent bp = (BreakEvent) store.GetValue (iter, (int) Columns.Breakpoint);
 					if (!bp.Enabled) {
 						enable = true;
 						break;
@@ -238,7 +238,7 @@ protected void OnEnableDisable ()
 					if (!store.GetIter (out iter, path))
 						continue;
 
-					Breakpoint bp = (Breakpoint) store.GetValue (iter, (int) Columns.Breakpoint);
+					BreakEvent bp = (BreakEvent) store.GetValue (iter, (int) Columns.Breakpoint);
 					bp.Enabled = enable;
 
 					store.SetValue (iter, (int) Columns.Icon, enable ? "md-breakpoint" : "md-breakpoint-disabled");
@@ -256,9 +256,12 @@ protected void OnBpJumpTo ()
 			TreeIter iter;
 
 			if (selected.Length == 1 && store.GetIter (out iter, selected[0])) {
-				Breakpoint bp = (Breakpoint) store.GetValue (iter, (int) Columns.Breakpoint);
-				if (!string.IsNullOrEmpty (bp.FileName))
-					IdeApp.Workbench.OpenDocument (bp.FileName, bp.Line, 1);
+				var be = (BreakEvent) store.GetValue (iter, (int) Columns.Breakpoint);
+				var bp = be as Breakpoint;
+				if (bp != null) {
+					if (!string.IsNullOrEmpty (bp.FileName))
+						IdeApp.Workbench.OpenDocument (bp.FileName, bp.Line, 1);
+				}
 			}
 		}
 
@@ -280,7 +283,7 @@ bool DeleteSelectedBreakpoints ()
 					if (!store.GetIter (out iter, path))
 						continue;
 
-					var bp = (Breakpoint) store.GetValue (iter, (int) Columns.Breakpoint);
+					var bp = (BreakEvent) store.GetValue (iter, (int) Columns.Breakpoint);
 					lock (breakpoints)
 						breakpoints.Remove (bp);
 					deleted = true;
@@ -359,7 +362,7 @@ void ItemToggled (object o, ToggledArgs args)
 				TreeIter iter;
 
 				if (store.GetIterFromString (out iter, args.Path)) {
-					Breakpoint bp = (Breakpoint) store.GetValue (iter, (int) Columns.Breakpoint);
+					BreakEvent bp = (BreakEvent) store.GetValue (iter, (int) Columns.Breakpoint);
 					bp.Enabled = !bp.Enabled;
 
 					store.SetValue (iter, (int) Columns.Icon, bp.Enabled ? "md-breakpoint" : "md-breakpoint-disabled");
@@ -380,27 +383,32 @@ public void UpdateDisplay ()
 			store.Clear ();
 			if (breakpoints != null) {	
 				lock (breakpoints) {
-					foreach (Breakpoint bp in breakpoints.GetBreakpoints ()) {
-						string hitCount = bp.HitCountMode != HitCountMode.None ? bp.CurrentHitCount.ToString () : "";
-						string traceExp = bp.HitAction == HitAction.PrintExpression ? bp.TraceExpression : "";
-						string traceVal = bp.HitAction == HitAction.PrintExpression ? bp.LastTraceValue : "";
+					foreach (BreakEvent be in breakpoints.GetBreakevents ()) {
+						string hitCount = be.HitCountMode != HitCountMode.None ? be.CurrentHitCount.ToString () : "";
+						string traceExp = be.HitAction == HitAction.PrintExpression ? be.TraceExpression : "";
+						string traceVal = be.HitAction == HitAction.PrintExpression ? be.LastTraceValue : "";
 						string name;
 
-						if (bp is FunctionBreakpoint) {
-							FunctionBreakpoint fb = (FunctionBreakpoint) bp;
-
+						var fb = be as FunctionBreakpoint;
+						var bp = be as Breakpoint;
+						var cp = be as Catchpoint;
+						if (fb != null) {
 							if (fb.ParamTypes != null)
 								name = fb.FunctionName + "(" + string.Join (", ", fb.ParamTypes) + ")";
 							else
 								name = fb.FunctionName;
+						} else if (bp != null) {
+							name = String.Format ("{0}:{1},{2}", bp.FileName, bp.Line, bp.Column);
+						} else if (cp != null) {
+							name = cp.ExceptionName;
 						} else {
-							name = string.Format ("{0}:{1},{2}", ((Breakpoint) bp).FileName, bp.Line, bp.Column);
+							name = "";
 						}
 
-						if (bp.Enabled)
-							store.AppendValues ("md-breakpoint", true, name, bp, bp.ConditionExpression, traceExp, hitCount, traceVal);
+						if (be.Enabled)
+							store.AppendValues ("md-breakpoint", true, name, be, bp != null ? bp.ConditionExpression : null, traceExp, hitCount, traceVal);
 						else
-							store.AppendValues ("md-breakpoint-disabled", false, name, bp, bp.ConditionExpression, traceExp, hitCount, traceVal);
+							store.AppendValues ("md-breakpoint-disabled", false, name, be, bp != null ? bp.ConditionExpression : null, traceExp, hitCount, traceVal);
 					}
 				}
 			}
@@ -416,7 +424,7 @@ void OnBreakpointUpdated (object s, BreakpointEventArgs args)
 				return;
 
 			do {
-				Breakpoint bp = (Breakpoint) store.GetValue (it, (int) Columns.Breakpoint);
+				var bp = (BreakEvent) store.GetValue (it, (int) Columns.Breakpoint);
 				if (bp == args.Breakpoint) {
 					string hitCount = bp.HitCountMode != HitCountMode.None ? bp.CurrentHitCount.ToString () : "";
 					string traceVal = bp.HitAction == HitAction.PrintExpression ? bp.LastTraceValue : "";

Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog2.cs
===================================================================
@@ -49,6 +49,7 @@ class BreakpointPropertiesDialog2 : Xwt.Dialog
 		Xwt.HBox hboxLocation = new Xwt.HBox ();
 		Xwt.HBox hboxLineColumn = new Xwt.HBox ();
 		Xwt.HBox hboxException = new Xwt.HBox ();
+		Xwt.HBox hboxCondition = new Xwt.HBox ();
 
 		// Stop-type radios.
 		readonly Xwt.RadioButton stopOnFunction = new Xwt.RadioButton (GettextCatalog.GetString ("When a function is entered"));
@@ -97,7 +98,6 @@ public BreakpointPropertiesDialog2 (BreakEvent be)
 
 		void Initialize ()
 		{
-			// TODO: Make dialog for exceptions.
 			Title = GettextCatalog.GetString (be == null ? "New Breakpoint" : "Breakpoint Properties");
 			var buttonLabel = GettextCatalog.GetString (be == null ? "Add breakpoint" : "Modify breakpoint");
 
@@ -134,6 +134,10 @@ void Initialize ()
 			ignoreHitType.SelectionChanged += OnUpdateControls;
 			checkPrintExpression.Toggled += OnUpdateControls;
 
+			entryFunctionName.Changed += OnUpdateText;
+			entryLocationFile.Changed += OnUpdateText;
+			entryExceptionType.Changed += OnUpdateText;
+
 			buttonOk.Clicked += OnSave;
 		}
 
@@ -201,14 +205,14 @@ void SetInitialData ()
 					entryPrintExpression.Text = be.TraceExpression;
 				}
 			} else {
+				ignoreHitType.SelectedItem = HitCountMode.None;
+				conditionalHitType.SelectedItem = ConditionalHitWhen.ConditionIsTrue;
+
 				if (IdeApp.Workbench.ActiveDocument != null) {
 					entryLocationFile.Text = IdeApp.Workbench.ActiveDocument.FileName;
 					entryLocationLine.Text = IdeApp.Workbench.ActiveDocument.Editor.Caret.Line.ToString ();
 					entryLocationColumn.Text = IdeApp.Workbench.ActiveDocument.Editor.Caret.Column.ToString ();
 				}
-
-				ignoreHitType.SelectedItem = HitCountMode.None;
-				conditionalHitType.SelectedItem = ConditionalHitWhen.ConditionIsTrue;
 			}
 
 			var fb = be as FunctionBreakpoint;
@@ -302,6 +306,7 @@ void OnUpdateControls (object sender, EventArgs e)
 			hboxLocation.Sensitive = stopOnLocation.Active;
 			hboxException.Sensitive = stopOnException.Active;
 			checkIncludeSubclass.Sensitive = stopOnException.Active;
+			hboxCondition.Sensitive = !stopOnException.Active;
 
 			// Check conditional
 			if (!String.IsNullOrEmpty (entryConditionalExpression.Text))
@@ -323,6 +328,13 @@ void OnUpdateControls (object sender, EventArgs e)
 			buttonOk.Sensitive = CheckValidity ();
 		}
 
+		void OnUpdateText (object sender, EventArgs e)
+		{
+
+
+			buttonOk.Sensitive = CheckValidity ();
+		}
+
 		bool CheckValidity ()
 		{
 			if (be is FunctionBreakpoint) {
@@ -501,7 +513,7 @@ void SetLayout ()
 
 			vbox.PackStart (vboxRadio);
 
-			var hboxCondition = new Xwt.HBox ();
+			hboxCondition = new Xwt.HBox ();
 			hboxCondition.PackStart (new Xwt.Label (GettextCatalog.GetString ("Condition:")));
 			hboxCondition.PackStart (entryConditionalExpression, true);
 			hboxCondition.PackEnd (warningCondition);


Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs
===================================================================
@@ -59,7 +59,6 @@ public enum DebugCommands
 		RemoveBreakpoint,
 		ShowBreakpointProperties,
 		ExpressionEvaluator,
-		SelectExceptions,
 		ShowCurrentExecutionLine,
 		AddTracepoint,
 		AddWatch,
@@ -620,19 +619,6 @@ protected override void Update (CommandInfo info)
 			info.Enabled = DebuggingService.CurrentFrame != null;
 		}
 	}
-
-	class SelectExceptionsCommand: CommandHandler
-	{
-		protected override void Run ()
-		{
-			DebuggingService.ShowExceptionsFilters ();
-		}
-
-		protected override void Update (CommandInfo info)
-		{
-			info.Visible = DebuggingService.IsFeatureSupported (DebuggerFeatures.Catchpoints);
-		}
-	}
 	
 	class ShowCurrentExecutionLineCommand : CommandHandler
 	{

Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs
===================================================================
@@ -327,11 +327,6 @@ static void HideExceptionCaughtDialog ()
 				return exceptionDialog;
 			}
 		}
-
-		public static void ShowExceptionsFilters ()
-		{
-			MessageService.ShowCustomDialog (new ExceptionsDialog ());
-		}
 		
 		static void SetupSession ()
 		{

Removed: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ExceptionsDialog.cs
===================================================================
@@ -1,245 +0,0 @@
-// ExceptionsDialog.cs
-//
-// Author:
-//   Lluis Sanchez Gual <[email protected]>
-//
-// Copyright (c) 2008 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-//
-//
-
-using System;
-using System.Collections.Generic;
-using Gtk;
-using MonoDevelop.Core;
-using MonoDevelop.Components;
-using Mono.Debugging.Client;
-using MonoDevelop.Ide;
-using ICSharpCode.NRefactory.TypeSystem;
-using MonoDevelop.Ide.TypeSystem;
-
-namespace MonoDevelop.Debugger
-{
-	public partial class ExceptionsDialog : Gtk.Dialog
-	{
-		ListStore storeExceptions;
-		ListStore storeSelection;
-		HashSet<string> classes = new HashSet<string> ();
-		TreeViewState tstateExc;
-		TreeViewState tstateSel;
-		bool updateScheduled;
-		HashSet<string> selectedClasses = new HashSet<string> ();
-		
-		public ExceptionsDialog()
-		{
-			this.Build ();
-			
-			storeExceptions = new ListStore (typeof(String));
-			treeExceptions.Selection.Mode = SelectionMode.Multiple;
-			treeExceptions.Model = storeExceptions;
-			treeExceptions.AppendColumn ("", new CellRendererText (), "text", 0);
-			tstateExc = new TreeViewState (treeExceptions, 0);
-			storeExceptions.SetSortColumnId (0, SortType.Ascending);
-			
-			storeSelection = new ListStore (typeof(String));
-			treeSelected.Selection.Mode = SelectionMode.Multiple;
-			treeSelected.Model = storeSelection;
-			treeSelected.AppendColumn ("", new CellRendererText (), "text", 0);
-			tstateSel = new TreeViewState (treeSelected, 0);
-			storeSelection.SetSortColumnId (0, SortType.Ascending);
-
-			var breakpoints = DebuggingService.Breakpoints;
-			lock (breakpoints) {
-				foreach (Catchpoint cp in breakpoints.GetCatchpoints ())
-					selectedClasses.Add (cp.ExceptionName);
-			}
-
-			LoadExceptions ();
-			
-			FillSelection ();
-			FillExceptions ();
-		}
-		
-		void LoadExceptions ()
-		{
-			classes.Add ("System.Exception");
-			if (IdeApp.ProjectOperations.CurrentSelectedProject != null) {
-				var dom = TypeSystemService.GetCompilation (IdeApp.ProjectOperations.CurrentSelectedProject);
-				foreach (var t in dom.FindType (typeof (Exception)).GetSubTypeDefinitions ())
-					classes.Add (t.ReflectionName);
-			} else {
-				// no need to unload this assembly context, it's not cached.
-				var unresolvedAssembly = TypeSystemService.LoadAssemblyContext (Runtime.SystemAssemblyService.CurrentRuntime, MonoDevelop.Core.Assemblies.TargetFramework.Default, typeof(Uri).Assembly.Location);
-				var mscorlib = TypeSystemService.LoadAssemblyContext (Runtime.SystemAssemblyService.CurrentRuntime, MonoDevelop.Core.Assemblies.TargetFramework.Default, typeof(object).Assembly.Location);
-				if (unresolvedAssembly != null && mscorlib != null) {
-					var dom = new ICSharpCode.NRefactory.TypeSystem.Implementation.SimpleCompilation (unresolvedAssembly, mscorlib);
-					foreach (var t in dom.FindType (typeof (Exception)).GetSubTypeDefinitions ())
-						classes.Add (t.ReflectionName);
-				}
-			}
-		}
-		
-		void FillExceptions ()
-		{
-			tstateExc.Save ();
-			storeExceptions.Clear ();
-			string filter = entryFilter.Text;
-			foreach (string t in classes) {
-				if ((filter.Length == 0 || t.IndexOf (filter, StringComparison.OrdinalIgnoreCase) != -1) && !selectedClasses.Contains (t))
-					storeExceptions.AppendValues (t);
-			}
-			tstateExc.Load ();
-			if (treeExceptions.Selection.CountSelectedRows () == 0) {
-				TreeIter it;
-				if (storeExceptions.GetIterFirst (out it))
-					treeExceptions.Selection.SelectIter (it);
-			}
-		}
-		
-		void FillSelection ()
-		{
-			tstateSel.Save ();
-			storeSelection.Clear ();
-			foreach (string exc in selectedClasses)
-				storeSelection.AppendValues (exc);
-			tstateSel.Load ();
-			if (treeSelected.Selection.CountSelectedRows () == 0) {
-				TreeIter it;
-				if (storeSelection.GetIterFirst (out it))
-					treeSelected.Selection.SelectIter (it);
-			}
-		}
-		
-		protected virtual void OnEntryFilterChanged (object sender, System.EventArgs e)
-		{
-			if (!updateScheduled) {
-				updateScheduled = true;
-				GLib.Timeout.Add (200, delegate {
-					updateScheduled = false;
-					FillExceptions ();
-					return false;
-				});
-			}
-		}
-		
-		protected virtual void OnButtonAddClicked (object sender, System.EventArgs e)
-		{
-			foreach (TreePath path in treeExceptions.Selection.GetSelectedRows ()) {
-				TreeIter it;
-				if (storeExceptions.GetIter (out it, path)) {
-					string exc = (string) storeExceptions.GetValue (it, 0);
-					selectedClasses.Add (exc);
-				}
-			}
-			SelectNearest (treeExceptions);
-			FillSelection ();
-			FillExceptions ();
-		}
-		
-		protected virtual void OnButtonRemoveClicked (object sender, System.EventArgs e)
-		{
-			foreach (TreePath path in treeSelected.Selection.GetSelectedRows ()) {
-				TreeIter it;
-				if (storeSelection.GetIter (out it, path)) {
-					string exc = (string) storeSelection.GetValue (it, 0);
-					selectedClasses.Remove (exc);
-				}
-			}
-			SelectNearest (treeSelected);
-			FillSelection ();
-			FillExceptions ();
-		}
-		
-		void SelectNearest (TreeView view)
-		{
-			ListStore store = (ListStore) view.Model;
-			TreePath[] paths = view.Selection.GetSelectedRows ();
-			if (paths.Length == 0)
-				return;
-			TreeIter it;
-			store.GetIter (out it, paths [paths.Length - 1]);
-			if (store.IterNext (ref it)) {
-				view.Selection.UnselectAll ();
-				view.Selection.SelectIter (it);
-				return;
-			}
-			store.GetIter (out it, paths [0]);
-			if (store.IterNext (ref it)) {
-				view.Selection.UnselectAll ();
-				view.Selection.SelectIter (it);
-				return;
-			}
-		}
-		
-		protected virtual void OnEntryFilterActivated (object sender, EventArgs e)
-		{
-			OnButtonAddClicked (null, null);
-		}
-		
-		protected virtual void OnButtonOkClicked (object sender, EventArgs e)
-		{
-			var breakpoints = DebuggingService.Breakpoints;
-
-			lock (breakpoints) {
-				foreach (Catchpoint cp in new List<Catchpoint> (breakpoints.GetCatchpoints ())) {
-					if (!selectedClasses.Contains (cp.ExceptionName))
-						breakpoints.Remove (cp);
-					else
-						selectedClasses.Remove (cp.ExceptionName);
-				}
-
-				foreach (string exc in selectedClasses)
-					breakpoints.AddCatchpoint (exc);
-			}
-		}
-		
-		[GLib.ConnectBefore]
-		protected virtual void OnTreeSelectedKeyPressEvent (object o, Gtk.KeyPressEventArgs args)
-		{
-			if (args.Event.Key == Gdk.Key.Return || args.Event.Key == Gdk.Key.KP_Enter) {
-				OnButtonRemoveClicked (null, null);
-				args.RetVal = true;
-			}
-		}
-		
-		[GLib.ConnectBefore]
-		protected virtual void OnTreeSelectedButtonPressEvent (object o, Gtk.ButtonPressEventArgs args)
-		{
-			if (args.Event.Button == 1 && args.Event.Type == Gdk.EventType.TwoButtonPress)
-				OnButtonRemoveClicked (o, args);
-		}
-		
-		[GLib.ConnectBefore]
-		protected virtual void OnTreeExceptionsKeyPressEvent (object o, Gtk.KeyPressEventArgs args)
-		{
-			if (args.Event.Key == Gdk.Key.Return || args.Event.Key == Gdk.Key.KP_Enter) {
-				OnButtonAddClicked (null, null);
-				args.RetVal = true;
-			}
-		}
-		
-		[GLib.ConnectBefore]
-		protected virtual void OnTreeExceptionsButtonPressEvent (object o, Gtk.ButtonPressEventArgs args)
-		{
-			if (args.Event.Button == 1 && args.Event.Type == Gdk.EventType.TwoButtonPress)
-				OnButtonAddClicked (o, args);
-		}
-	}
-}

   Commit: eea5d0063339dccf05fe270d49039b983d9f3d03
   Author: Ungureanu Marius <[email protected]> (Therzok)
Committer: Therzok <[email protected]> (Therzok)
     Date: 2013-11-04 16:18:44 GMT
      URL: https://github.com/mono/monodevelop/commit/eea5d0063339dccf05fe270d49039b983d9f3d03

Remove tracepoint dialog

Changed paths:
  M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.csproj
  M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs
  M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs
  M main/src/addins/MonoDevelop.Debugger/gtk-gui/gui.stetic
Removed paths:
  D main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/AddTracePointDialog.cs
  D main/src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.AddTracePointDialog.cs
  D main/src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.ExceptionsDialog.cs

Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.csproj
===================================================================
@@ -116,7 +116,6 @@
     <Compile Include="MonoDevelop.Debugger\DebugCommands.cs" />
     <Compile Include="MonoDevelop.Debugger\Extensions.cs" />
     <Compile Include="MonoDevelop.Debugger\AttachToProcessDialog.cs" />
-    <Compile Include="gtk-gui\MonoDevelop.Debugger.ExceptionsDialog.cs" />
     <Compile Include="gtk-gui\MonoDevelop.Debugger.AttachToProcessDialog.cs" />
     <Compile Include="MonoDevelop.Debugger\ExpressionEvaluatorDialog.cs" />
     <Compile Include="gtk-gui\MonoDevelop.Debugger.ExpressionEvaluatorDialog.cs" />
@@ -129,8 +128,6 @@
     <Compile Include="gtk-gui\MonoDevelop.Debugger.BusyEvaluatorDialog.cs" />
     <Compile Include="MonoDevelop.Debugger\DebuggerOptionsPanelWidget.cs" />
     <Compile Include="gtk-gui\MonoDevelop.Debugger.DebuggerOptionsPanelWidget.cs" />
-    <Compile Include="MonoDevelop.Debugger\AddTracePointDialog.cs" />
-    <Compile Include="gtk-gui\MonoDevelop.Debugger.AddTracePointDialog.cs" />
     <Compile Include="MonoDevelop.Debugger\PinnedWatch.cs" />
     <Compile Include="MonoDevelop.Debugger\PinnedWatchStore.cs" />
     <Compile Include="MonoDevelop.Debugger\DebuggerEngine.cs" />

Removed: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/AddTracePointDialog.cs
===================================================================
@@ -1,48 +0,0 @@
-// 
-// AddTracePointDialog.cs
-//  
-// Author:
-//       Lluis Sanchez Gual <[email protected]>
-// 
-// Copyright (c) 2009 Novell, Inc (http://www.novell.com)
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System;
-
-namespace MonoDevelop.Debugger
-{
-
-
-	public partial class AddTracePointDialog : Gtk.Dialog
-	{
-		public AddTracePointDialog ()
-		{
-			this.Build ();
-		}
-		
-		public string Text {
-			get { return entryTrace.Text; }
-		}
-		
-		public string Condition {
-			get { return entryCondition.Text; }
-		}
-	}
-}

Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs
===================================================================
@@ -60,7 +60,6 @@ public enum DebugCommands
 		ShowBreakpointProperties,
 		ExpressionEvaluator,
 		ShowCurrentExecutionLine,
-		AddTracepoint,
 		AddWatch,
 		StopEvaluation
 	}
@@ -424,25 +423,6 @@ protected override void Update (CommandInfo info)
 		}
 	}
 	
-	class AddTracepointHandler: CommandHandler
-	{
-		protected override void Run ()
-		{
-			DebuggingService.ShowAddTracepointDialog (
-			    IdeApp.Workbench.ActiveDocument.FileName,
-			    IdeApp.Workbench.ActiveDocument.Editor.Caret.Line);
-		}
-		
-		protected override void Update (CommandInfo info)
-		{
-			info.Visible = DebuggingService.IsFeatureSupported (DebuggerFeatures.Tracepoints);
-			info.Enabled = IdeApp.Workbench.ActiveDocument != null && 
-					IdeApp.Workbench.ActiveDocument.Editor != null &&
-					IdeApp.Workbench.ActiveDocument.FileName != FilePath.Null &&
-					!DebuggingService.Breakpoints.IsReadOnly;
-		}
-	}
-	
 	class EnableDisableBreakpointHandler: CommandHandler
 	{
 		protected override void Run ()

Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs
===================================================================
@@ -225,20 +225,6 @@ public static bool ShowBreakpointProperties (ref BreakEvent bp)
 			}
 		}
 		
-		public static void ShowAddTracepointDialog (string file, int line)
-		{
-			AddTracePointDialog dlg = new AddTracePointDialog ();
-			if (MessageService.RunCustomDialog (dlg) == (int) Gtk.ResponseType.Ok && dlg.Text.Length > 0) {
-				Breakpoint bp = new Breakpoint (file, line);
-				bp.HitAction = HitAction.PrintExpression;
-				bp.TraceExpression = dlg.Text;
-				bp.ConditionExpression = dlg.Condition;
-				lock (breakpoints)
-					breakpoints.Add (bp);
-			}
-			dlg.Destroy ();
-		}
-		
 		public static void AddWatch (string expression)
 		{
 			Pad pad = IdeApp.Workbench.GetPad<WatchPad> ();

Removed: main/src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.AddTracePointDialog.cs
===================================================================
@@ -1,168 +0,0 @@
-
-// This file has been generated by the GUI designer. Do not modify.
-namespace MonoDevelop.Debugger
-{
-	public partial class AddTracePointDialog
-	{
-		private global::Gtk.VBox vbox2;
-		private global::Gtk.Table table1;
-		private global::Gtk.Entry entryCondition;
-		private global::Gtk.Entry entryTrace;
-		private global::Gtk.Label label1;
-		private global::Gtk.Label label2;
-		private global::Gtk.Label label3;
-		private global::Gtk.Label label4;
-		private global::Gtk.Button buttonCancel;
-		private global::Gtk.Button buttonOk;
-		
-		protected virtual void Build ()
-		{
-			global::Stetic.Gui.Initialize (this);
-			// Widget MonoDevelop.Debugger.AddTracePointDialog
-			this.Name = "MonoDevelop.Debugger.AddTracePointDialog";
-			this.Title = global::Mono.Unix.Catalog.GetString ("Add Tracepoint");
-			this.WindowPosition = ((global::Gtk.WindowPosition)(4));
-			// Internal child MonoDevelop.Debugger.AddTracePointDialog.VBox
-			global::Gtk.VBox w1 = this.VBox;
-			w1.Name = "dialog1_VBox";
-			w1.BorderWidth = ((uint)(2));
-			// Container child dialog1_VBox.Gtk.Box+BoxChild
-			this.vbox2 = new global::Gtk.VBox ();
-			this.vbox2.Name = "vbox2";
-			this.vbox2.Spacing = 6;
-			this.vbox2.BorderWidth = ((uint)(6));
-			// Container child vbox2.Gtk.Box+BoxChild
-			this.table1 = new global::Gtk.Table (((uint)(4)), ((uint)(2)), false);
-			this.table1.Name = "table1";
-			this.table1.RowSpacing = ((uint)(6));
-			this.table1.ColumnSpacing = ((uint)(6));
-			// Container child table1.Gtk.Table+TableChild
-			this.entryCondition = new global::Gtk.Entry ();
-			this.entryCondition.CanFocus = true;
-			this.entryCondition.Name = "entryCondition";
-			this.entryCondition.IsEditable = true;
-			this.entryCondition.ActivatesDefault = true;
-			this.entryCondition.InvisibleChar = '●';
-			this.table1.Add (this.entryCondition);
-			global::Gtk.Table.TableChild w2 = ((global::Gtk.Table.TableChild)(this.table1 [this.entryCondition]));
-			w2.TopAttach = ((uint)(2));
-			w2.BottomAttach = ((uint)(3));
-			w2.LeftAttach = ((uint)(1));
-			w2.RightAttach = ((uint)(2));
-			w2.XOptions = ((global::Gtk.AttachOptions)(4));
-			w2.YOptions = ((global::Gtk.AttachOptions)(4));
-			// Container child table1.Gtk.Table+TableChild
-			this.entryTrace = new global::Gtk.Entry ();
-			this.entryTrace.CanFocus = true;
-			this.entryTrace.Name = "entryTrace";
-			this.entryTrace.IsEditable = true;
-			this.entryTrace.ActivatesDefault = true;
-			this.entryTrace.InvisibleChar = '●';
-			this.table1.Add (this.entryTrace);
-			global::Gtk.Table.TableChild w3 = ((global::Gtk.Table.TableChild)(this.table1 [this.entryTrace]));
-			w3.LeftAttach = ((uint)(1));
-			w3.RightAttach = ((uint)(2));
-			w3.XOptions = ((global::Gtk.AttachOptions)(4));
-			w3.YOptions = ((global::Gtk.AttachOptions)(4));
-			// Container child table1.Gtk.Table+TableChild
-			this.label1 = new global::Gtk.Label ();
-			this.label1.Name = "label1";
-			this.label1.Xalign = 0F;
-			this.label1.LabelProp = global::Mono.Unix.Catalog.GetString ("Trace Text:");
-			this.table1.Add (this.label1);
-			global::Gtk.Table.TableChild w4 = ((global::Gtk.Table.TableChild)(this.table1 [this.label1]));
-			w4.XOptions = ((global::Gtk.AttachOptions)(4));
-			w4.YOptions = ((global::Gtk.AttachOptions)(4));
-			// Container child table1.Gtk.Table+TableChild
-			this.label2 = new global::Gtk.Label ();
-			this.label2.Name = "label2";
-			this.label2.Xalign = 0F;
-			this.label2.LabelProp = global::Mono.Unix.Catalog.GetString ("Condition:");
-			this.table1.Add (this.label2);
-			global::Gtk.Table.TableChild w5 = ((global::Gtk.Table.TableChild)(this.table1 [this.label2]));
-			w5.TopAttach = ((uint)(2));
-			w5.BottomAttach = ((uint)(3));
-			w5.XOptions = ((global::Gtk.AttachOptions)(4));
-			w5.YOptions = ((global::Gtk.AttachOptions)(4));
-			// Container child table1.Gtk.Table+TableChild
-			this.label3 = new global::Gtk.Label ();
-			this.label3.WidthRequest = 450;
-			this.label3.Name = "label3";
-			this.label3.Xalign = 0F;
-			this.label3.LabelProp = global::Mono.Unix.Catalog.GetString ("<small>Expressions to be evaluated by the debugger can be included in the text by surrounding them with curly braces, for example: \"Value is {n}\".</small>");
-			this.label3.UseMarkup = true;
-			this.label3.Wrap = true;
-			this.table1.Add (this.label3);
-			global::Gtk.Table.TableChild w6 = ((global::Gtk.Table.TableChild)(this.table1 [this.label3]));
-			w6.TopAttach = ((uint)(1));
-			w6.BottomAttach = ((uint)(2));
-			w6.LeftAttach = ((uint)(1));
-			w6.RightAttach = ((uint)(2));
-			w6.XOptions = ((global::Gtk.AttachOptions)(4));
-			w6.YOptions = ((global::Gtk.AttachOptions)(4));
-			// Container child table1.Gtk.Table+TableChild
-			this.label4 = new global::Gtk.Label ();
-			this.label4.WidthRequest = 450;
-			this.label4.Name = "label4";
-			this.label4.Xalign = 0F;
-			this.label4.LabelProp = global::Mono.Unix.Catalog.GetString ("<small>When set, the text will be printed only when this condition evaluates to true.</small>");
-			this.label4.UseMarkup = true;
-			this.label4.Wrap = true;
-			this.table1.Add (this.label4);
-			global::Gtk.Table.TableChild w7 = ((global::Gtk.Table.TableChild)(this.table1 [this.label4]));
-			w7.TopAttach = ((uint)(3));
-			w7.BottomAttach = ((uint)(4));
-			w7.LeftAttach = ((uint)(1));
-			w7.RightAttach = ((uint)(2));
-			w7.XOptions = ((global::Gtk.AttachOptions)(4));
-			w7.YOptions = ((global::Gtk.AttachOptions)(4));
-			this.vbox2.Add (this.table1);
-			global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.table1]));
-			w8.Position = 0;
-			w8.Expand = false;
-			w8.Fill = false;
-			w1.Add (this.vbox2);
-			global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(w1 [this.vbox2]));
-			w9.Position = 0;
-			w9.Expand = false;
-			w9.Fill = false;
-			// Internal child MonoDevelop.Debugger.AddTracePointDialog.ActionArea
-			global::Gtk.HButtonBox w10 = this.ActionArea;
-			w10.Name = "dialog1_ActionArea";
-			w10.Spacing = 10;
-			w10.BorderWidth = ((uint)(5));
-			w10.LayoutStyle = ((global::Gtk.ButtonBoxStyle)(4));
-			// Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
-			this.buttonCancel = new global::Gtk.Button ();
-			this.buttonCancel.CanFocus = true;
-			this.buttonCancel.Name = "buttonCancel";
-			this.buttonCancel.UseStock = true;
-			this.buttonCancel.UseUnderline = true;
-			this.buttonCancel.Label = "gtk-cancel";
-			this.AddActionWidget (this.buttonCancel, -6);
-			global::Gtk.ButtonBox.ButtonBoxChild w11 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w10 [this.buttonCancel]));
-			w11.Expand = false;
-			w11.Fill = false;
-			// Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
-			this.buttonOk = new global::Gtk.Button ();
-			this.buttonOk.CanDefault = true;
-			this.buttonOk.CanFocus = true;
-			this.buttonOk.Name = "buttonOk";
-			this.buttonOk.UseStock = true;
-			this.buttonOk.UseUnderline = true;
-			this.buttonOk.Label = "gtk-ok";
-			this.AddActionWidget (this.buttonOk, -5);
-			global::Gtk.ButtonBox.ButtonBoxChild w12 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w10 [this.buttonOk]));
-			w12.Position = 1;
-			w12.Expand = false;
-			w12.Fill = false;
-			if ((this.Child != null)) {
-				this.Child.ShowAll ();
-			}
-			this.DefaultWidth = 540;
-			this.DefaultHeight = 208;
-			this.buttonOk.HasDefault = true;
-			this.Hide ();
-		}
-	}
-}

Removed: main/src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.ExceptionsDialog.cs
===================================================================
@@ -1,229 +0,0 @@
-
-// This file has been generated by the GUI designer. Do not modify.
-namespace MonoDevelop.Debugger
-{
-	public partial class ExceptionsDialog
-	{
-		private global::Gtk.HBox hbox1;
-		private global::Gtk.VBox vbox4;
-		private global::Gtk.Label label2;
-		private global::Gtk.HBox hbox2;
-		private global::Gtk.Image image15;
-		private global::Gtk.Entry entryFilter;
-		private global::Gtk.ScrolledWindow GtkScrolledWindow;
-		private global::Gtk.TreeView treeExceptions;
-		private global::Gtk.VBox vbox3;
-		private global::Gtk.Label label1;
-		private global::Gtk.Button buttonAdd;
-		private global::Gtk.Button buttonRemove;
-		private global::Gtk.Label label4;
-		private global::Gtk.VBox vbox5;
-		private global::Gtk.Label label3;
-		private global::Gtk.ScrolledWindow GtkScrolledWindow1;
-		private global::Gtk.TreeView treeSelected;
-		private global::Gtk.Button buttonCancel;
-		private global::Gtk.Button buttonOk;
-
-		protected virtual void Build ()
-		{
-			global::Stetic.Gui.Initialize (this);
-			// Widget MonoDevelop.Debugger.ExceptionsDialog
-			this.Name = "MonoDevelop.Debugger.ExceptionsDialog";
-			this.Title = global::Mono.Unix.Catalog.GetString ("Exceptions");
-			this.WindowPosition = ((global::Gtk.WindowPosition)(4));
-			this.BorderWidth = ((uint)(3));
-			// Internal child MonoDevelop.Debugger.ExceptionsDialog.VBox
-			global::Gtk.VBox w1 = this.VBox;
-			w1.Name = "dialog1_VBox";
-			w1.BorderWidth = ((uint)(2));
-			// Container child dialog1_VBox.Gtk.Box+BoxChild
-			this.hbox1 = new global::Gtk.HBox ();
-			this.hbox1.Name = "hbox1";
-			this.hbox1.Spacing = 6;
-			this.hbox1.BorderWidth = ((uint)(9));
-			// Container child hbox1.Gtk.Box+BoxChild
-			this.vbox4 = new global::Gtk.VBox ();
-			this.vbox4.Name = "vbox4";
-			this.vbox4.Spacing = 6;
-			// Container child vbox4.Gtk.Box+BoxChild
-			this.label2 = new global::Gtk.Label ();
-			this.label2.Name = "label2";
-			this.label2.Xalign = 0F;
-			this.label2.LabelProp = global::Mono.Unix.Catalog.GetString ("Exceptions:");
-			this.vbox4.Add (this.label2);
-			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox4 [this.label2]));
-			w2.Position = 0;
-			w2.Expand = false;
-			w2.Fill = false;
-			// Container child vbox4.Gtk.Box+BoxChild
-			this.hbox2 = new global::Gtk.HBox ();
-			this.hbox2.Name = "hbox2";
-			this.hbox2.Spacing = 6;
-			// Container child hbox2.Gtk.Box+BoxChild
-			this.image15 = new global::Gtk.Image ();
-			this.image15.Name = "image15";
-			this.image15.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-find", global::Gtk.IconSize.Menu);
-			this.hbox2.Add (this.image15);
-			global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.image15]));
-			w3.Position = 0;
-			w3.Expand = false;
-			w3.Fill = false;
-			// Container child hbox2.Gtk.Box+BoxChild
-			this.entryFilter = new global::Gtk.Entry ();
-			this.entryFilter.CanFocus = true;
-			this.entryFilter.Name = "entryFilter";
-			this.entryFilter.IsEditable = true;
-			this.entryFilter.InvisibleChar = '●';
-			this.hbox2.Add (this.entryFilter);
-			global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.entryFilter]));
-			w4.Position = 1;
-			this.vbox4.Add (this.hbox2);
-			global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox4 [this.hbox2]));
-			w5.Position = 1;
-			w5.Expand = false;
-			w5.Fill = false;
-			// Container child vbox4.Gtk.Box+BoxChild
-			this.GtkScrolledWindow = new global::Gtk.ScrolledWindow ();
-			this.GtkScrolledWindow.Name = "GtkScrolledWindow";
-			this.GtkScrolledWindow.ShadowType = ((global::Gtk.ShadowType)(1));
-			// Container child GtkScrolledWindow.Gtk.Container+ContainerChild
-			this.treeExceptions = new global::Gtk.TreeView ();
-			this.treeExceptions.CanFocus = true;
-			this.treeExceptions.Name = "treeExceptions";
-			this.treeExceptions.HeadersVisible = false;
-			this.GtkScrolledWindow.Add (this.treeExceptions);
-			this.vbox4.Add (this.GtkScrolledWindow);
-			global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.vbox4 [this.GtkScrolledWindow]));
-			w7.Position = 2;
-			this.hbox1.Add (this.vbox4);
-			global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.vbox4]));
-			w8.Position = 0;
-			// Container child hbox1.Gtk.Box+BoxChild
-			this.vbox3 = new global::Gtk.VBox ();
-			this.vbox3.Name = "vbox3";
-			this.vbox3.Spacing = 12;
-			// Container child vbox3.Gtk.Box+BoxChild
-			this.label1 = new global::Gtk.Label ();
-			this.label1.Name = "label1";
-			this.vbox3.Add (this.label1);
-			global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.label1]));
-			w9.Position = 0;
-			// Container child vbox3.Gtk.Box+BoxChild
-			this.buttonAdd = new global::Gtk.Button ();
-			this.buttonAdd.CanFocus = true;
-			this.buttonAdd.Name = "buttonAdd";
-			this.buttonAdd.UseUnderline = true;
-			global::Gtk.Image w10 = new global::Gtk.Image ();
-			w10.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-go-forward", global::Gtk.IconSize.Menu);
-			this.buttonAdd.Image = w10;
-			this.vbox3.Add (this.buttonAdd);
-			global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.buttonAdd]));
-			w11.Position = 1;
-			w11.Expand = false;
-			w11.Fill = false;
-			// Container child vbox3.Gtk.Box+BoxChild
-			this.buttonRemove = new global::Gtk.Button ();
-			this.buttonRemove.CanFocus = true;
-			this.buttonRemove.Name = "buttonRemove";
-			this.buttonRemove.UseUnderline = true;
-			global::Gtk.Image w12 = new global::Gtk.Image ();
-			w12.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-go-back", global::Gtk.IconSize.Menu);
-			this.buttonRemove.Image = w12;
-			this.vbox3.Add (this.buttonRemove);
-			global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.buttonRemove]));
-			w13.Position = 2;
-			w13.Expand = false;
-			w13.Fill = false;
-			// Container child vbox3.Gtk.Box+BoxChild
-			this.label4 = new global::Gtk.Label ();
-			this.label4.Name = "label4";
-			this.vbox3.Add (this.label4);
-			global::Gtk.Box.BoxChild w14 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.label4]));
-			w14.Position = 3;
-			this.hbox1.Add (this.vbox3);
-			global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.vbox3]));
-			w15.Position = 1;
-			w15.Expand = false;
-			w15.Fill = false;
-			// Container child hbox1.Gtk.Box+BoxChild
-			this.vbox5 = new global::Gtk.VBox ();
-			this.vbox5.Name = "vbox5";
-			this.vbox5.Spacing = 6;
-			// Container child vbox5.Gtk.Box+BoxChild
-			this.label3 = new global::Gtk.Label ();
-			this.label3.Name = "label3";
-			this.label3.Xalign = 0F;
-			this.label3.LabelProp = global::Mono.Unix.Catalog.GetString ("Stop in exceptions:");
-			this.vbox5.Add (this.label3);
-			global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.vbox5 [this.label3]));
-			w16.Position = 0;
-			w16.Expand = false;
-			w16.Fill = false;
-			// Container child vbox5.Gtk.Box+BoxChild
-			this.GtkScrolledWindow1 = new global::Gtk.ScrolledWindow ();
-			this.GtkScrolledWindow1.Name = "GtkScrolledWindow1";
-			this.GtkScrolledWindow1.ShadowType = ((global::Gtk.ShadowType)(1));
-			// Container child GtkScrolledWindow1.Gtk.Container+ContainerChild
-			this.treeSelected = new global::Gtk.TreeView ();
-			this.treeSelected.CanFocus = true;
-			this.treeSelected.Name = "treeSelected";
-			this.treeSelected.HeadersVisible = false;
-			this.GtkScrolledWindow1.Add (this.treeSelected);
-			this.vbox5.Add (this.GtkScrolledWindow1);
-			global::Gtk.Box.BoxChild w18 = ((global::Gtk.Box.BoxChild)(this.vbox5 [this.GtkScrolledWindow1]));
-			w18.Position = 1;
-			this.hbox1.Add (this.vbox5);
-			global::Gtk.Box.BoxChild w19 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.vbox5]));
-			w19.Position = 2;
-			w1.Add (this.hbox1);
-			global::Gtk.Box.BoxChild w20 = ((global::Gtk.Box.BoxChild)(w1 [this.hbox1]));
-			w20.Position = 0;
-			// Internal child MonoDevelop.Debugger.ExceptionsDialog.ActionArea
-			global::Gtk.HButtonBox w21 = this.ActionArea;
-			w21.Name = "dialog1_ActionArea";
-			w21.Spacing = 6;
-			w21.BorderWidth = ((uint)(5));
-			w21.LayoutStyle = ((global::Gtk.ButtonBoxStyle)(4));
-			// Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
-			this.buttonCancel = new global::Gtk.Button ();
-			this.buttonCancel.CanDefault = true;
-			this.buttonCancel.CanFocus = true;
-			this.buttonCancel.Name = "buttonCancel";
-			this.buttonCancel.UseStock = true;
-			this.buttonCancel.UseUnderline = true;
-			this.buttonCancel.Label = "gtk-cancel";
-			this.AddActionWidget (this.buttonCancel, -6);
-			global::Gtk.ButtonBox.ButtonBoxChild w22 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w21 [this.buttonCancel]));
-			w22.Expand = false;
-			w22.Fill = false;
-			// Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
-			this.buttonOk = new global::Gtk.Button ();
-			this.buttonOk.CanDefault = true;
-			this.buttonOk.CanFocus = true;
-			this.buttonOk.Name = "buttonOk";
-			this.buttonOk.UseStock = true;
-			this.buttonOk.UseUnderline = true;
-			this.buttonOk.Label = "gtk-ok";
-			this.AddActionWidget (this.buttonOk, -5);
-			global::Gtk.ButtonBox.ButtonBoxChild w23 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w21 [this.buttonOk]));
-			w23.Position = 1;
-			w23.Expand = false;
-			w23.Fill = false;
-			if ((this.Child != null)) {
-				this.Child.ShowAll ();
-			}
-			this.DefaultWidth = 910;
-			this.DefaultHeight = 451;
-			this.Hide ();
-			this.entryFilter.Changed += new global::System.EventHandler (this.OnEntryFilterChanged);
-			this.entryFilter.Activated += new global::System.EventHandler (this.OnEntryFilterActivated);
-			this.treeExceptions.KeyPressEvent += new global::Gtk.KeyPressEventHandler (this.OnTreeExceptionsKeyPressEvent);
-			this.treeExceptions.ButtonPressEvent += new global::Gtk.ButtonPressEventHandler (this.OnTreeExceptionsButtonPressEvent);
-			this.buttonAdd.Clicked += new global::System.EventHandler (this.OnButtonAddClicked);
-			this.buttonRemove.Clicked += new global::System.EventHandler (this.OnButtonRemoveClicked);
-			this.treeSelected.KeyPressEvent += new global::Gtk.KeyPressEventHandler (this.OnTreeSelectedKeyPressEvent);
-			this.treeSelected.ButtonPressEvent += new global::Gtk.ButtonPressEventHandler (this.OnTreeSelectedButtonPressEvent);
-			this.buttonOk.Clicked += new global::System.EventHandler (this.OnButtonOkClicked);
-		}
-	}
-}

Modified: main/src/addins/MonoDevelop.Debugger/gtk-gui/gui.stetic
===================================================================
@@ -168,263 +168,6 @@
       </widget>
     </child>
   </widget>
-  <widget class="Gtk.Dialog" id="MonoDevelop.Debugger.ExceptionsDialog" design-size="910 451">
-    <property name="MemberName" />
-    <property name="Visible">False</property>
-    <property name="Title" translatable="yes">Exceptions</property>
-    <property name="WindowPosition">CenterOnParent</property>
-    <property name="BorderWidth">3</property>
-    <property name="Buttons">2</property>
-    <property name="HelpButton">False</property>
-    <child internal-child="VBox">
-      <widget class="Gtk.VBox" id="dialog1_VBox">
-        <property name="MemberName" />
-        <property name="BorderWidth">2</property>
-        <child>
-          <widget class="Gtk.HBox" id="hbox1">
-            <property name="MemberName" />
-            <property name="Spacing">6</property>
-            <property name="BorderWidth">9</property>
-            <child>
-              <widget class="Gtk.VBox" id="vbox4">
-                <property name="MemberName" />
-                <property name="Spacing">6</property>
-                <child>
-                  <widget class="Gtk.Label" id="label2">
-                    <property name="MemberName" />
-                    <property name="Xalign">0</property>
-                    <property name="LabelProp" translatable="yes">Exceptions:</property>
-                  </widget>
-                  <packing>
-                    <property name="Position">0</property>
-                    <property name="AutoSize">True</property>
-                    <property name="Expand">False</property>
-                    <property name="Fill">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="Gtk.HBox" id="hbox2">
-                    <property name="MemberName" />
-                    <property name="Spacing">6</property>
-                    <child>
-                      <widget class="Gtk.Image" id="image15">
-                        <property name="MemberName" />
-                        <property name="Pixbuf">stock:gtk-find Menu</property>
-                      </widget>
-                      <packing>
-                        <property name="Position">0</property>
-                        <property name="AutoSize">True</property>
-                        <property name="Expand">False</property>
-                        <property name="Fill">False</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="Gtk.Entry" id="entryFilter">
-                        <property name="MemberName" />
-                        <property name="CanFocus">True</property>
-                        <property name="IsEditable">True</property>
-                        <property name="InvisibleChar">●</property>
-                        <signal name="Changed" handler="OnEntryFilterChanged" />
-                        <signal name="Activated" handler="OnEntryFilterActivated" />
-                      </widget>
-                      <packing>
-                        <property name="Position">1</property>
-                        <property name="AutoSize">True</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="Position">1</property>
-                    <property name="AutoSize">True</property>
-                    <property name="Expand">False</property>
-                    <property name="Fill">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="Gtk.ScrolledWindow" id="GtkScrolledWindow">
-                    <property name="MemberName" />
-                    <property name="ShadowType">In</property>
-                    <child>
-                      <widget class="Gtk.TreeView" id="treeExceptions">
-                        <property name="MemberName" />
-                        <property name="CanFocus">True</property>
-                        <property name="ShowScrollbars">True</property>
-                        <property name="HeadersVisible">False</property>
-                        <signal name="KeyPressEvent" handler="OnTreeExceptionsKeyPressEvent" />
-                        <signal name="ButtonPressEvent" handler="OnTreeExceptionsButtonPressEvent" />
-                      </widget>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="Position">2</property>
-                    <property name="AutoSize">True</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="Position">0</property>
-                <property name="AutoSize">False</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="Gtk.VBox" id="vbox3">
-                <property name="MemberName" />
-                <property name="Spacing">12</property>
-                <child>
-                  <widget class="Gtk.Label" id="label1">
-                    <property name="MemberName" />
-                  </widget>
-                  <packing>
-                    <property name="Position">0</property>
-                    <property name="AutoSize">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="Gtk.Button" id="buttonAdd">
-                    <property name="MemberName" />
-                    <property name="CanFocus">True</property>
-                    <property name="Type">TextAndIcon</property>
-                    <property name="Icon">stock:gtk-go-forward Menu</property>
-                    <property name="Label" translatable="yes" />
-                    <property name="UseUnderline">True</property>
-                    <signal name="Clicked" handler="OnButtonAddClicked" />
-                  </widget>
-                  <packing>
-                    <property name="Position">1</property>
-                    <property name="AutoSize">True</property>
-                    <property name="Expand">False</property>
-                    <property name="Fill">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="Gtk.Button" id="buttonRemove">
-                    <property name="MemberName" />
-                    <property name="CanFocus">True</property>
-                    <property name="Type">TextAndIcon</property>
-                    <property name="Icon">stock:gtk-go-back Menu</property>
-                    <property name="Label" translatable="yes" />
-                    <property name="UseUnderline">True</property>
-                    <signal name="Clicked" handler="OnButtonRemoveClicked" />
-                  </widget>
-                  <packing>
-                    <property name="Position">2</property>
-                    <property name="AutoSize">True</property>
-                    <property name="Expand">False</property>
-                    <property name="Fill">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="Gtk.Label" id="label4">
-                    <property name="MemberName" />
-                  </widget>
-                  <packing>
-                    <property name="Position">3</property>
-                    <property name="AutoSize">False</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="Position">1</property>
-                <property name="AutoSize">True</property>
-                <property name="Expand">False</property>
-                <property name="Fill">False</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="Gtk.VBox" id="vbox5">
-                <property name="MemberName" />
-                <property name="Spacing">6</property>
-                <child>
-                  <widget class="Gtk.Label" id="label3">
-                    <property name="MemberName" />
-                    <property name="Xalign">0</property>
-                    <property name="LabelProp" translatable="yes">Stop in exceptions:</property>
-                  </widget>
-                  <packing>
-                    <property name="Position">0</property>
-                    <property name="AutoSize">True</property>
-                    <property name="Expand">False</property>
-                    <property name="Fill">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="Gtk.ScrolledWindow" id="GtkScrolledWindow1">
-                    <property name="MemberName" />
-                    <property name="ShadowType">In</property>
-                    <child>
-                      <widget class="Gtk.TreeView" id="treeSelected">
-                        <property name="MemberName" />
-                        <property name="CanFocus">True</property>
-                        <property name="ShowScrollbars">True</property>
-                        <property name="HeadersVisible">False</property>
-                        <signal name="KeyPressEvent" handler="OnTreeSelectedKeyPressEvent" />
-                        <signal name="ButtonPressEvent" handler="OnTreeSelectedButtonPressEvent" />
-                      </widget>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="Position">1</property>
-                    <property name="AutoSize">True</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="Position">2</property>
-                <property name="AutoSize">False</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="Position">0</property>
-            <property name="AutoSize">False</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-    <child internal-child="ActionArea">
-      <widget class="Gtk.HButtonBox" id="dialog1_ActionArea">
-        <property name="MemberName" />
-        <property name="Spacing">6</property>
-        <property name="BorderWidth">5</property>
-        <property name="Size">2</property>
-        <property name="LayoutStyle">End</property>
-        <child>
-          <widget class="Gtk.Button" id="buttonCancel">
-            <property name="MemberName" />
-            <property name="CanDefault">True</property>
-            <property name="CanFocus">True</property>
-            <property name="UseStock">True</property>
-            <property name="Type">StockItem</property>
-            <property name="StockId">gtk-cancel</property>
-            <property name="ResponseId">-6</property>
-            <property name="label">gtk-cancel</property>
-          </widget>
-          <packing>
-            <property name="Expand">False</property>
-            <property name="Fill">False</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="Gtk.Button" id="buttonOk">
-            <property name="MemberName" />
-            <property name="CanDefault">True</property>
-            <property name="CanFocus">True</property>
-            <property name="UseStock">True</property>
-            <property name="Type">StockItem</property>
-            <property name="StockId">gtk-ok</property>
-            <property name="ResponseId">-5</property>
-            <signal name="Clicked" handler="OnButtonOkClicked" />
-            <property name="label">gtk-ok</property>
-          </widget>
-          <packing>
-            <property name="Position">1</property>
-            <property name="Expand">False</property>
-            <property name="Fill">False</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
   <widget class="Gtk.Dialog" id="MonoDevelop.Debugger.ExpressionEvaluatorDialog" design-size="716 410">
     <property name="MemberName" />
     <property name="Visible">False</property>
@@ -1533,230 +1276,6 @@ Break when the hit count is a multiple of</property>
       </widget>
     </child>
   </widget>
-  <widget class="Gtk.Dialog" id="MonoDevelop.Debugger.AddTracePointDialog" design-size="540 208">
-    <property name="MemberName" />
-    <property name="Visible">False</property>
-    <property name="Title" translatable="yes">Add Tracepoint</property>
-    <property name="WindowPosition">CenterOnParent</property>
-    <property name="Buttons">2</property>
-    <property name="HelpButton">False</property>
-    <child internal-child="VBox">
-      <widget class="Gtk.VBox" id="dialog1_VBox">
-        <property name="MemberName" />
-        <property name="BorderWidth">2</property>
-        <child>
-          <widget class="Gtk.VBox" id="vbox2">
-            <property name="MemberName" />
-            <property name="Spacing">6</property>
-            <property name="BorderWidth">6</property>
-            <child>
-              <widget class="Gtk.Table" id="table1">
-                <property name="MemberName" />
-                <property name="NRows">4</property>
-                <property name="NColumns">2</property>
-                <property name="RowSpacing">6</property>
-                <property name="ColumnSpacing">6</property>
-                <child>
-                  <placeholder />
-                </child>
-                <child>
-                  <placeholder />
-                </child>
-                <child>
-                  <widget class="Gtk.Entry" id="entryCondition">
-                    <property name="MemberName" />
-                    <property name="CanFocus">True</property>
-                    <property name="IsEditable">True</property>
-                    <property name="ActivatesDefault">True</property>
-                    <property name="InvisibleChar">●</property>
-                  </widget>
-                  <packing>
-                    <property name="TopAttach">2</property>
-                    <property name="BottomAttach">3</property>
-                    <property name="LeftAttach">1</property>
-                    <property name="RightAttach">2</property>
-                    <property name="AutoSize">True</property>
-                    <property name="XOptions">Fill</property>
-                    <property name="YOptions">Fill</property>
-                    <property name="XExpand">False</property>
-                    <property name="XFill">True</property>
-                    <property name="XShrink">False</property>
-                    <property name="YExpand">False</property>
-                    <property name="YFill">True</property>
-                    <property name="YShrink">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="Gtk.Entry" id="entryTrace">
-                    <property name="MemberName" />
-                    <property name="CanFocus">True</property>
-                    <property name="IsEditable">True</property>
-                    <property name="ActivatesDefault">True</property>
-                    <property name="InvisibleChar">●</property>
-                  </widget>
-                  <packing>
-                    <property name="LeftAttach">1</property>
-                    <property name="RightAttach">2</property>
-                    <property name="AutoSize">True</property>
-                    <property name="XOptions">Fill</property>
-                    <property name="YOptions">Fill</property>
-                    <property name="XExpand">False</property>
-                    <property name="XFill">True</property>
-                    <property name="XShrink">False</property>
-                    <property name="YExpand">False</property>
-                    <property name="YFill">True</property>
-                    <property name="YShrink">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="Gtk.Label" id="label1">
-                    <property name="MemberName" />
-                    <property name="Xalign">0</property>
-                    <property name="LabelProp" translatable="yes">Trace Text:</property>
-                  </widget>
-                  <packing>
-                    <property name="AutoSize">True</property>
-                    <property name="XOptions">Fill</property>
-                    <property name="YOptions">Fill</property>
-                    <property name="XExpand">False</property>
-                    <property name="XFill">True</property>
-                    <property name="XShrink">False</property>
-                    <property name="YExpand">False</property>
-                    <property name="YFill">True</property>
-                    <property name="YShrink">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="Gtk.Label" id="label2">
-                    <property name="MemberName" />
-                    <property name="Xalign">0</property>
-                    <property name="LabelProp" translatable="yes">Condition:</property>
-                  </widget>
-                  <packing>
-                    <property name="TopAttach">2</property>
-                    <property name="BottomAttach">3</property>
-                    <property name="AutoSize">True</property>
-                    <property name="XOptions">Fill</property>
-                    <property name="YOptions">Fill</property>
-                    <property name="XExpand">False</property>
-                    <property name="XFill">True</property>
-                    <property name="XShrink">False</property>
-                    <property name="YExpand">False</property>
-                    <property name="YFill">True</property>
-                    <property name="YShrink">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="Gtk.Label" id="label3">
-                    <property name="MemberName" />
-                    <property name="WidthRequest">450</property>
-                    <property name="Xalign">0</property>
-                    <property name="LabelProp" translatable="yes">&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: dfb589db12a47b3704a855c92dfb827e12f3d902
   Author: Ungureanu Marius <[email protected]> (Therzok)
Committer: Therzok <[email protected]> (Therzok)
     Date: 2013-11-04 16:18:45 GMT
      URL: https://github.com/mono/monodevelop/commit/dfb589db12a47b3704a855c92dfb827e12f3d902

Fixed breakpoints running

Changed paths:
  M main/src/addins/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32/CorDebuggerSession.cs
  M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml
  M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs
  M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog2.cs
  M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs
  M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/PinnedWatchStore.cs
  M main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs

Modified: main/src/addins/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32/CorDebuggerSession.cs
===================================================================
@@ -280,18 +280,20 @@ void OnBreakpoint (object sender, CorBreakpointEventArgs e)
 							return;
 					}
 				}
-				switch (bp.HitAction) {
-					case HitAction.CustomAction:
+
+				if ((bp.HitAction & HitAction.CustomAction) != HitAction.None) {
 						// If custom action returns true, execution must continue
-						if (binfo.RunCustomBreakpointAction (bp.CustomActionId))
-							return;
-						break;
-					case HitAction.PrintExpression: {
-						string exp = EvaluateTrace (e.Thread, bp.TraceExpression);
-						binfo.UpdateLastTraceValue (exp);
+					if (binfo.RunCustomBreakpointAction (bp.CustomActionId))
 						return;
-					}
 				}
+
+				if ((bp.HitAction & HitAction.PrintExpression) != HitAction.None) {
+					string exp = EvaluateTrace (e.Thread, bp.TraceExpression);
+					binfo.UpdateLastTraceValue (exp);
+				}
+
+				if ((bp.HitAction & HitAction.Break) == HitAction.None)
+					return;
 			}
 			
 			OnStopped ();


Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml
===================================================================
@@ -129,10 +129,6 @@
 				defaultHandler = "MonoDevelop.Debugger.ToggleBreakpointHandler"
 				shortcut = "F9"
 				macShortcut = "Meta|\" />
-		<Command id = "MonoDevelop.Debugger.DebugCommands.AddTracepoint"
-				_label = "Add Tracepoint"
-				defaultHandler = "MonoDevelop.Debugger.AddTracepointHandler"
-				shortcut = "Control|Shift|F9" />
 		<Command id = "MonoDevelop.Debugger.DebugCommands.EnableDisableBreakpoint"
 				_label = "Enable/Disable Breakpoint"
 				defaultHandler = "MonoDevelop.Debugger.EnableDisableBreakpointHandler"
@@ -188,7 +184,6 @@
 		<SeparatorItem id = "MonoDevelop.Debugger.BreakpointsSection" />
 		<CommandItem id = "MonoDevelop.Debugger.DebugCommands.NewBreakpoint" />
 		<CommandItem id = "MonoDevelop.Debugger.DebugCommands.ToggleBreakpoint" />
-		<CommandItem id = "MonoDevelop.Debugger.DebugCommands.AddTracepoint" />
 		<CommandItem id = "MonoDevelop.Debugger.DebugCommands.EnableDisableBreakpoint" />
 		<CommandItem id = "MonoDevelop.Debugger.DebugCommands.DisableAllBreakpoints" />
 		<CommandItem id = "MonoDevelop.Debugger.DebugCommands.ClearAllBreakpoints" />

Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs
===================================================================
@@ -385,8 +385,8 @@ public void UpdateDisplay ()
 				lock (breakpoints) {
 					foreach (BreakEvent be in breakpoints.GetBreakevents ()) {
 						string hitCount = be.HitCountMode != HitCountMode.None ? be.CurrentHitCount.ToString () : "";
-						string traceExp = be.HitAction == HitAction.PrintExpression ? be.TraceExpression : "";
-						string traceVal = be.HitAction == HitAction.PrintExpression ? be.LastTraceValue : "";
+						string traceExp = (be.HitAction & HitAction.PrintExpression) != HitAction.None ? be.TraceExpression : "";
+						string traceVal = (be.HitAction & HitAction.PrintExpression) != HitAction.None ? be.LastTraceValue : "";
 						string name;
 
 						var fb = be as FunctionBreakpoint;
@@ -427,7 +427,7 @@ void OnBreakpointUpdated (object s, BreakpointEventArgs args)
 				var bp = (BreakEvent) store.GetValue (it, (int) Columns.Breakpoint);
 				if (bp == args.Breakpoint) {
 					string hitCount = bp.HitCountMode != HitCountMode.None ? bp.CurrentHitCount.ToString () : "";
-					string traceVal = bp.HitAction == HitAction.PrintExpression ? bp.LastTraceValue : "";
+					string traceVal = (bp.HitAction & HitAction.PrintExpression) != HitAction.None ? bp.LastTraceValue : "";
 					store.SetValue (it, (int) Columns.HitCount, hitCount);
 					store.SetValue (it, (int) Columns.LastTrace, traceVal);
 					break;

Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog2.cs
===================================================================
@@ -137,6 +137,7 @@ void Initialize ()
 			entryFunctionName.Changed += OnUpdateText;
 			entryLocationFile.Changed += OnUpdateText;
 			entryExceptionType.Changed += OnUpdateText;
+			entryPrintExpression.Changed += OnUpdateText;
 
 			buttonOk.Clicked += OnSave;
 		}
@@ -200,10 +201,11 @@ void SetInitialData ()
 				ignoreHitType.SelectedItem = be.HitCountMode;
 				ignoreHitCount.Value = be.HitCount;
 
-				if (be.HitAction == HitAction.PrintExpression) {
+				if ((be.HitAction & HitAction.PrintExpression) != HitAction.None) {
 					checkPrintExpression.Active = true;
 					entryPrintExpression.Text = be.TraceExpression;
 				}
+				checkResumeExecution.Active |= (be.HitAction & HitAction.Break) == HitAction.None;
 			} else {
 				ignoreHitType.SelectedItem = HitCountMode.None;
 				conditionalHitType.SelectedItem = ConditionalHitWhen.ConditionIsTrue;
@@ -288,12 +290,13 @@ void OnSave (object sender, EventArgs e)
 			be.HitCountMode = (HitCountMode)ignoreHitType.SelectedItem;
 			be.HitCount = be.HitCountMode != HitCountMode.None ? (int)ignoreHitCount.Value : 0;
 
+			be.HitAction = HitAction.None;
 			if (checkPrintExpression.Active) {
-				// FIXME: Make HitAction flags.
-				be.HitAction = HitAction.PrintExpression;
+				be.HitAction |= HitAction.PrintExpression;
 				be.TraceExpression = entryPrintExpression.Text;
 			}
-			be.HitAction = HitAction.Break;
+			if (!checkResumeExecution.Active)
+				be.HitAction |= HitAction.Break;
 
 			be.CommitChanges ();
 		}
@@ -323,6 +326,7 @@ void OnUpdateControls (object sender, EventArgs e)
 			// Check printing an expression.
 			entryPrintExpression.Sensitive = checkPrintExpression.Active;
 			checkResumeExecution.Sensitive = checkPrintExpression.Active;
+			checkResumeExecution.Active &= checkPrintExpression.Active;
 
 			// And display warning icons
 			buttonOk.Sensitive = CheckValidity ();


Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs
===================================================================
@@ -139,7 +139,7 @@ public static void SetLiveUpdateMode (PinnedWatch watch, bool liveUpdate)
 			if (liveUpdate) {
 				Breakpoint bp = new Breakpoint (watch.File, watch.Line);
 				bp.TraceExpression = "{" + watch.Expression + "}";
-				bp.HitAction = HitAction.PrintExpression;
+				bp.HitAction |= HitAction.PrintExpression;
 				lock (breakpoints)
 					breakpoints.Add (bp);
 				pinnedWatches.Bind (watch, bp);

Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/PinnedWatchStore.cs
===================================================================
@@ -91,7 +91,8 @@ internal void BindAll (BreakpointStore bps)
 			lock (watches) {
 				foreach (PinnedWatch w in watches) {
 					foreach (Breakpoint bp in bps.GetBreakpoints ()) {
-						if (bp.HitAction == HitAction.PrintExpression && bp.TraceExpression == "{" + w.Expression + "}" && bp.FileName == w.File && bp.Line == w.Line)
+						if ((bp.HitAction & HitAction.PrintExpression) != HitAction.None &&
+							bp.TraceExpression == "{" + w.Expression + "}" && bp.FileName == w.File && bp.Line == w.Line)
 							Bind (w, bp);
 					}
 				}

Modified: main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs
===================================================================
@@ -1308,7 +1308,7 @@ void AddBreakpoint (Breakpoint bp)
 			if (fp.FullPath == bp.FileName) {
 				DocumentLine line = widget.TextEditor.Document.GetLine (bp.Line);
 				var status = bp.GetStatus (DebuggingService.DebuggerSession);
-				bool tracepoint = bp.HitAction != HitAction.Break;
+				bool tracepoint = (bp.HitAction & HitAction.Break) == HitAction.None;
 
 				if (line == null)
 					return;

   Commit: bef687333f3bcbafbe3a4ab13ce6a33af2b3c346
   Author: Ungureanu Marius <[email protected]> (Therzok)
Committer: Therzok <[email protected]> (Therzok)
     Date: 2013-11-04 16:18:45 GMT
      URL: https://github.com/mono/monodevelop/commit/bef687333f3bcbafbe3a4ab13ce6a33af2b3c346

Add stuff to pushing

Changed paths:
  M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog2.cs
  M main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj

Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog2.cs
===================================================================
@@ -31,15 +31,17 @@
 using System.Collections.Generic;
 using MonoDevelop.Ide.TypeSystem;
 using ICSharpCode.NRefactory.TypeSystem;
+using System.Linq;
 
 namespace MonoDevelop.Debugger
 {
-	enum ConditionalHitWhen {
+	enum ConditionalHitWhen
+	{
 		ConditionIsTrue,
 		ExpressionChanges
 	}
 
-	class BreakpointPropertiesDialog2 : Xwt.Dialog
+	sealed class BreakpointPropertiesDialog2 : Xwt.Dialog
 	{
 		// For button sensitivity.
 		Xwt.DialogButton buttonOk;
@@ -189,6 +191,10 @@ void SetInitialCatchpointData (Catchpoint cp)
 
 		void SetInitialData ()
 		{
+			// FIXME: Add support for not doing base add
+			checkIncludeSubclass.Active = true;
+			checkIncludeSubclass.Sensitive = false;
+
 			if (be != null) {
 				stopOnException.Sensitive = false;
 				stopOnFunction.Sensitive = false;
@@ -250,15 +256,6 @@ void SaveBreakpoint (Breakpoint bp, bool isNew)
 				bp.ConditionExpression = null;
 		}
 
-		void SaveCatchpoint (Catchpoint cp)
-		{
-			if (checkIncludeSubclass.Active) {
-				// add stuff
-			} else {
-				// remove stuff
-			}
-		}
-
 		void OnSave (object sender, EventArgs e)
 		{
 			bool isNew = false;
@@ -283,10 +280,6 @@ void OnSave (object sender, EventArgs e)
 			if (bp != null)
 				SaveBreakpoint (bp, isNew);
 
-			var cp = be as Catchpoint;
-			if (cp != null)
-				SaveCatchpoint (cp);
-
 			be.HitCountMode = (HitCountMode)ignoreHitType.SelectedItem;
 			be.HitCount = be.HitCountMode != HitCountMode.None ? (int)ignoreHitCount.Value : 0;
 
@@ -308,7 +301,8 @@ void OnUpdateControls (object sender, EventArgs e)
 			hboxLineColumn.Sensitive = stopOnLocation.Active;
 			hboxLocation.Sensitive = stopOnLocation.Active;
 			hboxException.Sensitive = stopOnException.Active;
-			checkIncludeSubclass.Sensitive = stopOnException.Active;
+			// FIXME: Add support for not doing base add
+			//checkIncludeSubclass.Sensitive = stopOnException.Active;
 			hboxCondition.Sensitive = !stopOnException.Active;
 
 			// Check conditional
@@ -334,8 +328,6 @@ void OnUpdateControls (object sender, EventArgs e)
 
 		void OnUpdateText (object sender, EventArgs e)
 		{
-
-
 			buttonOk.Sensitive = CheckValidity ();
 		}
 


Modified: main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj
===================================================================
@@ -13,7 +13,7 @@
     <VcRevision>..\..\..\vcrevision</VcRevision>
   </PropertyGroup>
   <PropertyGroup Condition="'$(BUILD_REVISION)' != ''">
-      <DefineConstants>$(DefineConstants);ENABLE_RAYGUN</DefineConstants>
+    <DefineConstants>$(DefineConstants);ENABLE_RAYGUN</DefineConstants>
   </PropertyGroup>
   <Choose>
     <When Condition=" Exists('c:\Program Files\Git\bin\git.exe') ">
@@ -54,8 +54,8 @@
     </Execution>
     <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
     <DefineConstants>DEBUG</DefineConstants>
-    <GenerateDocumentation>true</GenerateDocumentation>
     <NoWarn>1591;1573</NoWarn>
+    <DocumentationFile>..\..\..\build\bin\MonoDevelop.Core.xml</DocumentationFile>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -68,8 +68,10 @@
     </Execution>
     <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
     <DebugSymbols>true</DebugSymbols>
-    <GenerateDocumentation>true</GenerateDocumentation>
     <NoWarn>1591;1573</NoWarn>
+    <DefineConstants>
+    </DefineConstants>
+    <DocumentationFile>..\..\..\build\bin\MonoDevelop.Core.xml</DocumentationFile>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />

   Commit: 04fc9da329edcfe876d05164b2001613813cfe28
   Author: Therzok <[email protected]> (Therzok)
     Date: 2013-11-04 16:18:46 GMT
      URL: https://github.com/mono/monodevelop/commit/04fc9da329edcfe876d05164b2001613813cfe28

[Debugger] Moved BreakpointPropertiesDialog to be main dialog.

Changed paths:
  M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.csproj
  M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs
  M main/src/addins/MonoDevelop.Debugger/gtk-gui/gui.stetic
Removed paths:
  D main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog2.cs
  D main/src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.BreakpointPropertiesDialog.cs

Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.csproj
===================================================================
@@ -119,8 +119,6 @@
     <Compile Include="gtk-gui\MonoDevelop.Debugger.AttachToProcessDialog.cs" />
     <Compile Include="MonoDevelop.Debugger\ExpressionEvaluatorDialog.cs" />
     <Compile Include="gtk-gui\MonoDevelop.Debugger.ExpressionEvaluatorDialog.cs" />
-    <Compile Include="MonoDevelop.Debugger\BreakpointPropertiesDialog.cs" />
-    <Compile Include="gtk-gui\MonoDevelop.Debugger.BreakpointPropertiesDialog.cs" />
     <Compile Include="MonoDevelop.Debugger\DebugExecutionModeSet.cs" />
     <Compile Include="MonoDevelop.Debugger\IDebuggerEngine.cs" />
     <Compile Include="MonoDevelop.Debugger\ImmediatePad.cs" />
@@ -145,7 +143,7 @@
     <Compile Include="MonoDevelop.Debugger\DebuggerConsoleView.cs" />
     <Compile Include="MonoDevelop.Debugger.Visualizer\CStringVisualizer.cs" />
     <Compile Include="MonoDevelop.Debugger.Visualizer\ValueVisualizer.cs" />
-    <Compile Include="MonoDevelop.Debugger\BreakpointPropertiesDialog2.cs" />
+    <Compile Include="MonoDevelop.Debugger\BreakpointPropertiesDialog.cs" />
   </ItemGroup>
   <ItemGroup>
     <EmbeddedResource Include="MonoDevelop.Debugger.addin.xml">

Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs
===================================================================
@@ -1,265 +1,548 @@
-// BreakpointPropertiesDialog.cs
-//
-// Author:
-//   Lluis Sanchez Gual <[email protected]>
-//
-// Copyright (c) 2008 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-//
-//
-
-using System;
-using System.Collections.Generic;
-
-using MonoDevelop.Core;
-using Mono.Debugging.Client;
-using MonoDevelop.Projects;
-using MonoDevelop.Ide;
-
-namespace MonoDevelop.Debugger
-{
-	public partial class BreakpointPropertiesDialog : Gtk.Dialog
-	{
-		string[] parsedParamTypes;
-		string parsedFunction;
-		Breakpoint bp;
-		bool isNew;
-		
-		public BreakpointPropertiesDialog (Breakpoint bp, bool isNew)
-		{
-			this.Build ();
-			
-			this.isNew = isNew;
-			this.bp = bp;
-			
-			spinColumn.Adjustment.Upper = int.MaxValue;
-			spinColumn.Adjustment.Lower = 1;
-			spinLine.Adjustment.Upper = int.MaxValue;
-			spinLine.Adjustment.Lower = 1;
-			
-			if (bp is FunctionBreakpoint) {
-				FunctionBreakpoint fb = (FunctionBreakpoint) bp;
-				
-				labelFileFunction.LabelProp = GettextCatalog.GetString ("Function:");
-				
-				if (fb.ParamTypes != null) {
-					// FIXME: support non-C# syntax based on fb.Language
-					entryFileFunction.Text = fb.FunctionName + " (" + string.Join (", ", fb.ParamTypes) + ")";
-				} else
-					entryFileFunction.Text = fb.FunctionName;
-				
-				if (!isNew) {
-					// We don't use ".Sensitive = false" because we want the user to be able to select & copy the text.
-					entryFileFunction.ModifyBase (Gtk.StateType.Normal, Style.Backgrounds [(int)Gtk.StateType.Insensitive]);
-					entryFileFunction.ModifyBase (Gtk.StateType.Active, Style.Backgrounds [(int)Gtk.StateType.Insensitive]);
-					entryFileFunction.IsEditable = false;
-				}
-				
-				// Function breakpoints only support breaking on the first line
-				hboxLineColumn.Destroy ();
-				labelLine.Destroy ();
-				tableLocation.NRows--;
-			} else {
-				labelFileFunction.LabelProp = GettextCatalog.GetString ("File:");
-				entryFileFunction.Text = ((Breakpoint) bp).FileName;
-				
-				// We don't use ".Sensitive = false" because we want the user to be able to select & copy the text.
-				entryFileFunction.ModifyBase (Gtk.StateType.Normal, Style.Backgrounds [(int)Gtk.StateType.Insensitive]);
-				entryFileFunction.ModifyBase (Gtk.StateType.Active, Style.Backgrounds [(int)Gtk.StateType.Insensitive]);
-				entryFileFunction.IsEditable = false;
-				
-				spinColumn.Value = bp.Column;
-				spinLine.Value = bp.Line;
-				
-				if (!isNew) {
-					spinColumn.IsEditable = false;
-					spinColumn.Sensitive = false;
-					spinLine.IsEditable = false;
-					spinLine.Sensitive = false;
-				}
-			}
-			
-			if (string.IsNullOrEmpty (bp.ConditionExpression)) {
-				radioBreakAlways.Active = true;
-			} else {
-				entryCondition.Text = bp.ConditionExpression;
-				if (bp.BreakIfConditionChanges)
-					radioBreakWhenChanges.Active = true;
-				else
-					radioBreakWhenTrue.Active = true;
-			}
-
-			comboHitCountMode.Changed += OnHitCountModeChanged;
-			comboHitCountMode.Active = (int) bp.HitCountMode;
-			spinHitCount.Value = bp.HitCount;
-			
-			if (bp.HitAction == HitAction.Break) {
-				radioActionBreak.Active = true;
-			} else {
-				radioActionTrace.Active = true;
-				entryTraceExpression.Text = bp.TraceExpression;
-			}
-			
-			Project project = null;
-			if (!string.IsNullOrEmpty (bp.FileName))
-				project = IdeApp.Workspace.GetProjectContainingFile (bp.FileName);
-			
-			if (project != null) {
-				// Check the startup project of the solution too, since the current project may be a library
-				SolutionEntityItem startup = project.ParentSolution.StartupItem;
-				vboxConditionOptions.Sensitive = DebuggingService.IsFeatureSupported (project, DebuggerFeatures.ConditionalBreakpoints) ||
-					DebuggingService.IsFeatureSupported (startup, DebuggerFeatures.ConditionalBreakpoints);
-				vboxAction.Sensitive = DebuggingService.IsFeatureSupported (project, DebuggerFeatures.Tracepoints) ||
-					DebuggingService.IsFeatureSupported (startup, DebuggerFeatures.Tracepoints);
-			}
-			
-			UpdateControls ();
-		}
-		
-		void UpdateControls ()
-		{
-			boxTraceExpression.Sensitive = radioActionTrace.Active;
-			hboxConditionExpression.Sensitive = !radioBreakAlways.Active;
-
-			if (comboHitCountMode.Active == 0)
-				spinHitCount.Hide ();
-			else
-				spinHitCount.Show ();
-		}
-		
-		static bool TryParseFunction (string signature, out string function, out string[] paramTypes)
-		{
-			int paramListStart = signature.IndexOf ('(');
-			int paramListEnd = signature.IndexOf (')');
-
-			if (paramListStart == -1 && paramListEnd == -1) {
-				function = signature;
-				paramTypes = null;
-				return true;
-			}
-
-			if (paramListEnd != signature.Length - 1) {
-				paramTypes = null;
-				function = null;
-				return false;
-			}
-			
-			function = signature.Substring (0, paramListStart).Trim ();
-			
-			paramListStart++;
-
-			if (!FunctionBreakpoint.TryParseParameters (signature, paramListStart, paramListEnd, out paramTypes)) {
-				paramTypes = null;
-				function = null;
-				return false;
-			}
-			
-			return true;
-		}
-		
-		public bool Check ()
-		{
-			if (bp is FunctionBreakpoint) {
-				string text = entryFileFunction.Text.Trim ();
-
-				if (text.Length == 0) {
-					MessageService.ShowError (GettextCatalog.GetString ("Function name not specified"));
-					return false;
-				}
-
-				if (!TryParseFunction (text, out parsedFunction, out parsedParamTypes)) {
-					MessageService.ShowError (GettextCatalog.GetString ("Invalid function syntax"));
-					return false;
-				}
-			}
-			
-			if (!radioBreakAlways.Active && entryCondition.Text.Length == 0) {
-				MessageService.ShowError (GettextCatalog.GetString ("Condition expression not specified"));
-				return false;
-			}
-			
-			if (radioActionTrace.Active && entryTraceExpression.Text.Length == 0) {
-				MessageService.ShowError (GettextCatalog.GetString ("Trace expression not specified"));
-				return false;
-			}
-			
-			return true;
-		}
-		
-		public void Save ()
-		{
-			if (isNew) {
-				if (bp is FunctionBreakpoint) {
-					FunctionBreakpoint fb = (FunctionBreakpoint) bp;
-					
-					fb.FunctionName = parsedFunction;
-					fb.ParamTypes = parsedParamTypes;
-				} else {
-					bp.SetColumn ((int) spinColumn.Value);
-					bp.SetLine ((int) spinLine.Value);
-				}
-			}
-			
-			if (!radioBreakAlways.Active) {
-				bp.ConditionExpression = entryCondition.Text;
-				bp.BreakIfConditionChanges = radioBreakWhenChanges.Active;
-			} else
-				bp.ConditionExpression = null;
-
-			bp.HitCountMode = (HitCountMode) comboHitCountMode.Active;
-			if (bp.HitCountMode != HitCountMode.None)
-				bp.HitCount = (int) spinHitCount.Value;
-			else
-				bp.HitCount = 0;
-			
-			if (radioActionBreak.Active) {
-				bp.HitAction = HitAction.Break;
-			} else {
-				bp.HitAction = HitAction.PrintExpression;
-				bp.TraceExpression = entryTraceExpression.Text;
-			}
-
-			bp.CommitChanges ();
-		}
-
-		protected virtual void OnButtonOkClicked (object sender, EventArgs e)
-		{
-			if (Check ()) {
-				Save ();
-				Respond (Gtk.ResponseType.Ok);
-			}
-		}
-
-		protected virtual void OnRadioBreakAlwaysToggled (object sender, EventArgs e)
-		{
-			UpdateControls ();
-		}
-
-		protected virtual void OnRadioActionBreakToggled (object sender,EventArgs e)
-		{
-			UpdateControls ();
-		}
-
-		void OnHitCountModeChanged (object sender, EventArgs e)
-		{
-			UpdateControls ();
-		}
-	}
-}
+//
+// BreakpointsPropertiesDialog.cs
+//
+// Author:
+//       Therzok <[email protected]>
+//
+// Copyright (c) 2013 Therzok
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using System;
+using Mono.Debugging.Client;
+using MonoDevelop.Core;
+using MonoDevelop.Projects;
+using MonoDevelop.Ide;
+using System.Collections.Generic;
+using MonoDevelop.Ide.TypeSystem;
+using ICSharpCode.NRefactory.TypeSystem;
+using MonoDevelop.Ide.CodeCompletion;
+
+namespace MonoDevelop.Debugger
+{
+	enum ConditionalHitWhen
+	{
+		ConditionIsTrue,
+		ExpressionChanges
+	}
+
+	sealed class BreakpointPropertiesDialog2 : Xwt.Dialog
+	{
+		// For button sensitivity.
+		Xwt.DialogButton buttonOk;
+
+		// Groupings for sensitivity
+		Xwt.HBox hboxFunction = new Xwt.HBox ();
+		Xwt.HBox hboxLocation = new Xwt.HBox ();
+		Xwt.HBox hboxLineColumn = new Xwt.HBox ();
+		Xwt.HBox hboxException = new Xwt.HBox ();
+		Xwt.HBox hboxCondition = new Xwt.HBox ();
+
+		// Stop-type radios.
+		readonly Xwt.RadioButton stopOnFunction = new Xwt.RadioButton (GettextCatalog.GetString ("When a function is entered"));
+		readonly Xwt.RadioButton stopOnLocation = new Xwt.RadioButton (GettextCatalog.GetString ("When a location is reached"));
+		readonly Xwt.RadioButton stopOnException = new Xwt.RadioButton (GettextCatalog.GetString ("When an exception is thrown"));
+
+		// Text entries
+		readonly Xwt.TextEntry entryFunctionName = new Xwt.TextEntry ();
+		readonly Xwt.TextEntry entryLocationFile = new Xwt.TextEntry ();
+		readonly Xwt.TextEntry entryLocationLine = new Xwt.TextEntry ();
+		readonly Xwt.TextEntry entryLocationColumn = new Xwt.TextEntry ();
+		readonly Xwt.TextEntry entryExceptionType = new Xwt.TextEntry ();
+		readonly Xwt.TextEntry entryConditionalExpression = new Xwt.TextEntry ();
+		readonly Xwt.TextEntry entryPrintExpression = new Xwt.TextEntry ();
+
+		// Warning icon
+		readonly Xwt.ImageView warningFunction = new Xwt.ImageView (Xwt.StockIcons.Warning);
+		readonly Xwt.ImageView warningLocation = new Xwt.ImageView (Xwt.StockIcons.Warning);
+		readonly Xwt.ImageView warningException = new Xwt.ImageView (Xwt.StockIcons.Warning);
+		readonly Xwt.ImageView warningCondition = new Xwt.ImageView (Xwt.StockIcons.Warning);
+
+		// Combobox + Pager
+		readonly Xwt.SpinButton ignoreHitCount = new Xwt.SpinButton ();
+		readonly Xwt.ComboBox ignoreHitType = new Xwt.ComboBox ();
+		readonly Xwt.ComboBox conditionalHitType = new Xwt.ComboBox ();
+
+		// Optional checkboxes.
+		readonly Xwt.CheckBox checkIncludeSubclass = new Xwt.CheckBox (GettextCatalog.GetString ("Include subclasses"));
+		readonly Xwt.CheckBox checkPrintExpression = new Xwt.CheckBox (GettextCatalog.GetString ("Print an expression to the debugger output"));
+		readonly Xwt.CheckBox checkResumeExecution = new Xwt.CheckBox (GettextCatalog.GetString ("Resume execution automatically"));
+
+		BreakEvent be;
+		string[] parsedParamTypes;
+		string parsedFunction;
+		readonly HashSet<string> classes = new HashSet<string> ();
+
+		public BreakpointPropertiesDialog2 (BreakEvent be)
+		{
+			this.be = be;
+
+			LoadExceptionList ();
+			Initialize ();
+			SetInitialData ();
+			SetLayout ();
+		}
+
+		void Initialize ()
+		{
+			Title = GettextCatalog.GetString (be == null ? "New Breakpoint" : "Breakpoint Properties");
+			var buttonLabel = GettextCatalog.GetString (be == null ? "Add breakpoint" : "Modify breakpoint");
+
+			var stopGroup = new Xwt.RadioButtonGroup ();
+			stopOnFunction.Group = stopGroup;
+			stopOnLocation.Group = stopGroup;
+			stopOnException.Group = stopGroup;
+
+			ignoreHitType.Items.Add (HitCountMode.None, GettextCatalog.GetString ("always"));
+			ignoreHitType.Items.Add (HitCountMode.LessThan, GettextCatalog.GetString ("when hit count is less than"));
+			ignoreHitType.Items.Add (HitCountMode.LessThanOrEqualTo, GettextCatalog.GetString ("when hit count is less than or equal to"));
+			ignoreHitType.Items.Add (HitCountMode.EqualTo, GettextCatalog.GetString ("when hit count is equal to"));
+			ignoreHitType.Items.Add (HitCountMode.GreaterThan, GettextCatalog.GetString ("when hit count is greater than"));
+			ignoreHitType.Items.Add (HitCountMode.GreaterThanOrEqualTo, GettextCatalog.GetString ("when hit count is greater than or equal to"));
+			ignoreHitType.Items.Add (HitCountMode.MultipleOf, GettextCatalog.GetString ("when hit count is a multiple of"));
+
+			ignoreHitCount.IncrementValue = 1;
+
+			conditionalHitType.Items.Add (ConditionalHitWhen.ConditionIsTrue, GettextCatalog.GetString ("is true"));
+			conditionalHitType.Items.Add (ConditionalHitWhen.ExpressionChanges, GettextCatalog.GetString ("expression changes"));
+
+			buttonOk = new Xwt.DialogButton (buttonLabel, Xwt.Command.Ok) {
+				Sensitive = false
+			};
+
+			// Register events.
+			stopGroup.ActiveRadioButtonChanged += OnUpdateControls;
+			entryFunctionName.Changed += OnUpdateControls;
+			entryLocationFile.Changed += OnUpdateControls;
+			entryLocationLine.Changed += OnUpdateControls;
+			entryLocationColumn.Changed += OnUpdateControls;
+
+			entryConditionalExpression.Changed += OnUpdateControls;
+			ignoreHitType.SelectionChanged += OnUpdateControls;
+			checkPrintExpression.Toggled += OnUpdateControls;
+
+			entryFunctionName.Changed += OnUpdateText;
+			entryLocationFile.Changed += OnUpdateText;
+			entryExceptionType.Changed += OnUpdateText;
+			entryPrintExpression.Changed += OnUpdateText;
+
+			// TODO: Fix completion.
+			//entryExceptionType.KeyReleased += OnEditKeyRelease;
+			//entryExceptionType.KeyPressed += PopupCompletion;
+
+			buttonOk.Clicked += OnSave;
+		}
+
+		void SetInitialFunctionBreakpointData (FunctionBreakpoint fb)
+		{
+			stopOnFunction.Active = true;
+			if (fb.ParamTypes != null) {
+				// FIXME: support non-C# syntax based on fb.Language
+				entryFunctionName.Text = fb.FunctionName + " (" + String.Join (", ", fb.ParamTypes) + ")";
+			} else
+				entryFunctionName.Text = fb.FunctionName;
+		}
+
+		void SetInitialBreakpointData (Breakpoint bp)
+		{
+			stopOnLocation.Active = true;
+			entryLocationFile.Text = bp.FileName;
+			entryLocationLine.Text = bp.Line.ToString ();
+			entryLocationColumn.Text = bp.Column.ToString ();
+
+			if (!String.IsNullOrEmpty (bp.ConditionExpression)) {
+				entryConditionalExpression.Text = bp.ConditionExpression;
+				conditionalHitType.SelectedItem = bp.BreakIfConditionChanges ? ConditionalHitWhen.ExpressionChanges : ConditionalHitWhen.ConditionIsTrue;
+			}
+
+			Project project = null;
+			if (!String.IsNullOrEmpty (bp.FileName))
+				project = IdeApp.Workspace.GetProjectContainingFile (bp.FileName);
+
+			if (project != null) {
+				// Check the startup project of the solution too, since the current project may be a library
+				SolutionEntityItem startup = project.ParentSolution.StartupItem;
+				entryConditionalExpression.Sensitive = DebuggingService.IsFeatureSupported (project, DebuggerFeatures.ConditionalBreakpoints) ||
+				                                       DebuggingService.IsFeatureSupported (startup, DebuggerFeatures.ConditionalBreakpoints);
+
+				bool canTrace = DebuggingService.IsFeatureSupported (project, DebuggerFeatures.Tracepoints) ||
+				                DebuggingService.IsFeatureSupported (startup, DebuggerFeatures.Tracepoints);
+
+				checkPrintExpression.Sensitive = canTrace;
+				entryPrintExpression.Sensitive = canTrace;
+			}
+		}
+
+		void SetInitialCatchpointData (Catchpoint cp)
+		{
+			entryExceptionType.Text = cp.ExceptionName;
+		}
+
+		void SetInitialData ()
+		{
+			// FIXME: Add support for not doing base add
+			checkIncludeSubclass.Active = true;
+			checkIncludeSubclass.Sensitive = false;
+
+			if (be != null) {
+				stopOnException.Sensitive = false;
+				stopOnFunction.Sensitive = false;
+				stopOnLocation.Sensitive = false;
+				entryLocationFile.ReadOnly = true;
+				entryLocationLine.ReadOnly = true;
+				entryLocationColumn.ReadOnly = true;
+				entryExceptionType.ReadOnly = true;
+
+				ignoreHitType.SelectedItem = be.HitCountMode;
+				ignoreHitCount.Value = be.HitCount;
+
+				if ((be.HitAction & HitAction.PrintExpression) != HitAction.None) {
+					checkPrintExpression.Active = true;
+					entryPrintExpression.Text = be.TraceExpression;
+				}
+				checkResumeExecution.Active |= (be.HitAction & HitAction.Break) == HitAction.None;
+			} else {
+				ignoreHitType.SelectedItem = HitCountMode.None;
+				conditionalHitType.SelectedItem = ConditionalHitWhen.ConditionIsTrue;
+
+				if (IdeApp.Workbench.ActiveDocument != null) {
+					entryLocationFile.Text = IdeApp.Workbench.ActiveDocument.FileName;
+					entryLocationLine.Text = IdeApp.Workbench.ActiveDocument.Editor.Caret.Line.ToString ();
+					entryLocationColumn.Text = IdeApp.Workbench.ActiveDocument.Editor.Caret.Column.ToString ();
+				}
+			}
+
+			var fb = be as FunctionBreakpoint;
+			if (fb != null)
+				SetInitialFunctionBreakpointData (fb);
+
+			var bp = be as Breakpoint;
+			if (bp != null)
+				SetInitialBreakpointData (bp);
+
+			var cp = be as Catchpoint;
+			if (cp != null)
+				SetInitialCatchpointData (cp);
+		}
+
+		void SaveFunctionBreakpoint (FunctionBreakpoint fb)
+		{
+			fb.FunctionName = parsedFunction;
+			fb.ParamTypes = parsedParamTypes;
+		}
+
+		void SaveBreakpoint (Breakpoint bp, bool isNew)
+		{
+			if (isNew) {
+				bp.SetColumn (Int32.Parse (entryLocationColumn.Text));
+				bp.SetLine (Int32.Parse (entryLocationLine.Text));
+			}
+
+			if (!String.IsNullOrEmpty (entryConditionalExpression.Text)) {
+				bp.ConditionExpression = entryConditionalExpression.Text;
+				bp.BreakIfConditionChanges = conditionalHitType.SelectedItem.Equals (ConditionalHitWhen.ExpressionChanges);
+			} else
+				bp.ConditionExpression = null;
+		}
+
+		void OnSave (object sender, EventArgs e)
+		{
+			bool isNew = false;
+			if (be == null) {
+				isNew = true;
+
+				if (stopOnFunction.Active)
+					be = new FunctionBreakpoint ("", "C#");
+				else if (stopOnLocation.Active)
+					be = new Breakpoint (entryLocationFile.Text, Int32.Parse (entryLocationLine.Text), Int32.Parse (entryLocationColumn.Text));
+				else if (stopOnException.Active)
+					be = new Catchpoint (entryExceptionType.Text);
+				else
+					return;
+			}
+
+			var fb = be as FunctionBreakpoint;
+			if (fb != null)
+				SaveFunctionBreakpoint (fb);
+
+			var bp = be as Breakpoint;
+			if (bp != null)
+				SaveBreakpoint (bp, isNew);
+
+			be.HitCountMode = (HitCountMode)ignoreHitType.SelectedItem;
+			be.HitCount = be.HitCountMode != HitCountMode.None ? (int)ignoreHitCount.Value : 0;
+
+			be.HitAction = HitAction.None;
+			if (checkPrintExpression.Active) {
+				be.HitAction |= HitAction.PrintExpression;
+				be.TraceExpression = entryPrintExpression.Text;
+			}
+			if (!checkResumeExecution.Active)
+				be.HitAction |= HitAction.Break;
+
+			be.CommitChanges ();
+		}
+
+		void OnUpdateControls (object sender, EventArgs e)
+		{
+			// Check which radio is selected.
+			hboxFunction.Sensitive = stopOnFunction.Active;
+			hboxLineColumn.Sensitive = stopOnLocation.Active;
+			hboxLocation.Sensitive = stopOnLocation.Active;
+			hboxException.Sensitive = stopOnException.Active;
+			// FIXME: Add support for not doing base add
+			//checkIncludeSubclass.Sensitive = stopOnException.Active;
+			hboxCondition.Sensitive = !stopOnException.Active;
+
+			// Check conditional
+			if (!String.IsNullOrEmpty (entryConditionalExpression.Text))
+				conditionalHitType.Show ();
+			else
+				conditionalHitType.Hide ();
+
+			// Check ignoring hit counts.
+			if (ignoreHitType.SelectedItem.Equals (HitCountMode.None))
+				ignoreHitCount.Hide ();
+			else
+				ignoreHitCount.Show ();
+
+			// Check printing an expression.
+			entryPrintExpression.Sensitive = checkPrintExpression.Active;
+			checkResumeExecution.Sensitive = checkPrintExpression.Active;
+			checkResumeExecution.Active &= checkPrintExpression.Active;
+
+			// And display warning icons
+			buttonOk.Sensitive = CheckValidity ();
+		}
+
+		void OnUpdateText (object sender, EventArgs e)
+		{
+			buttonOk.Sensitive = CheckValidity ();
+		}
+
+		bool CheckValidity ()
+		{
+			if (be is FunctionBreakpoint) {
+				string text = entryFunctionName.Text.Trim ();
+
+				if (stopOnFunction.Active) {
+					if (text.Length == 0) {
+						warningFunction.Show ();
+						warningFunction.TooltipText = GettextCatalog.GetString ("Function name not specified");
+						return false;
+					}
+
+					if (!TryParseFunction (text, out parsedFunction, out parsedParamTypes)) {
+						warningFunction.Show ();
+						warningFunction.TooltipText = GettextCatalog.GetString ("Invalid function syntax");
+						return false;
+					}
+				}
+			} else if (be is Breakpoint) {
+				if (!System.IO.File.Exists (entryLocationFile.Text)) {
+					warningLocation.Show ();
+					warningLocation.TooltipText = GettextCatalog.GetString ("File does not exist");
+					return false;
+				}
+
+				int val;
+				if (!Int32.TryParse (entryLocationLine.Text, out val)) {
+					warningLocation.Show ();
+					warningLocation.TooltipText = GettextCatalog.GetString ("Line is not a number");
+					return false;
+				}
+
+				if (!Int32.TryParse (entryLocationColumn.Text, out val)) {
+					warningLocation.Show ();
+					warningLocation.TooltipText = GettextCatalog.GetString ("Column is not a number");
+					return false;
+				}
+
+				if (stopOnLocation.Active) {
+					if (checkPrintExpression.Active && entryPrintExpression.Text.Length == 0) {
+						warningCondition.Show ();
+						warningCondition.TooltipText = GettextCatalog.GetString ("Trace expression not specified");
+						return false;
+					}
+				}
+			} else if (be is Catchpoint) {
+				if (!classes.Contains (entryExceptionType.Text)) {
+					warningException.Show ();
+					warningException.TooltipText = GettextCatalog.GetString ("Exception not identified");
+					return false;
+				}
+			}
+
+			warningFunction.Hide ();
+			warningLocation.Hide ();
+			warningException.Hide ();
+			warningCondition.Hide ();
+
+			return true;
+		}
+
+		static bool TryParseFunction (string signature, out string function, out string[] paramTypes)
+		{
+			int paramListStart = signature.IndexOf ('(');
+			int paramListEnd = signature.IndexOf (')');
+
+			if (paramListStart == -1 && paramListEnd == -1) {
+				function = signature;
+				paramTypes = null;
+				return true;
+			}
+
+			if (paramListEnd != signature.Length - 1) {
+				paramTypes = null;
+				function = null;
+				return false;
+			}
+
+			function = signature.Substring (0, paramListStart).Trim ();
+
+			paramListStart++;
+
+			if (!FunctionBreakpoint.TryParseParameters (signature, paramListStart, paramListEnd, out paramTypes)) {
+				paramTypes = null;
+				function = null;
+				return false;
+			}
+
+			return true;
+		}
+
+		void LoadExceptionList ()
+		{
+			classes.Add ("System.Exception");
+			if (IdeApp.ProjectOperations.CurrentSelectedProject != null) {
+				var dom = TypeSystemService.GetCompilation (IdeApp.ProjectOperations.CurrentSelectedProject);
+				foreach (var t in dom.FindType (typeof (Exception)).GetSubTypeDefinitions ())
+					classes.Add (t.ReflectionName);
+			} else {
+				// no need to unload this assembly context, it's not cached.
+				var unresolvedAssembly = TypeSystemService.LoadAssemblyContext (Runtime.SystemAssemblyService.CurrentRuntime, MonoDevelop.Core.Assemblies.TargetFramework.Default, typeof(Uri).Assembly.Location);
+				var mscorlib = TypeSystemService.LoadAssemblyContext (Runtime.SystemAssemblyService.CurrentRuntime, MonoDevelop.Core.Assemblies.TargetFramework.Default, typeof(object).Assembly.Location);
+				if (unresolvedAssembly != null && mscorlib != null) {
+					var dom = new ICSharpCode.NRefactory.TypeSystem.Implementation.SimpleCompilation (unresolvedAssembly, mscorlib);
+					foreach (var t in dom.FindType (typeof (Exception)).GetSubTypeDefinitions ())
+						classes.Add (t.ReflectionName);
+				}
+			}
+		}
+
+		public BreakEvent GetBreakEvent ()
+		{
+			return be;
+		}
+
+		void SetLayout ()
+		{
+			var vbox = new Xwt.VBox ();
+			vbox.MinHeight = 400;
+			vbox.MinWidth = 450;
+
+			vbox.PackStart (new Xwt.Label (GettextCatalog.GetString ("Pause program execution in the debugger")));
+
+			// Radio group
+			var vboxRadio = new Xwt.VBox {
+				MarginLeft = 12
+			};
+
+			// Function group
+			vboxRadio.PackStart (stopOnFunction);
+
+			hboxFunction = new Xwt.HBox {
+				MarginLeft = 12
+			};
+			hboxFunction.PackStart (new Xwt.Label (GettextCatalog.GetString ("Function:")));
+			hboxFunction.PackStart (entryFunctionName, true);
+			hboxFunction.PackEnd (warningFunction);
+
+			vboxRadio.PackStart (hboxFunction);
+
+			// Location group
+			vboxRadio.PackStart (stopOnLocation);
+
+			var vboxLocation = new Xwt.VBox {
+				MarginLeft = 12
+			};
+			hboxLocation = new Xwt.HBox ();
+			hboxLocation.PackStart (new Xwt.Label (GettextCatalog.GetString ("Location:")));
+			hboxLocation.PackStart (entryLocationFile, true);
+			hboxLocation.PackEnd (warningLocation);
+			vboxLocation.PackStart (hboxLocation);
+
+			hboxLineColumn = new Xwt.HBox ();
+			hboxLineColumn.PackStart (new Xwt.Label (GettextCatalog.GetString ("Line:")));
+			hboxLineColumn.PackStart (entryLocationLine);
+			hboxLineColumn.PackStart (new Xwt.Label (GettextCatalog.GetString ("Column:")));
+			hboxLineColumn.PackStart (entryLocationColumn);
+			vboxLocation.PackStart (hboxLineColumn);
+
+			vboxRadio.PackStart (vboxLocation);
+
+			// Exception group
+			vboxRadio.PackStart (stopOnException);
+
+			var vboxException = new Xwt.VBox {
+				MarginLeft = 12
+			};
+			hboxException = new Xwt.HBox ();
+			hboxException.PackStart (new Xwt.Label (GettextCatalog.GetString ("Type:")));
+			hboxException.PackStart (entryExceptionType, true);
+			hboxException.PackEnd (warningException);
+
+			vboxException.PackStart (hboxException);
+			vboxException.PackStart (checkIncludeSubclass);
+			vboxRadio.PackStart (vboxException);
+
+			vbox.PackStart (vboxRadio);
+
+			hboxCondition = new Xwt.HBox ();
+			hboxCondition.PackStart (new Xwt.Label (GettextCatalog.GetString ("Condition:")));
+			hboxCondition.PackStart (entryConditionalExpression, true);
+			hboxCondition.PackEnd (warningCondition);
+			hboxCondition.PackEnd (conditionalHitType);
+
+			vbox.PackStart (hboxCondition);
+
+			var hboxHitCount = new Xwt.HBox ();
+			hboxHitCount.PackStart (new Xwt.Label (GettextCatalog.GetString ("When hit break")));
+			hboxHitCount.PackStart (ignoreHitType);
+			hboxHitCount.PackStart (ignoreHitCount);
+
+			vbox.PackStart (hboxHitCount);
+
+			vbox.PackStart (checkPrintExpression);
+			var vboxExpression = new Xwt.VBox {
+				MarginLeft = 12
+			};
+			vboxExpression.PackStart (entryPrintExpression);
+			vboxExpression.PackStart (checkResumeExecution);
+
+			vbox.PackStart (vboxExpression);
+
+			Buttons.Add (new Xwt.DialogButton (Xwt.Command.Cancel));
+			Buttons.Add (buttonOk);
+
+			Content = vbox;
+
+			OnUpdateControls (null, null);
+		}
+	}
+}
\ No newline at end of file

Removed: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog2.cs
===================================================================
@@ -1,544 +0,0 @@
-//
-// BreakpointsPropertiesDialog.cs
-//
-// Author:
-//       Therzok <[email protected]>
-//
-// Copyright (c) 2013 Therzok
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-using System;
-using Mono.Debugging.Client;
-using MonoDevelop.Core;
-using MonoDevelop.Projects;
-using MonoDevelop.Ide;
-using System.Collections.Generic;
-using MonoDevelop.Ide.TypeSystem;
-using ICSharpCode.NRefactory.TypeSystem;
-using System.Linq;
-
-namespace MonoDevelop.Debugger
-{
-	enum ConditionalHitWhen
-	{
-		ConditionIsTrue,
-		ExpressionChanges
-	}
-
-	sealed class BreakpointPropertiesDialog2 : Xwt.Dialog
-	{
-		// For button sensitivity.
-		Xwt.DialogButton buttonOk;
-
-		// Groupings for sensitivity
-		Xwt.HBox hboxFunction = new Xwt.HBox ();
-		Xwt.HBox hboxLocation = new Xwt.HBox ();
-		Xwt.HBox hboxLineColumn = new Xwt.HBox ();
-		Xwt.HBox hboxException = new Xwt.HBox ();
-		Xwt.HBox hboxCondition = new Xwt.HBox ();
-
-		// Stop-type radios.
-		readonly Xwt.RadioButton stopOnFunction = new Xwt.RadioButton (GettextCatalog.GetString ("When a function is entered"));
-		readonly Xwt.RadioButton stopOnLocation = new Xwt.RadioButton (GettextCatalog.GetString ("When a location is reached"));
-		readonly Xwt.RadioButton stopOnException = new Xwt.RadioButton (GettextCatalog.GetString ("When an exception is thrown"));
-
-		// Text entries
-		readonly Xwt.TextEntry entryFunctionName = new Xwt.TextEntry ();
-		readonly Xwt.TextEntry entryLocationFile = new Xwt.TextEntry ();
-		readonly Xwt.TextEntry entryLocationLine = new Xwt.TextEntry ();
-		readonly Xwt.TextEntry entryLocationColumn = new Xwt.TextEntry ();
-		readonly Xwt.TextEntry entryExceptionType = new Xwt.TextEntry ();
-		readonly Xwt.TextEntry entryConditionalExpression = new Xwt.TextEntry ();
-		readonly Xwt.TextEntry entryPrintExpression = new Xwt.TextEntry ();
-
-		// Warning icon
-		readonly Xwt.ImageView warningFunction = new Xwt.ImageView (Xwt.StockIcons.Warning);
-		readonly Xwt.ImageView warningLocation = new Xwt.ImageView (Xwt.StockIcons.Warning);
-		readonly Xwt.ImageView warningException = new Xwt.ImageView (Xwt.StockIcons.Warning);
-		readonly Xwt.ImageView warningCondition = new Xwt.ImageView (Xwt.StockIcons.Warning);
-
-		// Combobox + Pager
-		readonly Xwt.SpinButton ignoreHitCount = new Xwt.SpinButton ();
-		readonly Xwt.ComboBox ignoreHitType = new Xwt.ComboBox ();
-		readonly Xwt.ComboBox conditionalHitType = new Xwt.ComboBox ();
-
-		// Optional checkboxes.
-		readonly Xwt.CheckBox checkIncludeSubclass = new Xwt.CheckBox (GettextCatalog.GetString ("Include subclasses"));
-		readonly Xwt.CheckBox checkPrintExpression = new Xwt.CheckBox (GettextCatalog.GetString ("Print an expression to the debugger output"));
-		readonly Xwt.CheckBox checkResumeExecution = new Xwt.CheckBox (GettextCatalog.GetString ("Resume execution automatically"));
-
-		BreakEvent be;
-		string[] parsedParamTypes;
-		string parsedFunction;
-		readonly HashSet<string> classes = new HashSet<string> ();
-
-		public BreakpointPropertiesDialog2 (BreakEvent be)
-		{
-			this.be = be;
-
-			LoadExceptionList ();
-			Initialize ();
-			SetInitialData ();
-			SetLayout ();
-		}
-
-		void Initialize ()
-		{
-			Title = GettextCatalog.GetString (be == null ? "New Breakpoint" : "Breakpoint Properties");
-			var buttonLabel = GettextCatalog.GetString (be == null ? "Add breakpoint" : "Modify breakpoint");
-
-			var stopGroup = new Xwt.RadioButtonGroup ();
-			stopOnFunction.Group = stopGroup;
-			stopOnLocation.Group = stopGroup;
-			stopOnException.Group = stopGroup;
-
-			ignoreHitType.Items.Add (HitCountMode.None, GettextCatalog.GetString ("always"));
-			ignoreHitType.Items.Add (HitCountMode.LessThan, GettextCatalog.GetString ("when hit count is less than"));
-			ignoreHitType.Items.Add (HitCountMode.LessThanOrEqualTo, GettextCatalog.GetString ("when hit count is less than or equal to"));
-			ignoreHitType.Items.Add (HitCountMode.EqualTo, GettextCatalog.GetString ("when hit count is equal to"));
-			ignoreHitType.Items.Add (HitCountMode.GreaterThan, GettextCatalog.GetString ("when hit count is greater than"));
-			ignoreHitType.Items.Add (HitCountMode.GreaterThanOrEqualTo, GettextCatalog.GetString ("when hit count is greater than or equal to"));
-			ignoreHitType.Items.Add (HitCountMode.MultipleOf, GettextCatalog.GetString ("when hit count is a multiple of"));
-
-			ignoreHitCount.IncrementValue = 1;
-
-			conditionalHitType.Items.Add (ConditionalHitWhen.ConditionIsTrue, GettextCatalog.GetString ("is true"));
-			conditionalHitType.Items.Add (ConditionalHitWhen.ExpressionChanges, GettextCatalog.GetString ("expression changes"));
-
-			buttonOk = new Xwt.DialogButton (buttonLabel, Xwt.Command.Ok) {
-				Sensitive = false
-			};
-
-			// Register events.
-			stopGroup.ActiveRadioButtonChanged += OnUpdateControls;
-			entryFunctionName.Changed += OnUpdateControls;
-			entryLocationFile.Changed += OnUpdateControls;
-			entryLocationLine.Changed += OnUpdateControls;
-			entryLocationColumn.Changed += OnUpdateControls;
-
-			entryConditionalExpression.Changed += OnUpdateControls;
-			ignoreHitType.SelectionChanged += OnUpdateControls;
-			checkPrintExpression.Toggled += OnUpdateControls;
-
-			entryFunctionName.Changed += OnUpdateText;
-			entryLocationFile.Changed += OnUpdateText;
-			entryExceptionType.Changed += OnUpdateText;
-			entryPrintExpression.Changed += OnUpdateText;
-
-			buttonOk.Clicked += OnSave;
-		}
-
-		void SetInitialFunctionBreakpointData (FunctionBreakpoint fb)
-		{
-			stopOnFunction.Active = true;
-			if (fb.ParamTypes != null) {
-				// FIXME: support non-C# syntax based on fb.Language
-				entryFunctionName.Text = fb.FunctionName + " (" + String.Join (", ", fb.ParamTypes) + ")";
-			} else
-				entryFunctionName.Text = fb.FunctionName;
-		}
-
-		void SetInitialBreakpointData (Breakpoint bp)
-		{
-			stopOnLocation.Active = true;
-			entryLocationFile.Text = bp.FileName;
-			entryLocationLine.Text = bp.Line.ToString ();
-			entryLocationColumn.Text = bp.Column.ToString ();
-
-			if (!String.IsNullOrEmpty (bp.ConditionExpression)) {
-				entryConditionalExpression.Text = bp.ConditionExpression;
-				conditionalHitType.SelectedItem = bp.BreakIfConditionChanges ? ConditionalHitWhen.ExpressionChanges : ConditionalHitWhen.ConditionIsTrue;
-			}
-
-			Project project = null;
-			if (!String.IsNullOrEmpty (bp.FileName))
-				project = IdeApp.Workspace.GetProjectContainingFile (bp.FileName);
-
-			if (project != null) {
-				// Check the startup project of the solution too, since the current project may be a library
-				SolutionEntityItem startup = project.ParentSolution.StartupItem;
-				entryConditionalExpression.Sensitive = DebuggingService.IsFeatureSupported (project, DebuggerFeatures.ConditionalBreakpoints) ||
-				                                       DebuggingService.IsFeatureSupported (startup, DebuggerFeatures.ConditionalBreakpoints);
-
-				bool canTrace = DebuggingService.IsFeatureSupported (project, DebuggerFeatures.Tracepoints) ||
-				                DebuggingService.IsFeatureSupported (startup, DebuggerFeatures.Tracepoints);
-
-				checkPrintExpression.Sensitive = canTrace;
-				entryPrintExpression.Sensitive = canTrace;
-			}
-		}
-
-		void SetInitialCatchpointData (Catchpoint cp)
-		{
-			entryExceptionType.Text = cp.ExceptionName;
-		}
-
-		void SetInitialData ()
-		{
-			// FIXME: Add support for not doing base add
-			checkIncludeSubclass.Active = true;
-			checkIncludeSubclass.Sensitive = false;
-
-			if (be != null) {
-				stopOnException.Sensitive = false;
-				stopOnFunction.Sensitive = false;
-				stopOnLocation.Sensitive = false;
-				entryLocationFile.ReadOnly = true;
-				entryLocationLine.ReadOnly = true;
-				entryLocationColumn.ReadOnly = true;
-				entryExceptionType.ReadOnly = true;
-
-				ignoreHitType.SelectedItem = be.HitCountMode;
-				ignoreHitCount.Value = be.HitCount;
-
-				if ((be.HitAction & HitAction.PrintExpression) != HitAction.None) {
-					checkPrintExpression.Active = true;
-					entryPrintExpression.Text = be.TraceExpression;
-				}
-				checkResumeExecution.Active |= (be.HitAction & HitAction.Break) == HitAction.None;
-			} else {
-				ignoreHitType.SelectedItem = HitCountMode.None;
-				conditionalHitType.SelectedItem = ConditionalHitWhen.ConditionIsTrue;
-
-				if (IdeApp.Workbench.ActiveDocument != null) {
-					entryLocationFile.Text = IdeApp.Workbench.ActiveDocument.FileName;
-					entryLocationLine.Text = IdeApp.Workbench.ActiveDocument.Editor.Caret.Line.ToString ();
-					entryLocationColumn.Text = IdeApp.Workbench.ActiveDocument.Editor.Caret.Column.ToString ();
-				}
-			}
-
-			var fb = be as FunctionBreakpoint;
-			if (fb != null)
-				SetInitialFunctionBreakpointData (fb);
-
-			var bp = be as Breakpoint;
-			if (bp != null)
-				SetInitialBreakpointData (bp);
-
-			var cp = be as Catchpoint;
-			if (cp != null)
-				SetInitialCatchpointData (cp);
-		}
-
-		void SaveFunctionBreakpoint (FunctionBreakpoint fb)
-		{
-			fb.FunctionName = parsedFunction;
-			fb.ParamTypes = parsedParamTypes;
-		}
-
-		void SaveBreakpoint (Breakpoint bp, bool isNew)
-		{
-			if (isNew) {
-				bp.SetColumn (Int32.Parse (entryLocationColumn.Text));
-				bp.SetLine (Int32.Parse (entryLocationLine.Text));
-			}
-
-			if (!String.IsNullOrEmpty (entryConditionalExpression.Text)) {
-				bp.ConditionExpression = entryConditionalExpression.Text;
-				bp.BreakIfConditionChanges = conditionalHitType.SelectedItem.Equals (ConditionalHitWhen.ExpressionChanges);
-			} else
-				bp.ConditionExpression = null;
-		}
-
-		void OnSave (object sender, EventArgs e)
-		{
-			bool isNew = false;
-			if (be == null) {
-				isNew = true;
-
-				if (stopOnFunction.Active)
-					be = new FunctionBreakpoint ("", "C#");
-				else if (stopOnLocation.Active)
-					be = new Breakpoint (entryLocationFile.Text, Int32.Parse (entryLocationLine.Text), Int32.Parse (entryLocationColumn.Text));
-				else if (stopOnException.Active)
-					be = new Catchpoint (entryExceptionType.Text);
-				else
-					return;
-			}
-
-			var fb = be as FunctionBreakpoint;
-			if (fb != null)
-				SaveFunctionBreakpoint (fb);
-
-			var bp = be as Breakpoint;
-			if (bp != null)
-				SaveBreakpoint (bp, isNew);
-
-			be.HitCountMode = (HitCountMode)ignoreHitType.SelectedItem;
-			be.HitCount = be.HitCountMode != HitCountMode.None ? (int)ignoreHitCount.Value : 0;
-
-			be.HitAction = HitAction.None;
-			if (checkPrintExpression.Active) {
-				be.HitAction |= HitAction.PrintExpression;
-				be.TraceExpression = entryPrintExpression.Text;
-			}
-			if (!checkResumeExecution.Active)
-				be.HitAction |= HitAction.Break;
-
-			be.CommitChanges ();
-		}
-
-		void OnUpdateControls (object sender, EventArgs e)
-		{
-			// Check which radio is selected.
-			hboxFunction.Sensitive = stopOnFunction.Active;
-			hboxLineColumn.Sensitive = stopOnLocation.Active;
-			hboxLocation.Sensitive = stopOnLocation.Active;
-			hboxException.Sensitive = stopOnException.Active;
-			// FIXME: Add support for not doing base add
-			//checkIncludeSubclass.Sensitive = stopOnException.Active;
-			hboxCondition.Sensitive = !stopOnException.Active;
-
-			// Check conditional
-			if (!String.IsNullOrEmpty (entryConditionalExpression.Text))
-				conditionalHitType.Show ();
-			else
-				conditionalHitType.Hide ();
-
-			// Check ignoring hit counts.
-			if (ignoreHitType.SelectedItem.Equals (HitCountMode.None))
-				ignoreHitCount.Hide ();
-			else
-				ignoreHitCount.Show ();
-
-			// Check printing an expression.
-			entryPrintExpression.Sensitive = checkPrintExpression.Active;
-			checkResumeExecution.Sensitive = checkPrintExpression.Active;
-			checkResumeExecution.Active &= checkPrintExpression.Active;
-
-			// And display warning icons
-			buttonOk.Sensitive = CheckValidity ();
-		}
-
-		void OnUpdateText (object sender, EventArgs e)
-		{
-			buttonOk.Sensitive = CheckValidity ();
-		}
-
-		bool CheckValidity ()
-		{
-			if (be is FunctionBreakpoint) {
-				string text = entryFunctionName.Text.Trim ();
-
-				if (stopOnFunction.Active) {
-					if (text.Length == 0) {
-						warningFunction.Show ();
-						warningFunction.TooltipText = GettextCatalog.GetString ("Function name not specified");
-						return false;
-					}
-
-					if (!TryParseFunction (text, out parsedFunction, out parsedParamTypes)) {
-						warningFunction.Show ();
-						warningFunction.TooltipText = GettextCatalog.GetString ("Invalid function syntax");
-						return false;
-					}
-				}
-			} else if (be is Breakpoint) {
-				if (!System.IO.File.Exists (entryLocationFile.Text)) {
-					warningLocation.Show ();
-					warningLocation.TooltipText = GettextCatalog.GetString ("File does not exist");
-					return false;
-				}
-
-				int val;
-				if (!Int32.TryParse (entryLocationLine.Text, out val)) {
-					warningLocation.Show ();
-					warningLocation.TooltipText = GettextCatalog.GetString ("Line is not a number");
-					return false;
-				}
-
-				if (!Int32.TryParse (entryLocationColumn.Text, out val)) {
-					warningLocation.Show ();
-					warningLocation.TooltipText = GettextCatalog.GetString ("Column is not a number");
-					return false;
-				}
-
-				if (stopOnLocation.Active) {
-					if (checkPrintExpression.Active && entryPrintExpression.Text.Length == 0) {
-						warningCondition.Show ();
-						warningCondition.TooltipText = GettextCatalog.GetString ("Trace expression not specified");
-						return false;
-					}
-				}
-			} else if (be is Catchpoint) {
-				if (!classes.Contains (entryExceptionType.Text)) {
-					warningException.Show ();
-					warningException.TooltipText = GettextCatalog.GetString ("Exception not identified");
-					return false;
-				}
-			}
-
-			warningFunction.Hide ();
-			warningLocation.Hide ();
-			warningException.Hide ();
-			warningCondition.Hide ();
-
-			return true;
-		}
-
-		static bool TryParseFunction (string signature, out string function, out string[] paramTypes)
-		{
-			int paramListStart = signature.IndexOf ('(');
-			int paramListEnd = signature.IndexOf (')');
-
-			if (paramListStart == -1 && paramListEnd == -1) {
-				function = signature;
-				paramTypes = null;
-				return true;
-			}
-
-			if (paramListEnd != signature.Length - 1) {
-				paramTypes = null;
-				function = null;
-				return false;
-			}
-
-			function = signature.Substring (0, paramListStart).Trim ();
-
-			paramListStart++;
-
-			if (!FunctionBreakpoint.TryParseParameters (signature, paramListStart, paramListEnd, out paramTypes)) {
-				paramTypes = null;
-				function = null;
-				return false;
-			}
-
-			return true;
-		}
-
-		void LoadExceptionList ()
-		{
-			classes.Add ("System.Exception");
-			if (IdeApp.ProjectOperations.CurrentSelectedProject != null) {
-				var dom = TypeSystemService.GetCompilation (IdeApp.ProjectOperations.CurrentSelectedProject);
-				foreach (var t in dom.FindType (typeof (Exception)).GetSubTypeDefinitions ())
-					classes.Add (t.ReflectionName);
-			} else {
-				// no need to unload this assembly context, it's not cached.
-				var unresolvedAssembly = TypeSystemService.LoadAssemblyContext (Runtime.SystemAssemblyService.CurrentRuntime, MonoDevelop.Core.Assemblies.TargetFramework.Default, typeof(Uri).Assembly.Location);
-				var mscorlib = TypeSystemService.LoadAssemblyContext (Runtime.SystemAssemblyService.CurrentRuntime, MonoDevelop.Core.Assemblies.TargetFramework.Default, typeof(object).Assembly.Location);
-				if (unresolvedAssembly != null && mscorlib != null) {
-					var dom = new ICSharpCode.NRefactory.TypeSystem.Implementation.SimpleCompilation (unresolvedAssembly, mscorlib);
-					foreach (var t in dom.FindType (typeof (Exception)).GetSubTypeDefinitions ())
-						classes.Add (t.ReflectionName);
-				}
-			}
-		}
-
-		public BreakEvent GetBreakEvent ()
-		{
-			return be;
-		}
-
-		void SetLayout ()
-		{
-			var vbox = new Xwt.VBox ();
-			vbox.MinHeight = 400;
-			vbox.MinWidth = 450;
-
-			vbox.PackStart (new Xwt.Label (GettextCatalog.GetString ("Pause program execution in the debugger")));
-
-			// Radio group
-			var vboxRadio = new Xwt.VBox {
-				MarginLeft = 12
-			};
-
-			// Function group
-			vboxRadio.PackStart (stopOnFunction);
-
-			hboxFunction = new Xwt.HBox {
-				MarginLeft = 12
-			};
-			hboxFunction.PackStart (new Xwt.Label (GettextCatalog.GetString ("Function:")));
-			hboxFunction.PackStart (entryFunctionName, true);
-			hboxFunction.PackEnd (warningFunction);
-
-			vboxRadio.PackStart (hboxFunction);
-
-			// Location group
-			vboxRadio.PackStart (stopOnLocation);
-
-			var vboxLocation = new Xwt.VBox {
-				MarginLeft = 12
-			};
-			hboxLocation = new Xwt.HBox ();
-			hboxLocation.PackStart (new Xwt.Label (GettextCatalog.GetString ("Location:")));
-			hboxLocation.PackStart (entryLocationFile, true);
-			hboxLocation.PackEnd (warningLocation);
-			vboxLocation.PackStart (hboxLocation);
-
-			hboxLineColumn = new Xwt.HBox ();
-			hboxLineColumn.PackStart (new Xwt.Label (GettextCatalog.GetString ("Line:")));
-			hboxLineColumn.PackStart (entryLocationLine);
-			hboxLineColumn.PackStart (new Xwt.Label (GettextCatalog.GetString ("Column:")));
-			hboxLineColumn.PackStart (entryLocationColumn);
-			vboxLocation.PackStart (hboxLineColumn);
-
-			vboxRadio.PackStart (vboxLocation);
-
-			// Exception group
-			vboxRadio.PackStart (stopOnException);
-
-			var vboxException = new Xwt.VBox {
-				MarginLeft = 12
-			};
-			hboxException = new Xwt.HBox ();
-			hboxException.PackStart (new Xwt.Label (GettextCatalog.GetString ("Type:")));
-			hboxException.PackStart (entryExceptionType, true);
-			hboxException.PackEnd (warningException);
-
-			vboxException.PackStart (hboxException);
-			vboxException.PackStart (checkIncludeSubclass);
-			vboxRadio.PackStart (vboxException);
-
-			vbox.PackStart (vboxRadio);
-
-			hboxCondition = new Xwt.HBox ();
-			hboxCondition.PackStart (new Xwt.Label (GettextCatalog.GetString ("Condition:")));
-			hboxCondition.PackStart (entryConditionalExpression, true);
-			hboxCondition.PackEnd (warningCondition);
-			hboxCondition.PackEnd (conditionalHitType);
-
-			vbox.PackStart (hboxCondition);
-
-			var hboxHitCount = new Xwt.HBox ();
-			hboxHitCount.PackStart (new Xwt.Label (GettextCatalog.GetString ("When hit break")));
-			hboxHitCount.PackStart (ignoreHitType);
-			hboxHitCount.PackStart (ignoreHitCount);
-
-			vbox.PackStart (hboxHitCount);
-
-			vbox.PackStart (checkPrintExpression);
-			var vboxExpression = new Xwt.VBox {
-				MarginLeft = 12
-			};
-			vboxExpression.PackStart (entryPrintExpression);
-			vboxExpression.PackStart (checkResumeExecution);
-
-			vbox.PackStart (vboxExpression);
-
-			Buttons.Add (new Xwt.DialogButton (Xwt.Command.Cancel));
-			Buttons.Add (buttonOk);
-
-			Content = vbox;
-
-			OnUpdateControls (null, null);
-		}
-	}
-}
\ No newline at end of file

Removed: main/src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.BreakpointPropertiesDialog.cs
===================================================================
@@ -1,486 +0,0 @@
-
-// This file has been generated by the GUI designer. Do not modify.
-namespace MonoDevelop.Debugger
-{
-	public partial class BreakpointPropertiesDialog
-	{
-		private global::Gtk.VBox vboxProperties;
-		private global::Gtk.Label label1;
-		private global::Gtk.Alignment alignLocation;
-		private global::Gtk.Table tableLocation;
-		private global::Gtk.Entry entryFileFunction;
-		private global::Gtk.HBox hboxLineColumn;
-		private global::Gtk.SpinButton spinLine;
-		private global::Gtk.HBox hboxColumn;
-		private global::Gtk.Label label9;
-		private global::Gtk.SpinButton spinColumn;
-		private global::Gtk.Label labelFileFunction;
-		private global::Gtk.Label labelLine;
-		private global::Gtk.Label label2;
-		private global::Gtk.Alignment alignCondition;
-		private global::Gtk.VBox vboxConditionOptions;
-		private global::Gtk.RadioButton radioBreakAlways;
-		private global::Gtk.RadioButton radioBreakWhenTrue;
-		private global::Gtk.RadioButton radioBreakWhenChanges;
-		private global::Gtk.Alignment alignConditionExpression;
-		private global::Gtk.HBox hboxConditionExpression;
-		private global::Gtk.Label labelConditionExpression;
-		private global::Gtk.Entry entryCondition;
-		private global::Gtk.Label labelHitCount;
-		private global::Gtk.Alignment alignHitCount;
-		private global::Gtk.VBox vboxHitCount;
-		private global::Gtk.Label labelWhenHit;
-		private global::Gtk.HBox hbox1;
-		private global::Gtk.ComboBox comboHitCountMode;
-		private global::Gtk.SpinButton spinHitCount;
-		private global::Gtk.Label label3;
-		private global::Gtk.Alignment alignAction;
-		private global::Gtk.VBox vboxAction;
-		private global::Gtk.Label label11;
-		private global::Gtk.RadioButton radioActionBreak;
-		private global::Gtk.RadioButton radioActionTrace;
-		private global::Gtk.Alignment alignTraceExpression;
-		private global::Gtk.HBox boxTraceExpression;
-		private global::Gtk.Label labelTraceExpression;
-		private global::Gtk.Entry entryTraceExpression;
-		private global::Gtk.Button buttonCancel;
-		private global::Gtk.Button buttonOk;
-		
-		protected virtual void Build ()
-		{
-			global::Stetic.Gui.Initialize (this);
-			// Widget MonoDevelop.Debugger.BreakpointPropertiesDialog
-			this.Name = "MonoDevelop.Debugger.BreakpointPropertiesDialog";
-			this.Title = global::Mono.Unix.Catalog.GetString ("Breakpoint Properties");
-			this.WindowPosition = ((global::Gtk.WindowPosition)(4));
-			this.Modal = true;
-			// Internal child MonoDevelop.Debugger.BreakpointPropertiesDialog.VBox
-			global::Gtk.VBox w1 = this.VBox;
-			w1.Name = "dialog1_VBox";
-			w1.BorderWidth = ((uint)(2));
-			// Container child dialog1_VBox.Gtk.Box+BoxChild
-			this.vboxProperties = new global::Gtk.VBox ();
-			this.vboxProperties.Name = "vboxProperties";
-			this.vboxProperties.Spacing = 6;
-			this.vboxProperties.BorderWidth = ((uint)(9));
-			// Container child vboxProperties.Gtk.Box+BoxChild
-			this.label1 = new global::Gtk.Label ();
-			this.label1.Name = "label1";
-			this.label1.Xalign = 0F;
-			this.label1.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Location</b>");
-			this.label1.UseMarkup = true;
-			this.vboxProperties.Add (this.label1);
-			global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vboxProperties [this.label1]));
-			w2.Position = 0;
-			w2.Expand = false;
-			w2.Fill = false;
-			// Container child vboxProperties.Gtk.Box+BoxChild
-			this.alignLocation = new global::Gtk.Alignment (0F, 0.5F, 1F, 1F);
-			this.alignLocation.Name = "alignLocation";
-			this.alignLocation.LeftPadding = ((uint)(18));
-			// Container child alignLocation.Gtk.Container+ContainerChild
-			this.tableLocation = new global::Gtk.Table (((uint)(2)), ((uint)(2)), false);
-			this.tableLocation.Name = "tableLocation";
-			this.tableLocation.RowSpacing = ((uint)(6));
-			this.tableLocation.ColumnSpacing = ((uint)(6));
-			// Container child tableLocation.Gtk.Table+TableChild
-			this.entryFileFunction = new global::Gtk.Entry ();
-			this.entryFileFunction.CanFocus = true;
-			this.entryFileFunction.Name = "entryFileFunction";
-			this.entryFileFunction.IsEditable = true;
-			this.entryFileFunction.InvisibleChar = '●';
-			this.tableLocation.Add (this.entryFileFunction);
-			global::Gtk.Table.TableChild w3 = ((global::Gtk.Table.TableChild)(this.tableLocation [this.entryFileFunction]));
-			w3.LeftAttach = ((uint)(1));
-			w3.RightAttach = ((uint)(2));
-			w3.YOptions = ((global::Gtk.AttachOptions)(4));
-			// Container child tableLocation.Gtk.Table+TableChild
-			this.hboxLineColumn = new global::Gtk.HBox ();
-			this.hboxLineColumn.Name = "hboxLineColumn";
-			this.hboxLineColumn.Spacing = 6;
-			// Container child hboxLineColumn.Gtk.Box+BoxChild
-			this.spinLine = new global::Gtk.SpinButton (1, 100, 1);
-			this.spinLine.CanFocus = true;
-			this.spinLine.Name = "spinLine";
-			this.spinLine.Adjustment.PageIncrement = 10;
-			this.spinLine.ClimbRate = 1;
-			this.spinLine.Numeric = true;
-			this.spinLine.Value = 1;
-			this.hboxLineColumn.Add (this.spinLine);
-			global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.hboxLineColumn [this.spinLine]));
-			w4.Position = 0;
-			w4.Expand = false;
-			w4.Fill = false;
-			// Container child hboxLineColumn.Gtk.Box+BoxChild
-			this.hboxColumn = new global::Gtk.HBox ();
-			this.hboxColumn.Name = "hboxColumn";
-			this.hboxColumn.Spacing = 6;
-			// Container child hboxColumn.Gtk.Box+BoxChild
-			this.label9 = new global::Gtk.Label ();
-			this.label9.Name = "label9";
-			this.label9.LabelProp = global::Mono.Unix.Catalog.GetString ("Column:");
-			this.label9.Justify = ((global::Gtk.Justification)(1));
-			this.hboxColumn.Add (this.label9);
-			global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.hboxColumn [this.label9]));
-			w5.Position = 0;
-			w5.Expand = false;
-			w5.Fill = false;
-			// Container child hboxColumn.Gtk.Box+BoxChild
-			this.spinColumn = new global::Gtk.SpinButton (1, 100, 1);
-			this.spinColumn.CanFocus = true;
-			this.spinColumn.Name = "spinColumn";
-			this.spinColumn.Adjustment.PageIncrement = 10;
-			this.spinColumn.ClimbRate = 1;
-			this.spinColumn.Numeric = true;
-			this.hboxColumn.Add (this.spinColumn);
-			global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.hboxColumn [this.spinColumn]));
-			w6.Position = 1;
-			w6.Expand = false;
-			w6.Fill = false;
-			this.hboxLineColumn.Add (this.hboxColumn);
-			global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.hboxLineColumn [this.hboxColumn]));
-			w7.Position = 1;
-			w7.Expand = false;
-			w7.Fill = false;
-			this.tableLocation.Add (this.hboxLineColumn);
-			global::Gtk.Table.TableChild w8 = ((global::Gtk.Table.TableChild)(this.tableLocation [this.hboxLineColumn]));
-			w8.TopAttach = ((uint)(1));
-			w8.BottomAttach = ((uint)(2));
-			w8.LeftAttach = ((uint)(1));
-			w8.RightAttach = ((uint)(2));
-			w8.XOptions = ((global::Gtk.AttachOptions)(4));
-			w8.YOptions = ((global::Gtk.AttachOptions)(4));
-			// Container child tableLocation.Gtk.Table+TableChild
-			this.labelFileFunction = new global::Gtk.Label ();
-			this.labelFileFunction.Name = "labelFileFunction";
-			this.labelFileFunction.Xalign = 0F;
-			this.labelFileFunction.LabelProp = global::Mono.Unix.Catalog.GetString ("File:");
-			this.tableLocation.Add (this.labelFileFunction);
-			global::Gtk.Table.TableChild w9 = ((global::Gtk.Table.TableChild)(this.tableLocation [this.labelFileFunction]));
-			w9.XOptions = ((global::Gtk.AttachOptions)(4));
-			w9.YOptions = ((global::Gtk.AttachOptions)(4));
-			// Container child tableLocation.Gtk.Table+TableChild
-			this.labelLine = new global::Gtk.Label ();
-			this.labelLine.Name = "labelLine";
-			this.labelLine.LabelProp = global::Mono.Unix.Catalog.GetString ("Line:");
-			this.tableLocation.Add (this.labelLine);
-			global::Gtk.Table.TableChild w10 = ((global::Gtk.Table.TableChild)(this.tableLocation [this.labelLine]));
-			w10.TopAttach = ((uint)(1));
-			w10.BottomAttach = ((uint)(2));
-			w10.XOptions = ((global::Gtk.AttachOptions)(4));
-			w10.YOptions = ((global::Gtk.AttachOptions)(4));
-			this.alignLocation.Add (this.tableLocation);
-			this.vboxProperties.Add (this.alignLocation);
-			global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.vboxProperties [this.alignLocation]));
-			w12.Position = 1;
-			w12.Expand = false;
-			w12.Fill = false;
-			// Container child vboxProperties.Gtk.Box+BoxChild
-			this.label2 = new global::Gtk.Label ();
-			this.label2.Name = "label2";
-			this.label2.Xalign = 0F;
-			this.label2.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Condition</b>");
-			this.label2.UseMarkup = true;
-			this.vboxProperties.Add (this.label2);
-			global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.vboxProperties [this.label2]));
-			w13.Position = 2;
-			w13.Expand = false;
-			w13.Fill = false;
-			// Container child vboxProperties.Gtk.Box+BoxChild
-			this.alignCondition = new global::Gtk.Alignment (0F, 0.5F, 1F, 1F);
-			this.alignCondition.Name = "alignCondition";
-			this.alignCondition.LeftPadding = ((uint)(18));
-			// Container child alignCondition.Gtk.Container+ContainerChild
-			this.vboxConditionOptions = new global::Gtk.VBox ();
-			this.vboxConditionOptions.Name = "vboxConditionOptions";
-			this.vboxConditionOptions.Spacing = 6;
-			// Container child vboxConditionOptions.Gtk.Box+BoxChild
-			this.radioBreakAlways = new global::Gtk.RadioButton (global::Mono.Unix.Catalog.GetString ("Always break"));
-			this.radioBreakAlways.CanFocus = true;
-			this.radioBreakAlways.Name = "radioBreakAlways";
-			this.radioBreakAlways.DrawIndicator = true;
-			this.radioBreakAlways.UseUnderline = true;
-			this.radioBreakAlways.Group = new global::GLib.SList (global::System.IntPtr.Zero);
-			this.vboxConditionOptions.Add (this.radioBreakAlways);
-			global::Gtk.Box.BoxChild w14 = ((global::Gtk.Box.BoxChild)(this.vboxConditionOptions [this.radioBreakAlways]));
-			w14.Position = 0;
-			w14.Expand = false;
-			w14.Fill = false;
-			// Container child vboxConditionOptions.Gtk.Box+BoxChild
-			this.radioBreakWhenTrue = new global::Gtk.RadioButton (global::Mono.Unix.Catalog.GetString ("Break when condition is true"));
-			this.radioBreakWhenTrue.CanFocus = true;
-			this.radioBreakWhenTrue.Name = "radioBreakWhenTrue";
-			this.radioBreakWhenTrue.DrawIndicator = true;
-			this.radioBreakWhenTrue.UseUnderline = true;
-			this.radioBreakWhenTrue.Group = this.radioBreakAlways.Group;
-			this.vboxConditionOptions.Add (this.radioBreakWhenTrue);
-			global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.vboxConditionOptions [this.radioBreakWhenTrue]));
-			w15.Position = 1;
-			w15.Expand = false;
-			w15.Fill = false;
-			// Container child vboxConditionOptions.Gtk.Box+BoxChild
-			this.radioBreakWhenChanges = new global::Gtk.RadioButton (global::Mono.Unix.Catalog.GetString ("Break when the expression changes"));
-			this.radioBreakWhenChanges.CanFocus = true;
-			this.radioBreakWhenChanges.Name = "radioBreakWhenChanges";
-			this.radioBreakWhenChanges.DrawIndicator = true;
-			this.radioBreakWhenChanges.UseUnderline = true;
-			this.radioBreakWhenChanges.Group = this.radioBreakAlways.Group;
-			this.vboxConditionOptions.Add (this.radioBreakWhenChanges);
-			global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.vboxConditionOptions [this.radioBreakWhenChanges]));
-			w16.Position = 2;
-			w16.Expand = false;
-			w16.Fill = false;
-			// Container child vboxConditionOptions.Gtk.Box+BoxChild
-			this.alignConditionExpression = new global::Gtk.Alignment (0F, 0.5F, 1F, 1F);
-			this.alignConditionExpression.Name = "alignConditionExpression";
-			this.alignConditionExpression.LeftPadding = ((uint)(18));
-			// Container child alignConditionExpression.Gtk.Container+ContainerChild
-			this.hboxConditionExpression = new global::Gtk.HBox ();
-			this.hboxConditionExpression.Name = "hboxConditionExpression";
-			this.hboxConditionExpression.Spacing = 6;
-			// Container child hboxConditionExpression.Gtk.Box+BoxChild
-			this.labelConditionExpression = new global::Gtk.Label ();
-			this.labelConditionExpression.Name = "labelConditionExpression";
-			this.labelConditionExpression.Xalign = 0F;
-			this.labelConditionExpression.LabelProp = global::Mono.Unix.Catalog.GetString ("Condition expression:");
-			this.hboxConditionExpression.Add (this.labelConditionExpression);
-			global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.hboxConditionExpression [this.labelConditionExpression]));
-			w17.Position = 0;
-			w17.Expand = false;
-			w17.Fill = false;
-			// Container child hboxConditionExpression.Gtk.Box+BoxChild
-			this.entryCondition = new global::Gtk.Entry ();
-			this.entryCondition.CanFocus = true;
-			this.entryCondition.Name = "entryCondition";
-			this.entryCondition.IsEditable = true;
-			this.entryCondition.InvisibleChar = '●';
-			this.hboxConditionExpression.Add (this.entryCondition);
-			global::Gtk.Box.BoxChild w18 = ((global::Gtk.Box.BoxChild)(this.hboxConditionExpression [this.entryCondition]));
-			w18.Position = 1;
-			this.alignConditionExpression.Add (this.hboxConditionExpression);
-			this.vboxConditionOptions.Add (this.alignConditionExpression);
-			global::Gtk.Box.BoxChild w20 = ((global::Gtk.Box.BoxChild)(this.vboxConditionOptions [this.alignConditionExpression]));
-			w20.Position = 3;
-			w20.Expand = false;
-			w20.Fill = false;
-			this.alignCondition.Add (this.vboxConditionOptions);
-			this.vboxProperties.Add (this.alignCondition);
-			global::Gtk.Box.BoxChild w22 = ((global::Gtk.Box.BoxChild)(this.vboxProperties [this.alignCondition]));
-			w22.Position = 3;
-			w22.Expand = false;
-			w22.Fill = false;
-			// Container child vboxProperties.Gtk.Box+BoxChild
-			this.labelHitCount = new global::Gtk.Label ();
-			this.labelHitCount.Name = "labelHitCount";
-			this.labelHitCount.Xalign = 0F;
-			this.labelHitCount.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Hit Count</b>");
-			this.labelHitCount.UseMarkup = true;
-			this.vboxProperties.Add (this.labelHitCount);
-			global::Gtk.Box.BoxChild w23 = ((global::Gtk.Box.BoxChild)(this.vboxProperties [this.labelHitCount]));
-			w23.Position = 4;
-			w23.Expand = false;
-			w23.Fill = false;
-			// Container child vboxProperties.Gtk.Box+BoxChild
-			this.alignHitCount = new global::Gtk.Alignment (0F, 0.5F, 1F, 1F);
-			this.alignHitCount.Name = "alignHitCount";
-			this.alignHitCount.LeftPadding = ((uint)(18));
-			// Container child alignHitCount.Gtk.Container+ContainerChild
-			this.vboxHitCount = new global::Gtk.VBox ();
-			this.vboxHitCount.Name = "vboxHitCount";
-			this.vboxHitCount.Spacing = 6;
-			// Container child vboxHitCount.Gtk.Box+BoxChild
-			this.labelWhenHit = new global::Gtk.Label ();
-			this.labelWhenHit.Name = "labelWhenHit";
-			this.labelWhenHit.Xalign = 0F;
-			this.labelWhenHit.LabelProp = global::Mono.Unix.Catalog.GetString ("When the condition is hit:");
-			this.vboxHitCount.Add (this.labelWhenHit);
-			global::Gtk.Box.BoxChild w24 = ((global::Gtk.Box.BoxChild)(this.vboxHitCount [this.labelWhenHit]));
-			w24.Position = 0;
-			w24.Expand = false;
-			w24.Fill = false;
-			// Container child vboxHitCount.Gtk.Box+BoxChild
-			this.hbox1 = new global::Gtk.HBox ();
-			this.hbox1.Name = "hbox1";
-			this.hbox1.Spacing = 6;
-			// Container child hbox1.Gtk.Box+BoxChild
-			this.comboHitCountMode = global::Gtk.ComboBox.NewText ();
-			this.comboHitCountMode.AppendText (global::Mono.Unix.Catalog.GetString ("Always break"));
-			this.comboHitCountMode.AppendText (global::Mono.Unix.Catalog.GetString ("Break when the hit count is less than"));
-			this.comboHitCountMode.AppendText (global::Mono.Unix.Catalog.GetString ("Break when the hit count is less than or equal to"));
-			this.comboHitCountMode.AppendText (global::Mono.Unix.Catalog.GetString ("Break when the hit count is equal to"));
-			this.comboHitCountMode.AppendText (global::Mono.Unix.Catalog.GetString ("Break when the hit count is greater than"));
-			this.comboHitCountMode.AppendText (global::Mono.Unix.Catalog.GetString ("Break when the hit count is greater than or equal to"));
-			this.comboHitCountMode.AppendText (global::Mono.Unix.Catalog.GetString ("Break when the hit count is a multiple of"));
-			this.comboHitCountMode.Name = "comboHitCountMode";
-			this.comboHitCountMode.Active = 0;
-			this.hbox1.Add (this.comboHitCountMode);
-			global::Gtk.Box.BoxChild w25 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.comboHitCountMode]));
-			w25.Position = 0;
-			w25.Expand = false;
-			w25.Fill = false;
-			// Container child hbox1.Gtk.Box+BoxChild
-			this.spinHitCount = new global::Gtk.SpinButton (0, 100000000, 1);
-			this.spinHitCount.CanFocus = true;
-			this.spinHitCount.Name = "spinHitCount";
-			this.spinHitCount.Adjustment.PageIncrement = 10;
-			this.spinHitCount.ClimbRate = 1;
-			this.spinHitCount.Numeric = true;
-			this.spinHitCount.Value = 1;
-			this.hbox1.Add (this.spinHitCount);
-			global::Gtk.Box.BoxChild w26 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.spinHitCount]));
-			w26.Position = 1;
-			w26.Expand = false;
-			w26.Fill = false;
-			this.vboxHitCount.Add (this.hbox1);
-			global::Gtk.Box.BoxChild w27 = ((global::Gtk.Box.BoxChild)(this.vboxHitCount [this.hbox1]));
-			w27.Position = 1;
-			w27.Expand = false;
-			w27.Fill = false;
-			this.alignHitCount.Add (this.vboxHitCount);
-			this.vboxProperties.Add (this.alignHitCount);
-			global::Gtk.Box.BoxChild w29 = ((global::Gtk.Box.BoxChild)(this.vboxProperties [this.alignHitCount]));
-			w29.Position = 5;
-			w29.Expand = false;
-			w29.Fill = false;
-			// Container child vboxProperties.Gtk.Box+BoxChild
-			this.label3 = new global::Gtk.Label ();
-			this.label3.Name = "label3";
-			this.label3.Xalign = 0F;
-			this.label3.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Action</b>");
-			this.label3.UseMarkup = true;
-			this.vboxProperties.Add (this.label3);
-			global::Gtk.Box.BoxChild w30 = ((global::Gtk.Box.BoxChild)(this.vboxProperties [this.label3]));
-			w30.Position = 6;
-			w30.Expand = false;
-			w30.Fill = false;
-			// Container child vboxProperties.Gtk.Box+BoxChild
-			this.alignAction = new global::Gtk.Alignment (0F, 0.5F, 1F, 1F);
-			this.alignAction.Name = "alignAction";
-			this.alignAction.LeftPadding = ((uint)(18));
-			// Container child alignAction.Gtk.Container+ContainerChild
-			this.vboxAction = new global::Gtk.VBox ();
-			this.vboxAction.Name = "vboxAction";
-			this.vboxAction.Spacing = 6;
-			// Container child vboxAction.Gtk.Box+BoxChild
-			this.label11 = new global::Gtk.Label ();
-			this.label11.Name = "label11";
-			this.label11.Xalign = 0F;
-			this.label11.LabelProp = global::Mono.Unix.Catalog.GetString ("When the breakpoint is hit:");
-			this.vboxAction.Add (this.label11);
-			global::Gtk.Box.BoxChild w31 = ((global::Gtk.Box.BoxChild)(this.vboxAction [this.label11]));
-			w31.Position = 0;
-			w31.Expand = false;
-			w31.Fill = false;
-			// Container child vboxAction.Gtk.Box+BoxChild
-			this.radioActionBreak = new global::Gtk.RadioButton (global::Mono.Unix.Catalog.GetString ("Break"));
-			this.radioActionBreak.CanFocus = true;
-			this.radioActionBreak.Name = "radioActionBreak";
-			this.radioActionBreak.DrawIndicator = true;
-			this.radioActionBreak.UseUnderline = true;
-			this.radioActionBreak.Group = new global::GLib.SList (global::System.IntPtr.Zero);
-			this.vboxAction.Add (this.radioActionBreak);
-			global::Gtk.Box.BoxChild w32 = ((global::Gtk.Box.BoxChild)(this.vboxAction [this.radioActionBreak]));
-			w32.Position = 1;
-			w32.Expand = false;
-			w32.Fill = false;
-			// Container child vboxAction.Gtk.Box+BoxChild
-			this.radioActionTrace = new global::Gtk.RadioButton (global::Mono.Unix.Catalog.GetString ("Write expression to the output"));
-			this.radioActionTrace.CanFocus = true;
-			this.radioActionTrace.Name = "radioActionTrace";
-			this.radioActionTrace.DrawIndicator = true;
-			this.radioActionTrace.UseUnderline = true;
-			this.radioActionTrace.Group = this.radioActionBreak.Group;
-			this.vboxAction.Add (this.radioActionTrace);
-			global::Gtk.Box.BoxChild w33 = ((global::Gtk.Box.BoxChild)(this.vboxAction [this.radioActionTrace]));
-			w33.Position = 2;
-			w33.Expand = false;
-			w33.Fill = false;
-			// Container child vboxAction.Gtk.Box+BoxChild
-			this.alignTraceExpression = new global::Gtk.Alignment (0F, 0.5F, 1F, 1F);
-			this.alignTraceExpression.Name = "alignTraceExpression";
-			this.alignTraceExpression.LeftPadding = ((uint)(18));
-			// Container child alignTraceExpression.Gtk.Container+ContainerChild
-			this.boxTraceExpression = new global::Gtk.HBox ();
-			this.boxTraceExpression.Name = "boxTraceExpression";
-			this.boxTraceExpression.Spacing = 6;
-			// Container child boxTraceExpression.Gtk.Box+BoxChild
-			this.labelTraceExpression = new global::Gtk.Label ();
-			this.labelTraceExpression.Name = "labelTraceExpression";
-			this.labelTraceExpression.LabelProp = global::Mono.Unix.Catalog.GetString ("Expression:");
-			this.boxTraceExpression.Add (this.labelTraceExpression);
-			global::Gtk.Box.BoxChild w34 = ((global::Gtk.Box.BoxChild)(this.boxTraceExpression [this.labelTraceExpression]));
-			w34.Position = 0;
-			w34.Expand = false;
-			w34.Fill = false;
-			// Container child boxTraceExpression.Gtk.Box+BoxChild
-			this.entryTraceExpression = new global::Gtk.Entry ();
-			this.entryTraceExpression.CanFocus = true;
-			this.entryTraceExpression.Name = "entryTraceExpression";
-			this.entryTraceExpression.IsEditable = true;
-			this.entryTraceExpression.InvisibleChar = '●';
-			this.boxTraceExpression.Add (this.entryTraceExpression);
-			global::Gtk.Box.BoxChild w35 = ((global::Gtk.Box.BoxChild)(this.boxTraceExpression [this.entryTraceExpression]));
-			w35.Position = 1;
-			this.alignTraceExpression.Add (this.boxTraceExpression);
-			this.vboxAction.Add (this.alignTraceExpression);
-			global::Gtk.Box.BoxChild w37 = ((global::Gtk.Box.BoxChild)(this.vboxAction [this.alignTraceExpression]));
-			w37.Position = 3;
-			w37.Expand = false;
-			w37.Fill = false;
-			this.alignAction.Add (this.vboxAction);
-			this.vboxProperties.Add (this.alignAction);
-			global::Gtk.Box.BoxChild w39 = ((global::Gtk.Box.BoxChild)(this.vboxProperties [this.alignAction]));
-			w39.Position = 7;
-			w39.Expand = false;
-			w39.Fill = false;
-			w1.Add (this.vboxProperties);
-			global::Gtk.Box.BoxChild w40 = ((global::Gtk.Box.BoxChild)(w1 [this.vboxProperties]));
-			w40.Position = 0;
-			w40.Expand = false;
-			w40.Fill = false;
-			// Internal child MonoDevelop.Debugger.BreakpointPropertiesDialog.ActionArea
-			global::Gtk.HButtonBox w41 = this.ActionArea;
-			w41.Name = "dialog1_ActionArea";
-			w41.Spacing = 6;
-			w41.BorderWidth = ((uint)(5));
-			w41.LayoutStyle = ((global::Gtk.ButtonBoxStyle)(4));
-			// Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
-			this.buttonCancel = new global::Gtk.Button ();
-			this.buttonCancel.CanDefault = true;
-			this.buttonCancel.CanFocus = true;
-			this.buttonCancel.Name = "buttonCancel";
-			this.buttonCancel.UseStock = true;
-			this.buttonCancel.UseUnderline = true;
-			this.buttonCancel.Label = "gtk-cancel";
-			this.AddActionWidget (this.buttonCancel, -6);
-			global::Gtk.ButtonBox.ButtonBoxChild w42 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w41 [this.buttonCancel]));
-			w42.Expand = false;
-			w42.Fill = false;
-			// Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
-			this.buttonOk = new global::Gtk.Button ();
-			this.buttonOk.CanDefault = true;
-			this.buttonOk.CanFocus = true;
-			this.buttonOk.Name = "buttonOk";
-			this.buttonOk.UseStock = true;
-			this.buttonOk.UseUnderline = true;
-			this.buttonOk.Label = "gtk-ok";
-			w41.Add (this.buttonOk);
-			global::Gtk.ButtonBox.ButtonBoxChild w43 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w41 [this.buttonOk]));
-			w43.Position = 1;
-			w43.Expand = false;
-			w43.Fill = false;
-			if ((this.Child != null)) {
-				this.Child.ShowAll ();
-			}
-			this.DefaultWidth = 512;
-			this.DefaultHeight = 522;
-			this.Hide ();
-			this.radioBreakAlways.Toggled += new global::System.EventHandler (this.OnRadioBreakAlwaysToggled);
-			this.radioBreakWhenTrue.Toggled += new global::System.EventHandler (this.OnRadioBreakAlwaysToggled);
-			this.radioBreakWhenChanges.Toggled += new global::System.EventHandler (this.OnRadioBreakAlwaysToggled);
-			this.radioActionBreak.Toggled += new global::System.EventHandler (this.OnRadioActionBreakToggled);
-			this.radioActionTrace.Toggled += new global::System.EventHandler (this.OnRadioActionBreakToggled);
-			this.buttonOk.Clicked += new global::System.EventHandler (this.OnButtonOkClicked);
-		}
-	}
-}

Modified: main/src/addins/MonoDevelop.Debugger/gtk-gui/gui.stetic
===================================================================
@@ -286,607 +286,6 @@
       </widget>
     </child>
   </widget>
-  <widget class="Gtk.Dialog" id="MonoDevelop.Debugger.BreakpointPropertiesDialog" design-size="512 522">
-    <property name="MemberName" />
-    <property name="Visible">False</property>
-    <property name="Title" translatable="yes">Breakpoint Properties</property>
-    <property name="WindowPosition">CenterOnParent</property>
-    <property name="Modal">True</property>
-    <property name="Buttons">2</property>
-    <property name="HelpButton">False</property>
-    <child internal-child="VBox">
-      <widget class="Gtk.VBox" id="dialog1_VBox">
-        <property name="MemberName" />
-        <property name="BorderWidth">2</property>
-        <child>
-          <widget class="Gtk.VBox" id="vboxProperties">
-            <property name="MemberName" />
-            <property name="Spacing">6</property>
-            <property name="BorderWidth">9</property>
-            <child>
-              <widget class="Gtk.Label" id="label1">
-                <property name="MemberName" />
-                <property name="Xalign">0</property>
-                <property name="LabelProp" translatable="yes">&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: 364cc607817f9bb5020e0b76ab644f616cbbf7f5
   Author: Therzok <[email protected]> (Therzok)
     Date: 2013-11-04 16:18:46 GMT
      URL: https://github.com/mono/monodevelop/commit/364cc607817f9bb5020e0b76ab644f616cbbf7f5

[Debugger] Combo unavailable in case of features not being available.

Changed paths:
  M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs

Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs
===================================================================
@@ -301,13 +301,13 @@ void OnSave (object sender, EventArgs e)
 		void OnUpdateControls (object sender, EventArgs e)
 		{
 			// Check which radio is selected.
-			hboxFunction.Sensitive = stopOnFunction.Active;
-			hboxLineColumn.Sensitive = stopOnLocation.Active;
-			hboxLocation.Sensitive = stopOnLocation.Active;
-			hboxException.Sensitive = stopOnException.Active;
+			hboxFunction.Sensitive = stopOnFunction.Active && DebuggingService.IsFeatureSupported (DebuggerFeatures.Breakpoints);
+			hboxLineColumn.Sensitive = stopOnLocation.Active && DebuggingService.IsFeatureSupported (DebuggerFeatures.Breakpoints);
+			hboxLocation.Sensitive = stopOnLocation.Active && DebuggingService.IsFeatureSupported (DebuggerFeatures.Breakpoints);
+			hboxException.Sensitive = stopOnException.Active && DebuggingService.IsFeatureSupported (DebuggerFeatures.Catchpoints);
 			// FIXME: Add support for not doing base add
 			//checkIncludeSubclass.Sensitive = stopOnException.Active;
-			hboxCondition.Sensitive = !stopOnException.Active;
+			hboxCondition.Sensitive = !stopOnException.Active && DebuggingService.IsFeatureSupported (DebuggerFeatures.ConditionalBreakpoints);
 
 			// Check conditional
 			if (!String.IsNullOrEmpty (entryConditionalExpression.Text))
@@ -322,7 +322,7 @@ void OnUpdateControls (object sender, EventArgs e)
 				ignoreHitCount.Show ();
 
 			// Check printing an expression.
-			entryPrintExpression.Sensitive = checkPrintExpression.Active;
+			entryPrintExpression.Sensitive = checkPrintExpression.Active && DebuggingService.IsFeatureSupported (DebuggerFeatures.Tracepoints);
 			checkResumeExecution.Sensitive = checkPrintExpression.Active;
 			checkResumeExecution.Active &= checkPrintExpression.Active;
 


   Commit: e71984aaddbd4fbec0755784aacfe2c16de299cf
   Author: Therzok <[email protected]> (Therzok)
     Date: 2013-11-04 16:18:46 GMT
      URL: https://github.com/mono/monodevelop/commit/e71984aaddbd4fbec0755784aacfe2c16de299cf

[Debugger] Implement usage of include subclasses tick.

Changed paths:
  M main/src/addins/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32/CorDebuggerSession.cs
  M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs

Modified: main/src/addins/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32/CorDebuggerSession.cs
===================================================================
@@ -506,17 +506,26 @@ private bool IsCatchpoint (CorException2EventArgs e)
 		{
 			// Build up the exception type hierachy
 			CorValue v = e.Thread.CurrentException;
-			List<string> exceptions = new List<string>();
+			var exceptions = new HashSet<string>();
+
 			CorType t = v.ExactType;
+			string baseName = t.GetTypeInfo (this).FullName;
 			while (t != null) {
-				exceptions.Add(t.GetTypeInfo(this).FullName);
+				exceptions.Add (t.GetTypeInfo (this).FullName);
 				t = t.Base;
 			}
 			
 			// See if a catchpoint is set for this exception.
 			foreach (Catchpoint cp in Breakpoints.GetCatchpoints()) {
-				if (cp.Enabled && exceptions.Contains(cp.ExceptionName)) {
-					return true;
+				if (cp.Enabled) {
+					if (cp.IncludeSubclasses) {
+						if (exceptions.Contains (cp.ExceptionName))
+							return true;
+						continue;
+					}
+
+					if (baseName == cp.ExceptionName)
+						return true;
 				}
 			}
 			


Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs
===================================================================
@@ -195,10 +195,6 @@ void SetInitialCatchpointData (Catchpoint cp)
 
 		void SetInitialData ()
 		{
-			// FIXME: Add support for not doing base add
-			checkIncludeSubclass.Active = true;
-			checkIncludeSubclass.Sensitive = false;
-
 			if (be != null) {
 				stopOnException.Sensitive = false;
 				stopOnFunction.Sensitive = false;
@@ -271,7 +267,7 @@ void OnSave (object sender, EventArgs e)
 				else if (stopOnLocation.Active)
 					be = new Breakpoint (entryLocationFile.Text, Int32.Parse (entryLocationLine.Text), Int32.Parse (entryLocationColumn.Text));
 				else if (stopOnException.Active)
-					be = new Catchpoint (entryExceptionType.Text);
+					be = new Catchpoint (entryExceptionType.Text, checkIncludeSubclass.Active);
 				else
 					return;
 			}
@@ -305,8 +301,7 @@ void OnUpdateControls (object sender, EventArgs e)
 			hboxLineColumn.Sensitive = stopOnLocation.Active && DebuggingService.IsFeatureSupported (DebuggerFeatures.Breakpoints);
 			hboxLocation.Sensitive = stopOnLocation.Active && DebuggingService.IsFeatureSupported (DebuggerFeatures.Breakpoints);
 			hboxException.Sensitive = stopOnException.Active && DebuggingService.IsFeatureSupported (DebuggerFeatures.Catchpoints);
-			// FIXME: Add support for not doing base add
-			//checkIncludeSubclass.Sensitive = stopOnException.Active;
+			checkIncludeSubclass.Sensitive = stopOnException.Active;
 			hboxCondition.Sensitive = !stopOnException.Active && DebuggingService.IsFeatureSupported (DebuggerFeatures.ConditionalBreakpoints);
 
 			// Check conditional


   Commit: 4f86525bf8f2d2c46e6d4e0dbd300bfc7ef97475
   Author: Therzok <[email protected]> (Therzok)
     Date: 2013-11-04 16:18:47 GMT
      URL: https://github.com/mono/monodevelop/commit/4f86525bf8f2d2c46e6d4e0dbd300bfc7ef97475

[Debugger] Conditional hit type combo should always be visible.

Changed paths:
  M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs
  M main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs

Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs
===================================================================
@@ -41,7 +41,7 @@ enum ConditionalHitWhen
 		ExpressionChanges
 	}
 
-	sealed class BreakpointPropertiesDialog2 : Xwt.Dialog
+	sealed class BreakpointPropertiesDialog : Xwt.Dialog
 	{
 		// For button sensitivity.
 		Xwt.DialogButton buttonOk;
@@ -88,7 +88,7 @@ sealed class BreakpointPropertiesDialog2 : Xwt.Dialog
 		string parsedFunction;
 		readonly HashSet<string> classes = new HashSet<string> ();
 
-		public BreakpointPropertiesDialog2 (BreakEvent be)
+		public BreakpointPropertiesDialog (BreakEvent be)
 		{
 			this.be = be;
 
@@ -117,6 +117,9 @@ void Initialize ()
 			ignoreHitType.Items.Add (HitCountMode.MultipleOf, GettextCatalog.GetString ("when hit count is a multiple of"));
 
 			ignoreHitCount.IncrementValue = 1;
+			ignoreHitCount.ClimbRate = 1;
+			ignoreHitCount.MinimumValue = 0;
+			ignoreHitCount.MaximumValue = Int32.MaxValue;
 
 			conditionalHitType.Items.Add (ConditionalHitWhen.ConditionIsTrue, GettextCatalog.GetString ("is true"));
 			conditionalHitType.Items.Add (ConditionalHitWhen.ExpressionChanges, GettextCatalog.GetString ("expression changes"));
@@ -305,10 +308,7 @@ void OnUpdateControls (object sender, EventArgs e)
 			hboxCondition.Sensitive = !stopOnException.Active && DebuggingService.IsFeatureSupported (DebuggerFeatures.ConditionalBreakpoints);
 
 			// Check conditional
-			if (!String.IsNullOrEmpty (entryConditionalExpression.Text))
-				conditionalHitType.Show ();
-			else
-				conditionalHitType.Hide ();
+			conditionalHitType.Sensitive = !String.IsNullOrEmpty (entryConditionalExpression.Text);
 
 			// Check ignoring hit counts.
 			if (ignoreHitType.SelectedItem.Equals (HitCountMode.None))


Modified: main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs
===================================================================
@@ -217,7 +217,7 @@ public static void ShowValueVisualizer (ObjectValue val)
 		
 		public static bool ShowBreakpointProperties (ref BreakEvent bp)
 		{
-			using (var dlg = new BreakpointPropertiesDialog2 (bp)) {
+			using (var dlg = new BreakpointPropertiesDialog (bp)) {
 				Xwt.Command response = dlg.Run ();
 				if (bp == null)
 					bp = dlg.GetBreakEvent ();
_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches