From 102f4761583f85dd10d75219f1176eea4d47dd38 Mon Sep 17 00:00:00 2001 From: beirich Date: Thu, 13 Mar 2014 03:35:14 +0000 Subject: [PATCH] dbman: initial pass at gamedb export function --- .../DBMan_MainForm.Designer.cs | 51 ++++++----- BizHawk.Client.DBMan/DBMan_MainForm.cs | 88 ++++++++++++++++--- BizHawk.Client.DBMan/DBMan_MainForm.resx | 3 - 3 files changed, 105 insertions(+), 37 deletions(-) diff --git a/BizHawk.Client.DBMan/DBMan_MainForm.Designer.cs b/BizHawk.Client.DBMan/DBMan_MainForm.Designer.cs index fdf20a0bf2..893883b679 100644 --- a/BizHawk.Client.DBMan/DBMan_MainForm.Designer.cs +++ b/BizHawk.Client.DBMan/DBMan_MainForm.Designer.cs @@ -41,6 +41,8 @@ this.romListColumnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.romListColumnHeader5 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.detailPanel = new System.Windows.Forms.Panel(); + this.sizeLabel = new System.Windows.Forms.Label(); + this.sizeBox = new System.Windows.Forms.TextBox(); this.notesLabel = new System.Windows.Forms.Label(); this.notesBox = new System.Windows.Forms.TextBox(); this.altNamesLabel = new System.Windows.Forms.Label(); @@ -85,8 +87,7 @@ this.databaseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.directoryScanToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.cleanupDBToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.sizeBox = new System.Windows.Forms.TextBox(); - this.sizeLabel = new System.Windows.Forms.Label(); + this.exportGameDBToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.filterPanel.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); this.splitContainer1.Panel1.SuspendLayout(); @@ -180,7 +181,6 @@ this.romListView.UseCompatibleStateImageBehavior = false; this.romListView.View = System.Windows.Forms.View.Details; this.romListView.SelectedIndexChanged += new System.EventHandler(this.selectedRomChanged); - this.romListView.MouseUp += new System.Windows.Forms.MouseEventHandler(this.selectedRomMouseUp); // // romListColumnHeader1 // @@ -256,6 +256,23 @@ this.detailPanel.Size = new System.Drawing.Size(467, 624); this.detailPanel.TabIndex = 0; // + // sizeLabel + // + this.sizeLabel.AutoSize = true; + this.sizeLabel.Location = new System.Drawing.Point(6, 557); + this.sizeLabel.Name = "sizeLabel"; + this.sizeLabel.Size = new System.Drawing.Size(27, 13); + this.sizeLabel.TabIndex = 50; + this.sizeLabel.Text = "Size"; + // + // sizeBox + // + this.sizeBox.Location = new System.Drawing.Point(80, 557); + this.sizeBox.Name = "sizeBox"; + this.sizeBox.ReadOnly = true; + this.sizeBox.Size = new System.Drawing.Size(255, 20); + this.sizeBox.TabIndex = 49; + // // notesLabel // this.notesLabel.AutoSize = true; @@ -640,7 +657,8 @@ // this.databaseToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.directoryScanToolStripMenuItem, - this.cleanupDBToolStripMenuItem}); + this.cleanupDBToolStripMenuItem, + this.exportGameDBToolStripMenuItem}); this.databaseToolStripMenuItem.Name = "databaseToolStripMenuItem"; this.databaseToolStripMenuItem.Size = new System.Drawing.Size(67, 20); this.databaseToolStripMenuItem.Text = "Database"; @@ -648,33 +666,23 @@ // directoryScanToolStripMenuItem // this.directoryScanToolStripMenuItem.Name = "directoryScanToolStripMenuItem"; - this.directoryScanToolStripMenuItem.Size = new System.Drawing.Size(150, 22); + this.directoryScanToolStripMenuItem.Size = new System.Drawing.Size(156, 22); this.directoryScanToolStripMenuItem.Text = "Directory Scan"; this.directoryScanToolStripMenuItem.Click += new System.EventHandler(this.directoryScanToolStripMenuItem_Click); // // cleanupDBToolStripMenuItem // this.cleanupDBToolStripMenuItem.Name = "cleanupDBToolStripMenuItem"; - this.cleanupDBToolStripMenuItem.Size = new System.Drawing.Size(150, 22); + this.cleanupDBToolStripMenuItem.Size = new System.Drawing.Size(156, 22); this.cleanupDBToolStripMenuItem.Text = "Cleanup DB"; this.cleanupDBToolStripMenuItem.Click += new System.EventHandler(this.cleanupDBToolStripMenuItem_Click); // - // sizeBox + // exportGameDBToolStripMenuItem // - this.sizeBox.Location = new System.Drawing.Point(80, 557); - this.sizeBox.Name = "sizeBox"; - this.sizeBox.ReadOnly = true; - this.sizeBox.Size = new System.Drawing.Size(255, 20); - this.sizeBox.TabIndex = 49; - // - // sizeLabel - // - this.sizeLabel.AutoSize = true; - this.sizeLabel.Location = new System.Drawing.Point(6, 557); - this.sizeLabel.Name = "sizeLabel"; - this.sizeLabel.Size = new System.Drawing.Size(27, 13); - this.sizeLabel.TabIndex = 50; - this.sizeLabel.Text = "Size"; + this.exportGameDBToolStripMenuItem.Name = "exportGameDBToolStripMenuItem"; + this.exportGameDBToolStripMenuItem.Size = new System.Drawing.Size(156, 22); + this.exportGameDBToolStripMenuItem.Text = "Export GameDB"; + this.exportGameDBToolStripMenuItem.Click += new System.EventHandler(this.exportGameDBToolStripMenuItem_Click); // // DBMan_MainForm // @@ -764,6 +772,7 @@ private System.Windows.Forms.TextBox notesBox; private System.Windows.Forms.Label sizeLabel; private System.Windows.Forms.TextBox sizeBox; + private System.Windows.Forms.ToolStripMenuItem exportGameDBToolStripMenuItem; } } diff --git a/BizHawk.Client.DBMan/DBMan_MainForm.cs b/BizHawk.Client.DBMan/DBMan_MainForm.cs index d0b6faa51e..b7d3a02ebe 100644 --- a/BizHawk.Client.DBMan/DBMan_MainForm.cs +++ b/BizHawk.Client.DBMan/DBMan_MainForm.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; +using System.IO; using System.Linq; using System.Text; using System.Windows.Forms; @@ -83,8 +84,6 @@ namespace BizHawk.Client.DBMan } } - bool RomChanged; - void selectedRomChanged(object sender, EventArgs e) { if (RomChangesMade()) @@ -94,14 +93,6 @@ namespace BizHawk.Client.DBMan saveButton_Click(null, null); SelectedRom = null; } - - RomChanged = true; - } - - void selectedRomMouseUp(object sender, MouseEventArgs e) - { - if (RomChanged == false) return; - RomChanged = false; if (romListView.SelectedItems.Count == 0) { @@ -134,13 +125,30 @@ namespace BizHawk.Client.DBMan notesBox.Text = rom.Game.Notes; detailPanel.Visible = true; - // nameBox.Focus(); } void cancelButton_Click(object sender, EventArgs e) { - RomChanged = true; - selectedRomMouseUp(null, null); + gameSystemBox.Text = SelectedRom.System; + nameBox.Text = SelectedRom.Name; + crcBox.Text = SelectedRom.CRC32; + md5Box.Text = SelectedRom.MD5; + sha1Box.Text = SelectedRom.SHA1; + sizeBox.Text = SelectedRom.SizeFriendly; + regionBox.Text = SelectedRom.Region; + versionBox.Text = SelectedRom.VersionTags; + gameMetaBox.Text = SelectedRom.Game.GameMetadata; + romMetaBox.Text = SelectedRom.RomMetadata; + tagsBox.Text = SelectedRom.Game.Tags; + romStatusBox.Text = SelectedRom.RomStatus; + developerBox.Text = SelectedRom.Game.Developer; + publisherBox.Text = SelectedRom.Game.Publisher; + classificationBox.Text = SelectedRom.Game.Classification; + releaseDateBox.Text = SelectedRom.Game.ReleaseDate; + playersBox.Text = SelectedRom.Game.Players; + catalogBox.Text = SelectedRom.Catalog; + altNamesBox.Text = SelectedRom.Game.AltNames; + notesBox.Text = SelectedRom.Game.Notes; } void saveButton_Click(object sender, EventArgs e) @@ -267,5 +275,59 @@ namespace BizHawk.Client.DBMan DB.Cleanup(); MessageBox.Show("Orphaned GAME records deleted and Sqlite VACUUM performed."); } + + void exportGameDBToolStripMenuItem_Click(object sender, EventArgs e) + { + var sfd = new SaveFileDialog(); + sfd.DefaultExt = ".txt"; + sfd.AddExtension = true; + var result = sfd.ShowDialog(); + if (result == System.Windows.Forms.DialogResult.Cancel) + return; + + var tw = new StreamWriter(sfd.FileName); + + loadRomsForSelectedSystem(); + foreach (var rom in DB.Roms) + { + string romCode = ""; + if (rom.Game.Classification == "Homebrew") romCode = "D"; + if (rom.RomStatus == "Overdump") romCode = "O"; + if (rom.RomStatus == "Bad Dump") romCode = "V"; + + string regionStr = ""; + if (rom.Region != null) + { + if (rom.Region.IndexOf("Japan") >= 0) regionStr += "J"; + if (rom.Region.IndexOf("USA") >= 0) regionStr += "U"; + if (rom.Region.IndexOf("Europe") >= 0) regionStr += "E"; + if (rom.Region.IndexOf("Brazil") >= 0) regionStr += "Br"; + if (rom.Region.IndexOf("Taiwan") >= 0) regionStr += "Tw"; + if (rom.Region.IndexOf("Korea") >= 0) regionStr += "Kr"; + if (rom.Region.IndexOf("Australia") >= 0) regionStr += "Aus"; + if (rom.Region.IndexOf("World") >= 0) regionStr += "W"; + } + + string romName = rom.Name; + if (regionStr.Length > 0) + romName += " ("+regionStr+")"; + + string versionStr = ""; + if (rom.VersionTags != null) + { + var versions = rom.VersionTags.Split(';'); + foreach (var version in versions) + { + if (version.Trim().Length == 0) + continue; + romName += " (" + version + ")"; + } + } + + tw.WriteLine("{0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}", rom.MD5, romCode, romName, rom.System, rom.Game.Tags, rom.CombinedMetaData, rom.Region); + } + + tw.Close(); + } } } \ No newline at end of file diff --git a/BizHawk.Client.DBMan/DBMan_MainForm.resx b/BizHawk.Client.DBMan/DBMan_MainForm.resx index cdc70987cf..94efccb9bd 100644 --- a/BizHawk.Client.DBMan/DBMan_MainForm.resx +++ b/BizHawk.Client.DBMan/DBMan_MainForm.resx @@ -120,9 +120,6 @@ 17, 17 - - 17, 17 - 132, 17