From 197a9862b31add3e99ecc70e124e29f1fbf8c8af Mon Sep 17 00:00:00 2001 From: Ilya Kozhemyakin Date: Wed, 30 Apr 2025 19:50:30 +0400 Subject: [PATCH] =?UTF-8?q?=D0=92=D0=BE=D0=B7=D0=B2=D1=80=D0=B0=D1=82=20?= =?UTF-8?q?=D0=BA=20=D0=BE=D1=81=D0=BD=D0=BE=D0=B2=D0=BD=D0=BE=D0=B9=20?= =?UTF-8?q?=D1=84=D0=BE=D1=80=D0=BC=D0=B5=20(=D0=BD=D0=BE=20=D0=B5=D1=81?= =?UTF-8?q?=D1=82=D1=8C=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B0=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=D0=B5...)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Pf2eViewer/DatabaseViewerControl.cs | 29 +++++----- Pf2eViewer/MainViewForm.Designer.cs | 66 ++++++++++------------ Pf2eViewer/MainViewForm.cs | 20 +++---- Pf2eViewer/Pf2eViewer.csproj | 7 +-- Pf2eViewer/Program.cs | 11 +++- Pf2eViewer/Properties/Settings.Designer.cs | 26 +++++++++ Pf2eViewer/Properties/Settings.settings | 6 ++ Pf2eViewer/TestForm.Designer.cs | 5 +- 8 files changed, 99 insertions(+), 71 deletions(-) create mode 100644 Pf2eViewer/Properties/Settings.Designer.cs create mode 100644 Pf2eViewer/Properties/Settings.settings diff --git a/Pf2eViewer/DatabaseViewerControl.cs b/Pf2eViewer/DatabaseViewerControl.cs index dc42e9d..f75cdc1 100644 --- a/Pf2eViewer/DatabaseViewerControl.cs +++ b/Pf2eViewer/DatabaseViewerControl.cs @@ -1,4 +1,5 @@ using System.ComponentModel; +using System.Diagnostics.CodeAnalysis; using Pf2eModel; using Pf2eModel.Model.Base; using Pf2eModel.Model.Common.I18n; @@ -10,13 +11,7 @@ public partial class DatabaseViewerControl : UserControl { public readonly Pf2eDbContext Context = new(); - private int _perPage = 30; - - private int _page = 1; - - private EntityType _type; - - [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] public int PerPage { get => _perPage; @@ -26,6 +21,7 @@ public partial class DatabaseViewerControl : UserControl UpdateView(); } } + private int _perPage = 30; [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] public int Page @@ -37,14 +33,7 @@ public partial class DatabaseViewerControl : UserControl UpdateView(); } } - - [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] - public int Count { get; private set; } - - public int MaxPage => Convert.ToInt32(Math.Ceiling(1.0 * Count / PerPage)); - - [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] - public EntityView CurrentEntity { get; private set; } = null!; + private int _page = 1; [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] public EntityType Type @@ -56,6 +45,16 @@ public partial class DatabaseViewerControl : UserControl UpdateView(); } } + private EntityType _type; + + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public int Count { get; private set; } = 0; + + public int MaxPage => Convert.ToInt32(Math.Ceiling(1.0 * Count / PerPage)); + + [AllowNull] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public EntityView CurrentEntity { get; private set; } private bool _updating = false; diff --git a/Pf2eViewer/MainViewForm.Designer.cs b/Pf2eViewer/MainViewForm.Designer.cs index ad3241b..706cd27 100644 --- a/Pf2eViewer/MainViewForm.Designer.cs +++ b/Pf2eViewer/MainViewForm.Designer.cs @@ -1,4 +1,6 @@ -namespace Pf2eViewer; +using Microsoft.EntityFrameworkCore.Scaffolding.Metadata; + +namespace Pf2eViewer; partial class MainViewForm { @@ -31,23 +33,21 @@ partial class MainViewForm RootSplitContainer = new SplitContainer(); InnerSplitContainer = new SplitContainer(); TypesListBox = new ListBox(); - DatabaseViewer = new DatabaseViewerControl(); ResultSplitContainer = new SplitContainer(); - JsonWebView = new Microsoft.Web.WebView2.WinForms.WebView2(); + EntityTreeViewerControl = new Pf2eViewer.EntityTreeViewer.EntityTreeViewerControl(); + DatabaseViewer = new DatabaseViewerControl(); DescriptionTextBox = new TextBox(); - ((System.ComponentModel.ISupportInitialize) RootSplitContainer).BeginInit(); + ((System.ComponentModel.ISupportInitialize)RootSplitContainer).BeginInit(); RootSplitContainer.Panel1.SuspendLayout(); RootSplitContainer.Panel2.SuspendLayout(); RootSplitContainer.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize) InnerSplitContainer).BeginInit(); + ((System.ComponentModel.ISupportInitialize)InnerSplitContainer).BeginInit(); InnerSplitContainer.Panel1.SuspendLayout(); - InnerSplitContainer.Panel2.SuspendLayout(); InnerSplitContainer.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize) ResultSplitContainer).BeginInit(); + ((System.ComponentModel.ISupportInitialize)ResultSplitContainer).BeginInit(); ResultSplitContainer.Panel1.SuspendLayout(); ResultSplitContainer.Panel2.SuspendLayout(); ResultSplitContainer.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize) JsonWebView).BeginInit(); SuspendLayout(); // // RootSplitContainer @@ -79,32 +79,30 @@ partial class MainViewForm // InnerSplitContainer.Panel1 // InnerSplitContainer.Panel1.Controls.Add(TypesListBox); + InnerSplitContainer.Size = new Size(254, 688); + InnerSplitContainer.SplitterDistance = 102; + InnerSplitContainer.TabIndex = 1; // // InnerSplitContainer.Panel2 // InnerSplitContainer.Panel2.Controls.Add(DatabaseViewer); - InnerSplitContainer.Size = new Size(254, 688); - InnerSplitContainer.SplitterDistance = 102; - InnerSplitContainer.TabIndex = 1; // // TypesListBox // TypesListBox.Dock = DockStyle.Fill; TypesListBox.FormattingEnabled = true; - TypesListBox.ItemHeight = 15; TypesListBox.Location = new Point(0, 0); TypesListBox.Name = "TypesListBox"; TypesListBox.Size = new Size(254, 102); TypesListBox.TabIndex = 0; TypesListBox.SelectedIndexChanged += TypesListBox_SelectedIndexChanged; // - // EntityView + // DatabaseViewer // DatabaseViewer.Dock = DockStyle.Fill; DatabaseViewer.Location = new Point(0, 0); DatabaseViewer.Name = "DatabaseViewer"; - DatabaseViewer.Size = new Size(254, 582); - DatabaseViewer.TabIndex = 0; + DatabaseViewer.TabIndex = 1; // // ResultSplitContainer // @@ -114,38 +112,36 @@ partial class MainViewForm // // ResultSplitContainer.Panel1 // - ResultSplitContainer.Panel1.Controls.Add(JsonWebView); + ResultSplitContainer.Panel1.Controls.Add(EntityTreeViewerControl); // // ResultSplitContainer.Panel2 // ResultSplitContainer.Panel2.Controls.Add(DescriptionTextBox); ResultSplitContainer.Size = new Size(923, 688); - ResultSplitContainer.SplitterDistance = 467; + ResultSplitContainer.SplitterDistance = 382; ResultSplitContainer.TabIndex = 1; // - // JsonWebView + // EntityTreeViewerControl // - JsonWebView.AllowExternalDrop = true; - JsonWebView.CreationProperties = null; - JsonWebView.DefaultBackgroundColor = Color.White; - JsonWebView.Dock = DockStyle.Fill; - JsonWebView.Location = new Point(0, 0); - JsonWebView.Name = "JsonWebView"; - JsonWebView.Size = new Size(467, 688); - JsonWebView.TabIndex = 0; - JsonWebView.Visible = false; - JsonWebView.ZoomFactor = 1D; - JsonWebView.CoreWebView2InitializationCompleted += JsonWebView_CoreWebView2InitializationCompleted; + EntityTreeViewerControl.DepthSize = 20; + EntityTreeViewerControl.Dock = DockStyle.Fill; + EntityTreeViewerControl.EntityView = null; + EntityTreeViewerControl.ItemHeight = 20; + EntityTreeViewerControl.Location = new Point(0, 0); + EntityTreeViewerControl.Name = "EntityTreeViewerControl"; + EntityTreeViewerControl.Size = new Size(382, 688); + EntityTreeViewerControl.TabIndex = 0; // // DescriptionTextBox // DescriptionTextBox.Dock = DockStyle.Fill; + DescriptionTextBox.Font = new Font("Consolas", 9F); DescriptionTextBox.Location = new Point(0, 0); DescriptionTextBox.Multiline = true; DescriptionTextBox.Name = "DescriptionTextBox"; DescriptionTextBox.ReadOnly = true; DescriptionTextBox.ScrollBars = ScrollBars.Vertical; - DescriptionTextBox.Size = new Size(452, 688); + DescriptionTextBox.Size = new Size(537, 688); DescriptionTextBox.TabIndex = 0; // // MainViewForm @@ -158,18 +154,16 @@ partial class MainViewForm Text = "DataBaseViewer"; RootSplitContainer.Panel1.ResumeLayout(false); RootSplitContainer.Panel2.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize) RootSplitContainer).EndInit(); + ((System.ComponentModel.ISupportInitialize)RootSplitContainer).EndInit(); RootSplitContainer.ResumeLayout(false); InnerSplitContainer.Panel1.ResumeLayout(false); - InnerSplitContainer.Panel2.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize) InnerSplitContainer).EndInit(); + ((System.ComponentModel.ISupportInitialize)InnerSplitContainer).EndInit(); InnerSplitContainer.ResumeLayout(false); ResultSplitContainer.Panel1.ResumeLayout(false); ResultSplitContainer.Panel2.ResumeLayout(false); ResultSplitContainer.Panel2.PerformLayout(); - ((System.ComponentModel.ISupportInitialize) ResultSplitContainer).EndInit(); + ((System.ComponentModel.ISupportInitialize)ResultSplitContainer).EndInit(); ResultSplitContainer.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize) JsonWebView).EndInit(); ResumeLayout(false); } @@ -180,6 +174,6 @@ partial class MainViewForm private ListBox TypesListBox; private SplitContainer ResultSplitContainer; private TextBox DescriptionTextBox; - private Microsoft.Web.WebView2.WinForms.WebView2 JsonWebView; private DatabaseViewerControl DatabaseViewer; + private EntityTreeViewer.EntityTreeViewerControl EntityTreeViewerControl; } diff --git a/Pf2eViewer/MainViewForm.cs b/Pf2eViewer/MainViewForm.cs index bc525d6..f931a85 100644 --- a/Pf2eViewer/MainViewForm.cs +++ b/Pf2eViewer/MainViewForm.cs @@ -1,4 +1,5 @@ -using Newtonsoft.Json; +using System.Diagnostics.CodeAnalysis; +using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Serialization; using Pf2eModel; @@ -16,7 +17,8 @@ public partial class MainViewForm : Form public readonly string JsonViewerHtml; - public readonly EntityView Viewer; + [AllowNull] + public readonly EntityView Viewer = null; public MainViewForm() { @@ -67,7 +69,8 @@ public partial class MainViewForm : Form string json = result[..^1] + $",\"SubEntity\":{subResult}}}"; - RenderJson(json); + EntityTreeViewerControl.EntityView = newEntity; + // RenderJson(json); DescriptionTextBox.Text = newEntity.Entity!.Description; } @@ -85,6 +88,7 @@ public partial class MainViewForm : Form public void RenderJson(string json) { + /* if (JsonWebView.CoreWebView2 == null) { JsonWebView.EnsureCoreWebView2Async(); @@ -93,14 +97,6 @@ public partial class MainViewForm : Form string html = JsonViewerHtml.Replace("{JSON}", json); JsonWebView.CoreWebView2.NavigateToString(html); - } - - private void JsonWebView_CoreWebView2InitializationCompleted( - object sender, - Microsoft.Web.WebView2.Core.CoreWebView2InitializationCompletedEventArgs e - ) - { - JsonWebView.Visible = true; - DatabaseViewer_EntityChange(DatabaseViewer.CurrentEntity); + */ } } diff --git a/Pf2eViewer/Pf2eViewer.csproj b/Pf2eViewer/Pf2eViewer.csproj index 405246c..d0324d8 100644 --- a/Pf2eViewer/Pf2eViewer.csproj +++ b/Pf2eViewer/Pf2eViewer.csproj @@ -8,16 +8,15 @@ - - - - + + SettingsSingleFileGenerator + Always diff --git a/Pf2eViewer/Program.cs b/Pf2eViewer/Program.cs index 2e0c427..7e3bb13 100644 --- a/Pf2eViewer/Program.cs +++ b/Pf2eViewer/Program.cs @@ -11,7 +11,14 @@ internal static class Program // To customize application configuration such as set high DPI settings or default font, // see https://aka.ms/applicationconfiguration. ApplicationConfiguration.Initialize(); - // Application.Run(new MainViewForm()); - Application.Run(new TestForm()); + + Application.SetHighDpiMode(HighDpiMode.SystemAware); + +#pragma warning disable WFO5001 + Application.SetColorMode(SystemColorMode.System); +#pragma warning restore WFO5001 + + Application.Run(new MainViewForm() { StartPosition = FormStartPosition.CenterScreen }); + // Application.Run(new TestForm() { StartPosition = FormStartPosition.CenterScreen }); } } diff --git a/Pf2eViewer/Properties/Settings.Designer.cs b/Pf2eViewer/Properties/Settings.Designer.cs new file mode 100644 index 0000000..81e8c50 --- /dev/null +++ b/Pf2eViewer/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace Pf2eViewer.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.13.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/Pf2eViewer/Properties/Settings.settings b/Pf2eViewer/Properties/Settings.settings new file mode 100644 index 0000000..049245f --- /dev/null +++ b/Pf2eViewer/Properties/Settings.settings @@ -0,0 +1,6 @@ + + + + + + diff --git a/Pf2eViewer/TestForm.Designer.cs b/Pf2eViewer/TestForm.Designer.cs index 4a47b6d..50d3864 100644 --- a/Pf2eViewer/TestForm.Designer.cs +++ b/Pf2eViewer/TestForm.Designer.cs @@ -36,7 +36,8 @@ partial class TestForm // // RandomButton // - RandomButton.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; + RandomButton.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; + RandomButton.FlatStyle = FlatStyle.System; RandomButton.Location = new Point(12, 12); RandomButton.Name = "RandomButton"; RandomButton.Size = new Size(426, 23); @@ -47,7 +48,7 @@ partial class TestForm // // entityTreeViewerControl1 // - entityTreeViewerControl1.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; + entityTreeViewerControl1.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; entityTreeViewerControl1.DepthSize = 20; entityTreeViewerControl1.EntityView = null; entityTreeViewerControl1.Font = new Font("Consolas", 9F);