Обновление отображения
This commit is contained in:
+20
-112
@@ -1,6 +1,4 @@
|
||||
using System.Windows.Forms;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Converters;
|
||||
using Newtonsoft.Json.Serialization;
|
||||
using Pf2eModel;
|
||||
@@ -9,7 +7,6 @@ using Pf2eModel.Model.Base;
|
||||
using Pf2eModel.Model.Common.I18n;
|
||||
using Pf2eModel.Model.Enum;
|
||||
using Pf2eViewer.Converters;
|
||||
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
|
||||
|
||||
namespace Pf2eViewer;
|
||||
|
||||
@@ -19,7 +16,7 @@ public partial class MainViewForm : Form
|
||||
|
||||
public readonly string JsonViewerHtml;
|
||||
|
||||
public readonly DatabaseViewer Viewer = new();
|
||||
public readonly EntityView Viewer;
|
||||
|
||||
public MainViewForm()
|
||||
{
|
||||
@@ -27,16 +24,12 @@ public partial class MainViewForm : Form
|
||||
|
||||
_ = new DarkModeCS(this) { ColorMode = DarkModeCS.DisplayMode.SystemDefault };
|
||||
|
||||
Reset();
|
||||
|
||||
EntityGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
|
||||
|
||||
using StreamReader reader = new("Resources/json-viewer.html");
|
||||
JsonViewerHtml = reader.ReadToEnd();
|
||||
|
||||
Viewer.ViewUpdateStart += Viewer_ViewUpdateStart;
|
||||
Viewer.ViewUpdate += Viewer_ViewUpdate;
|
||||
Viewer.ViewSelect += Viewer_ViewSelect;
|
||||
DatabaseViewer.EntityChange += DatabaseViewer_EntityChange;
|
||||
|
||||
Reset();
|
||||
}
|
||||
|
||||
public void Reset()
|
||||
@@ -44,45 +37,21 @@ public partial class MainViewForm : Form
|
||||
Context.Dispose();
|
||||
Context = new();
|
||||
|
||||
TypesListBox.DataSource = Context.Entities.Select(e => e.Type).Distinct().ToList();
|
||||
TypesListBox.DataSource = Context
|
||||
.Entities.Select(e => e.Type)
|
||||
.Distinct()
|
||||
.OrderBy(t => t.ToString())
|
||||
.ToList();
|
||||
TypesListBox.SelectedIndex = 0;
|
||||
}
|
||||
|
||||
private void ToggleFreeze(bool state)
|
||||
{
|
||||
EntityGridView.Visible = state;
|
||||
JsonWebView.Visible = state;
|
||||
|
||||
FirstPageButton.Enabled = state;
|
||||
PrevPageButton.Enabled = state;
|
||||
NextPageButton.Enabled = state;
|
||||
LastPageButton.Enabled = state;
|
||||
|
||||
PageTextBox.Enabled = state;
|
||||
// EntityGridView.Visible = state;
|
||||
// JsonWebView.Visible = state;
|
||||
}
|
||||
|
||||
// Viewer events
|
||||
|
||||
private void Viewer_ViewUpdateStart()
|
||||
{
|
||||
ToggleFreeze(false);
|
||||
}
|
||||
|
||||
private void Viewer_ViewUpdate()
|
||||
{
|
||||
EntityGridView.DataSource = Viewer.Entities.Select(e => new EntityGridRow(e));
|
||||
|
||||
PaginationLabel.Text = $@"Всего: {Viewer.Count} объектов, {Viewer.MaxPage} страниц";
|
||||
|
||||
FirstPageButton.Enabled = Viewer.Page > 1;
|
||||
PrevPageButton.Enabled = Viewer.Page > 1;
|
||||
NextPageButton.Enabled = Viewer.Page < Viewer.MaxPage;
|
||||
LastPageButton.Enabled = Viewer.Page < Viewer.MaxPage;
|
||||
|
||||
ToggleFreeze(true);
|
||||
}
|
||||
|
||||
private void Viewer_ViewSelect(Entity? entity, IEntity? subEntity)
|
||||
private void DatabaseViewer_EntityChange(EntityView newEntity)
|
||||
{
|
||||
JsonSerializerSettings settings = new()
|
||||
{
|
||||
@@ -95,15 +64,15 @@ public partial class MainViewForm : Form
|
||||
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
|
||||
};
|
||||
|
||||
string result = JsonConvert.SerializeObject(entity, settings);
|
||||
string subResult = JsonConvert.SerializeObject(subEntity, settings);
|
||||
string result = JsonConvert.SerializeObject(newEntity.Entity, settings);
|
||||
string subResult = JsonConvert.SerializeObject(newEntity.SubEntity, settings);
|
||||
|
||||
string json = result[..^1] + $",\"SubEntity\":{subResult}}}";
|
||||
|
||||
RenderJson(json);
|
||||
}
|
||||
|
||||
// Form events
|
||||
DescriptionTextBox.Text = newEntity.Entity!.Description;
|
||||
}
|
||||
|
||||
private void TypesListBox_SelectedIndexChanged(object sender, EventArgs _)
|
||||
{
|
||||
@@ -112,58 +81,8 @@ public partial class MainViewForm : Form
|
||||
return;
|
||||
}
|
||||
|
||||
Viewer.Page = 1;
|
||||
}
|
||||
|
||||
private void FirstPageButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
Viewer.Page = 1;
|
||||
}
|
||||
|
||||
private void PrevPageButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
Viewer.Page--;
|
||||
}
|
||||
|
||||
private void NextPageButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
Viewer.Page++;
|
||||
}
|
||||
|
||||
private void LastPageButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
Viewer.Page = Viewer.MaxPage;
|
||||
}
|
||||
|
||||
private void PageTextBox_KeyPress(object sender, KeyPressEventArgs e)
|
||||
{
|
||||
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
|
||||
{
|
||||
e.Handled = true;
|
||||
}
|
||||
|
||||
if (e.KeyChar == (char)Keys.Return)
|
||||
{
|
||||
Viewer.Page = Convert.ToInt32(PageTextBox.Text);
|
||||
}
|
||||
}
|
||||
|
||||
private void EntityGridView_RowStateChanged(
|
||||
object sender,
|
||||
DataGridViewRowStateChangedEventArgs e
|
||||
)
|
||||
{
|
||||
int rowsCount = EntityGridView.SelectedRows.Count;
|
||||
if (rowsCount is 0 or > 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
DataGridViewRow row = EntityGridView.SelectedRows[0];
|
||||
|
||||
EntityGridRow data = (EntityGridRow)row.DataBoundItem;
|
||||
|
||||
Viewer.Select(data.GetEntity());
|
||||
DatabaseViewer.Type = (EntityType)TypesListBox.SelectedItem;
|
||||
// Viewer.Page = 1;
|
||||
}
|
||||
|
||||
public void RenderJson(string json)
|
||||
@@ -184,17 +103,6 @@ public partial class MainViewForm : Form
|
||||
)
|
||||
{
|
||||
JsonWebView.Visible = true;
|
||||
Viewer_ViewSelect(Viewer.LastEntity, Viewer.LastSubEntity);
|
||||
DatabaseViewer_EntityChange(DatabaseViewer.CurrentEntity);
|
||||
}
|
||||
}
|
||||
|
||||
internal class EntityGridRow(Entity e)
|
||||
{
|
||||
public int Id { get; set; } = e.Id;
|
||||
public string Name { get; set; } = e.Name[LocaleType.English];
|
||||
public EntityRarity Rarity { get; set; } = e.Rarity;
|
||||
|
||||
private readonly Entity _e = e;
|
||||
|
||||
public Entity GetEntity() => _e;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user