Compare commits

..
3 Commits
12 changed files with 129 additions and 76 deletions
+1 -1
View File
@@ -2,7 +2,7 @@
<PropertyGroup>
<LangVersion>13.0</LangVersion>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
+1 -1
View File
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<GenerateRuntimeConfigurationFiles>True</GenerateRuntimeConfigurationFiles>
+19 -14
View File
@@ -1,4 +1,6 @@
using Pf2eModel;
using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
using Pf2eModel;
using Pf2eModel.Model.Base;
using Pf2eModel.Model.Common.I18n;
using Pf2eModel.Model.Enum;
@@ -9,12 +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.Hidden)]
public int PerPage
{
get => _perPage;
@@ -24,7 +21,9 @@ public partial class DatabaseViewerControl : UserControl
UpdateView();
}
}
private int _perPage = 30;
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public int Page
{
get => _page;
@@ -34,13 +33,9 @@ public partial class DatabaseViewerControl : UserControl
UpdateView();
}
}
private int _page = 1;
public int Count { get; private set; }
public int MaxPage => Convert.ToInt32(Math.Ceiling(1.0 * Count / PerPage));
public EntityView CurrentEntity { get; private set; } = null!;
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public EntityType Type
{
get => _type;
@@ -50,8 +45,18 @@ public partial class DatabaseViewerControl : UserControl
UpdateView();
}
}
private EntityType _type;
internal bool _updating = false;
[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;
public DatabaseViewerControl()
{
@@ -1,9 +1,10 @@
using System.Collections.Generic;
using System.ComponentModel;
using Pf2eViewer.EntityTreeViewer;
namespace Pf2eViewer.EntityTreeViewer;
public sealed partial class EntityTreeViewerControl : UserControl
public partial class EntityTreeViewerControl : UserControl
{
private int _itemHeight = 20;
@@ -11,6 +12,7 @@ public partial class EntityTreeViewerControl : UserControl
private int _depthSize = 20;
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public int ItemHeight
{
get => _itemHeight;
@@ -21,6 +23,7 @@ public partial class EntityTreeViewerControl : UserControl
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public EntityView? EntityView
{
get => _entityView;
@@ -31,6 +34,7 @@ public partial class EntityTreeViewerControl : UserControl
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public int DepthSize
{
get => _depthSize;
@@ -41,6 +45,7 @@ public partial class EntityTreeViewerControl : UserControl
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public int NameWidth { get; private set; } = 200;
private readonly List<StructureField> _rows = [];
@@ -90,7 +95,6 @@ public partial class EntityTreeViewerControl : UserControl
ContentPanel.Controls.Clear();
ContentPanel.Controls.AddRange(_viewerRows.ToArray<Control>());
ContentPanel.Controls.AddRange(ViewerRows.ToArray());
UpdateView();
}
@@ -125,6 +129,7 @@ public partial class EntityTreeViewerControl : UserControl
}
private void BuildLadder(List<EntityTreeViewerRow> rows)
{
List<LadderType> lastLadder = [];
ContentPanel.VerticalScroll.Visible = true;
@@ -1,4 +1,6 @@
using System.Diagnostics.CodeAnalysis;
using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
using System.Windows.Markup;
using FontAwesome.Sharp;
namespace Pf2eViewer.EntityTreeViewer;
@@ -11,6 +13,7 @@ internal sealed partial class EntityTreeViewerRow : UserControl
public int ViewIndex = 0;
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public Bitmap IconCache
{
get
@@ -25,6 +28,7 @@ internal sealed partial class EntityTreeViewerRow : UserControl
}
private Bitmap? _iconCache;
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public List<LadderType> Ladder
{
get => _ladder;
@@ -36,26 +40,36 @@ internal sealed partial class EntityTreeViewerRow : UserControl
}
private List<LadderType> _ladder = [];
[AllowNull]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public override Font Font
{
get => ParentControl.Font;
set => ParentControl.Font = value;
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public override Color ForeColor
{
get => ParentControl.ForeColor;
set => ParentControl.ForeColor = value;
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public override Color BackColor
{
get => ParentControl.BackColor;
set => ParentControl.BackColor = value;
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public int ItemHeight
{
get => ParentControl.ItemHeight;
set => ParentControl.ItemHeight = value;
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public int DepthSize
{
get => ParentControl.ItemHeight;
+30 -36
View File
@@ -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;
}
+8 -12
View File
@@ -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);
*/
}
}
+4 -5
View File
@@ -1,23 +1,22 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows</TargetFramework>
<TargetFramework>net9.0-windows7.0</TargetFramework>
<Nullable>enable</Nullable>
<UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="FontAwesome.Sharp" Version="6.6.0" />
<PackageReference Include="Microsoft.Web.WebView2" Version="1.0.3179.45" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Pf2eModel\Pf2eModel.csproj" />
</ItemGroup>
<ItemGroup>
<Folder Include="Properties\" />
</ItemGroup>
<ItemGroup>
<None Update="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
</None>
<None Update="Resources\json-viewer.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
+9 -2
View File
@@ -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 });
}
}
+26
View File
@@ -0,0 +1,26 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Этот код создан программой.
// Исполняемая версия:4.0.30319.42000
//
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
// повторной генерации кода.
// </auto-generated>
//------------------------------------------------------------------------------
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;
}
}
}
}
+6
View File
@@ -0,0 +1,6 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
</SettingsFile>
+3 -2
View File
@@ -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);