Esempio n. 1
0
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            var vm = value as TabVM;
            var s  = parameter as string;

            if (vm == null || s == null)
            {
                return(null);
            }

            var gen     = ColorizedTextElementProvider.Create(vm.Owner.Settings.SyntaxHighlight);
            var printer = new TabPrinter(gen.Output);

            if (StringComparer.OrdinalIgnoreCase.Equals(s, "Name"))
            {
                printer.WriteName(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "Module"))
            {
                printer.WriteModule(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "Path"))
            {
                printer.WritePath(vm);
            }
            else
            {
                return(null);
            }

            return(gen.CreateResult(true));
        }
Esempio n. 2
0
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            var vm = value as ICallStackFrameVM;

            if (vm == null)
            {
                return(null);
            }
            var s = parameter as string;

            if (s == null)
            {
                return(null);
            }

            var gen = ColorizedTextElementProvider.Create(vm.Context.SyntaxHighlight);

            if (StringComparer.OrdinalIgnoreCase.Equals(s, "Name"))
            {
                CreateContent(gen.Output, vm.CachedOutput, vm.Context.SyntaxHighlight);
            }
            else
            {
                return(null);
            }

            return(gen.CreateResult(true));
        }
Esempio n. 3
0
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            try {
                var flags = WriteObjectFlags.None;
                if (parameter != null)
                {
                    foreach (var c in (string)parameter)
                    {
                        if (c == 's')
                        {
                            flags |= WriteObjectFlags.ShortInstruction;
                        }
                    }
                }

                var gen = ColorizedTextElementProvider.Create(true);
                BodyUtils.WriteObject(gen.Output, value, flags);
                return(gen.CreateResult(true, true));
            }
            catch (Exception ex) {
                Debug.Fail(ex.ToString());
            }

            if (value == null)
            {
                return(string.Empty);
            }
            return(value.ToString());
        }
Esempio n. 4
0
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            var vm = value as ValueVM;
            var s  = parameter as string;

            if (vm == null || s == null)
            {
                return(null);
            }

            var gen     = ColorizedTextElementProvider.Create(vm.PrinterContext.SyntaxHighlight);
            var printer = new ValuePrinter(gen.Output, vm.PrinterContext.UseHexadecimal);

            if (StringComparer.OrdinalIgnoreCase.Equals(s, "Name"))
            {
                printer.WriteName(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "Value"))
            {
                printer.WriteValue(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "Type"))
            {
                printer.WriteType(vm);
            }
            else
            {
                return(null);
            }

            return(gen.CreateResult(true));
        }
Esempio n. 5
0
        object CreateUI(object o, bool includeNamespace)
        {
            var gen    = ColorizedTextElementProvider.Create(Context.SyntaxHighlight);
            var output = gen.Output;

            CreateUI(gen.Output, o, includeNamespace);
            return(gen.CreateResult());
        }
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            var vm = value as ProcessVM;
            var s  = parameter as string;

            if (vm == null || s == null)
            {
                return(null);
            }

            var gen     = ColorizedTextElementProvider.Create(vm.Context.SyntaxHighlight);
            var printer = new ProcessPrinter(gen.Output, false);
            HorizontalAlignment?horizAlign = null;

            if (StringComparer.OrdinalIgnoreCase.Equals(s, "FullPath"))
            {
                printer.WriteFullPath(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "Filename"))
            {
                printer.WriteFilename(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "PID"))
            {
                printer.WritePID(vm);
                horizAlign = HorizontalAlignment.Right;
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "CLRVersion"))
            {
                printer.WriteCLRVersion(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "Type"))
            {
                printer.WriteType(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "Machine"))
            {
                printer.WriteMachine(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "Title"))
            {
                printer.WriteTitle(vm);
            }
            else
            {
                return(null);
            }

            var tb = gen.CreateResult(true);

            if (horizAlign != null)
            {
                tb.HorizontalAlignment = horizAlign.Value;
            }
            return(tb);
        }
Esempio n. 7
0
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            var vm = value as BreakpointVM;

            if (vm == null)
            {
                return(null);
            }
            var s = parameter as string;

            if (s == null)
            {
                return(null);
            }

            if (StringComparer.OrdinalIgnoreCase.Equals(s, "Image"))
            {
                string img = vm.IsEnabled ? "Breakpoint" : "DisabledBreakpoint";
                return(vm.Context.ImageManager.GetImage(new ImageReference(GetType().Assembly, img), BackgroundType.GridViewItem));
            }

            var gen     = ColorizedTextElementProvider.Create(vm.Context.SyntaxHighlight);
            var printer = new BreakpointPrinter(gen.Output, vm.Context.UseHexadecimal, vm.Context.Decompiler);

            if (StringComparer.OrdinalIgnoreCase.Equals(s, "Name"))
            {
                printer.WriteName(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "Assembly"))
            {
                printer.WriteAssembly(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "Module"))
            {
                printer.WriteModule(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "File"))
            {
                printer.WriteFile(vm);
            }
            else
            {
                return(null);
            }

            return(gen.CreateResult(true));
        }
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            var vm = value as BreakpointVM;

            if (vm == null)
            {
                return(null);
            }
            var s = parameter as string;

            if (s == null)
            {
                return(null);
            }

            var gen     = ColorizedTextElementProvider.Create(vm.Context.SyntaxHighlight);
            var printer = new BreakpointPrinter(gen.Output, vm.Context.UseHexadecimal, vm.Context.Decompiler);

            if (StringComparer.OrdinalIgnoreCase.Equals(s, "Name"))
            {
                printer.WriteName(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "Assembly"))
            {
                printer.WriteAssembly(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "Module"))
            {
                printer.WriteModule(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "File"))
            {
                printer.WriteFile(vm);
            }
            else
            {
                return(null);
            }

            return(gen.CreateResult(true));
        }
Esempio n. 9
0
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            var vm = value as ICallStackFrameVM;

            if (vm == null)
            {
                return(null);
            }
            var s = parameter as string;

            if (s == null)
            {
                return(null);
            }

            if (StringComparer.OrdinalIgnoreCase.Equals(s, "Image"))
            {
                if (vm.Index == 0)
                {
                    return(vm.Context.ImageManager.GetImage(new ImageReference(GetType().Assembly, "CurrentStatement"), BackgroundType.GridViewItem));
                }
                if (vm.IsCurrentFrame)
                {
                    return(vm.Context.ImageManager.GetImage(new ImageReference(GetType().Assembly, "CallReturn"), BackgroundType.GridViewItem));
                }
                return(null);
            }

            var gen = ColorizedTextElementProvider.Create(vm.Context.SyntaxHighlight);

            if (StringComparer.OrdinalIgnoreCase.Equals(s, "Name"))
            {
                CreateContent(gen.Output, vm.CachedOutput, vm.Context.SyntaxHighlight);
            }
            else
            {
                return(null);
            }

            return(gen.CreateResult(true));
        }
Esempio n. 10
0
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            var vm = value as ModuleVM;
            var s  = parameter as string;

            if (vm == null || s == null)
            {
                return(null);
            }

            if (StringComparer.OrdinalIgnoreCase.Equals(s, "Image"))
            {
                return(vm.Context.ImageManager.GetImage(new ImageReference(GetType().Assembly, vm.IsExe ? "AssemblyExe" : "Module"), BackgroundType.GridViewItem));
            }

            var gen     = ColorizedTextElementProvider.Create(vm.Context.SyntaxHighlight);
            var printer = new ModulePrinter(gen.Output, vm.Context.UseHexadecimal, vm.Context.TheDebugger.Debugger);

            if (StringComparer.OrdinalIgnoreCase.Equals(s, "Name"))
            {
                printer.WriteName(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "Path"))
            {
                printer.WritePath(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "Optimized"))
            {
                printer.WriteOptimized(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "Dynamic"))
            {
                printer.WriteDynamic(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "InMemory"))
            {
                printer.WriteInMemory(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "Order"))
            {
                printer.WriteOrder(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "Version"))
            {
                printer.WriteVersion(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "Timestamp"))
            {
                printer.WriteTimestamp(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "Address"))
            {
                printer.WriteAddress(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "Process"))
            {
                printer.WriteProcess(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "AppDomain"))
            {
                printer.WriteAppDomain(vm);
            }
            else
            {
                return(null);
            }

            return(gen.CreateResult(true));
        }
Esempio n. 11
0
 public CodeToolTipWriter(bool syntaxHighlight)
 {
     this.provider = ColorizedTextElementProvider.Create(syntaxHighlight);
 }
Esempio n. 12
0
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            var vm = value as ThreadVM;
            var s  = parameter as string;

            if (vm == null || s == null)
            {
                return(null);
            }

            if (StringComparer.OrdinalIgnoreCase.Equals(s, "CurrentImage"))
            {
                if (vm.IsCurrent)
                {
                    return(vm.Context.ImageManager.GetImage(new ImageReference(GetType().Assembly, "CurrentStatement"), BackgroundType.GridViewItem));
                }
                if (vm.Type == ThreadType.Main)
                {
                    return(vm.Context.ImageManager.GetImage(new ImageReference(GetType().Assembly, "DraggedCurrentInstructionPointer"), BackgroundType.GridViewItem));
                }
                return(null);
            }
            if (StringComparer.OrdinalIgnoreCase.Equals(s, "CategoryImage"))
            {
                switch (vm.Type)
                {
                case ThreadType.Unknown:
                case ThreadType.Terminated:
                    return(vm.Context.ImageManager.GetImage(new ImageReference(GetType().Assembly, "QuestionMark"), BackgroundType.GridViewItem));

                case ThreadType.Main:
                    return(vm.Context.ImageManager.GetImage(new ImageReference(GetType().Assembly, "Thread"), BackgroundType.GridViewItem));

                case ThreadType.BGCOrFinalizer:
                case ThreadType.ThreadPool:
                case ThreadType.Worker:
                    return(vm.Context.ImageManager.GetImage(new ImageReference(GetType().Assembly, "Process"), BackgroundType.GridViewItem));

                default:
                    Debug.Fail(string.Format("Unknown thread type: {0}", vm.Type));
                    goto case ThreadType.Unknown;
                }
            }

            var gen     = ColorizedTextElementProvider.Create(vm.Context.SyntaxHighlight);
            var printer = new ThreadPrinter(gen.Output, vm.Context.UseHexadecimal, vm.Context.TheDebugger.Debugger);

            if (StringComparer.OrdinalIgnoreCase.Equals(s, "Id"))
            {
                printer.WriteId(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "ManagedId"))
            {
                printer.WriteManagedId(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "CategoryText"))
            {
                printer.WriteCategory(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "Name"))
            {
                printer.WriteName(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "Location"))
            {
                printer.WriteLocation(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "Priority"))
            {
                printer.WritePriority(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "AffinityMask"))
            {
                printer.WriteAffinityMask(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "Suspended"))
            {
                printer.WriteSuspended(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "Process"))
            {
                printer.WriteProcess(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "AppDomain"))
            {
                printer.WriteAppDomain(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "UserState"))
            {
                printer.WriteUserState(vm);
            }
            else
            {
                return(null);
            }

            return(gen.CreateResult(true));
        }
Esempio n. 13
0
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            var vm = value as ThreadVM;
            var s  = parameter as string;

            if (vm == null || s == null)
            {
                return(null);
            }

            var gen     = ColorizedTextElementProvider.Create(vm.Context.SyntaxHighlight);
            var printer = new ThreadPrinter(gen.Output, vm.Context.UseHexadecimal, vm.Context.TheDebugger.Debugger);

            if (StringComparer.OrdinalIgnoreCase.Equals(s, "Id"))
            {
                printer.WriteId(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "ManagedId"))
            {
                printer.WriteManagedId(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "CategoryText"))
            {
                printer.WriteCategory(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "Name"))
            {
                printer.WriteName(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "Location"))
            {
                printer.WriteLocation(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "Priority"))
            {
                printer.WritePriority(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "AffinityMask"))
            {
                printer.WriteAffinityMask(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "Suspended"))
            {
                printer.WriteSuspended(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "Process"))
            {
                printer.WriteProcess(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "AppDomain"))
            {
                printer.WriteAppDomain(vm);
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(s, "UserState"))
            {
                printer.WriteUserState(vm);
            }
            else
            {
                return(null);
            }

            return(gen.CreateResult(true));
        }