From 805300a41d72a6a815cb9f4cc1ba20a510a98616 Mon Sep 17 00:00:00 2001 From: Kurt Date: Sat, 10 Oct 2015 18:29:02 -0700 Subject: [PATCH] Implement Create Data Report Required adding a pre-filtered method to the report form in order to process data. Probably gonna end up with stupid identifiers stretching everything, but at least it shows where everything is. Best to export to a csv table anyway. --- SAV/SAV_Database.Designer.cs | 3 ++- SAV/SAV_Database.cs | 13 ++++++++++++- SAV/frmReport.cs | 18 ++++++++++++++++++ 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/SAV/SAV_Database.Designer.cs b/SAV/SAV_Database.Designer.cs index e1d91b24d..28000fa6b 100644 --- a/SAV/SAV_Database.Designer.cs +++ b/SAV/SAV_Database.Designer.cs @@ -930,7 +930,8 @@ private void InitializeComponent() // this.Menu_Report.Name = "Menu_Report"; this.Menu_Report.Size = new System.Drawing.Size(176, 22); - this.Menu_Report.Text = "Box Data Report"; + this.Menu_Report.Text = "Create Data Report"; + this.Menu_Report.Click += new System.EventHandler(this.generateDBReport); // // P_Results // diff --git a/SAV/SAV_Database.cs b/SAV/SAV_Database.cs index 1ef5681c4..65e30a89b 100644 --- a/SAV/SAV_Database.cs +++ b/SAV/SAV_Database.cs @@ -88,7 +88,8 @@ public SAV_Database(Main f1) // Fetch from save file for (int i = 0; i < 930; i++) { - PK6 pk6 = new PK6(PKX.decryptArray(Main.savefile.Skip(Main.SaveGame.Box + 0xE8*i).Take(0xE8).ToArray()), "Boxes"); + string Identifier = String.Format("B{0}:{1}", (i / 30 + 1).ToString("00"), (i % 30 + 1).ToString("00")); + PK6 pk6 = new PK6(PKX.decryptArray(Main.savefile.Skip(Main.SaveGame.Box + 0xE8*i).Take(0xE8).ToArray()), Identifier); if (pk6.Species != 0) Database[0].Slot.Add(pk6); } @@ -199,6 +200,16 @@ private void resetFilters(object sender, EventArgs e) CB_GameOrigin.SelectedIndex = 0; CB_Generation.SelectedIndex = 0; } + private void generateDBReport(object sender, EventArgs e) + { + if (Util.Prompt(MessageBoxButtons.YesNoCancel, "Generate a Report on all data?", "This may take a while...") + != DialogResult.Yes) + return; + + frmReport ReportForm = new frmReport(); + ReportForm.Show(); + ReportForm.PopulateData(Results.ToArray()); + } // IO Usage private class DatabaseList diff --git a/SAV/frmReport.cs b/SAV/frmReport.cs index eb8217d58..552d1949a 100644 --- a/SAV/frmReport.cs +++ b/SAV/frmReport.cs @@ -151,6 +151,24 @@ public void PopulateData(byte[] InputData, int BoxDataOffset) } BoxBar.Visible = false; } + public void PopulateData(PK6[] data) + { + BoxBar.Step = 1; + PokemonList PL = new PokemonList(); + foreach (PK6 p in data) + PL.Add(new Preview(p)); + + dgData.DataSource = PL; + dgData.AutoGenerateColumns = true; + BoxBar.Maximum = data.Length + dgData.Columns.Count; + for (int i = 0; i < dgData.Columns.Count; i++) + { + BoxBar.PerformStep(); + if (dgData.Columns[i] is DataGridViewImageColumn) continue; // Don't add sorting for Sprites + dgData.Columns[i].SortMode = DataGridViewColumnSortMode.Automatic; + } + BoxBar.Visible = false; + } private void promptSaveCSV(object sender, FormClosingEventArgs e) { if (Util.Prompt(MessageBoxButtons.YesNo,"Save all the data to CSV?") == DialogResult.Yes)