public void ShowValue(NuGenBaseValueRefresher valueRefresher, FrameWrapper frame, string initialExpression) { if (frame == null) { MessageBox.Show("There is no active frame and thus expressions cannot be evaluated.\n\nFrames can be changed by using the Call Stack Panel", "No active frame", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else { if (!IsHandleCreated) { CreateHandle(); } objectTree.Sorted = false; UpdateDisplayedValue = false; objectTree.SelectedNode = RootNode; UpdateDisplayedValue = true; NuGenIValueFormatter rootValueFormatter = new NuGenRootValueFormatter("Viewed object"); rootValueFormatter.ValueRefresher = valueRefresher; rootValueFormatter.FieldNode = RootNode; RootNode.Tag = rootValueFormatter; RootNode.Text = rootValueFormatter.Name; FrameRefresher = new NuGenFrameRefresher(NuGenDebugEventHandler.Instance.EventObjects.Thread, frame.ChainIndex, frame.FrameIndex, frame.IsActiveFrame); ProcessWrapper processWrapper = NuGenDebugEventHandler.Instance.EventObjects.Thread.GetProcess(); NuGenEvaluationHandler evaluationHandler = new NuGenEvaluationHandler(FrameRefresher); EvalWrapper evalWrapper = NuGenDebugEventHandler.Instance.EventObjects.Thread.CreateEval(); EvaluationContext = new NuGenEvaluationContext(processWrapper, evaluationHandler, evalWrapper, NuGenDebugEventHandler.Instance.EventObjects.Thread); ValueDisplayer = new NuGenValueDisplayer(evaluationContext); ValueDisplayer.ArrayElementEvaluated += new ArrayElementEvaluatedDelegate(ValueDisplayer_ArrayElementEvaluated); ValueDisplayer.ErrorOccurred += new ErrorOccurredDelegate(ValueDisplayer_ErrorOccurred); ValueDisplayer.EvaluatedNull += new EvaluatedNullDelegate(ValueDisplayer_EvaluatedNull); ValueDisplayer.FieldEvaluated += new FieldEvaluatedDelegate(ValueDisplayer_FieldEvaluated); ValueDisplayer.PropertyEvaluated += new PropertyEvaluatedDelegate(ValueDisplayer_PropertyEvaluated); ValueDisplayer.StateChanging += new StateChangingDelegate(ValueDisplayer_StateChanging); ValueDisplayer.StringValueEvaluated += new StringValueEvaluatedDelegate(ValueDisplayer_StringValueEvaluated); ValueDisplayer.ToStringEvaluated += new ToStringEvaluatedDelegate(ValueDisplayer_ToStringEvaluated); ValueDisplayer.TypeInspected += new TypeInspectedDelegate(ValueDisplayer_TypeInspected); if (valueRefresher != null) { DisplayValue(valueRefresher, RootNode); } fieldList.Sort(); objectTree.Sorted = true; DisplayExpressionText(initialExpression); expressionComboBox.Update(); ActiveControl = expressionComboBox; ShowDialog(); } }
protected override void OnInitializePanel() { base.OnInitializePanel(); if (NuGenDebugEventHandler.Instance.EventObjects.Thread != null) { if (ActiveFrame == null) { NuGenUIHandler.Instance.DisplayUserWarning("No stack frame information is available at the location."); } else if (!ActiveFrame.IsILFrame() && Mode != ObjectsPanelMode.Watch) { switch (Mode) { case ObjectsPanelMode.Arguments: NuGenUIHandler.Instance.DisplayUserWarning("The current frame is native therefore arguments are not available."); break; case ObjectsPanelMode.AutoObjects: NuGenUIHandler.Instance.DisplayUserWarning("The current frame is native therefore auto objects are not available."); break; case ObjectsPanelMode.LocalVariables: NuGenUIHandler.Instance.DisplayUserWarning("The current frame is native therefore local variables are not available."); break; } } else { EvalWrapper evalWrapper = NuGenDebugEventHandler.Instance.EventObjects.Thread.CreateEval(); EvaluationContext = new NuGenEvaluationContext(NuGenDebugEventHandler.Instance.EventObjects.Process, new NuGenEvaluationHandler(ActiveFrameRefresher), evalWrapper, NuGenDebugEventHandler.Instance.EventObjects.Thread); ValueDisplayer = new NuGenValueDisplayer(EvaluationContext); switch (Mode) { case ObjectsPanelMode.Arguments: DisplayArguments(); break; case ObjectsPanelMode.AutoObjects: DisplayCurrentException(); break; case ObjectsPanelMode.LocalVariables: DisplayLocalVariables(); break; case ObjectsPanelMode.Watch: DisplayWatchExpressions(); break; } } } }
protected override void OnInitializePanel() { base.OnInitializePanel(); if (NuGenDebugEventHandler.Instance.EventObjects.Thread != null) { if (ActiveFrame == null) { NuGenUIHandler.Instance.DisplayUserWarning("No stack frame information is available at the location."); } else if (!ActiveFrame.IsILFrame() && Mode != ObjectsPanelMode.Watch) { switch(Mode) { case ObjectsPanelMode.Arguments: NuGenUIHandler.Instance.DisplayUserWarning("The current frame is native therefore arguments are not available."); break; case ObjectsPanelMode.AutoObjects: NuGenUIHandler.Instance.DisplayUserWarning("The current frame is native therefore auto objects are not available."); break; case ObjectsPanelMode.LocalVariables: NuGenUIHandler.Instance.DisplayUserWarning("The current frame is native therefore local variables are not available."); break; } } else { EvalWrapper evalWrapper = NuGenDebugEventHandler.Instance.EventObjects.Thread.CreateEval(); EvaluationContext = new NuGenEvaluationContext(NuGenDebugEventHandler.Instance.EventObjects.Process, new NuGenEvaluationHandler(ActiveFrameRefresher), evalWrapper, NuGenDebugEventHandler.Instance.EventObjects.Thread); ValueDisplayer = new NuGenValueDisplayer(EvaluationContext); switch (Mode) { case ObjectsPanelMode.Arguments: DisplayArguments(); break; case ObjectsPanelMode.AutoObjects: DisplayCurrentException(); break; case ObjectsPanelMode.LocalVariables: DisplayLocalVariables(); break; case ObjectsPanelMode.Watch: DisplayWatchExpressions(); break; } } } }