diff --git a/Common/Common.csproj b/Common/Common.csproj index a7490a8..4c29373 100644 --- a/Common/Common.csproj +++ b/Common/Common.csproj @@ -12,6 +12,8 @@ true Some advanced visual controls and utilities for Windows app. true + true + Logo.ico logo.png ui tiles lwa diff --git a/Materials/WinKit.ico b/Common/Logo.ico similarity index 100% rename from Materials/WinKit.ico rename to Common/Logo.ico diff --git a/Console/Console.csproj b/Console/Console.csproj index 38fb017..0883f53 100644 --- a/Console/Console.csproj +++ b/Console/Console.csproj @@ -10,6 +10,8 @@ The console utilities and rich user interface console. https://github.com/nuscien/trivial/wiki/console true + true + Logo.ico cmd.png https://github.com/nuscien/trivial/raw/master/Materials/logo.png console diff --git a/Console/Logo.ico b/Console/Logo.ico new file mode 100644 index 0000000..516294d Binary files /dev/null and b/Console/Logo.ico differ diff --git a/Debugger/Helper.cs b/Debugger/Helper.cs index 01aa808..5edea2b 100644 --- a/Debugger/Helper.cs +++ b/Debugger/Helper.cs @@ -272,7 +272,7 @@ internal static void AddKeyValuePairs(BaseJsonValueNode json, UIElementCollectio kindElement.Value = InternalResource.Number; if (json is IJsonValueNode l) { - kindElement.Value = l.Value <= JsonIntegerNode.MaxSafeInteger && l.Value >= JsonIntegerNode.MinSafeInteger ? "Integer" : "Integer (unsafe)"; + kindElement.Value = l.Value <= JsonIntegerNode.MaxSafeInteger && l.Value >= JsonIntegerNode.MinSafeInteger ? InternalResource.Integer : $"{InternalResource.Integer} ({InternalResource.Unsafe})"; AddKeyValuePair(panel, InternalResource.Value, l.Value.ToString()); AddLocaleString(panel, l.Value); } diff --git a/Debugger/InternalResource.Designer.cs b/Debugger/InternalResource.Designer.cs index 3d4a670..d369ddc 100644 --- a/Debugger/InternalResource.Designer.cs +++ b/Debugger/InternalResource.Designer.cs @@ -96,6 +96,15 @@ internal static string Comment { } } + /// + /// 查找类似 Copy 的本地化字符串。 + /// + internal static string Copy { + get { + return ResourceManager.GetString("Copy", resourceCulture); + } + } + /// /// 查找类似 Count 的本地化字符串。 /// @@ -249,6 +258,15 @@ internal static string Undefined { } } + /// + /// 查找类似 Unsafe 的本地化字符串。 + /// + internal static string Unsafe { + get { + return ResourceManager.GetString("Unsafe", resourceCulture); + } + } + /// /// 查找类似 Value 的本地化字符串。 /// diff --git a/Debugger/InternalResource.en.resx b/Debugger/InternalResource.en.resx index e34a45f..2b0320d 100644 --- a/Debugger/InternalResource.en.resx +++ b/Debugger/InternalResource.en.resx @@ -183,4 +183,10 @@ False + + Unsafe + + + Copy + \ No newline at end of file diff --git a/Debugger/InternalResource.resx b/Debugger/InternalResource.resx index 8189fb1..7a9ac2b 100644 --- a/Debugger/InternalResource.resx +++ b/Debugger/InternalResource.resx @@ -183,4 +183,10 @@ False + + Unsafe + + + Copy + \ No newline at end of file diff --git a/Debugger/InternalResource.zh-Hans.resx b/Debugger/InternalResource.zh-Hans.resx index 3062e72..53175e7 100644 --- a/Debugger/InternalResource.zh-Hans.resx +++ b/Debugger/InternalResource.zh-Hans.resx @@ -183,4 +183,10 @@ + + 不安全 + + + 复制 + \ No newline at end of file diff --git a/Debugger/JsonDebuggerVisualizer.cs b/Debugger/JsonDebuggerVisualizer.cs new file mode 100644 index 0000000..8e41d9d --- /dev/null +++ b/Debugger/JsonDebuggerVisualizer.cs @@ -0,0 +1,75 @@ +using Microsoft.VisualStudio.DebuggerVisualizers; +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Runtime.InteropServices.ComTypes; +using System.Text; +using System.Text.Json; +using System.Text.RegularExpressions; +using System.Threading; +using System.Threading.Tasks; +using Trivial.Collection; +using Trivial.Data; +using Trivial.Diagnostics; +using Trivial.Reflection; +using Trivial.Text; + +#if NETFRAMEWORK +[assembly: System.Diagnostics.DebuggerVisualizer( +typeof(JsonDebuggerVisualizer), +typeof(JsonObjectSource), +Target = typeof(JsonObjectNode), +Description = "JSON object node visualizer")] +[assembly: System.Diagnostics.DebuggerVisualizer( +typeof(JsonDebuggerVisualizer), +typeof(JsonObjectSource), +Target = typeof(JsonArrayNode), +Description = "JSON array node visualizer")] +#endif + +namespace Trivial.Diagnostics; + +#if NETFRAMEWORK +/// +/// The Visual Studio debugger visualizer for JSON. +/// +internal class JsonDebuggerVisualizer : DialogDebuggerVisualizer +{ + /// + /// Initializes a new instance of the JsonDebuggerVisualizer class. + /// + public JsonDebuggerVisualizer() + : base(FormatterPolicy.Json) + { + } + + /// + protected override void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider) + { + //var data = (objectProvider as IVisualizerObjectProvider3)?.GetObject(); + var data = (objectProvider as IVisualizerObjectProvider3)?.GetObject(); + var form = new JsonViewerWindow(); + form.Set(data); + form.ShowDialog(); + } +} +#endif + +/// +/// The visualizer object source for JSON. +/// +internal class JsonObjectSource : VisualizerObjectSource +{ + /// + public override void GetData(object target, Stream outgoingData) + { + var o = target as BaseJsonValueNode; + var writer = new Utf8JsonWriter(outgoingData); + o.WriteTo(writer); + } + + /// + public override object CreateReplacementObject(object target, Stream incomingData) + => JsonSerializer.Deserialize(incomingData); +} diff --git a/Debugger/JsonObjectNodeDebuggerVisualizer.cs b/Debugger/JsonObjectNodeDebuggerVisualizer.cs deleted file mode 100644 index d1cd81d..0000000 --- a/Debugger/JsonObjectNodeDebuggerVisualizer.cs +++ /dev/null @@ -1,51 +0,0 @@ -#if NETFRAMEWORK -using Microsoft.VisualStudio.DebuggerVisualizers; -using System; -using System.Collections; -using System.Collections.Generic; -using System.Runtime.InteropServices.ComTypes; -using System.Text; -using System.Text.Json; -using System.Threading; -using System.Threading.Tasks; -using Trivial.Collection; -using Trivial.Data; -using Trivial.Reflection; -using Trivial.Text; - -[assembly: System.Diagnostics.DebuggerVisualizer( -typeof(Trivial.Diagnostics.JsonObjectNodeDebuggerVisualizer), -typeof(VisualizerObjectSource), -Target = typeof(JsonObjectNode), -Description = "JSON object node visualizer")] -[assembly: System.Diagnostics.DebuggerVisualizer( -typeof(Trivial.Diagnostics.JsonObjectNodeDebuggerVisualizer), -typeof(VisualizerObjectSource), -Target = typeof(JsonArrayNode), -Description = "JSON array node visualizer")] - -namespace Trivial.Diagnostics; - -/// -/// The Visual Studio debugger visualizer for JSON object node. -/// -public class JsonObjectNodeDebuggerVisualizer : DialogDebuggerVisualizer -{ - /// - /// Initializes a new instance of the JsonObjectNodeDebuggerVisualizer class. - /// - public JsonObjectNodeDebuggerVisualizer() - : base(FormatterPolicy.Json) - { - } - - /// - protected override void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider) - { - var data = (objectProvider as IVisualizerObjectProvider3)?.GetObject(); - var form = new JsonViewerWindow(); - form.Set(data); - form.ShowDialog(); - } -} -#endif diff --git a/Debugger/JsonViewer.xaml b/Debugger/JsonViewer.xaml index 32dc6ab..0b6d61f 100644 --- a/Debugger/JsonViewer.xaml +++ b/Debugger/JsonViewer.xaml @@ -12,7 +12,7 @@ -