public void ShowButton()
 {
     if (dialog != null)
     {
         dialog.Destroyed -= Dialog_Destroyed;
         dialog.Destroy();
         dialog = null;
     }
     if (button == null)
     {
         button = new ExceptionCaughtButton(ex, this, File, Line);
         TextEditorService.RegisterExtension(button);
         button.ScrollToView();
     }
     if (miniButton != null)
     {
         miniButton.Dispose();
         miniButton = null;
     }
 }
示例#2
0
        public static void ShowExceptionCaughtDialog()
        {
            EvaluationOptions ops = session.EvaluationOptions.Clone();

            ops.MemberEvaluationTimeout = 0;
            ops.EvaluationTimeout       = 0;
            ops.EllipsizeStrings        = false;

            ExceptionInfo val = CurrentFrame.GetException(ops);

            if (val != null)
            {
                exceptionDialog = new ExceptionCaughtDialog(val);
                exceptionDialog.TransientFor = IdeApp.Workbench.RootWindow;
                MessageService.PlaceDialog(exceptionDialog, IdeApp.Workbench.RootWindow);
                exceptionDialog.Destroyed += (o, args) => {
                    exceptionDialog = null;
                };
                exceptionDialog.Show();
            }
        }
示例#3
0
 public void Dispose()
 {
     if (dialog != null)
     {
         dialog.Destroy();
         dialog = null;
     }
     if (button != null)
     {
         button.Dispose();
         button = null;
     }
     if (miniButton != null)
     {
         miniButton.Dispose();
         miniButton = null;
     }
     if (Closed != null)
     {
         Closed(this, EventArgs.Empty);
     }
 }
示例#4
0
		public static void ShowExceptionCaughtDialog ()
		{
			ExceptionInfo val = CurrentFrame.GetException ();
			if (val != null) {
				ExceptionCaughtDialog dlg = new ExceptionCaughtDialog (val);
				dlg.TransientFor = IdeApp.Workbench.RootWindow;
				MessageService.PlaceDialog (dlg, IdeApp.Workbench.RootWindow);
				dlg.Show ();
			}
		}
		public void Dispose ()
		{
			if (dialog != null) {
				dialog.Destroy ();
				dialog = null;
			}
			if (button != null) {
				button.Dispose ();
				button = null;
			}
			if (miniButton != null) {
				miniButton.Dispose ();
				miniButton = null;
			}
			if (Closed != null)
				Closed (this, EventArgs.Empty);
		}
		public void ShowMiniButton ()
		{
			if (dialog != null) {
				dialog.Destroy ();
				dialog = null;
			}
			if (button != null) {
				button.Dispose ();
				button = null;
			}
			if (miniButton == null) {
				miniButton = new ExceptionCaughtMiniButton (this, File, Line);
				TextEditorService.RegisterExtension (miniButton);
			}
		}
		public void ShowDialog ()
		{
			if (dialog == null) {
				dialog = new ExceptionCaughtDialog (ex, this);
				MessageService.ShowCustomDialog (dialog, IdeApp.Workbench.RootWindow);
				dialog = null;
			}
		}
示例#8
0
		static void Cleanup ()
		{
			if (oldLayout != null) {
				string layout = oldLayout;
				oldLayout = null;
				// Dispatch asynchronously to avoid start/stop races
				DispatchService.GuiSyncDispatch (delegate {
					if (IdeApp.Workbench.CurrentLayout == "Debug")
						IdeApp.Workbench.CurrentLayout = layout;
				});
			}
			
			currentBacktrace = null;
			
			if (!IsDebugging)
				return;
			
			if (exceptionDialog != null) {
				exceptionDialog.Destroy ();
				exceptionDialog = null;
			}
			
			if (busyStatusIcon != null) {
				busyStatusIcon.Dispose ();
				busyStatusIcon = null;
			}
			
			session.TargetEvent -= OnTargetEvent;
			session.TargetStarted -= OnStarted;
			session.OutputWriter = null;
			session.LogWriter = null;
			session.BusyStateChanged -= OnBusyStateChanged;
			session.TypeResolverHandler = null;
			session.BreakpointTraceHandler = null;
			session.GetExpressionEvaluator = null;
			
			// Dispose the session at the end, since it may take a while.
			DebuggerSession oldSession = session;
			session = null;
			
			DispatchService.GuiDispatch (delegate {
				if (StoppedEvent != null)
					StoppedEvent (null, new EventArgs ());
			});
			
			if (console != null) {
				console.CancelRequested -= OnCancelRequested;
				console.Dispose ();
				console = null;
			}
			
			DispatchService.GuiDispatch (delegate {
				NotifyCallStackChanged ();
				NotifyCurrentFrameChanged ();
				NotifyLocationChanged ();
			});
			
			if (oldSession != null) {
				oldSession.BusyStateChanged -= OnBusyStateChanged;
				oldSession.Dispose ();
			}
		}
示例#9
0
		public static void ShowExceptionCaughtDialog ()
		{
			EvaluationOptions ops = session.EvaluationOptions.Clone ();
			ops.MemberEvaluationTimeout = 0;
			ops.EvaluationTimeout = 0;
			ops.EllipsizeStrings = false;
			
			ExceptionInfo val = CurrentFrame.GetException (ops);
			if (val != null) {
				exceptionDialog = new ExceptionCaughtDialog (val);
				exceptionDialog.TransientFor = IdeApp.Workbench.RootWindow;
				MessageService.PlaceDialog (exceptionDialog, IdeApp.Workbench.RootWindow);
				exceptionDialog.Destroyed += (o, args) => {
					exceptionDialog = null;
				};
				exceptionDialog.Show ();
			}
		}
示例#10
0
		public void ShowButton ()
		{
			if (dialog != null) {
				dialog.Destroyed -= Dialog_Destroyed;
				dialog.Destroy ();
				dialog = null;
			}
			if (button == null) {
				button = new ExceptionCaughtButton (ex, this, File, Line);
				TextEditorService.RegisterExtension (button);
				button.ScrollToView ();
			}
			if (miniButton != null) {
				miniButton.Dispose ();
				miniButton = null;
			}
		}
示例#11
0
		void Dialog_Destroyed (object sender, EventArgs e)
		{
			if (dialog != null) {
				dialog.Destroyed -= Dialog_Destroyed;
				dialog = null;
			}
		}
示例#12
0
		public void ShowDialog ()
		{
			if (dialog == null) {
				dialog = new ExceptionCaughtDialog (ex, this);
				IdeApp.CommandService.RegisterTopWindow (dialog);
				dialog.TransientFor = IdeApp.Workbench.RootWindow;
				dialog.Show ();
				MessageService.PlaceDialog (dialog, IdeApp.Workbench.RootWindow);
				dialog.Destroyed += Dialog_Destroyed;;
			}
		}
示例#13
0
		public static void ShowExceptionCaughtDialog ()
		{
			EvaluationOptions ops = session.EvaluationOptions.Clone ();
			ops.EllipsizeStrings = false;
			
			ExceptionInfo val = CurrentFrame.GetException (ops);
			if (val != null) {
				ExceptionCaughtDialog dlg = new ExceptionCaughtDialog (val);
				dlg.TransientFor = IdeApp.Workbench.RootWindow;
				MessageService.PlaceDialog (dlg, IdeApp.Workbench.RootWindow);
				dlg.Show ();
			}
		}
示例#14
0
        static void Cleanup()
        {
            if (oldLayout != null)
            {
                string layout = oldLayout;
                oldLayout = null;
                // Dispatch asynchronously to avoid start/stop races
                DispatchService.GuiSyncDispatch(delegate {
                    if (IdeApp.Workbench.CurrentLayout == "Debug")
                    {
                        IdeApp.Workbench.CurrentLayout = layout;
                    }
                });
            }

            currentBacktrace = null;

            if (!IsDebugging)
            {
                return;
            }

            if (exceptionDialog != null)
            {
                exceptionDialog.Destroy();
                exceptionDialog = null;
            }

            if (busyStatusIcon != null)
            {
                busyStatusIcon.Dispose();
                busyStatusIcon = null;
            }

            session.TargetEvent           -= OnTargetEvent;
            session.TargetStarted         -= OnStarted;
            session.OutputWriter           = null;
            session.LogWriter              = null;
            session.BusyStateChanged      -= OnBusyStateChanged;
            session.TypeResolverHandler    = null;
            session.BreakpointTraceHandler = null;
            session.GetExpressionEvaluator = null;
            console.CancelRequested       -= OnCancelRequested;

            // Dispose the session at the end, since it may take a while.
            DebuggerSession oldSession = session;

            session = null;

            DispatchService.GuiDispatch(delegate {
                if (StoppedEvent != null)
                {
                    StoppedEvent(null, new EventArgs());
                }
            });

            if (console != null)
            {
                console.Dispose();
                console = null;
            }

            DispatchService.GuiDispatch(delegate {
                NotifyCallStackChanged();
                NotifyCurrentFrameChanged();
                NotifyLocationChanged();
            });

            if (oldSession != null)
            {
                oldSession.BusyStateChanged -= OnBusyStateChanged;
                oldSession.Dispose();
            }
        }
		public static void ShowExceptionCaughtDialog ()
		{
			ExceptionInfo val = CurrentFrame.GetException ();
			if (val != null) {
				ExceptionCaughtDialog dlg = new ExceptionCaughtDialog (val);
				dlg.Show ();
			}
		}