コード例 #1
0
ファイル: Commands.cs プロジェクト: xornand/dnSpy
        protected override void Execute(LocalsCtxMenuContext context)
        {
            var output = new PlainTextOutput();

            foreach (var vm in context.SelectedItems)
            {
                //TODO: Break if it takes too long and the user cancels
                var printer = new ValuePrinter(output, DebuggerSettings.Instance.UseHexadecimal);
                printer.WriteExpander(vm);
                output.Write('\t', TextTokenType.Text);
                // Add an extra here to emulate VS output
                output.Write('\t', TextTokenType.Text);
                printer.WriteName(vm);
                output.Write('\t', TextTokenType.Text);
                printer.WriteValue(vm);
                output.Write('\t', TextTokenType.Text);
                printer.WriteType(vm);
                output.WriteLine();
            }
            var s = output.ToString();

            if (s.Length > 0)
            {
                Clipboard.SetText(s);
            }
        }
コード例 #2
0
ファイル: Commands.cs プロジェクト: formylover/dnSpy-1
        public override void Execute(LocalsCtxMenuContext context)
        {
            var output = new StringBuilderTextColorOutput();

            foreach (var vm in context.SelectedItems)
            {
                //TODO: Break if it takes too long and the user cancels
                var printer = new ValuePrinter(output, debuggerSettings.UseHexadecimal);
                printer.WriteExpander(vm);
                output.Write(BoxedTextColor.Text, "\t");
                // Add an extra here to emulate VS output
                output.Write(BoxedTextColor.Text, "\t");
                printer.WriteName(vm);
                output.Write(BoxedTextColor.Text, "\t");
                printer.WriteValue(vm);
                output.Write(BoxedTextColor.Text, "\t");
                printer.WriteType(vm);
                output.WriteLine();
            }
            var s = output.ToString();

            if (s.Length > 0)
            {
                try {
                    Clipboard.SetText(s);
                }
                catch (ExternalException) { }
            }
        }
コード例 #3
0
		public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
			var vm = value as ValueVM;
			var tag = parameter as string;
			if (vm == null || tag == null)
				return null;

			var writer = Cache.GetWriter();
			try {
				var printer = new ValuePrinter(writer, vm.PrinterContext.UseHexadecimal);
				if (tag == PredefinedTextClassifierTags.LocalsWindowName)
					printer.WriteName(vm);
				else if (tag == PredefinedTextClassifierTags.LocalsWindowValue)
					printer.WriteValue(vm);
				else if (tag == PredefinedTextClassifierTags.LocalsWindowType)
					printer.WriteType(vm);
				else
					return null;

				var context = new TextClassifierContext(writer.Text, tag, vm.PrinterContext.SyntaxHighlight, writer.Colors);
				return vm.PrinterContext.TextElementProvider.CreateTextElement(vm.PrinterContext.ClassificationFormatMap, context, ContentTypes.LocalsWindow, TextElementFlags.FilterOutNewLines | TextElementFlags.CharacterEllipsis);
			}
			finally {
				Cache.FreeWriter(writer);
			}
		}
コード例 #4
0
ファイル: LocalColumnConverter.cs プロジェクト: ottrur/dnSpy
        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     = UISyntaxHighlighter.Create(DebuggerSettings.Instance.SyntaxHighlightLocals);
            var printer = new ValuePrinter(gen.TextOutput, DebuggerSettings.Instance.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.CreateTextBlock(true));
        }
コード例 #5
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));
        }
コード例 #6
0
ファイル: Commands.cs プロジェクト: ottrur/dnSpy
		protected override void Execute(LocalsCtxMenuContext context) {
			var output = new PlainTextOutput();
			foreach (var vm in context.SelectedItems) {
				//TODO: Break if it takes too long and the user cancels
				var printer = new ValuePrinter(output, DebuggerSettings.Instance.UseHexadecimal);
				printer.WriteValue(vm);
				if (context.SelectedItems.Length > 1)
					output.WriteLine();
			}
			var s = output.ToString();
			if (s.Length > 0)
				Clipboard.SetText(s);
		}
コード例 #7
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 = UISyntaxHighlighter.Create(DebuggerSettings.Instance.SyntaxHighlightLocals);
			var printer = new ValuePrinter(gen.TextOutput, DebuggerSettings.Instance.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.CreateTextBlock(true);
		}
コード例 #8
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 = UISyntaxHighlighter.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);
		}
コード例 #9
0
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            var vm  = value as ValueVM;
            var tag = parameter as string;

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

            var writer = Cache.GetWriter();

            try {
                var printer = new ValuePrinter(writer, vm.PrinterContext.UseHexadecimal);
                if (tag == PredefinedTextClassifierTags.LocalsWindowName)
                {
                    printer.WriteName(vm);
                }
                else if (tag == PredefinedTextClassifierTags.LocalsWindowValue)
                {
                    printer.WriteValue(vm);
                }
                else if (tag == PredefinedTextClassifierTags.LocalsWindowType)
                {
                    printer.WriteType(vm);
                }
                else
                {
                    return(null);
                }

                var context = new TextClassifierContext(writer.Text, tag, vm.PrinterContext.SyntaxHighlight, writer.Colors);
                return(vm.PrinterContext.TextElementProvider.CreateTextElement(vm.PrinterContext.ClassificationFormatMap, context, ContentTypes.LocalsWindow, TextElementFlags.FilterOutNewLines | TextElementFlags.CharacterEllipsis));
            }
            finally {
                Cache.FreeWriter(writer);
            }
        }
コード例 #10
0
        public override void Execute(LocalsCtxMenuContext context)
        {
            var output = new NoSyntaxHighlightOutput();

            foreach (var vm in context.SelectedItems)
            {
                //TODO: Break if it takes too long and the user cancels
                var printer = new ValuePrinter(output, debuggerSettings.UseHexadecimal);
                printer.WriteValue(vm);
                if (context.SelectedItems.Length > 1)
                {
                    output.WriteLine();
                }
            }
            var s = output.ToString();

            if (s.Length > 0)
            {
                try {
                    Clipboard.SetText(s);
                }
                catch (ExternalException) { }
            }
        }