public void ShowDataGrid(DebugEvaluationResult evaluationResult) { var wrapper = new EvaluationWrapper(evaluationResult); if (!wrapper.CanShowDetail) { throw new InvalidOperationException("Cannot show data grid on evaluation result " + evaluationResult); } wrapper.ShowDetailCommand.Execute(null); }
private void OnGlobalEnvironmentEvaluation(DebugEvaluationResult result) { var wrapper = new EvaluationWrapper(result); var rootNodeModel = new VariableNode(_settings, wrapper); VsAppShell.Current.DispatchOnUIThread( () => { EnvironmentName.Text = GlobalEnvironmentName; _rootNode.Model = rootNodeModel; }); }
/// <summary> /// Create new instance of <see cref="EvaluationWrapper"/> /// </summary> /// <param name="evaluation">R session's evaluation result</param> /// <param name="truncateChildren">true to truncate children returned by GetChildrenAsync</param> public EvaluationWrapper(DebugEvaluationResult evaluation, int index = -1, int? maxChildrenCount = null) : base(evaluation, maxChildrenCount) { Index = index; CanShowDetail = ComputeDetailAvailability(DebugEvaluation as DebugValueEvaluationResult); if (CanShowDetail) { ShowDetailCommand = new DelegateCommand(ShowVariableGridWindowPane, (o) => CanShowDetail); ShowDetailCommandTooltip = Resources.ShowDetailCommandTooltip; OpenInExcelCommand = new DelegateCommand(OpenInExcel, (o) => CanShowDetail); OpenInExcelCommandTooltip = Resources.OpenInExcelCommandTooltip; } }
private void SubscribeAction(DebugEvaluationResult evaluation) { VsAppShell.Current.DispatchOnUIThread( () => { if (evaluation is DebugErrorEvaluationResult) { // evaluation error, this could happen if R object is removed var error = (DebugErrorEvaluationResult)evaluation; SetError(error.ErrorText); return; } var wrapper = new EvaluationWrapper(evaluation); if (wrapper.TypeName == "NULL" && wrapper.Value == "NULL") { // the variable should have been removed SetError( string.Format( CultureInfo.InvariantCulture, Package.Resources.VariableGrid_Missing, evaluation.Expression)); } else if (wrapper.Dimensions.Count != 2) { // the same evaluation changed to non-matrix SetError( string.Format( CultureInfo.InvariantCulture, Package.Resources.VariableGrid_NotTwoDimension, evaluation.Expression)); } else if (wrapper.Dimensions[0] != _evaluation.Dimensions[0] || wrapper.Dimensions[1] != _evaluation.Dimensions[1]) { ClearError(); // matrix size changed. Reset the evaluation SetEvaluation(wrapper); } else { ClearError(); // size stays same. Refresh VariableGrid.Refresh(); } }); }
/// <summary> /// Create new instance of <see cref="DataEvaluation"/> /// </summary> /// <param name="evaluation">R session's evaluation result</param> public RSessionDataObject(DebugEvaluationResult evaluation, int? maxChildrenCount = null) : this() { DebugEvaluation = evaluation; Name = DebugEvaluation.Name?.TrimStart(NameTrimChars); if (DebugEvaluation is DebugValueEvaluationResult) { var valueEvaluation = (DebugValueEvaluationResult)DebugEvaluation; Value = GetValue(valueEvaluation)?.Trim(); ValueDetail = valueEvaluation.GetRepresentation(DebugValueRepresentationKind.Raw).Deparse; TypeName = valueEvaluation.TypeName; if (valueEvaluation.Classes != null) { var escaped = valueEvaluation.Classes.Select((x) => x.IndexOf(' ') >= 0 ? "'" + x + "'" : x); Class = string.Join(", ", escaped); // TODO: escape ',' in class names } HasChildren = valueEvaluation.HasChildren; Dimensions = valueEvaluation.Dim ?? new List<int>(); } else if (DebugEvaluation is DebugPromiseEvaluationResult) { const string PromiseVaue = "<promise>"; var promise = (DebugPromiseEvaluationResult)DebugEvaluation; Value = promise.Code; TypeName = PromiseVaue; Class = PromiseVaue; } else if (DebugEvaluation is DebugActiveBindingEvaluationResult) { const string ActiveBindingValue = "<active binding>"; var activeBinding = (DebugActiveBindingEvaluationResult)DebugEvaluation; Value = ActiveBindingValue; TypeName = ActiveBindingValue; Class = ActiveBindingValue; } if (Dimensions == null) Dimensions = new List<int>(); MaxChildrenCount = maxChildrenCount; }
public async Task <DebugEvaluationResult> EvaluateAsync( DebugStackFrame stackFrame, string expression, string name, string env, DebugEvaluationResultFields fields, int?reprMaxLength = null, CancellationToken cancellationToken = default(CancellationToken) ) { ThrowIfDisposed(); await TaskUtilities.SwitchToBackgroundThread(); await InitializeAsync(cancellationToken); env = env ?? stackFrame?.SysFrame ?? "NULL"; var code = Invariant($"rtvs:::toJSON(rtvs:::eval_and_describe({expression.ToRStringLiteral()}, {env},, {fields.ToRVector()},, {reprMaxLength}))"); var jEvalResult = await InvokeDebugHelperAsync <JObject>(code, cancellationToken); return(DebugEvaluationResult.Parse(stackFrame, name, jEvalResult)); }
private void OnGlobalEnvironmentEvaluated(DebugEvaluationResult result) { _globalEnv = new EvaluationWrapper(result); _mre.Set(); }
public bool CanShowDataGrid(DebugEvaluationResult evaluationResult) { var wrapper = new EvaluationWrapper(evaluationResult); return wrapper.CanShowDetail; }