diff --git a/Enums/RomFeatureFilter.cs b/Enums/RomFeatureFilter.cs index 5a507b5..d3cd5ba 100644 --- a/Enums/RomFeatureFilter.cs +++ b/Enums/RomFeatureFilter.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Text; +using System.ComponentModel; namespace EverLoader.Enums { @@ -19,5 +16,7 @@ public enum RomFeatureFilter RomsWithoutBanner = 4, [Description("Show selected ROMs (for sync)")] SelectedForSync = 5, + [Description("Show ROMs not present on Cartridge")] + RomsNotPresentOnCartridge = 6, } } diff --git a/Forms/MainForm.Designer.cs b/Forms/MainForm.Designer.cs index 28b7271..ebef65b 100644 --- a/Forms/MainForm.Designer.cs +++ b/Forms/MainForm.Designer.cs @@ -31,1741 +31,1878 @@ protected override void Dispose(bool disposing) /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); + components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); - this.btnAddGames = new System.Windows.Forms.Button(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.tableLayoutPanel4 = new System.Windows.Forms.TableLayoutPanel(); - this.panel15 = new System.Windows.Forms.Panel(); - this.lblGameCRC = new System.Windows.Forms.Label(); - this.label9 = new System.Windows.Forms.Label(); - this.panel2 = new System.Windows.Forms.Panel(); - this.label7 = new System.Windows.Forms.Label(); - this.lblGameId = new System.Windows.Forms.Label(); - this.panel8 = new System.Windows.Forms.Panel(); - this.cbMultiDisc = new System.Windows.Forms.CheckBox(); - this.tbTitle = new System.Windows.Forms.TextBox(); - this.lblTitle = new System.Windows.Forms.Label(); - this.panel9 = new System.Windows.Forms.Panel(); - this.cbPlatform = new GroupedComboBox(); - this.tbReleaseDate = new System.Windows.Forms.TextBox(); - this.label2 = new System.Windows.Forms.Label(); - this.lblPlatform = new System.Windows.Forms.Label(); - this.panel10 = new System.Windows.Forms.Panel(); - this.cbMaxPlayers = new System.Windows.Forms.ComboBox(); - this.label1 = new System.Windows.Forms.Label(); - this.label3 = new System.Windows.Forms.Label(); - this.cbGenre = new System.Windows.Forms.ComboBox(); - this.panel11 = new System.Windows.Forms.Panel(); - this.tbDescription = new System.Windows.Forms.TextBox(); - this.lblDescription = new System.Windows.Forms.Label(); - this.groupBox2 = new System.Windows.Forms.GroupBox(); - this.tableLayoutPanel5 = new System.Windows.Forms.TableLayoutPanel(); - this.tableLayoutPanel6 = new System.Windows.Forms.TableLayoutPanel(); - this.panel7 = new EverLoader.Controls.AspectRatioPanel(); - this.label4 = new System.Windows.Forms.Label(); - this.pbBoxArtLarge = new System.Windows.Forms.PictureBox(); - this.btnClearLarge = new System.Windows.Forms.Button(); - this.panel12 = new EverLoader.Controls.AspectRatioPanel(); - this.label5 = new System.Windows.Forms.Label(); - this.pbBoxArtMedium = new System.Windows.Forms.PictureBox(); - this.btnClearMedium = new System.Windows.Forms.Button(); - this.panel13 = new EverLoader.Controls.AspectRatioPanel(); - this.label6 = new System.Windows.Forms.Label(); - this.pbBoxArtSmall = new System.Windows.Forms.PictureBox(); - this.btnClearSmall = new System.Windows.Forms.Button(); - this.panel14 = new EverLoader.Controls.AspectRatioPanel(); - this.llBannerDown = new System.Windows.Forms.LinkLabel(); - this.llBannerUp = new System.Windows.Forms.LinkLabel(); - this.btnClearBanner = new System.Windows.Forms.Button(); - this.llBannerNext = new System.Windows.Forms.LinkLabel(); - this.llBannerPrev = new System.Windows.Forms.LinkLabel(); - this.pbBanner = new System.Windows.Forms.PictureBox(); - this.label8 = new System.Windows.Forms.Label(); - this.pbConnected = new System.Windows.Forms.PictureBox(); - this.groupBox3 = new System.Windows.Forms.GroupBox(); - this.cbRomFilter = new GroupedComboBox(); - this.lvGames = new System.Windows.Forms.ListView(); - this.dummy = new System.Windows.Forms.ColumnHeader(); - this.menuStrip1 = new System.Windows.Forms.MenuStrip(); - this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.selectSDDriveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); - this.optimizeImagesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.checkForUpdatesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); - this.btnSelectSD = new System.Windows.Forms.Button(); - this.btnSyncToSD = new System.Windows.Forms.Button(); - this.groupBox4 = new System.Windows.Forms.GroupBox(); - this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel(); - this.panel3 = new System.Windows.Forms.Panel(); - this.label18 = new System.Windows.Forms.Label(); - this.tbMappingA = new System.Windows.Forms.TextBox(); - this.label20 = new System.Windows.Forms.Label(); - this.label22 = new System.Windows.Forms.Label(); - this.tbMappingB = new System.Windows.Forms.TextBox(); - this.label23 = new System.Windows.Forms.Label(); - this.tbMappingX = new System.Windows.Forms.TextBox(); - this.tbMappingY = new System.Windows.Forms.TextBox(); - this.panel4 = new System.Windows.Forms.Panel(); - this.tbMappingL1 = new System.Windows.Forms.TextBox(); - this.label25 = new System.Windows.Forms.Label(); - this.label26 = new System.Windows.Forms.Label(); - this.label27 = new System.Windows.Forms.Label(); - this.tbMappingL2 = new System.Windows.Forms.TextBox(); - this.label28 = new System.Windows.Forms.Label(); - this.tbMappingR1 = new System.Windows.Forms.TextBox(); - this.tbMappingR2 = new System.Windows.Forms.TextBox(); - this.panel1 = new System.Windows.Forms.Panel(); - this.tbMappingDPAD = new System.Windows.Forms.TextBox(); - this.tbMappingSELECT = new System.Windows.Forms.TextBox(); - this.label21 = new System.Windows.Forms.Label(); - this.label19 = new System.Windows.Forms.Label(); - this.label24 = new System.Windows.Forms.Label(); - this.tbMappingSTART = new System.Windows.Forms.TextBox(); - this.panel5 = new System.Windows.Forms.Panel(); - this.tbCartName = new System.Windows.Forms.TextBox(); - this.lblCartName = new System.Windows.Forms.Label(); - this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); - this.groupBox5 = new System.Windows.Forms.GroupBox(); - this.cbRetroArchCore = new System.Windows.Forms.ComboBox(); - this.rbInternalCore = new EverLoader.Controls.NonTabStopRadioButton(); - this.lblMissingBiosFiles = new System.Windows.Forms.LinkLabel(); - this.rbRetroArchCore = new EverLoader.Controls.NonTabStopRadioButton(); - this.gbScrapeByName = new System.Windows.Forms.GroupBox(); - this.lbScrapeResults = new System.Windows.Forms.ListBox(); - this.btnScrape = new System.Windows.Forms.Button(); - this.tbScrapeName = new System.Windows.Forms.TextBox(); - this.pbEverSD = new System.Windows.Forms.PictureBox(); - this.panel6 = new System.Windows.Forms.Panel(); - this.lblNumberOfGamesSelected = new System.Windows.Forms.Label(); - this.tableLayoutPanel7 = new System.Windows.Forms.TableLayoutPanel(); - this.btnNewSDFolder = new System.Windows.Forms.Button(); - this.openGameImage = new System.Windows.Forms.OpenFileDialog(); - this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components); - this.scrapeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); - this.deleteSelectedGamesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); - this.pageSetupDialog1 = new System.Windows.Forms.PageSetupDialog(); - this.groupBox1.SuspendLayout(); - this.tableLayoutPanel4.SuspendLayout(); - this.panel15.SuspendLayout(); - this.panel2.SuspendLayout(); - this.panel8.SuspendLayout(); - this.panel9.SuspendLayout(); - this.panel10.SuspendLayout(); - this.panel11.SuspendLayout(); - this.groupBox2.SuspendLayout(); - this.tableLayoutPanel5.SuspendLayout(); - this.tableLayoutPanel6.SuspendLayout(); - this.panel7.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pbBoxArtLarge)).BeginInit(); - this.panel12.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pbBoxArtMedium)).BeginInit(); - this.panel13.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pbBoxArtSmall)).BeginInit(); - this.panel14.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pbBanner)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.pbConnected)).BeginInit(); - this.groupBox3.SuspendLayout(); - this.menuStrip1.SuspendLayout(); - this.tableLayoutPanel1.SuspendLayout(); - this.groupBox4.SuspendLayout(); - this.tableLayoutPanel3.SuspendLayout(); - this.panel3.SuspendLayout(); - this.panel4.SuspendLayout(); - this.panel1.SuspendLayout(); - this.panel5.SuspendLayout(); - this.tableLayoutPanel2.SuspendLayout(); - this.groupBox5.SuspendLayout(); - this.gbScrapeByName.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pbEverSD)).BeginInit(); - this.panel6.SuspendLayout(); - this.tableLayoutPanel7.SuspendLayout(); - this.contextMenuStrip1.SuspendLayout(); - this.SuspendLayout(); - // - // btnAddGames - // - this.btnAddGames.Dock = System.Windows.Forms.DockStyle.Fill; - this.btnAddGames.Location = new System.Drawing.Point(7, 7); - this.btnAddGames.Margin = new System.Windows.Forms.Padding(7); - this.btnAddGames.Name = "btnAddGames"; - this.btnAddGames.Size = new System.Drawing.Size(124, 27); - this.btnAddGames.TabIndex = 1; - this.btnAddGames.TabStop = false; - this.btnAddGames.Text = "Add New ROM(s)"; - this.btnAddGames.UseVisualStyleBackColor = true; - this.btnAddGames.Click += new System.EventHandler(this.btnAddGames_Click); + groupBox1 = new System.Windows.Forms.GroupBox(); + tableLayoutPanel4 = new System.Windows.Forms.TableLayoutPanel(); + panel15 = new System.Windows.Forms.Panel(); + lblGameCRC = new System.Windows.Forms.Label(); + label9 = new System.Windows.Forms.Label(); + panel2 = new System.Windows.Forms.Panel(); + label7 = new System.Windows.Forms.Label(); + lblGameId = new System.Windows.Forms.Label(); + panel8 = new System.Windows.Forms.Panel(); + cbMultiDisc = new System.Windows.Forms.CheckBox(); + tbTitle = new System.Windows.Forms.TextBox(); + lblTitle = new System.Windows.Forms.Label(); + panel9 = new System.Windows.Forms.Panel(); + cbPlatform = new GroupedComboBox(); + tbReleaseDate = new System.Windows.Forms.TextBox(); + label2 = new System.Windows.Forms.Label(); + lblPlatform = new System.Windows.Forms.Label(); + panel10 = new System.Windows.Forms.Panel(); + cbMaxPlayers = new System.Windows.Forms.ComboBox(); + label1 = new System.Windows.Forms.Label(); + label3 = new System.Windows.Forms.Label(); + cbGenre = new System.Windows.Forms.ComboBox(); + panel11 = new System.Windows.Forms.Panel(); + tbDescription = new System.Windows.Forms.TextBox(); + lblDescription = new System.Windows.Forms.Label(); + gbBoxArt = new System.Windows.Forms.GroupBox(); + tableLayoutPanel5 = new System.Windows.Forms.TableLayoutPanel(); + tableLayoutPanel6 = new System.Windows.Forms.TableLayoutPanel(); + panel12 = new AspectRatioPanel(); + label5 = new System.Windows.Forms.Label(); + btnClearMedium = new System.Windows.Forms.Button(); + pbBoxArtMedium = new System.Windows.Forms.PictureBox(); + panel13 = new AspectRatioPanel(); + label6 = new System.Windows.Forms.Label(); + pbBoxArtSmall = new System.Windows.Forms.PictureBox(); + btnClearSmall = new System.Windows.Forms.Button(); + panel7 = new AspectRatioPanel(); + label4 = new System.Windows.Forms.Label(); + pbBoxArtLarge = new System.Windows.Forms.PictureBox(); + btnClearLarge = new System.Windows.Forms.Button(); + panel14 = new AspectRatioPanel(); + llBannerDown = new System.Windows.Forms.LinkLabel(); + llBannerUp = new System.Windows.Forms.LinkLabel(); + btnClearBanner = new System.Windows.Forms.Button(); + llBannerNext = new System.Windows.Forms.LinkLabel(); + llBannerPrev = new System.Windows.Forms.LinkLabel(); + pbBanner = new System.Windows.Forms.PictureBox(); + label8 = new System.Windows.Forms.Label(); + gbCollection = new System.Windows.Forms.GroupBox(); + tblLayoutCollection = new System.Windows.Forms.TableLayoutPanel(); + button5 = new System.Windows.Forms.Button(); + cbRomFilter = new GroupedComboBox(); + lvGames = new System.Windows.Forms.ListView(); + dummy = new System.Windows.Forms.ColumnHeader(); + btnSyncWithSDCard = new System.Windows.Forms.Button(); + lblNumberOfGamesSelected = new System.Windows.Forms.Label(); + tbSearchCollection = new System.Windows.Forms.TextBox(); + menuStrip1 = new System.Windows.Forms.MenuStrip(); + fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + selectSDDriveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + optimizeImagesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + checkForUpdatesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + gbCartridge = new System.Windows.Forms.GroupBox(); + tblLayoutCartridge = new System.Windows.Forms.TableLayoutPanel(); + tbCartName2 = new System.Windows.Forms.TextBox(); + btnSelectedSD = new System.Windows.Forms.Button(); + lblCartName = new System.Windows.Forms.Label(); + lblNumberGamesSDCard = new System.Windows.Forms.Label(); + btnNewSDCardFolder = new System.Windows.Forms.Button(); + tvCartridge = new System.Windows.Forms.TreeView(); + imageList1 = new System.Windows.Forms.ImageList(components); + tableLayoutPanel7 = new System.Windows.Forms.TableLayoutPanel(); + pictureBox3 = new System.Windows.Forms.PictureBox(); + pbConnected2 = new System.Windows.Forms.PictureBox(); + tbSearchCartridge = new System.Windows.Forms.TextBox(); + groupBox4 = new System.Windows.Forms.GroupBox(); + tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel(); + panel3 = new System.Windows.Forms.Panel(); + label18 = new System.Windows.Forms.Label(); + tbMappingA = new System.Windows.Forms.TextBox(); + label20 = new System.Windows.Forms.Label(); + label22 = new System.Windows.Forms.Label(); + tbMappingB = new System.Windows.Forms.TextBox(); + label23 = new System.Windows.Forms.Label(); + tbMappingX = new System.Windows.Forms.TextBox(); + tbMappingY = new System.Windows.Forms.TextBox(); + panel4 = new System.Windows.Forms.Panel(); + tbMappingL1 = new System.Windows.Forms.TextBox(); + label25 = new System.Windows.Forms.Label(); + label26 = new System.Windows.Forms.Label(); + label27 = new System.Windows.Forms.Label(); + tbMappingL2 = new System.Windows.Forms.TextBox(); + label28 = new System.Windows.Forms.Label(); + tbMappingR1 = new System.Windows.Forms.TextBox(); + tbMappingR2 = new System.Windows.Forms.TextBox(); + panel1 = new System.Windows.Forms.Panel(); + tbMappingDPAD = new System.Windows.Forms.TextBox(); + tbMappingSELECT = new System.Windows.Forms.TextBox(); + label21 = new System.Windows.Forms.Label(); + label19 = new System.Windows.Forms.Label(); + label24 = new System.Windows.Forms.Label(); + tbMappingSTART = new System.Windows.Forms.TextBox(); + tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); + groupBox5 = new System.Windows.Forms.GroupBox(); + cbRetroArchCore = new System.Windows.Forms.ComboBox(); + rbInternalCore = new NonTabStopRadioButton(); + lblMissingBiosFiles = new System.Windows.Forms.LinkLabel(); + rbRetroArchCore = new NonTabStopRadioButton(); + gbScrapeByName = new System.Windows.Forms.GroupBox(); + lbScrapeResults = new System.Windows.Forms.ListBox(); + btnScrape = new System.Windows.Forms.Button(); + tbScrapeName = new System.Windows.Forms.TextBox(); + openGameImage = new System.Windows.Forms.OpenFileDialog(); + contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(components); + scrapeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + deleteSelectedGamesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + toolTip1 = new System.Windows.Forms.ToolTip(components); + pageSetupDialog1 = new System.Windows.Forms.PageSetupDialog(); + tableLayoutPanel8 = new System.Windows.Forms.TableLayoutPanel(); + button1 = new System.Windows.Forms.Button(); + button2 = new System.Windows.Forms.Button(); + contextMenuCartridge = new System.Windows.Forms.ContextMenuStrip(components); + importROMToCollectionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + deleteROMToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + deleteFolderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + contextMenuStripMSD = new System.Windows.Forms.ContextMenuStrip(components); + test1ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + groupBox1.SuspendLayout(); + tableLayoutPanel4.SuspendLayout(); + panel15.SuspendLayout(); + panel2.SuspendLayout(); + panel8.SuspendLayout(); + panel9.SuspendLayout(); + panel10.SuspendLayout(); + panel11.SuspendLayout(); + gbBoxArt.SuspendLayout(); + tableLayoutPanel5.SuspendLayout(); + tableLayoutPanel6.SuspendLayout(); + panel12.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)pbBoxArtMedium).BeginInit(); + panel13.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)pbBoxArtSmall).BeginInit(); + panel7.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)pbBoxArtLarge).BeginInit(); + panel14.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)pbBanner).BeginInit(); + gbCollection.SuspendLayout(); + tblLayoutCollection.SuspendLayout(); + menuStrip1.SuspendLayout(); + tableLayoutPanel1.SuspendLayout(); + gbCartridge.SuspendLayout(); + tblLayoutCartridge.SuspendLayout(); + tableLayoutPanel7.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)pictureBox3).BeginInit(); + ((System.ComponentModel.ISupportInitialize)pbConnected2).BeginInit(); + groupBox4.SuspendLayout(); + tableLayoutPanel3.SuspendLayout(); + panel3.SuspendLayout(); + panel4.SuspendLayout(); + panel1.SuspendLayout(); + tableLayoutPanel2.SuspendLayout(); + groupBox5.SuspendLayout(); + gbScrapeByName.SuspendLayout(); + contextMenuStrip1.SuspendLayout(); + tableLayoutPanel8.SuspendLayout(); + contextMenuCartridge.SuspendLayout(); + contextMenuStripMSD.SuspendLayout(); + SuspendLayout(); // // groupBox1 // - this.groupBox1.Controls.Add(this.tableLayoutPanel4); - this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill; - this.groupBox1.Location = new System.Drawing.Point(348, 2); - this.groupBox1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.groupBox1.Size = new System.Drawing.Size(339, 318); - this.groupBox1.TabIndex = 2; - this.groupBox1.TabStop = false; - this.groupBox1.Text = "ROM Info"; + groupBox1.Controls.Add(tableLayoutPanel4); + groupBox1.Dock = System.Windows.Forms.DockStyle.Fill; + groupBox1.Location = new System.Drawing.Point(518, 2); + groupBox1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + groupBox1.Name = "groupBox1"; + groupBox1.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2); + groupBox1.Size = new System.Drawing.Size(381, 405); + groupBox1.TabIndex = 2; + groupBox1.TabStop = false; + groupBox1.Text = "ROM Info"; // // tableLayoutPanel4 // - this.tableLayoutPanel4.ColumnCount = 2; - this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 60F)); - this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40F)); - this.tableLayoutPanel4.Controls.Add(this.panel15, 1, 0); - this.tableLayoutPanel4.Controls.Add(this.panel2, 0, 0); - this.tableLayoutPanel4.Controls.Add(this.panel8, 0, 1); - this.tableLayoutPanel4.Controls.Add(this.panel9, 0, 2); - this.tableLayoutPanel4.Controls.Add(this.panel10, 1, 2); - this.tableLayoutPanel4.Controls.Add(this.panel11, 0, 3); - this.tableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel4.Location = new System.Drawing.Point(3, 18); - this.tableLayoutPanel4.Margin = new System.Windows.Forms.Padding(0); - this.tableLayoutPanel4.Name = "tableLayoutPanel4"; - this.tableLayoutPanel4.RowCount = 4; - this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 24F)); - this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 44F)); - this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 88F)); - this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tableLayoutPanel4.Size = new System.Drawing.Size(333, 298); - this.tableLayoutPanel4.TabIndex = 0; + tableLayoutPanel4.ColumnCount = 2; + tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 60F)); + tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40F)); + tableLayoutPanel4.Controls.Add(panel15, 1, 0); + tableLayoutPanel4.Controls.Add(panel2, 0, 0); + tableLayoutPanel4.Controls.Add(panel8, 0, 1); + tableLayoutPanel4.Controls.Add(panel9, 0, 2); + tableLayoutPanel4.Controls.Add(panel10, 1, 2); + tableLayoutPanel4.Controls.Add(panel11, 0, 3); + tableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill; + tableLayoutPanel4.Location = new System.Drawing.Point(3, 18); + tableLayoutPanel4.Margin = new System.Windows.Forms.Padding(0); + tableLayoutPanel4.Name = "tableLayoutPanel4"; + tableLayoutPanel4.RowCount = 4; + tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 24F)); + tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 44F)); + tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 88F)); + tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + tableLayoutPanel4.Size = new System.Drawing.Size(375, 385); + tableLayoutPanel4.TabIndex = 0; // // panel15 // - this.panel15.Controls.Add(this.lblGameCRC); - this.panel15.Controls.Add(this.label9); - this.panel15.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel15.Location = new System.Drawing.Point(199, 0); - this.panel15.Margin = new System.Windows.Forms.Padding(0); - this.panel15.Name = "panel15"; - this.panel15.Size = new System.Drawing.Size(134, 24); - this.panel15.TabIndex = 6; + panel15.Controls.Add(lblGameCRC); + panel15.Controls.Add(label9); + panel15.Dock = System.Windows.Forms.DockStyle.Fill; + panel15.Location = new System.Drawing.Point(225, 0); + panel15.Margin = new System.Windows.Forms.Padding(0); + panel15.Name = "panel15"; + panel15.Size = new System.Drawing.Size(150, 24); + panel15.TabIndex = 6; // // lblGameCRC // - this.lblGameCRC.Location = new System.Drawing.Point(43, 2); - this.lblGameCRC.Name = "lblGameCRC"; - this.lblGameCRC.Size = new System.Drawing.Size(86, 18); - this.lblGameCRC.TabIndex = 5; + lblGameCRC.Location = new System.Drawing.Point(43, 2); + lblGameCRC.Name = "lblGameCRC"; + lblGameCRC.Size = new System.Drawing.Size(86, 18); + lblGameCRC.TabIndex = 5; // // label9 // - this.label9.AutoSize = true; - this.label9.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); - this.label9.Location = new System.Drawing.Point(6, 2); - this.label9.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.label9.Name = "label9"; - this.label9.Size = new System.Drawing.Size(32, 15); - this.label9.TabIndex = 4; - this.label9.Text = "CRC:"; + label9.AutoSize = true; + label9.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + label9.Location = new System.Drawing.Point(6, 2); + label9.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + label9.Name = "label9"; + label9.Size = new System.Drawing.Size(32, 15); + label9.TabIndex = 4; + label9.Text = "CRC:"; // // panel2 // - this.panel2.Controls.Add(this.label7); - this.panel2.Controls.Add(this.lblGameId); - this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel2.Location = new System.Drawing.Point(0, 0); - this.panel2.Margin = new System.Windows.Forms.Padding(0); - this.panel2.Name = "panel2"; - this.panel2.Size = new System.Drawing.Size(199, 24); - this.panel2.TabIndex = 6; + panel2.Controls.Add(label7); + panel2.Controls.Add(lblGameId); + panel2.Dock = System.Windows.Forms.DockStyle.Fill; + panel2.Location = new System.Drawing.Point(0, 0); + panel2.Margin = new System.Windows.Forms.Padding(0); + panel2.Name = "panel2"; + panel2.Size = new System.Drawing.Size(225, 24); + panel2.TabIndex = 6; // // label7 // - this.label7.AutoSize = true; - this.label7.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); - this.label7.Location = new System.Drawing.Point(6, 2); - this.label7.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.label7.Name = "label7"; - this.label7.Size = new System.Drawing.Size(23, 15); - this.label7.TabIndex = 2; - this.label7.Text = "ID:"; + label7.AutoSize = true; + label7.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + label7.Location = new System.Drawing.Point(6, 2); + label7.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + label7.Name = "label7"; + label7.Size = new System.Drawing.Size(23, 15); + label7.TabIndex = 2; + label7.Text = "ID:"; // // lblGameId // - this.lblGameId.Location = new System.Drawing.Point(37, 2); - this.lblGameId.Name = "lblGameId"; - this.lblGameId.Size = new System.Drawing.Size(159, 18); - this.lblGameId.TabIndex = 3; + lblGameId.Location = new System.Drawing.Point(37, 2); + lblGameId.Name = "lblGameId"; + lblGameId.Size = new System.Drawing.Size(159, 18); + lblGameId.TabIndex = 3; // // panel8 // - this.tableLayoutPanel4.SetColumnSpan(this.panel8, 2); - this.panel8.Controls.Add(this.cbMultiDisc); - this.panel8.Controls.Add(this.tbTitle); - this.panel8.Controls.Add(this.lblTitle); - this.panel8.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel8.Location = new System.Drawing.Point(0, 24); - this.panel8.Margin = new System.Windows.Forms.Padding(0); - this.panel8.Name = "panel8"; - this.panel8.Size = new System.Drawing.Size(333, 44); - this.panel8.TabIndex = 0; + tableLayoutPanel4.SetColumnSpan(panel8, 2); + panel8.Controls.Add(cbMultiDisc); + panel8.Controls.Add(tbTitle); + panel8.Controls.Add(lblTitle); + panel8.Dock = System.Windows.Forms.DockStyle.Fill; + panel8.Location = new System.Drawing.Point(0, 24); + panel8.Margin = new System.Windows.Forms.Padding(0); + panel8.Name = "panel8"; + panel8.Size = new System.Drawing.Size(375, 44); + panel8.TabIndex = 0; // // cbMultiDisc // - this.cbMultiDisc.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.cbMultiDisc.AutoSize = true; - this.cbMultiDisc.Checked = true; - this.cbMultiDisc.CheckState = System.Windows.Forms.CheckState.Checked; - this.cbMultiDisc.Enabled = false; - this.cbMultiDisc.Location = new System.Drawing.Point(250, -1); - this.cbMultiDisc.Name = "cbMultiDisc"; - this.cbMultiDisc.Size = new System.Drawing.Size(80, 19); - this.cbMultiDisc.TabIndex = 2; - this.cbMultiDisc.Text = "multi-disc"; - this.cbMultiDisc.UseVisualStyleBackColor = true; - this.cbMultiDisc.Visible = false; + cbMultiDisc.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; + cbMultiDisc.AutoSize = true; + cbMultiDisc.Checked = true; + cbMultiDisc.CheckState = System.Windows.Forms.CheckState.Checked; + cbMultiDisc.Enabled = false; + cbMultiDisc.Location = new System.Drawing.Point(290, -1); + cbMultiDisc.Name = "cbMultiDisc"; + cbMultiDisc.Size = new System.Drawing.Size(80, 19); + cbMultiDisc.TabIndex = 2; + cbMultiDisc.Text = "multi-disc"; + cbMultiDisc.UseVisualStyleBackColor = true; + cbMultiDisc.Visible = false; // // tbTitle // - this.tbTitle.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbTitle.Enabled = false; - this.tbTitle.Location = new System.Drawing.Point(4, 18); - this.tbTitle.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.tbTitle.Name = "tbTitle"; - this.tbTitle.Size = new System.Drawing.Size(325, 23); - this.tbTitle.TabIndex = 1; - this.tbTitle.TabStop = false; + tbTitle.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + tbTitle.Enabled = false; + tbTitle.Location = new System.Drawing.Point(4, 18); + tbTitle.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + tbTitle.Name = "tbTitle"; + tbTitle.Size = new System.Drawing.Size(365, 23); + tbTitle.TabIndex = 1; + tbTitle.TabStop = false; // // lblTitle // - this.lblTitle.AutoSize = true; - this.lblTitle.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); - this.lblTitle.Location = new System.Drawing.Point(5, 0); - this.lblTitle.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.lblTitle.Name = "lblTitle"; - this.lblTitle.Size = new System.Drawing.Size(32, 15); - this.lblTitle.TabIndex = 0; - this.lblTitle.Text = "Title"; + lblTitle.AutoSize = true; + lblTitle.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + lblTitle.Location = new System.Drawing.Point(5, 0); + lblTitle.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + lblTitle.Name = "lblTitle"; + lblTitle.Size = new System.Drawing.Size(32, 15); + lblTitle.TabIndex = 0; + lblTitle.Text = "Title"; // // panel9 // - this.panel9.Controls.Add(this.cbPlatform); - this.panel9.Controls.Add(this.tbReleaseDate); - this.panel9.Controls.Add(this.label2); - this.panel9.Controls.Add(this.lblPlatform); - this.panel9.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel9.Location = new System.Drawing.Point(0, 68); - this.panel9.Margin = new System.Windows.Forms.Padding(0); - this.panel9.Name = "panel9"; - this.panel9.Size = new System.Drawing.Size(199, 88); - this.panel9.TabIndex = 1; + panel9.Controls.Add(cbPlatform); + panel9.Controls.Add(tbReleaseDate); + panel9.Controls.Add(label2); + panel9.Controls.Add(lblPlatform); + panel9.Dock = System.Windows.Forms.DockStyle.Fill; + panel9.Location = new System.Drawing.Point(0, 68); + panel9.Margin = new System.Windows.Forms.Padding(0); + panel9.Name = "panel9"; + panel9.Size = new System.Drawing.Size(225, 88); + panel9.TabIndex = 1; // // cbPlatform // - this.cbPlatform.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.cbPlatform.DataSource = null; - this.cbPlatform.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cbPlatform.Enabled = false; - this.cbPlatform.FormattingEnabled = true; - this.cbPlatform.Location = new System.Drawing.Point(4, 18); - this.cbPlatform.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.cbPlatform.Name = "cbPlatform"; - this.cbPlatform.Size = new System.Drawing.Size(192, 24); - this.cbPlatform.TabIndex = 10; - this.cbPlatform.TabStop = false; - this.cbPlatform.SelectionChangeCommitted += new System.EventHandler(this.ComboBox_SelectionChangeCommitted); + cbPlatform.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + cbPlatform.DataSource = null; + cbPlatform.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + cbPlatform.Enabled = false; + cbPlatform.FormattingEnabled = true; + cbPlatform.Location = new System.Drawing.Point(4, 18); + cbPlatform.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + cbPlatform.Name = "cbPlatform"; + cbPlatform.Size = new System.Drawing.Size(218, 24); + cbPlatform.TabIndex = 10; + cbPlatform.TabStop = false; // // tbReleaseDate // - this.tbReleaseDate.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbReleaseDate.Enabled = false; - this.tbReleaseDate.Location = new System.Drawing.Point(4, 63); - this.tbReleaseDate.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.tbReleaseDate.Name = "tbReleaseDate"; - this.tbReleaseDate.Size = new System.Drawing.Size(193, 23); - this.tbReleaseDate.TabIndex = 9; - this.tbReleaseDate.TabStop = false; + tbReleaseDate.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + tbReleaseDate.Enabled = false; + tbReleaseDate.Location = new System.Drawing.Point(4, 63); + tbReleaseDate.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + tbReleaseDate.Name = "tbReleaseDate"; + tbReleaseDate.Size = new System.Drawing.Size(218, 23); + tbReleaseDate.TabIndex = 9; + tbReleaseDate.TabStop = false; // // label2 // - this.label2.AutoSize = true; - this.label2.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); - this.label2.Location = new System.Drawing.Point(4, 46); - this.label2.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(167, 15); - this.label2.TabIndex = 8; - this.label2.Text = "Release date (YYYY-MM-DD)"; + label2.AutoSize = true; + label2.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + label2.Location = new System.Drawing.Point(4, 46); + label2.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + label2.Name = "label2"; + label2.Size = new System.Drawing.Size(167, 15); + label2.TabIndex = 8; + label2.Text = "Release date (YYYY-MM-DD)"; // // lblPlatform // - this.lblPlatform.AutoSize = true; - this.lblPlatform.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); - this.lblPlatform.Location = new System.Drawing.Point(4, 1); - this.lblPlatform.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.lblPlatform.Name = "lblPlatform"; - this.lblPlatform.Size = new System.Drawing.Size(56, 15); - this.lblPlatform.TabIndex = 3; - this.lblPlatform.Text = "Platform"; + lblPlatform.AutoSize = true; + lblPlatform.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + lblPlatform.Location = new System.Drawing.Point(4, 1); + lblPlatform.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + lblPlatform.Name = "lblPlatform"; + lblPlatform.Size = new System.Drawing.Size(56, 15); + lblPlatform.TabIndex = 3; + lblPlatform.Text = "Platform"; // // panel10 // - this.panel10.Controls.Add(this.cbMaxPlayers); - this.panel10.Controls.Add(this.label1); - this.panel10.Controls.Add(this.label3); - this.panel10.Controls.Add(this.cbGenre); - this.panel10.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel10.Location = new System.Drawing.Point(199, 68); - this.panel10.Margin = new System.Windows.Forms.Padding(0); - this.panel10.Name = "panel10"; - this.panel10.Size = new System.Drawing.Size(134, 88); - this.panel10.TabIndex = 2; + panel10.Controls.Add(cbMaxPlayers); + panel10.Controls.Add(label1); + panel10.Controls.Add(label3); + panel10.Controls.Add(cbGenre); + panel10.Dock = System.Windows.Forms.DockStyle.Fill; + panel10.Location = new System.Drawing.Point(225, 68); + panel10.Margin = new System.Windows.Forms.Padding(0); + panel10.Name = "panel10"; + panel10.Size = new System.Drawing.Size(150, 88); + panel10.TabIndex = 2; // // cbMaxPlayers // - this.cbMaxPlayers.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.cbMaxPlayers.Enabled = false; - this.cbMaxPlayers.FormattingEnabled = true; - this.cbMaxPlayers.Items.AddRange(new object[] { - "1", - "2", - "3", - "4"}); - this.cbMaxPlayers.Location = new System.Drawing.Point(3, 63); - this.cbMaxPlayers.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.cbMaxPlayers.Name = "cbMaxPlayers"; - this.cbMaxPlayers.Size = new System.Drawing.Size(127, 23); - this.cbMaxPlayers.TabIndex = 11; - this.cbMaxPlayers.TabStop = false; + cbMaxPlayers.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + cbMaxPlayers.Enabled = false; + cbMaxPlayers.FormattingEnabled = true; + cbMaxPlayers.Items.AddRange(new object[] { "1", "2", "3", "4" }); + cbMaxPlayers.Location = new System.Drawing.Point(3, 63); + cbMaxPlayers.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + cbMaxPlayers.Name = "cbMaxPlayers"; + cbMaxPlayers.Size = new System.Drawing.Size(142, 23); + cbMaxPlayers.TabIndex = 11; + cbMaxPlayers.TabStop = false; // // label1 // - this.label1.AutoSize = true; - this.label1.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); - this.label1.Location = new System.Drawing.Point(3, 1); - this.label1.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(42, 15); - this.label1.TabIndex = 6; - this.label1.Text = "Genre"; + label1.AutoSize = true; + label1.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + label1.Location = new System.Drawing.Point(3, 1); + label1.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + label1.Name = "label1"; + label1.Size = new System.Drawing.Size(42, 15); + label1.TabIndex = 6; + label1.Text = "Genre"; // // label3 // - this.label3.AutoSize = true; - this.label3.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); - this.label3.Location = new System.Drawing.Point(3, 46); - this.label3.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(73, 15); - this.label3.TabIndex = 10; - this.label3.Text = "Max Players"; + label3.AutoSize = true; + label3.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + label3.Location = new System.Drawing.Point(3, 46); + label3.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + label3.Name = "label3"; + label3.Size = new System.Drawing.Size(73, 15); + label3.TabIndex = 10; + label3.Text = "Max Players"; // // cbGenre // - this.cbGenre.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.cbGenre.Enabled = false; - this.cbGenre.FormattingEnabled = true; - this.cbGenre.Items.AddRange(new object[] { - "", - "Action", - "Action / Shooting", - "Adventure", - "Educational", - "Fighting", - "Puzzle", - "Racing", - "Racing / Sports", - "RPG", - "Shoot-\'em-Up", - "Simulation", - "Sports", - "Table"}); - this.cbGenre.Location = new System.Drawing.Point(3, 18); - this.cbGenre.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.cbGenre.Name = "cbGenre"; - this.cbGenre.Size = new System.Drawing.Size(127, 23); - this.cbGenre.TabIndex = 7; - this.cbGenre.TabStop = false; + cbGenre.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + cbGenre.Enabled = false; + cbGenre.FormattingEnabled = true; + cbGenre.Items.AddRange(new object[] { "", "Action", "Action / Shooting", "Adventure", "Educational", "Fighting", "Puzzle", "Racing", "Racing / Sports", "RPG", "Shoot-'em-Up", "Simulation", "Sports", "Table" }); + cbGenre.Location = new System.Drawing.Point(3, 18); + cbGenre.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + cbGenre.Name = "cbGenre"; + cbGenre.Size = new System.Drawing.Size(142, 23); + cbGenre.TabIndex = 7; + cbGenre.TabStop = false; // // panel11 // - this.tableLayoutPanel4.SetColumnSpan(this.panel11, 2); - this.panel11.Controls.Add(this.tbDescription); - this.panel11.Controls.Add(this.lblDescription); - this.panel11.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel11.Location = new System.Drawing.Point(0, 156); - this.panel11.Margin = new System.Windows.Forms.Padding(0); - this.panel11.Name = "panel11"; - this.panel11.Size = new System.Drawing.Size(333, 142); - this.panel11.TabIndex = 3; + tableLayoutPanel4.SetColumnSpan(panel11, 2); + panel11.Controls.Add(tbDescription); + panel11.Controls.Add(lblDescription); + panel11.Dock = System.Windows.Forms.DockStyle.Fill; + panel11.Location = new System.Drawing.Point(0, 156); + panel11.Margin = new System.Windows.Forms.Padding(0); + panel11.Name = "panel11"; + panel11.Size = new System.Drawing.Size(375, 229); + panel11.TabIndex = 3; // // tbDescription // - this.tbDescription.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbDescription.Enabled = false; - this.tbDescription.Location = new System.Drawing.Point(3, 19); - this.tbDescription.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.tbDescription.Multiline = true; - this.tbDescription.Name = "tbDescription"; - this.tbDescription.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; - this.tbDescription.Size = new System.Drawing.Size(325, 118); - this.tbDescription.TabIndex = 5; - this.tbDescription.TabStop = false; + tbDescription.Enabled = false; + tbDescription.Location = new System.Drawing.Point(3, 19); + tbDescription.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + tbDescription.Multiline = true; + tbDescription.Name = "tbDescription"; + tbDescription.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; + tbDescription.Size = new System.Drawing.Size(365, 347); + tbDescription.TabIndex = 5; + tbDescription.TabStop = false; // // lblDescription // - this.lblDescription.AutoSize = true; - this.lblDescription.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); - this.lblDescription.Location = new System.Drawing.Point(4, 2); - this.lblDescription.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.lblDescription.Name = "lblDescription"; - this.lblDescription.Size = new System.Drawing.Size(71, 15); - this.lblDescription.TabIndex = 4; - this.lblDescription.Text = "Description"; - // - // groupBox2 - // - this.groupBox2.Controls.Add(this.tableLayoutPanel5); - this.groupBox2.Dock = System.Windows.Forms.DockStyle.Fill; - this.groupBox2.Location = new System.Drawing.Point(693, 2); - this.groupBox2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.groupBox2.Name = "groupBox2"; - this.groupBox2.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.groupBox2.Size = new System.Drawing.Size(340, 318); - this.groupBox2.TabIndex = 3; - this.groupBox2.TabStop = false; - this.groupBox2.Text = "Box Art"; + lblDescription.AutoSize = true; + lblDescription.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + lblDescription.Location = new System.Drawing.Point(4, 2); + lblDescription.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + lblDescription.Name = "lblDescription"; + lblDescription.Size = new System.Drawing.Size(71, 15); + lblDescription.TabIndex = 4; + lblDescription.Text = "Description"; + // + // gbBoxArt + // + gbBoxArt.Controls.Add(tableLayoutPanel5); + gbBoxArt.Dock = System.Windows.Forms.DockStyle.Fill; + gbBoxArt.Location = new System.Drawing.Point(905, 2); + gbBoxArt.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + gbBoxArt.Name = "gbBoxArt"; + gbBoxArt.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2); + gbBoxArt.Size = new System.Drawing.Size(383, 405); + gbBoxArt.TabIndex = 3; + gbBoxArt.TabStop = false; + gbBoxArt.Text = "Box Art"; + gbBoxArt.Visible = false; // // tableLayoutPanel5 // - this.tableLayoutPanel5.ColumnCount = 1; - this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tableLayoutPanel5.Controls.Add(this.tableLayoutPanel6, 0, 0); - this.tableLayoutPanel5.Controls.Add(this.panel14, 0, 1); - this.tableLayoutPanel5.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel5.Location = new System.Drawing.Point(3, 18); - this.tableLayoutPanel5.Margin = new System.Windows.Forms.Padding(0); - this.tableLayoutPanel5.Name = "tableLayoutPanel5"; - this.tableLayoutPanel5.RowCount = 2; - this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 61.87291F)); - this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 38.12709F)); - this.tableLayoutPanel5.Size = new System.Drawing.Size(334, 298); - this.tableLayoutPanel5.TabIndex = 0; + tableLayoutPanel5.ColumnCount = 1; + tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + tableLayoutPanel5.Controls.Add(tableLayoutPanel6, 0, 0); + tableLayoutPanel5.Controls.Add(panel14, 0, 1); + tableLayoutPanel5.Dock = System.Windows.Forms.DockStyle.Fill; + tableLayoutPanel5.Location = new System.Drawing.Point(3, 18); + tableLayoutPanel5.Margin = new System.Windows.Forms.Padding(0); + tableLayoutPanel5.Name = "tableLayoutPanel5"; + tableLayoutPanel5.RowCount = 2; + tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 61.87291F)); + tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 38.12709F)); + tableLayoutPanel5.Size = new System.Drawing.Size(377, 385); + tableLayoutPanel5.TabIndex = 0; // // tableLayoutPanel6 // - this.tableLayoutPanel6.ColumnCount = 3; - this.tableLayoutPanel6.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40.54054F)); - this.tableLayoutPanel6.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 34.53454F)); - this.tableLayoutPanel6.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 24.92493F)); - this.tableLayoutPanel6.Controls.Add(this.panel7, 0, 0); - this.tableLayoutPanel6.Controls.Add(this.panel12, 1, 0); - this.tableLayoutPanel6.Controls.Add(this.panel13, 2, 0); - this.tableLayoutPanel6.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel6.Location = new System.Drawing.Point(0, 0); - this.tableLayoutPanel6.Margin = new System.Windows.Forms.Padding(0); - this.tableLayoutPanel6.Name = "tableLayoutPanel6"; - this.tableLayoutPanel6.RowCount = 1; - this.tableLayoutPanel6.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tableLayoutPanel6.Size = new System.Drawing.Size(334, 184); - this.tableLayoutPanel6.TabIndex = 0; + tableLayoutPanel6.ColumnCount = 3; + tableLayoutPanel6.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40.54054F)); + tableLayoutPanel6.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 34.53454F)); + tableLayoutPanel6.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 24.92493F)); + tableLayoutPanel6.Controls.Add(panel12, 1, 0); + tableLayoutPanel6.Controls.Add(panel13, 2, 0); + tableLayoutPanel6.Controls.Add(panel7, 0, 0); + tableLayoutPanel6.Dock = System.Windows.Forms.DockStyle.Fill; + tableLayoutPanel6.Location = new System.Drawing.Point(0, 0); + tableLayoutPanel6.Margin = new System.Windows.Forms.Padding(0); + tableLayoutPanel6.Name = "tableLayoutPanel6"; + tableLayoutPanel6.RowCount = 1; + tableLayoutPanel6.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + tableLayoutPanel6.Size = new System.Drawing.Size(377, 238); + tableLayoutPanel6.TabIndex = 0; // - // panel7 + // panel12 // - this.panel7.Controls.Add(this.label4); - this.panel7.Controls.Add(this.pbBoxArtLarge); - this.panel7.Controls.Add(this.btnClearLarge); - this.panel7.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel7.Location = new System.Drawing.Point(0, 0); - this.panel7.Margin = new System.Windows.Forms.Padding(0); - this.panel7.Name = "panel7"; - this.panel7.Size = new System.Drawing.Size(135, 184); - this.panel7.TabIndex = 0; + panel12.Controls.Add(label5); + panel12.Controls.Add(btnClearMedium); + panel12.Controls.Add(pbBoxArtMedium); + panel12.Dock = System.Windows.Forms.DockStyle.Fill; + panel12.Location = new System.Drawing.Point(152, 0); + panel12.Margin = new System.Windows.Forms.Padding(0); + panel12.Name = "panel12"; + panel12.Size = new System.Drawing.Size(130, 238); + panel12.TabIndex = 1; // - // label4 + // label5 // - this.label4.AutoSize = true; - this.label4.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); - this.label4.Location = new System.Drawing.Point(3, 2); - this.label4.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(38, 15); - this.label4.TabIndex = 12; - this.label4.Text = "Large"; + label5.AutoSize = true; + label5.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + label5.Location = new System.Drawing.Point(2, 2); + label5.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + label5.Name = "label5"; + label5.Size = new System.Drawing.Size(53, 15); + label5.TabIndex = 13; + label5.Text = "Medium"; // - // pbBoxArtLarge + // btnClearMedium // - this.pbBoxArtLarge.BackColor = System.Drawing.SystemColors.Control; - this.pbBoxArtLarge.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.pbBoxArtLarge.Image = global::EverLoader.Properties.Resources.NoBoxArtLarge; - this.pbBoxArtLarge.InitialImage = null; - this.pbBoxArtLarge.Location = new System.Drawing.Point(1, 18); - this.pbBoxArtLarge.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1); - this.pbBoxArtLarge.Name = "pbBoxArtLarge"; - this.pbBoxArtLarge.Size = new System.Drawing.Size(118, 164); - this.pbBoxArtLarge.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; - this.pbBoxArtLarge.TabIndex = 0; - this.pbBoxArtLarge.TabStop = false; - this.pbBoxArtLarge.SizeChanged += new System.EventHandler(this.pbGameImage_SizeChanged); - this.pbBoxArtLarge.Click += new System.EventHandler(this.pbGameImage_Click); - this.pbBoxArtLarge.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbGameImage_DragDrop); - this.pbBoxArtLarge.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbGameImage_DragEnter); + btnClearMedium.Enabled = false; + btnClearMedium.FlatAppearance.BorderSize = 0; + btnClearMedium.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + btnClearMedium.Image = Properties.Resources.Button_Close_icon_small; + btnClearMedium.Location = new System.Drawing.Point(74, 1); + btnClearMedium.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + btnClearMedium.Name = "btnClearMedium"; + btnClearMedium.Padding = new System.Windows.Forms.Padding(0, 0, 1, 1); + btnClearMedium.Size = new System.Drawing.Size(16, 16); + btnClearMedium.TabIndex = 21; + btnClearMedium.TabStop = false; + btnClearMedium.Tag = "Medium"; + btnClearMedium.UseVisualStyleBackColor = true; + btnClearMedium.MouseClick += btnImageClear_Click; // - // btnClearLarge + // pbBoxArtMedium // - this.btnClearLarge.Enabled = false; - this.btnClearLarge.FlatAppearance.BorderSize = 0; - this.btnClearLarge.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.btnClearLarge.Image = global::EverLoader.Properties.Resources.Button_Close_icon_small; - this.btnClearLarge.Location = new System.Drawing.Point(102, 1); - this.btnClearLarge.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.btnClearLarge.Name = "btnClearLarge"; - this.btnClearLarge.Padding = new System.Windows.Forms.Padding(0, 0, 1, 1); - this.btnClearLarge.Size = new System.Drawing.Size(16, 16); - this.btnClearLarge.TabIndex = 20; - this.btnClearLarge.TabStop = false; - this.btnClearLarge.Tag = "Large"; - this.btnClearLarge.UseVisualStyleBackColor = true; - this.btnClearLarge.MouseClick += new System.Windows.Forms.MouseEventHandler(this.btnImageClear_Click); + pbBoxArtMedium.BackColor = System.Drawing.SystemColors.Control; + pbBoxArtMedium.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + pbBoxArtMedium.Image = Properties.Resources.NoBoxArtMedium; + pbBoxArtMedium.InitialImage = null; + pbBoxArtMedium.Location = new System.Drawing.Point(2, 18); + pbBoxArtMedium.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1); + pbBoxArtMedium.Name = "pbBoxArtMedium"; + pbBoxArtMedium.Size = new System.Drawing.Size(127, 154); + pbBoxArtMedium.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + pbBoxArtMedium.TabIndex = 1; + pbBoxArtMedium.TabStop = false; + pbBoxArtMedium.SizeChanged += pbGameImage_SizeChanged; + pbBoxArtMedium.Click += pbGameImage_Click; + pbBoxArtMedium.DragDrop += pbGameImage_DragDrop; + pbBoxArtMedium.DragEnter += pbGameImage_DragEnter; // - // panel12 + // panel13 // - this.panel12.Controls.Add(this.label5); - this.panel12.Controls.Add(this.pbBoxArtMedium); - this.panel12.Controls.Add(this.btnClearMedium); - this.panel12.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel12.Location = new System.Drawing.Point(135, 0); - this.panel12.Margin = new System.Windows.Forms.Padding(0); - this.panel12.Name = "panel12"; - this.panel12.Size = new System.Drawing.Size(115, 184); - this.panel12.TabIndex = 1; + panel13.Controls.Add(label6); + panel13.Controls.Add(pbBoxArtSmall); + panel13.Controls.Add(btnClearSmall); + panel13.Dock = System.Windows.Forms.DockStyle.Fill; + panel13.Location = new System.Drawing.Point(282, 0); + panel13.Margin = new System.Windows.Forms.Padding(0); + panel13.Name = "panel13"; + panel13.Size = new System.Drawing.Size(95, 238); + panel13.TabIndex = 2; // - // label5 + // label6 // - this.label5.AutoSize = true; - this.label5.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); - this.label5.Location = new System.Drawing.Point(2, 2); - this.label5.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(53, 15); - this.label5.TabIndex = 13; - this.label5.Text = "Medium"; + label6.AutoSize = true; + label6.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + label6.Location = new System.Drawing.Point(2, 2); + label6.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + label6.Name = "label6"; + label6.Size = new System.Drawing.Size(37, 15); + label6.TabIndex = 14; + label6.Text = "Small"; // - // pbBoxArtMedium + // pbBoxArtSmall // - this.pbBoxArtMedium.BackColor = System.Drawing.SystemColors.Control; - this.pbBoxArtMedium.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.pbBoxArtMedium.Image = global::EverLoader.Properties.Resources.NoBoxArtMedium; - this.pbBoxArtMedium.InitialImage = null; - this.pbBoxArtMedium.Location = new System.Drawing.Point(2, 18); - this.pbBoxArtMedium.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1); - this.pbBoxArtMedium.Name = "pbBoxArtMedium"; - this.pbBoxArtMedium.Size = new System.Drawing.Size(88, 124); - this.pbBoxArtMedium.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; - this.pbBoxArtMedium.TabIndex = 1; - this.pbBoxArtMedium.TabStop = false; - this.pbBoxArtMedium.SizeChanged += new System.EventHandler(this.pbGameImage_SizeChanged); - this.pbBoxArtMedium.Click += new System.EventHandler(this.pbGameImage_Click); - this.pbBoxArtMedium.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbGameImage_DragDrop); - this.pbBoxArtMedium.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbGameImage_DragEnter); + pbBoxArtSmall.BackColor = System.Drawing.SystemColors.Control; + pbBoxArtSmall.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + pbBoxArtSmall.Image = Properties.Resources.NoBoxArtMedium; + pbBoxArtSmall.InitialImage = null; + pbBoxArtSmall.Location = new System.Drawing.Point(2, 17); + pbBoxArtSmall.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1); + pbBoxArtSmall.Name = "pbBoxArtSmall"; + pbBoxArtSmall.Size = new System.Drawing.Size(93, 96); + pbBoxArtSmall.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + pbBoxArtSmall.TabIndex = 15; + pbBoxArtSmall.TabStop = false; + pbBoxArtSmall.SizeChanged += pbGameImage_SizeChanged; + pbBoxArtSmall.Click += pbGameImage_Click; + pbBoxArtSmall.DragDrop += pbGameImage_DragDrop; + pbBoxArtSmall.DragEnter += pbGameImage_DragEnter; // - // btnClearMedium + // btnClearSmall // - this.btnClearMedium.Enabled = false; - this.btnClearMedium.FlatAppearance.BorderSize = 0; - this.btnClearMedium.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.btnClearMedium.Image = global::EverLoader.Properties.Resources.Button_Close_icon_small; - this.btnClearMedium.Location = new System.Drawing.Point(74, 1); - this.btnClearMedium.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.btnClearMedium.Name = "btnClearMedium"; - this.btnClearMedium.Padding = new System.Windows.Forms.Padding(0, 0, 1, 1); - this.btnClearMedium.Size = new System.Drawing.Size(16, 16); - this.btnClearMedium.TabIndex = 21; - this.btnClearMedium.TabStop = false; - this.btnClearMedium.Tag = "Medium"; - this.btnClearMedium.UseVisualStyleBackColor = true; - this.btnClearMedium.MouseClick += new System.Windows.Forms.MouseEventHandler(this.btnImageClear_Click); + btnClearSmall.Enabled = false; + btnClearSmall.FlatAppearance.BorderSize = 0; + btnClearSmall.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + btnClearSmall.Image = Properties.Resources.Button_Close_icon_small; + btnClearSmall.Location = new System.Drawing.Point(50, 0); + btnClearSmall.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + btnClearSmall.Name = "btnClearSmall"; + btnClearSmall.Padding = new System.Windows.Forms.Padding(0, 0, 1, 1); + btnClearSmall.Size = new System.Drawing.Size(16, 16); + btnClearSmall.TabIndex = 22; + btnClearSmall.TabStop = false; + btnClearSmall.Tag = "Small"; + btnClearSmall.UseVisualStyleBackColor = true; + btnClearSmall.MouseClick += btnImageClear_Click; // - // panel13 + // panel7 // - this.panel13.Controls.Add(this.label6); - this.panel13.Controls.Add(this.pbBoxArtSmall); - this.panel13.Controls.Add(this.btnClearSmall); - this.panel13.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel13.Location = new System.Drawing.Point(250, 0); - this.panel13.Margin = new System.Windows.Forms.Padding(0); - this.panel13.Name = "panel13"; - this.panel13.Size = new System.Drawing.Size(84, 184); - this.panel13.TabIndex = 2; + panel7.Controls.Add(label4); + panel7.Controls.Add(pbBoxArtLarge); + panel7.Controls.Add(btnClearLarge); + panel7.Dock = System.Windows.Forms.DockStyle.Fill; + panel7.Location = new System.Drawing.Point(0, 0); + panel7.Margin = new System.Windows.Forms.Padding(0); + panel7.Name = "panel7"; + panel7.Size = new System.Drawing.Size(152, 238); + panel7.TabIndex = 0; // - // label6 + // label4 // - this.label6.AutoSize = true; - this.label6.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); - this.label6.Location = new System.Drawing.Point(2, 2); - this.label6.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.label6.Name = "label6"; - this.label6.Size = new System.Drawing.Size(37, 15); - this.label6.TabIndex = 14; - this.label6.Text = "Small"; + label4.AutoSize = true; + label4.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + label4.Location = new System.Drawing.Point(3, 2); + label4.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + label4.Name = "label4"; + label4.Size = new System.Drawing.Size(38, 15); + label4.TabIndex = 12; + label4.Text = "Large"; // - // pbBoxArtSmall + // pbBoxArtLarge // - this.pbBoxArtSmall.BackColor = System.Drawing.SystemColors.Control; - this.pbBoxArtSmall.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.pbBoxArtSmall.Image = global::EverLoader.Properties.Resources.NoBoxArtMedium; - this.pbBoxArtSmall.InitialImage = null; - this.pbBoxArtSmall.Location = new System.Drawing.Point(2, 17); - this.pbBoxArtSmall.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1); - this.pbBoxArtSmall.Name = "pbBoxArtSmall"; - this.pbBoxArtSmall.Size = new System.Drawing.Size(64, 92); - this.pbBoxArtSmall.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; - this.pbBoxArtSmall.TabIndex = 15; - this.pbBoxArtSmall.TabStop = false; - this.pbBoxArtSmall.SizeChanged += new System.EventHandler(this.pbGameImage_SizeChanged); - this.pbBoxArtSmall.Click += new System.EventHandler(this.pbGameImage_Click); - this.pbBoxArtSmall.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbGameImage_DragDrop); - this.pbBoxArtSmall.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbGameImage_DragEnter); + pbBoxArtLarge.BackColor = System.Drawing.SystemColors.Control; + pbBoxArtLarge.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + pbBoxArtLarge.Image = Properties.Resources.NoBoxArtLarge; + pbBoxArtLarge.InitialImage = null; + pbBoxArtLarge.Location = new System.Drawing.Point(1, 18); + pbBoxArtLarge.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1); + pbBoxArtLarge.Name = "pbBoxArtLarge"; + pbBoxArtLarge.Size = new System.Drawing.Size(151, 186); + pbBoxArtLarge.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + pbBoxArtLarge.TabIndex = 0; + pbBoxArtLarge.TabStop = false; + pbBoxArtLarge.SizeChanged += pbGameImage_SizeChanged; + pbBoxArtLarge.Click += pbGameImage_Click; + pbBoxArtLarge.DragDrop += pbGameImage_DragDrop; + pbBoxArtLarge.DragEnter += pbGameImage_DragEnter; // - // btnClearSmall + // btnClearLarge // - this.btnClearSmall.Enabled = false; - this.btnClearSmall.FlatAppearance.BorderSize = 0; - this.btnClearSmall.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.btnClearSmall.Image = global::EverLoader.Properties.Resources.Button_Close_icon_small; - this.btnClearSmall.Location = new System.Drawing.Point(50, 0); - this.btnClearSmall.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.btnClearSmall.Name = "btnClearSmall"; - this.btnClearSmall.Padding = new System.Windows.Forms.Padding(0, 0, 1, 1); - this.btnClearSmall.Size = new System.Drawing.Size(16, 16); - this.btnClearSmall.TabIndex = 22; - this.btnClearSmall.TabStop = false; - this.btnClearSmall.Tag = "Small"; - this.btnClearSmall.UseVisualStyleBackColor = true; - this.btnClearSmall.MouseClick += new System.Windows.Forms.MouseEventHandler(this.btnImageClear_Click); + btnClearLarge.Enabled = false; + btnClearLarge.FlatAppearance.BorderSize = 0; + btnClearLarge.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + btnClearLarge.Image = Properties.Resources.Button_Close_icon_small; + btnClearLarge.Location = new System.Drawing.Point(102, 1); + btnClearLarge.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + btnClearLarge.Name = "btnClearLarge"; + btnClearLarge.Padding = new System.Windows.Forms.Padding(0, 0, 1, 1); + btnClearLarge.Size = new System.Drawing.Size(16, 16); + btnClearLarge.TabIndex = 20; + btnClearLarge.TabStop = false; + btnClearLarge.Tag = "Large"; + btnClearLarge.UseVisualStyleBackColor = true; + btnClearLarge.MouseClick += btnImageClear_Click; // // panel14 // - this.panel14.Controls.Add(this.llBannerDown); - this.panel14.Controls.Add(this.llBannerUp); - this.panel14.Controls.Add(this.btnClearBanner); - this.panel14.Controls.Add(this.llBannerNext); - this.panel14.Controls.Add(this.llBannerPrev); - this.panel14.Controls.Add(this.pbBanner); - this.panel14.Controls.Add(this.label8); - this.panel14.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel14.Location = new System.Drawing.Point(0, 184); - this.panel14.Margin = new System.Windows.Forms.Padding(0); - this.panel14.Name = "panel14"; - this.panel14.Size = new System.Drawing.Size(334, 114); - this.panel14.TabIndex = 1; + panel14.Controls.Add(llBannerDown); + panel14.Controls.Add(llBannerUp); + panel14.Controls.Add(btnClearBanner); + panel14.Controls.Add(llBannerNext); + panel14.Controls.Add(llBannerPrev); + panel14.Controls.Add(pbBanner); + panel14.Controls.Add(label8); + panel14.Dock = System.Windows.Forms.DockStyle.Fill; + panel14.Location = new System.Drawing.Point(0, 238); + panel14.Margin = new System.Windows.Forms.Padding(0); + panel14.Name = "panel14"; + panel14.Size = new System.Drawing.Size(377, 147); + panel14.TabIndex = 1; // // llBannerDown // - this.llBannerDown.ActiveLinkColor = System.Drawing.Color.Blue; - this.llBannerDown.AutoSize = true; - this.llBannerDown.Enabled = false; - this.llBannerDown.Font = new System.Drawing.Font("Wingdings", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); - this.llBannerDown.LinkBehavior = System.Windows.Forms.LinkBehavior.NeverUnderline; - this.llBannerDown.LinkColor = System.Drawing.Color.Black; - this.llBannerDown.Location = new System.Drawing.Point(277, -2); - this.llBannerDown.Name = "llBannerDown"; - this.llBannerDown.Padding = new System.Windows.Forms.Padding(0, 2, 0, 0); - this.llBannerDown.Size = new System.Drawing.Size(23, 19); - this.llBannerDown.TabIndex = 27; - this.llBannerDown.TabStop = true; - this.llBannerDown.Text = "ê"; - this.llBannerDown.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.llBannerUpDown_LinkClicked); + llBannerDown.ActiveLinkColor = System.Drawing.Color.Blue; + llBannerDown.AutoSize = true; + llBannerDown.Enabled = false; + llBannerDown.Font = new System.Drawing.Font("Wingdings", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + llBannerDown.LinkBehavior = System.Windows.Forms.LinkBehavior.NeverUnderline; + llBannerDown.LinkColor = System.Drawing.Color.Black; + llBannerDown.Location = new System.Drawing.Point(277, -2); + llBannerDown.Name = "llBannerDown"; + llBannerDown.Padding = new System.Windows.Forms.Padding(0, 2, 0, 0); + llBannerDown.Size = new System.Drawing.Size(23, 19); + llBannerDown.TabIndex = 27; + llBannerDown.TabStop = true; + llBannerDown.Text = "ê"; + llBannerDown.LinkClicked += llBannerUpDown_LinkClicked; // // llBannerUp // - this.llBannerUp.ActiveLinkColor = System.Drawing.Color.Blue; - this.llBannerUp.AutoSize = true; - this.llBannerUp.Enabled = false; - this.llBannerUp.Font = new System.Drawing.Font("Wingdings", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); - this.llBannerUp.LinkBehavior = System.Windows.Forms.LinkBehavior.NeverUnderline; - this.llBannerUp.LinkColor = System.Drawing.Color.Black; - this.llBannerUp.Location = new System.Drawing.Point(259, -2); - this.llBannerUp.Name = "llBannerUp"; - this.llBannerUp.Size = new System.Drawing.Size(23, 17); - this.llBannerUp.TabIndex = 26; - this.llBannerUp.TabStop = true; - this.llBannerUp.Text = "é"; - this.llBannerUp.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.llBannerUpDown_LinkClicked); + llBannerUp.ActiveLinkColor = System.Drawing.Color.Blue; + llBannerUp.AutoSize = true; + llBannerUp.Enabled = false; + llBannerUp.Font = new System.Drawing.Font("Wingdings", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + llBannerUp.LinkBehavior = System.Windows.Forms.LinkBehavior.NeverUnderline; + llBannerUp.LinkColor = System.Drawing.Color.Black; + llBannerUp.Location = new System.Drawing.Point(259, -2); + llBannerUp.Name = "llBannerUp"; + llBannerUp.Size = new System.Drawing.Size(23, 17); + llBannerUp.TabIndex = 26; + llBannerUp.TabStop = true; + llBannerUp.Text = "é"; + llBannerUp.LinkClicked += llBannerUpDown_LinkClicked; // // btnClearBanner // - this.btnClearBanner.Enabled = false; - this.btnClearBanner.FlatAppearance.BorderSize = 0; - this.btnClearBanner.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.btnClearBanner.Image = global::EverLoader.Properties.Resources.Button_Close_icon_small; - this.btnClearBanner.Location = new System.Drawing.Point(317, 0); - this.btnClearBanner.Margin = new System.Windows.Forms.Padding(0); - this.btnClearBanner.Name = "btnClearBanner"; - this.btnClearBanner.Padding = new System.Windows.Forms.Padding(0, 0, 1, 1); - this.btnClearBanner.Size = new System.Drawing.Size(16, 16); - this.btnClearBanner.TabIndex = 19; - this.btnClearBanner.TabStop = false; - this.btnClearBanner.Tag = "Banner"; - this.btnClearBanner.UseVisualStyleBackColor = true; - this.btnClearBanner.Click += new System.EventHandler(this.btnImageClear_Click); + btnClearBanner.Enabled = false; + btnClearBanner.FlatAppearance.BorderSize = 0; + btnClearBanner.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + btnClearBanner.Image = Properties.Resources.Button_Close_icon_small; + btnClearBanner.Location = new System.Drawing.Point(317, 0); + btnClearBanner.Margin = new System.Windows.Forms.Padding(0); + btnClearBanner.Name = "btnClearBanner"; + btnClearBanner.Padding = new System.Windows.Forms.Padding(0, 0, 1, 1); + btnClearBanner.Size = new System.Drawing.Size(16, 16); + btnClearBanner.TabIndex = 19; + btnClearBanner.TabStop = false; + btnClearBanner.Tag = "Banner"; + btnClearBanner.UseVisualStyleBackColor = true; + btnClearBanner.Click += btnImageClear_Click; // // llBannerNext // - this.llBannerNext.ActiveLinkColor = System.Drawing.Color.Blue; - this.llBannerNext.AutoSize = true; - this.llBannerNext.Font = new System.Drawing.Font("Wingdings", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); - this.llBannerNext.LinkBehavior = System.Windows.Forms.LinkBehavior.NeverUnderline; - this.llBannerNext.LinkColor = System.Drawing.Color.Black; - this.llBannerNext.Location = new System.Drawing.Point(300, 54); - this.llBannerNext.Name = "llBannerNext"; - this.llBannerNext.Size = new System.Drawing.Size(34, 26); - this.llBannerNext.TabIndex = 23; - this.llBannerNext.TabStop = true; - this.llBannerNext.Text = "ð"; - this.llBannerNext.Visible = false; - this.llBannerNext.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.llBannerNextPrev_LinkClicked); + llBannerNext.ActiveLinkColor = System.Drawing.Color.Blue; + llBannerNext.AutoSize = true; + llBannerNext.Font = new System.Drawing.Font("Wingdings", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + llBannerNext.LinkBehavior = System.Windows.Forms.LinkBehavior.NeverUnderline; + llBannerNext.LinkColor = System.Drawing.Color.Black; + llBannerNext.Location = new System.Drawing.Point(300, 54); + llBannerNext.Name = "llBannerNext"; + llBannerNext.Size = new System.Drawing.Size(34, 26); + llBannerNext.TabIndex = 23; + llBannerNext.TabStop = true; + llBannerNext.Text = "ð"; + llBannerNext.Visible = false; + llBannerNext.LinkClicked += llBannerNextPrev_LinkClicked; // // llBannerPrev // - this.llBannerPrev.ActiveLinkColor = System.Drawing.Color.Blue; - this.llBannerPrev.AutoSize = true; - this.llBannerPrev.Font = new System.Drawing.Font("Wingdings", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); - this.llBannerPrev.LinkBehavior = System.Windows.Forms.LinkBehavior.NeverUnderline; - this.llBannerPrev.LinkColor = System.Drawing.Color.Black; - this.llBannerPrev.Location = new System.Drawing.Point(3, 54); - this.llBannerPrev.Name = "llBannerPrev"; - this.llBannerPrev.Size = new System.Drawing.Size(34, 26); - this.llBannerPrev.TabIndex = 24; - this.llBannerPrev.TabStop = true; - this.llBannerPrev.Text = "ï"; - this.llBannerPrev.Visible = false; - this.llBannerPrev.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.llBannerNextPrev_LinkClicked); + llBannerPrev.ActiveLinkColor = System.Drawing.Color.Blue; + llBannerPrev.AutoSize = true; + llBannerPrev.Font = new System.Drawing.Font("Wingdings", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + llBannerPrev.LinkBehavior = System.Windows.Forms.LinkBehavior.NeverUnderline; + llBannerPrev.LinkColor = System.Drawing.Color.Black; + llBannerPrev.Location = new System.Drawing.Point(3, 54); + llBannerPrev.Name = "llBannerPrev"; + llBannerPrev.Size = new System.Drawing.Size(34, 26); + llBannerPrev.TabIndex = 24; + llBannerPrev.TabStop = true; + llBannerPrev.Text = "ï"; + llBannerPrev.Visible = false; + llBannerPrev.LinkClicked += llBannerNextPrev_LinkClicked; // // pbBanner // - this.pbBanner.BackColor = System.Drawing.SystemColors.Control; - this.pbBanner.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.pbBanner.Image = global::EverLoader.Properties.Resources.NoBannerArt; - this.pbBanner.InitialImage = null; - this.pbBanner.Location = new System.Drawing.Point(3, 17); - this.pbBanner.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1); - this.pbBanner.Name = "pbBanner"; - this.pbBanner.Size = new System.Drawing.Size(331, 92); - this.pbBanner.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; - this.pbBanner.TabIndex = 16; - this.pbBanner.TabStop = false; - this.pbBanner.SizeChanged += new System.EventHandler(this.pbGameImage_SizeChanged); - this.pbBanner.Click += new System.EventHandler(this.pbGameImage_Click); - this.pbBanner.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbGameImage_DragDrop); - this.pbBanner.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbGameImage_DragEnter); + pbBanner.BackColor = System.Drawing.SystemColors.Control; + pbBanner.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + pbBanner.Image = Properties.Resources.NoBannerArt; + pbBanner.InitialImage = null; + pbBanner.Location = new System.Drawing.Point(3, 17); + pbBanner.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1); + pbBanner.Name = "pbBanner"; + pbBanner.Size = new System.Drawing.Size(320, 48); + pbBanner.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + pbBanner.TabIndex = 16; + pbBanner.TabStop = false; + pbBanner.SizeChanged += pbGameImage_SizeChanged; + pbBanner.Click += pbGameImage_Click; + pbBanner.DragDrop += pbGameImage_DragDrop; + pbBanner.DragEnter += pbGameImage_DragEnter; // // label8 // - this.label8.AutoSize = true; - this.label8.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); - this.label8.Location = new System.Drawing.Point(3, 1); - this.label8.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.label8.Name = "label8"; - this.label8.Size = new System.Drawing.Size(169, 15); - this.label8.TabIndex = 17; - this.label8.Text = "Screenshot Banner (optional)"; - // - // pbConnected - // - this.pbConnected.Image = global::EverLoader.Properties.Resources.red; - this.pbConnected.Location = new System.Drawing.Point(5, -1); - this.pbConnected.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1); - this.pbConnected.Name = "pbConnected"; - this.pbConnected.Padding = new System.Windows.Forms.Padding(3); - this.pbConnected.Size = new System.Drawing.Size(22, 22); - this.pbConnected.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; - this.pbConnected.TabIndex = 4; - this.pbConnected.TabStop = false; - // - // groupBox3 - // - this.groupBox3.Controls.Add(this.cbRomFilter); - this.groupBox3.Controls.Add(this.lvGames); - this.groupBox3.Dock = System.Windows.Forms.DockStyle.Fill; - this.groupBox3.Location = new System.Drawing.Point(3, 2); - this.groupBox3.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.groupBox3.Name = "groupBox3"; - this.groupBox3.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.tableLayoutPanel1.SetRowSpan(this.groupBox3, 2); - this.groupBox3.Size = new System.Drawing.Size(339, 532); - this.groupBox3.TabIndex = 3; - this.groupBox3.TabStop = false; - this.groupBox3.Text = "Current ROM Collection"; + label8.AutoSize = true; + label8.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + label8.Location = new System.Drawing.Point(3, 1); + label8.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + label8.Name = "label8"; + label8.Size = new System.Drawing.Size(169, 15); + label8.TabIndex = 17; + label8.Text = "Screenshot Banner (optional)"; + // + // gbCollection + // + gbCollection.Controls.Add(tblLayoutCollection); + gbCollection.Dock = System.Windows.Forms.DockStyle.Fill; + gbCollection.Location = new System.Drawing.Point(228, 2); + gbCollection.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + gbCollection.Name = "gbCollection"; + gbCollection.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2); + tableLayoutPanel1.SetRowSpan(gbCollection, 2); + gbCollection.Size = new System.Drawing.Size(284, 633); + gbCollection.TabIndex = 3; + gbCollection.TabStop = false; + gbCollection.Text = "ROM Collection"; + // + // tblLayoutCollection + // + tblLayoutCollection.ColumnCount = 1; + tblLayoutCollection.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + tblLayoutCollection.Controls.Add(button5, 0, 0); + tblLayoutCollection.Controls.Add(cbRomFilter, 0, 1); + tblLayoutCollection.Controls.Add(lvGames, 0, 2); + tblLayoutCollection.Controls.Add(btnSyncWithSDCard, 0, 5); + tblLayoutCollection.Controls.Add(lblNumberOfGamesSelected, 0, 3); + tblLayoutCollection.Controls.Add(tbSearchCollection, 0, 4); + tblLayoutCollection.Dock = System.Windows.Forms.DockStyle.Fill; + tblLayoutCollection.Location = new System.Drawing.Point(3, 18); + tblLayoutCollection.Margin = new System.Windows.Forms.Padding(2); + tblLayoutCollection.Name = "tblLayoutCollection"; + tblLayoutCollection.RowCount = 7; + tblLayoutCollection.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 50F)); + tblLayoutCollection.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 50F)); + tblLayoutCollection.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + tblLayoutCollection.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + tblLayoutCollection.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + tblLayoutCollection.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 50F)); + tblLayoutCollection.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + tblLayoutCollection.Size = new System.Drawing.Size(278, 613); + tblLayoutCollection.TabIndex = 3; + // + // button5 + // + button5.Dock = System.Windows.Forms.DockStyle.Fill; + button5.Location = new System.Drawing.Point(7, 7); + button5.Margin = new System.Windows.Forms.Padding(7); + button5.Name = "button5"; + button5.Size = new System.Drawing.Size(264, 36); + button5.TabIndex = 15; + button5.Text = "Add Game"; + button5.UseVisualStyleBackColor = true; + button5.Click += btnAddGame_Click; // // cbRomFilter // - this.cbRomFilter.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.cbRomFilter.DataSource = null; - this.cbRomFilter.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cbRomFilter.Enabled = false; - this.cbRomFilter.FormattingEnabled = true; - this.cbRomFilter.Location = new System.Drawing.Point(5, 17); - this.cbRomFilter.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.cbRomFilter.Name = "cbRomFilter"; - this.cbRomFilter.Size = new System.Drawing.Size(329, 24); - this.cbRomFilter.TabIndex = 1; - this.cbRomFilter.TabStop = false; + cbRomFilter.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + cbRomFilter.DataSource = null; + cbRomFilter.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + cbRomFilter.Enabled = false; + cbRomFilter.FormattingEnabled = true; + cbRomFilter.Location = new System.Drawing.Point(3, 52); + cbRomFilter.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + cbRomFilter.Name = "cbRomFilter"; + cbRomFilter.Size = new System.Drawing.Size(272, 24); + cbRomFilter.TabIndex = 1; + cbRomFilter.TabStop = false; // // lvGames // - this.lvGames.AllowDrop = true; - this.lvGames.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.lvGames.CheckBoxes = true; - this.lvGames.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { - this.dummy}); - this.lvGames.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; - this.lvGames.HideSelection = false; - this.lvGames.Location = new System.Drawing.Point(5, 43); - this.lvGames.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.lvGames.Name = "lvGames"; - this.lvGames.Size = new System.Drawing.Size(329, 482); - this.lvGames.Sorting = System.Windows.Forms.SortOrder.Ascending; - this.lvGames.TabIndex = 0; - this.lvGames.TabStop = false; - this.lvGames.UseCompatibleStateImageBehavior = false; - this.lvGames.View = System.Windows.Forms.View.Details; - this.lvGames.SelectedIndexChanged += new System.EventHandler(this.lvGames_SelectedIndexChanged); - this.lvGames.DragDrop += new System.Windows.Forms.DragEventHandler(this.lvGames_DragDrop); - this.lvGames.DragEnter += new System.Windows.Forms.DragEventHandler(this.lvGames_DragEnter); - this.lvGames.KeyDown += new System.Windows.Forms.KeyEventHandler(this.lvGames_KeyDown); - this.lvGames.MouseClick += new System.Windows.Forms.MouseEventHandler(this.lvGames_MouseClick); + lvGames.AllowDrop = true; + lvGames.AutoArrange = false; + lvGames.CheckBoxes = true; + lvGames.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { dummy }); + lvGames.Dock = System.Windows.Forms.DockStyle.Fill; + lvGames.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; + lvGames.Location = new System.Drawing.Point(3, 102); + lvGames.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + lvGames.Name = "lvGames"; + lvGames.Size = new System.Drawing.Size(272, 389); + lvGames.Sorting = System.Windows.Forms.SortOrder.Ascending; + lvGames.TabIndex = 0; + lvGames.TabStop = false; + lvGames.UseCompatibleStateImageBehavior = false; + lvGames.View = System.Windows.Forms.View.Details; + lvGames.SelectedIndexChanged += lvGames_SelectedIndexChanged; + lvGames.DragDrop += lvGames_DragDrop; + lvGames.DragEnter += lvGames_DragEnter; + lvGames.KeyDown += lvGames_KeyDown; + lvGames.MouseClick += lvGames_MouseClick; // // dummy // - this.dummy.Text = "dummy"; - this.dummy.Width = 50; + dummy.Text = "dummy"; + dummy.Width = 50; + // + // btnSyncWithSDCard + // + btnSyncWithSDCard.Dock = System.Windows.Forms.DockStyle.Fill; + btnSyncWithSDCard.Location = new System.Drawing.Point(3, 536); + btnSyncWithSDCard.Name = "btnSyncWithSDCard"; + btnSyncWithSDCard.Size = new System.Drawing.Size(272, 44); + btnSyncWithSDCard.TabIndex = 17; + btnSyncWithSDCard.Text = "Copy/Sync ROM(s) to Cartridge"; + btnSyncWithSDCard.UseVisualStyleBackColor = true; + btnSyncWithSDCard.Click += btnSyncToSD_Click; + // + // lblNumberOfGamesSelected + // + lblNumberOfGamesSelected.AutoSize = true; + lblNumberOfGamesSelected.Location = new System.Drawing.Point(3, 493); + lblNumberOfGamesSelected.Name = "lblNumberOfGamesSelected"; + lblNumberOfGamesSelected.Size = new System.Drawing.Size(12, 15); + lblNumberOfGamesSelected.TabIndex = 18; + lblNumberOfGamesSelected.Text = "-"; + // + // tbSearchCollection + // + tbSearchCollection.Dock = System.Windows.Forms.DockStyle.Fill; + tbSearchCollection.Location = new System.Drawing.Point(3, 516); + tbSearchCollection.Name = "tbSearchCollection"; + tbSearchCollection.PlaceholderText = "Search collection"; + tbSearchCollection.Size = new System.Drawing.Size(272, 23); + tbSearchCollection.TabIndex = 19; + tbSearchCollection.KeyDown += tbSearchCollection_KeyDown; // // menuStrip1 // - this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.fileToolStripMenuItem, - this.toolStripMenuItem1, - this.helpToolStripMenuItem}); - this.menuStrip1.Location = new System.Drawing.Point(0, 0); - this.menuStrip1.Name = "menuStrip1"; - this.menuStrip1.Size = new System.Drawing.Size(1036, 24); - this.menuStrip1.TabIndex = 4; - this.menuStrip1.Text = "menuStrip1"; + menuStrip1.ImageScalingSize = new System.Drawing.Size(24, 24); + menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { fileToolStripMenuItem, toolStripMenuItem1, helpToolStripMenuItem }); + menuStrip1.Location = new System.Drawing.Point(0, 0); + menuStrip1.Name = "menuStrip1"; + menuStrip1.Size = new System.Drawing.Size(1291, 24); + menuStrip1.TabIndex = 4; + menuStrip1.Text = "menuStrip1"; // // fileToolStripMenuItem // - this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.selectSDDriveToolStripMenuItem}); - this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; - this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); - this.fileToolStripMenuItem.Text = "File"; + fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { selectSDDriveToolStripMenuItem }); + fileToolStripMenuItem.Name = "fileToolStripMenuItem"; + fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); + fileToolStripMenuItem.Text = "File"; // // selectSDDriveToolStripMenuItem // - this.selectSDDriveToolStripMenuItem.Name = "selectSDDriveToolStripMenuItem"; - this.selectSDDriveToolStripMenuItem.Size = new System.Drawing.Size(218, 22); - this.selectSDDriveToolStripMenuItem.Text = "Select MicroSD drive/folder"; - this.selectSDDriveToolStripMenuItem.DropDownOpening += new System.EventHandler(this.selectSDDriveToolStripMenuItem_DropDownOpening); + selectSDDriveToolStripMenuItem.Name = "selectSDDriveToolStripMenuItem"; + selectSDDriveToolStripMenuItem.Size = new System.Drawing.Size(218, 22); + selectSDDriveToolStripMenuItem.Text = "Select MicroSD drive/folder"; + selectSDDriveToolStripMenuItem.DropDownOpening += selectSDDriveToolStripMenuItem_DropDownOpening; // // toolStripMenuItem1 // - this.toolStripMenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.optimizeImagesToolStripMenuItem}); - this.toolStripMenuItem1.Name = "toolStripMenuItem1"; - this.toolStripMenuItem1.Size = new System.Drawing.Size(61, 20); - this.toolStripMenuItem1.Text = "Settings"; + toolStripMenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { optimizeImagesToolStripMenuItem }); + toolStripMenuItem1.Name = "toolStripMenuItem1"; + toolStripMenuItem1.Size = new System.Drawing.Size(61, 20); + toolStripMenuItem1.Text = "Settings"; // // optimizeImagesToolStripMenuItem // - this.optimizeImagesToolStripMenuItem.CheckOnClick = true; - this.optimizeImagesToolStripMenuItem.Name = "optimizeImagesToolStripMenuItem"; - this.optimizeImagesToolStripMenuItem.Size = new System.Drawing.Size(219, 22); - this.optimizeImagesToolStripMenuItem.Text = "Optimize/compress images"; + optimizeImagesToolStripMenuItem.CheckOnClick = true; + optimizeImagesToolStripMenuItem.Name = "optimizeImagesToolStripMenuItem"; + optimizeImagesToolStripMenuItem.Size = new System.Drawing.Size(219, 22); + optimizeImagesToolStripMenuItem.Text = "Optimize/compress images"; // // helpToolStripMenuItem // - this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.checkForUpdatesToolStripMenuItem, - this.aboutToolStripMenuItem}); - this.helpToolStripMenuItem.Name = "helpToolStripMenuItem"; - this.helpToolStripMenuItem.Size = new System.Drawing.Size(44, 20); - this.helpToolStripMenuItem.Text = "Help"; + helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { checkForUpdatesToolStripMenuItem, aboutToolStripMenuItem }); + helpToolStripMenuItem.Name = "helpToolStripMenuItem"; + helpToolStripMenuItem.Size = new System.Drawing.Size(44, 20); + helpToolStripMenuItem.Text = "Help"; // // checkForUpdatesToolStripMenuItem // - this.checkForUpdatesToolStripMenuItem.Name = "checkForUpdatesToolStripMenuItem"; - this.checkForUpdatesToolStripMenuItem.Size = new System.Drawing.Size(171, 22); - this.checkForUpdatesToolStripMenuItem.Text = "Check for Updates"; - this.checkForUpdatesToolStripMenuItem.Click += new System.EventHandler(this.checkForUpdatesToolStripMenuItem_Click); + checkForUpdatesToolStripMenuItem.Name = "checkForUpdatesToolStripMenuItem"; + checkForUpdatesToolStripMenuItem.Size = new System.Drawing.Size(171, 22); + checkForUpdatesToolStripMenuItem.Text = "Check for Updates"; + checkForUpdatesToolStripMenuItem.Click += checkForUpdatesToolStripMenuItem_Click; // // aboutToolStripMenuItem // - this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem"; - this.aboutToolStripMenuItem.Size = new System.Drawing.Size(171, 22); - this.aboutToolStripMenuItem.Text = "About..."; - this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click); + aboutToolStripMenuItem.Name = "aboutToolStripMenuItem"; + aboutToolStripMenuItem.Size = new System.Drawing.Size(171, 22); + aboutToolStripMenuItem.Text = "About..."; + aboutToolStripMenuItem.Click += aboutToolStripMenuItem_Click; // // tableLayoutPanel1 // - this.tableLayoutPanel1.ColumnCount = 3; - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33334F)); - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33334F)); - this.tableLayoutPanel1.Controls.Add(this.groupBox3, 0, 0); - this.tableLayoutPanel1.Controls.Add(this.groupBox2, 2, 0); - this.tableLayoutPanel1.Controls.Add(this.groupBox1, 1, 0); - this.tableLayoutPanel1.Controls.Add(this.btnSelectSD, 1, 2); - this.tableLayoutPanel1.Controls.Add(this.btnSyncToSD, 2, 2); - this.tableLayoutPanel1.Controls.Add(this.groupBox4, 1, 1); - this.tableLayoutPanel1.Controls.Add(this.panel5, 2, 3); - this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel2, 2, 1); - this.tableLayoutPanel1.Controls.Add(this.pbEverSD, 1, 3); - this.tableLayoutPanel1.Controls.Add(this.panel6, 0, 3); - this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel7, 0, 2); - this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 24); - this.tableLayoutPanel1.Name = "tableLayoutPanel1"; - this.tableLayoutPanel1.RowCount = 4; - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 60F)); - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 40F)); - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 41F)); - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 29F)); - this.tableLayoutPanel1.Size = new System.Drawing.Size(1036, 607); - this.tableLayoutPanel1.TabIndex = 5; - // - // btnSelectSD - // - this.btnSelectSD.Dock = System.Windows.Forms.DockStyle.Fill; - this.btnSelectSD.Location = new System.Drawing.Point(352, 543); - this.btnSelectSD.Margin = new System.Windows.Forms.Padding(7); - this.btnSelectSD.Name = "btnSelectSD"; - this.btnSelectSD.Size = new System.Drawing.Size(331, 27); - this.btnSelectSD.TabIndex = 5; - this.btnSelectSD.TabStop = false; - this.btnSelectSD.Text = "Select MicroSD"; - this.btnSelectSD.UseVisualStyleBackColor = true; - this.btnSelectSD.Click += new System.EventHandler(this.btnSelectSD_Click); - // - // btnSyncToSD - // - this.btnSyncToSD.Dock = System.Windows.Forms.DockStyle.Fill; - this.btnSyncToSD.Enabled = false; - this.btnSyncToSD.Location = new System.Drawing.Point(697, 543); - this.btnSyncToSD.Margin = new System.Windows.Forms.Padding(7); - this.btnSyncToSD.Name = "btnSyncToSD"; - this.btnSyncToSD.Size = new System.Drawing.Size(332, 27); - this.btnSyncToSD.TabIndex = 6; - this.btnSyncToSD.TabStop = false; - this.btnSyncToSD.Text = "Synchronize selected ROMs with MicroSD"; - this.btnSyncToSD.UseVisualStyleBackColor = true; - this.btnSyncToSD.Click += new System.EventHandler(this.btnSyncToSD_Click); + tableLayoutPanel1.ColumnCount = 4; + tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 17.5F)); + tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 22.5F)); + tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30F)); + tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30F)); + tableLayoutPanel1.Controls.Add(gbBoxArt, 3, 0); + tableLayoutPanel1.Controls.Add(gbCartridge, 0, 0); + tableLayoutPanel1.Controls.Add(gbCollection, 1, 0); + tableLayoutPanel1.Controls.Add(groupBox1, 2, 0); + tableLayoutPanel1.Controls.Add(groupBox4, 2, 1); + tableLayoutPanel1.Controls.Add(tableLayoutPanel2, 3, 1); + tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + tableLayoutPanel1.Location = new System.Drawing.Point(0, 24); + tableLayoutPanel1.Name = "tableLayoutPanel1"; + tableLayoutPanel1.RowCount = 2; + tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 64.2764053F)); + tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 35.7236F)); + tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + tableLayoutPanel1.Size = new System.Drawing.Size(1291, 637); + tableLayoutPanel1.TabIndex = 5; + // + // gbCartridge + // + gbCartridge.Controls.Add(tblLayoutCartridge); + gbCartridge.Dock = System.Windows.Forms.DockStyle.Fill; + gbCartridge.Location = new System.Drawing.Point(2, 2); + gbCartridge.Margin = new System.Windows.Forms.Padding(2); + gbCartridge.Name = "gbCartridge"; + gbCartridge.Padding = new System.Windows.Forms.Padding(2); + tableLayoutPanel1.SetRowSpan(gbCartridge, 2); + gbCartridge.Size = new System.Drawing.Size(221, 633); + gbCartridge.TabIndex = 13; + gbCartridge.TabStop = false; + gbCartridge.Text = "ROMs on current Cartridge"; + // + // tblLayoutCartridge + // + tblLayoutCartridge.AllowDrop = true; + tblLayoutCartridge.ColumnCount = 1; + tblLayoutCartridge.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + tblLayoutCartridge.Controls.Add(tbCartName2, 0, 2); + tblLayoutCartridge.Controls.Add(btnSelectedSD, 0, 0); + tblLayoutCartridge.Controls.Add(lblCartName, 0, 1); + tblLayoutCartridge.Controls.Add(lblNumberGamesSDCard, 0, 4); + tblLayoutCartridge.Controls.Add(btnNewSDCardFolder, 0, 6); + tblLayoutCartridge.Controls.Add(tvCartridge, 0, 3); + tblLayoutCartridge.Controls.Add(tableLayoutPanel7, 0, 7); + tblLayoutCartridge.Controls.Add(tbSearchCartridge, 0, 5); + tblLayoutCartridge.Dock = System.Windows.Forms.DockStyle.Fill; + tblLayoutCartridge.Location = new System.Drawing.Point(2, 18); + tblLayoutCartridge.Margin = new System.Windows.Forms.Padding(2); + tblLayoutCartridge.Name = "tblLayoutCartridge"; + tblLayoutCartridge.RowCount = 8; + tblLayoutCartridge.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 50F)); + tblLayoutCartridge.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + tblLayoutCartridge.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + tblLayoutCartridge.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + tblLayoutCartridge.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + tblLayoutCartridge.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + tblLayoutCartridge.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 50F)); + tblLayoutCartridge.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + tblLayoutCartridge.Size = new System.Drawing.Size(217, 613); + tblLayoutCartridge.TabIndex = 0; + // + // tbCartName2 + // + tbCartName2.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + tbCartName2.Enabled = false; + tbCartName2.Location = new System.Drawing.Point(3, 72); + tbCartName2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + tbCartName2.Name = "tbCartName2"; + tbCartName2.Size = new System.Drawing.Size(211, 23); + tbCartName2.TabIndex = 5; + tbCartName2.TabStop = false; + tbCartName2.Text = "My Games"; + // + // btnSelectedSD + // + btnSelectedSD.Dock = System.Windows.Forms.DockStyle.Fill; + btnSelectedSD.Location = new System.Drawing.Point(7, 7); + btnSelectedSD.Margin = new System.Windows.Forms.Padding(7); + btnSelectedSD.Name = "btnSelectedSD"; + btnSelectedSD.Size = new System.Drawing.Size(203, 36); + btnSelectedSD.TabIndex = 6; + btnSelectedSD.TabStop = false; + btnSelectedSD.Text = "Select MicroSD"; + btnSelectedSD.UseVisualStyleBackColor = true; + btnSelectedSD.Click += btnSelectSD_Click; + // + // lblCartName + // + lblCartName.AutoSize = true; + lblCartName.Enabled = false; + lblCartName.Location = new System.Drawing.Point(2, 50); + lblCartName.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + lblCartName.Name = "lblCartName"; + lblCartName.Size = new System.Drawing.Size(94, 15); + lblCartName.TabIndex = 4; + lblCartName.Text = "Cartridge Name:"; + // + // lblNumberGamesSDCard + // + lblNumberGamesSDCard.AutoSize = true; + lblNumberGamesSDCard.Location = new System.Drawing.Point(3, 493); + lblNumberGamesSDCard.Name = "lblNumberGamesSDCard"; + lblNumberGamesSDCard.Size = new System.Drawing.Size(12, 15); + lblNumberGamesSDCard.TabIndex = 8; + lblNumberGamesSDCard.Text = "-"; + // + // btnNewSDCardFolder + // + btnNewSDCardFolder.Dock = System.Windows.Forms.DockStyle.Fill; + btnNewSDCardFolder.Enabled = false; + btnNewSDCardFolder.Location = new System.Drawing.Point(3, 536); + btnNewSDCardFolder.Name = "btnNewSDCardFolder"; + btnNewSDCardFolder.Size = new System.Drawing.Size(211, 44); + btnNewSDCardFolder.TabIndex = 19; + btnNewSDCardFolder.Text = "Create Folder on Cartridge"; + btnNewSDCardFolder.UseVisualStyleBackColor = true; + btnNewSDCardFolder.Click += btnNewSDCardFolder_Click; + // + // tvCartridge + // + tvCartridge.AllowDrop = true; + tvCartridge.Dock = System.Windows.Forms.DockStyle.Fill; + tvCartridge.ImageIndex = 0; + tvCartridge.ImageList = imageList1; + tvCartridge.Location = new System.Drawing.Point(3, 103); + tvCartridge.Name = "tvCartridge"; + tvCartridge.SelectedImageIndex = 0; + tvCartridge.Size = new System.Drawing.Size(211, 387); + tvCartridge.TabIndex = 20; + tvCartridge.ItemDrag += tvCartridge_OnItemDrag; + tvCartridge.DragDrop += tvCartridge_OnDragDrop; + tvCartridge.DragEnter += tvCartridge_OnDragEnter; + tvCartridge.DragOver += tvCartridge_DragOver; + tvCartridge.MouseClick += tvCartridge_MouseClick; + // + // imageList1 + // + imageList1.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit; + imageList1.ImageStream = (System.Windows.Forms.ImageListStreamer)resources.GetObject("imageList1.ImageStream"); + imageList1.TransparentColor = System.Drawing.Color.Transparent; + imageList1.Images.SetKeyName(0, "check.png"); + imageList1.Images.SetKeyName(1, "warning.png"); + imageList1.Images.SetKeyName(2, "folder.png"); + imageList1.Images.SetKeyName(3, "warning_red.png"); + // + // tableLayoutPanel7 + // + tableLayoutPanel7.ColumnCount = 2; + tableLayoutPanel7.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30F)); + tableLayoutPanel7.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 70F)); + tableLayoutPanel7.Controls.Add(pictureBox3, 0, 0); + tableLayoutPanel7.Controls.Add(pbConnected2, 0, 0); + tableLayoutPanel7.Location = new System.Drawing.Point(3, 586); + tableLayoutPanel7.Name = "tableLayoutPanel7"; + tableLayoutPanel7.RowCount = 1; + tableLayoutPanel7.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + tableLayoutPanel7.Size = new System.Drawing.Size(187, 24); + tableLayoutPanel7.TabIndex = 21; + // + // pictureBox3 + // + pictureBox3.Dock = System.Windows.Forms.DockStyle.Fill; + pictureBox3.Image = Properties.Resources.Logo___EverSD; + pictureBox3.Location = new System.Drawing.Point(56, 0); + pictureBox3.Margin = new System.Windows.Forms.Padding(0); + pictureBox3.Name = "pictureBox3"; + pictureBox3.Size = new System.Drawing.Size(131, 24); + pictureBox3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + pictureBox3.TabIndex = 13; + pictureBox3.TabStop = false; + // + // pbConnected2 + // + pbConnected2.Image = Properties.Resources.red; + pbConnected2.Location = new System.Drawing.Point(2, 1); + pbConnected2.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1); + pbConnected2.Name = "pbConnected2"; + pbConnected2.Padding = new System.Windows.Forms.Padding(3); + pbConnected2.Size = new System.Drawing.Size(22, 22); + pbConnected2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + pbConnected2.TabIndex = 6; + pbConnected2.TabStop = false; + // + // tbSearchCartridge + // + tbSearchCartridge.Dock = System.Windows.Forms.DockStyle.Fill; + tbSearchCartridge.Location = new System.Drawing.Point(3, 516); + tbSearchCartridge.Name = "tbSearchCartridge"; + tbSearchCartridge.PlaceholderText = "Search Cartridge"; + tbSearchCartridge.Size = new System.Drawing.Size(211, 23); + tbSearchCartridge.TabIndex = 22; + tbSearchCartridge.KeyDown += tbSearchCartridge_KeyDown; // // groupBox4 // - this.groupBox4.Controls.Add(this.tableLayoutPanel3); - this.groupBox4.Dock = System.Windows.Forms.DockStyle.Fill; - this.groupBox4.Location = new System.Drawing.Point(348, 324); - this.groupBox4.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.groupBox4.Name = "groupBox4"; - this.groupBox4.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.groupBox4.Size = new System.Drawing.Size(339, 210); - this.groupBox4.TabIndex = 7; - this.groupBox4.TabStop = false; - this.groupBox4.Text = "Button Mapping"; + groupBox4.Controls.Add(tableLayoutPanel3); + groupBox4.Dock = System.Windows.Forms.DockStyle.Fill; + groupBox4.Location = new System.Drawing.Point(518, 411); + groupBox4.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + groupBox4.Name = "groupBox4"; + groupBox4.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2); + groupBox4.Size = new System.Drawing.Size(381, 224); + groupBox4.TabIndex = 7; + groupBox4.TabStop = false; + groupBox4.Text = "Button Mapping"; // // tableLayoutPanel3 // - this.tableLayoutPanel3.ColumnCount = 2; - this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 60F)); - this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40F)); - this.tableLayoutPanel3.Controls.Add(this.panel3, 0, 0); - this.tableLayoutPanel3.Controls.Add(this.panel4, 1, 0); - this.tableLayoutPanel3.Controls.Add(this.panel1, 0, 1); - this.tableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel3.Location = new System.Drawing.Point(3, 18); - this.tableLayoutPanel3.Margin = new System.Windows.Forms.Padding(0); - this.tableLayoutPanel3.Name = "tableLayoutPanel3"; - this.tableLayoutPanel3.RowCount = 2; - this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 108F)); - this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 68F)); - this.tableLayoutPanel3.Size = new System.Drawing.Size(333, 190); - this.tableLayoutPanel3.TabIndex = 9; + tableLayoutPanel3.ColumnCount = 2; + tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 60F)); + tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40F)); + tableLayoutPanel3.Controls.Add(panel3, 0, 0); + tableLayoutPanel3.Controls.Add(panel4, 1, 0); + tableLayoutPanel3.Controls.Add(panel1, 0, 1); + tableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill; + tableLayoutPanel3.Location = new System.Drawing.Point(3, 18); + tableLayoutPanel3.Margin = new System.Windows.Forms.Padding(0); + tableLayoutPanel3.Name = "tableLayoutPanel3"; + tableLayoutPanel3.RowCount = 2; + tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 108F)); + tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 68F)); + tableLayoutPanel3.Size = new System.Drawing.Size(375, 204); + tableLayoutPanel3.TabIndex = 9; // // panel3 // - this.panel3.Controls.Add(this.label18); - this.panel3.Controls.Add(this.tbMappingA); - this.panel3.Controls.Add(this.label20); - this.panel3.Controls.Add(this.label22); - this.panel3.Controls.Add(this.tbMappingB); - this.panel3.Controls.Add(this.label23); - this.panel3.Controls.Add(this.tbMappingX); - this.panel3.Controls.Add(this.tbMappingY); - this.panel3.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel3.Location = new System.Drawing.Point(0, 0); - this.panel3.Margin = new System.Windows.Forms.Padding(0); - this.panel3.Name = "panel3"; - this.panel3.Size = new System.Drawing.Size(199, 108); - this.panel3.TabIndex = 28; + panel3.Controls.Add(label18); + panel3.Controls.Add(tbMappingA); + panel3.Controls.Add(label20); + panel3.Controls.Add(label22); + panel3.Controls.Add(tbMappingB); + panel3.Controls.Add(label23); + panel3.Controls.Add(tbMappingX); + panel3.Controls.Add(tbMappingY); + panel3.Dock = System.Windows.Forms.DockStyle.Fill; + panel3.Location = new System.Drawing.Point(0, 0); + panel3.Margin = new System.Windows.Forms.Padding(0); + panel3.Name = "panel3"; + panel3.Size = new System.Drawing.Size(225, 108); + panel3.TabIndex = 28; // // label18 // - this.label18.AutoSize = true; - this.label18.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); - this.label18.Location = new System.Drawing.Point(37, 87); - this.label18.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.label18.Name = "label18"; - this.label18.Size = new System.Drawing.Size(14, 15); - this.label18.TabIndex = 25; - this.label18.Text = "Y"; + label18.AutoSize = true; + label18.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + label18.Location = new System.Drawing.Point(37, 87); + label18.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + label18.Name = "label18"; + label18.Size = new System.Drawing.Size(14, 15); + label18.TabIndex = 25; + label18.Text = "Y"; // // tbMappingA // - this.tbMappingA.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbMappingA.Enabled = false; - this.tbMappingA.Location = new System.Drawing.Point(58, 6); - this.tbMappingA.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.tbMappingA.Name = "tbMappingA"; - this.tbMappingA.Size = new System.Drawing.Size(140, 23); - this.tbMappingA.TabIndex = 13; - this.tbMappingA.TabStop = false; + tbMappingA.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + tbMappingA.Enabled = false; + tbMappingA.Location = new System.Drawing.Point(58, 6); + tbMappingA.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + tbMappingA.Name = "tbMappingA"; + tbMappingA.Size = new System.Drawing.Size(167, 23); + tbMappingA.TabIndex = 13; + tbMappingA.TabStop = false; // // label20 // - this.label20.AutoSize = true; - this.label20.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); - this.label20.Location = new System.Drawing.Point(36, 9); - this.label20.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.label20.Name = "label20"; - this.label20.Size = new System.Drawing.Size(15, 15); - this.label20.TabIndex = 12; - this.label20.Text = "A"; + label20.AutoSize = true; + label20.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + label20.Location = new System.Drawing.Point(36, 9); + label20.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + label20.Name = "label20"; + label20.Size = new System.Drawing.Size(15, 15); + label20.TabIndex = 12; + label20.Text = "A"; // // label22 // - this.label22.AutoSize = true; - this.label22.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); - this.label22.Location = new System.Drawing.Point(36, 35); - this.label22.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.label22.Name = "label22"; - this.label22.Size = new System.Drawing.Size(15, 15); - this.label22.TabIndex = 14; - this.label22.Text = "B"; + label22.AutoSize = true; + label22.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + label22.Location = new System.Drawing.Point(36, 35); + label22.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + label22.Name = "label22"; + label22.Size = new System.Drawing.Size(15, 15); + label22.TabIndex = 14; + label22.Text = "B"; // // tbMappingB // - this.tbMappingB.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbMappingB.Enabled = false; - this.tbMappingB.Location = new System.Drawing.Point(58, 32); - this.tbMappingB.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.tbMappingB.Name = "tbMappingB"; - this.tbMappingB.Size = new System.Drawing.Size(140, 23); - this.tbMappingB.TabIndex = 15; - this.tbMappingB.TabStop = false; + tbMappingB.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + tbMappingB.Enabled = false; + tbMappingB.Location = new System.Drawing.Point(58, 32); + tbMappingB.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + tbMappingB.Name = "tbMappingB"; + tbMappingB.Size = new System.Drawing.Size(167, 23); + tbMappingB.TabIndex = 15; + tbMappingB.TabStop = false; // // label23 // - this.label23.AutoSize = true; - this.label23.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); - this.label23.Location = new System.Drawing.Point(36, 60); - this.label23.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.label23.Name = "label23"; - this.label23.Size = new System.Drawing.Size(15, 15); - this.label23.TabIndex = 16; - this.label23.Text = "X"; + label23.AutoSize = true; + label23.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + label23.Location = new System.Drawing.Point(36, 60); + label23.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + label23.Name = "label23"; + label23.Size = new System.Drawing.Size(15, 15); + label23.TabIndex = 16; + label23.Text = "X"; // // tbMappingX // - this.tbMappingX.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbMappingX.Enabled = false; - this.tbMappingX.Location = new System.Drawing.Point(58, 58); - this.tbMappingX.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.tbMappingX.Name = "tbMappingX"; - this.tbMappingX.Size = new System.Drawing.Size(140, 23); - this.tbMappingX.TabIndex = 17; - this.tbMappingX.TabStop = false; + tbMappingX.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + tbMappingX.Enabled = false; + tbMappingX.Location = new System.Drawing.Point(58, 58); + tbMappingX.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + tbMappingX.Name = "tbMappingX"; + tbMappingX.Size = new System.Drawing.Size(167, 23); + tbMappingX.TabIndex = 17; + tbMappingX.TabStop = false; // // tbMappingY // - this.tbMappingY.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbMappingY.Enabled = false; - this.tbMappingY.Location = new System.Drawing.Point(58, 84); - this.tbMappingY.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.tbMappingY.Name = "tbMappingY"; - this.tbMappingY.Size = new System.Drawing.Size(140, 23); - this.tbMappingY.TabIndex = 19; - this.tbMappingY.TabStop = false; + tbMappingY.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + tbMappingY.Enabled = false; + tbMappingY.Location = new System.Drawing.Point(58, 84); + tbMappingY.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + tbMappingY.Name = "tbMappingY"; + tbMappingY.Size = new System.Drawing.Size(167, 23); + tbMappingY.TabIndex = 19; + tbMappingY.TabStop = false; // // panel4 // - this.panel4.Controls.Add(this.tbMappingL1); - this.panel4.Controls.Add(this.label25); - this.panel4.Controls.Add(this.label26); - this.panel4.Controls.Add(this.label27); - this.panel4.Controls.Add(this.tbMappingL2); - this.panel4.Controls.Add(this.label28); - this.panel4.Controls.Add(this.tbMappingR1); - this.panel4.Controls.Add(this.tbMappingR2); - this.panel4.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel4.Location = new System.Drawing.Point(199, 0); - this.panel4.Margin = new System.Windows.Forms.Padding(0); - this.panel4.Name = "panel4"; - this.panel4.Size = new System.Drawing.Size(134, 108); - this.panel4.TabIndex = 29; + panel4.Controls.Add(tbMappingL1); + panel4.Controls.Add(label25); + panel4.Controls.Add(label26); + panel4.Controls.Add(label27); + panel4.Controls.Add(tbMappingL2); + panel4.Controls.Add(label28); + panel4.Controls.Add(tbMappingR1); + panel4.Controls.Add(tbMappingR2); + panel4.Dock = System.Windows.Forms.DockStyle.Fill; + panel4.Location = new System.Drawing.Point(225, 0); + panel4.Margin = new System.Windows.Forms.Padding(0); + panel4.Name = "panel4"; + panel4.Size = new System.Drawing.Size(150, 108); + panel4.TabIndex = 29; // // tbMappingL1 // - this.tbMappingL1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbMappingL1.Enabled = false; - this.tbMappingL1.Location = new System.Drawing.Point(31, 6); - this.tbMappingL1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.tbMappingL1.Name = "tbMappingL1"; - this.tbMappingL1.Size = new System.Drawing.Size(100, 23); - this.tbMappingL1.TabIndex = 27; - this.tbMappingL1.TabStop = false; + tbMappingL1.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + tbMappingL1.Enabled = false; + tbMappingL1.Location = new System.Drawing.Point(31, 6); + tbMappingL1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + tbMappingL1.Name = "tbMappingL1"; + tbMappingL1.Size = new System.Drawing.Size(117, 23); + tbMappingL1.TabIndex = 27; + tbMappingL1.TabStop = false; // // label25 // - this.label25.AutoSize = true; - this.label25.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); - this.label25.Location = new System.Drawing.Point(6, 87); - this.label25.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.label25.Name = "label25"; - this.label25.Size = new System.Drawing.Size(22, 15); - this.label25.TabIndex = 33; - this.label25.Text = "R2"; + label25.AutoSize = true; + label25.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + label25.Location = new System.Drawing.Point(6, 87); + label25.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + label25.Name = "label25"; + label25.Size = new System.Drawing.Size(22, 15); + label25.TabIndex = 33; + label25.Text = "R2"; // // label26 // - this.label26.AutoSize = true; - this.label26.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); - this.label26.Location = new System.Drawing.Point(6, 9); - this.label26.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.label26.Name = "label26"; - this.label26.Size = new System.Drawing.Size(20, 15); - this.label26.TabIndex = 26; - this.label26.Text = "L1"; + label26.AutoSize = true; + label26.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + label26.Location = new System.Drawing.Point(6, 9); + label26.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + label26.Name = "label26"; + label26.Size = new System.Drawing.Size(20, 15); + label26.TabIndex = 26; + label26.Text = "L1"; // // label27 // - this.label27.AutoSize = true; - this.label27.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); - this.label27.Location = new System.Drawing.Point(6, 61); - this.label27.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.label27.Name = "label27"; - this.label27.Size = new System.Drawing.Size(22, 15); - this.label27.TabIndex = 32; - this.label27.Text = "R1"; + label27.AutoSize = true; + label27.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + label27.Location = new System.Drawing.Point(6, 61); + label27.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + label27.Name = "label27"; + label27.Size = new System.Drawing.Size(22, 15); + label27.TabIndex = 32; + label27.Text = "R1"; // // tbMappingL2 // - this.tbMappingL2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbMappingL2.Enabled = false; - this.tbMappingL2.Location = new System.Drawing.Point(31, 32); - this.tbMappingL2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.tbMappingL2.Name = "tbMappingL2"; - this.tbMappingL2.Size = new System.Drawing.Size(100, 23); - this.tbMappingL2.TabIndex = 28; - this.tbMappingL2.TabStop = false; + tbMappingL2.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + tbMappingL2.Enabled = false; + tbMappingL2.Location = new System.Drawing.Point(31, 32); + tbMappingL2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + tbMappingL2.Name = "tbMappingL2"; + tbMappingL2.Size = new System.Drawing.Size(117, 23); + tbMappingL2.TabIndex = 28; + tbMappingL2.TabStop = false; // // label28 // - this.label28.AutoSize = true; - this.label28.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); - this.label28.Location = new System.Drawing.Point(6, 35); - this.label28.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.label28.Name = "label28"; - this.label28.Size = new System.Drawing.Size(20, 15); - this.label28.TabIndex = 31; - this.label28.Text = "L2"; + label28.AutoSize = true; + label28.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + label28.Location = new System.Drawing.Point(6, 35); + label28.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + label28.Name = "label28"; + label28.Size = new System.Drawing.Size(20, 15); + label28.TabIndex = 31; + label28.Text = "L2"; // // tbMappingR1 // - this.tbMappingR1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbMappingR1.Enabled = false; - this.tbMappingR1.Location = new System.Drawing.Point(31, 58); - this.tbMappingR1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.tbMappingR1.Name = "tbMappingR1"; - this.tbMappingR1.Size = new System.Drawing.Size(100, 23); - this.tbMappingR1.TabIndex = 29; - this.tbMappingR1.TabStop = false; + tbMappingR1.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + tbMappingR1.Enabled = false; + tbMappingR1.Location = new System.Drawing.Point(31, 58); + tbMappingR1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + tbMappingR1.Name = "tbMappingR1"; + tbMappingR1.Size = new System.Drawing.Size(117, 23); + tbMappingR1.TabIndex = 29; + tbMappingR1.TabStop = false; // // tbMappingR2 // - this.tbMappingR2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbMappingR2.Enabled = false; - this.tbMappingR2.Location = new System.Drawing.Point(31, 84); - this.tbMappingR2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.tbMappingR2.Name = "tbMappingR2"; - this.tbMappingR2.Size = new System.Drawing.Size(100, 23); - this.tbMappingR2.TabIndex = 30; - this.tbMappingR2.TabStop = false; + tbMappingR2.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + tbMappingR2.Enabled = false; + tbMappingR2.Location = new System.Drawing.Point(31, 84); + tbMappingR2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + tbMappingR2.Name = "tbMappingR2"; + tbMappingR2.Size = new System.Drawing.Size(117, 23); + tbMappingR2.TabIndex = 30; + tbMappingR2.TabStop = false; // // panel1 // - this.tableLayoutPanel3.SetColumnSpan(this.panel1, 2); - this.panel1.Controls.Add(this.tbMappingDPAD); - this.panel1.Controls.Add(this.tbMappingSELECT); - this.panel1.Controls.Add(this.label21); - this.panel1.Controls.Add(this.label19); - this.panel1.Controls.Add(this.label24); - this.panel1.Controls.Add(this.tbMappingSTART); - this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel1.Location = new System.Drawing.Point(0, 108); - this.panel1.Margin = new System.Windows.Forms.Padding(0); - this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(333, 82); - this.panel1.TabIndex = 30; + tableLayoutPanel3.SetColumnSpan(panel1, 2); + panel1.Controls.Add(tbMappingDPAD); + panel1.Controls.Add(tbMappingSELECT); + panel1.Controls.Add(label21); + panel1.Controls.Add(label19); + panel1.Controls.Add(label24); + panel1.Controls.Add(tbMappingSTART); + panel1.Dock = System.Windows.Forms.DockStyle.Fill; + panel1.Location = new System.Drawing.Point(0, 108); + panel1.Margin = new System.Windows.Forms.Padding(0); + panel1.Name = "panel1"; + panel1.Size = new System.Drawing.Size(375, 96); + panel1.TabIndex = 30; // // tbMappingDPAD // - this.tbMappingDPAD.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbMappingDPAD.Enabled = false; - this.tbMappingDPAD.Location = new System.Drawing.Point(58, 2); - this.tbMappingDPAD.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.tbMappingDPAD.Name = "tbMappingDPAD"; - this.tbMappingDPAD.Size = new System.Drawing.Size(272, 23); - this.tbMappingDPAD.TabIndex = 20; - this.tbMappingDPAD.TabStop = false; + tbMappingDPAD.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + tbMappingDPAD.Enabled = false; + tbMappingDPAD.Location = new System.Drawing.Point(58, 2); + tbMappingDPAD.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + tbMappingDPAD.Name = "tbMappingDPAD"; + tbMappingDPAD.Size = new System.Drawing.Size(315, 23); + tbMappingDPAD.TabIndex = 20; + tbMappingDPAD.TabStop = false; // // tbMappingSELECT // - this.tbMappingSELECT.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbMappingSELECT.Enabled = false; - this.tbMappingSELECT.Location = new System.Drawing.Point(58, 28); - this.tbMappingSELECT.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.tbMappingSELECT.Name = "tbMappingSELECT"; - this.tbMappingSELECT.Size = new System.Drawing.Size(272, 23); - this.tbMappingSELECT.TabIndex = 21; - this.tbMappingSELECT.TabStop = false; + tbMappingSELECT.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + tbMappingSELECT.Enabled = false; + tbMappingSELECT.Location = new System.Drawing.Point(58, 28); + tbMappingSELECT.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + tbMappingSELECT.Name = "tbMappingSELECT"; + tbMappingSELECT.Size = new System.Drawing.Size(315, 23); + tbMappingSELECT.TabIndex = 21; + tbMappingSELECT.TabStop = false; // // label21 // - this.label21.AutoSize = true; - this.label21.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); - this.label21.Location = new System.Drawing.Point(8, 57); - this.label21.Margin = new System.Windows.Forms.Padding(0); - this.label21.Name = "label21"; - this.label21.Size = new System.Drawing.Size(43, 15); - this.label21.TabIndex = 23; - this.label21.Text = "START"; + label21.AutoSize = true; + label21.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + label21.Location = new System.Drawing.Point(8, 57); + label21.Margin = new System.Windows.Forms.Padding(0); + label21.Name = "label21"; + label21.Size = new System.Drawing.Size(43, 15); + label21.TabIndex = 23; + label21.Text = "START"; // // label19 // - this.label19.AutoSize = true; - this.label19.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); - this.label19.Location = new System.Drawing.Point(12, 5); - this.label19.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.label19.Name = "label19"; - this.label19.Size = new System.Drawing.Size(39, 15); - this.label19.TabIndex = 24; - this.label19.Text = "DPAD"; + label19.AutoSize = true; + label19.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + label19.Location = new System.Drawing.Point(12, 5); + label19.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + label19.Name = "label19"; + label19.Size = new System.Drawing.Size(39, 15); + label19.TabIndex = 24; + label19.Text = "DPAD"; // // label24 // - this.label24.AutoSize = true; - this.label24.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); - this.label24.Location = new System.Drawing.Point(5, 31); - this.label24.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.label24.Name = "label24"; - this.label24.Size = new System.Drawing.Size(46, 15); - this.label24.TabIndex = 18; - this.label24.Text = "SELECT"; + label24.AutoSize = true; + label24.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + label24.Location = new System.Drawing.Point(5, 31); + label24.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + label24.Name = "label24"; + label24.Size = new System.Drawing.Size(46, 15); + label24.TabIndex = 18; + label24.Text = "SELECT"; // // tbMappingSTART // - this.tbMappingSTART.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbMappingSTART.Enabled = false; - this.tbMappingSTART.Location = new System.Drawing.Point(58, 54); - this.tbMappingSTART.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.tbMappingSTART.Name = "tbMappingSTART"; - this.tbMappingSTART.Size = new System.Drawing.Size(272, 23); - this.tbMappingSTART.TabIndex = 22; - this.tbMappingSTART.TabStop = false; - // - // panel5 - // - this.panel5.Controls.Add(this.tbCartName); - this.panel5.Controls.Add(this.lblCartName); - this.panel5.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel5.Location = new System.Drawing.Point(690, 577); - this.panel5.Margin = new System.Windows.Forms.Padding(0); - this.panel5.Name = "panel5"; - this.panel5.Size = new System.Drawing.Size(346, 30); - this.panel5.TabIndex = 9; - // - // tbCartName - // - this.tbCartName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbCartName.Enabled = false; - this.tbCartName.Location = new System.Drawing.Point(108, 1); - this.tbCartName.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.tbCartName.Name = "tbCartName"; - this.tbCartName.Size = new System.Drawing.Size(231, 23); - this.tbCartName.TabIndex = 1; - this.tbCartName.TabStop = false; - this.tbCartName.Text = "My Games"; - // - // lblCartName - // - this.lblCartName.AutoSize = true; - this.lblCartName.Enabled = false; - this.lblCartName.Location = new System.Drawing.Point(9, 4); - this.lblCartName.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.lblCartName.Name = "lblCartName"; - this.lblCartName.Size = new System.Drawing.Size(94, 15); - this.lblCartName.TabIndex = 0; - this.lblCartName.Text = "Cartridge Name:"; + tbMappingSTART.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + tbMappingSTART.Enabled = false; + tbMappingSTART.Location = new System.Drawing.Point(58, 54); + tbMappingSTART.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + tbMappingSTART.Name = "tbMappingSTART"; + tbMappingSTART.Size = new System.Drawing.Size(315, 23); + tbMappingSTART.TabIndex = 22; + tbMappingSTART.TabStop = false; // // tableLayoutPanel2 // - this.tableLayoutPanel2.ColumnCount = 1; - this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tableLayoutPanel2.Controls.Add(this.groupBox5, 0, 0); - this.tableLayoutPanel2.Controls.Add(this.gbScrapeByName, 0, 1); - this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel2.Location = new System.Drawing.Point(690, 322); - this.tableLayoutPanel2.Margin = new System.Windows.Forms.Padding(0); - this.tableLayoutPanel2.Name = "tableLayoutPanel2"; - this.tableLayoutPanel2.RowCount = 2; - this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 73F)); - this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tableLayoutPanel2.Size = new System.Drawing.Size(346, 214); - this.tableLayoutPanel2.TabIndex = 10; + tableLayoutPanel2.ColumnCount = 1; + tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + tableLayoutPanel2.Controls.Add(groupBox5, 0, 0); + tableLayoutPanel2.Controls.Add(gbScrapeByName, 0, 1); + tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill; + tableLayoutPanel2.Location = new System.Drawing.Point(902, 409); + tableLayoutPanel2.Margin = new System.Windows.Forms.Padding(0); + tableLayoutPanel2.Name = "tableLayoutPanel2"; + tableLayoutPanel2.RowCount = 2; + tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 73F)); + tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + tableLayoutPanel2.Size = new System.Drawing.Size(389, 228); + tableLayoutPanel2.TabIndex = 10; // // groupBox5 // - this.groupBox5.Controls.Add(this.cbRetroArchCore); - this.groupBox5.Controls.Add(this.rbInternalCore); - this.groupBox5.Controls.Add(this.lblMissingBiosFiles); - this.groupBox5.Controls.Add(this.rbRetroArchCore); - this.groupBox5.Dock = System.Windows.Forms.DockStyle.Fill; - this.groupBox5.Location = new System.Drawing.Point(2, 3); - this.groupBox5.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3); - this.groupBox5.Name = "groupBox5"; - this.groupBox5.Padding = new System.Windows.Forms.Padding(2, 3, 2, 3); - this.groupBox5.Size = new System.Drawing.Size(342, 67); - this.groupBox5.TabIndex = 0; - this.groupBox5.TabStop = false; - this.groupBox5.Text = "Emulator Settings"; + groupBox5.Controls.Add(cbRetroArchCore); + groupBox5.Controls.Add(rbInternalCore); + groupBox5.Controls.Add(lblMissingBiosFiles); + groupBox5.Controls.Add(rbRetroArchCore); + groupBox5.Dock = System.Windows.Forms.DockStyle.Fill; + groupBox5.Location = new System.Drawing.Point(2, 3); + groupBox5.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3); + groupBox5.Name = "groupBox5"; + groupBox5.Padding = new System.Windows.Forms.Padding(2, 3, 2, 3); + groupBox5.Size = new System.Drawing.Size(385, 67); + groupBox5.TabIndex = 0; + groupBox5.TabStop = false; + groupBox5.Text = "Emulator Settings"; // // cbRetroArchCore // - this.cbRetroArchCore.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.cbRetroArchCore.DisplayMember = "Text"; - this.cbRetroArchCore.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cbRetroArchCore.Enabled = false; - this.cbRetroArchCore.FormattingEnabled = true; - this.cbRetroArchCore.Location = new System.Drawing.Point(165, 39); - this.cbRetroArchCore.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.cbRetroArchCore.Name = "cbRetroArchCore"; - this.cbRetroArchCore.Size = new System.Drawing.Size(172, 23); - this.cbRetroArchCore.TabIndex = 30; - this.cbRetroArchCore.TabStop = false; - this.cbRetroArchCore.ValueMember = "Value"; - this.cbRetroArchCore.SelectionChangeCommitted += new System.EventHandler(this.ComboBox_SelectionChangeCommitted); + cbRetroArchCore.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + cbRetroArchCore.DisplayMember = "Text"; + cbRetroArchCore.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + cbRetroArchCore.Enabled = false; + cbRetroArchCore.FormattingEnabled = true; + cbRetroArchCore.Location = new System.Drawing.Point(165, 39); + cbRetroArchCore.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + cbRetroArchCore.Name = "cbRetroArchCore"; + cbRetroArchCore.Size = new System.Drawing.Size(214, 23); + cbRetroArchCore.TabIndex = 30; + cbRetroArchCore.TabStop = false; + cbRetroArchCore.ValueMember = "Value"; // // rbInternalCore // - this.rbInternalCore.AutoSize = true; - this.rbInternalCore.Checked = true; - this.rbInternalCore.Enabled = false; - this.rbInternalCore.Location = new System.Drawing.Point(6, 17); - this.rbInternalCore.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.rbInternalCore.Name = "rbInternalCore"; - this.rbInternalCore.Size = new System.Drawing.Size(65, 19); - this.rbInternalCore.TabIndex = 26; - this.rbInternalCore.Text = "Internal"; - this.rbInternalCore.UseVisualStyleBackColor = true; + rbInternalCore.AutoSize = true; + rbInternalCore.Checked = true; + rbInternalCore.Enabled = false; + rbInternalCore.Location = new System.Drawing.Point(6, 17); + rbInternalCore.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + rbInternalCore.Name = "rbInternalCore"; + rbInternalCore.Size = new System.Drawing.Size(65, 19); + rbInternalCore.TabIndex = 26; + rbInternalCore.Text = "Internal"; + rbInternalCore.UseVisualStyleBackColor = true; // // lblMissingBiosFiles // - this.lblMissingBiosFiles.AutoSize = true; - this.lblMissingBiosFiles.LinkColor = System.Drawing.Color.Red; - this.lblMissingBiosFiles.Location = new System.Drawing.Point(163, 19); - this.lblMissingBiosFiles.Name = "lblMissingBiosFiles"; - this.lblMissingBiosFiles.Size = new System.Drawing.Size(141, 15); - this.lblMissingBiosFiles.TabIndex = 31; - this.lblMissingBiosFiles.TabStop = true; - this.lblMissingBiosFiles.Text = "Upload missing BIOS files"; - this.toolTip1.SetToolTip(this.lblMissingBiosFiles, "Bla"); - this.lblMissingBiosFiles.Visible = false; - this.lblMissingBiosFiles.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lblMissingBiosFiles_LinkClicked); + lblMissingBiosFiles.AutoSize = true; + lblMissingBiosFiles.LinkColor = System.Drawing.Color.Red; + lblMissingBiosFiles.Location = new System.Drawing.Point(163, 19); + lblMissingBiosFiles.Name = "lblMissingBiosFiles"; + lblMissingBiosFiles.Size = new System.Drawing.Size(141, 15); + lblMissingBiosFiles.TabIndex = 31; + lblMissingBiosFiles.TabStop = true; + lblMissingBiosFiles.Text = "Upload missing BIOS files"; + toolTip1.SetToolTip(lblMissingBiosFiles, "Bla"); + lblMissingBiosFiles.Visible = false; + lblMissingBiosFiles.LinkClicked += lblMissingBiosFiles_LinkClicked; // // rbRetroArchCore // - this.rbRetroArchCore.AutoSize = true; - this.rbRetroArchCore.Enabled = false; - this.rbRetroArchCore.Location = new System.Drawing.Point(6, 40); - this.rbRetroArchCore.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.rbRetroArchCore.Name = "rbRetroArchCore"; - this.rbRetroArchCore.Size = new System.Drawing.Size(151, 19); - this.rbRetroArchCore.TabIndex = 29; - this.rbRetroArchCore.Text = "External RetroArch Core"; - this.rbRetroArchCore.UseVisualStyleBackColor = true; - this.rbRetroArchCore.CheckedChanged += new System.EventHandler(this.rbRetroArchCore_CheckedChanged); + rbRetroArchCore.AutoSize = true; + rbRetroArchCore.Enabled = false; + rbRetroArchCore.Location = new System.Drawing.Point(6, 40); + rbRetroArchCore.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + rbRetroArchCore.Name = "rbRetroArchCore"; + rbRetroArchCore.Size = new System.Drawing.Size(151, 19); + rbRetroArchCore.TabIndex = 29; + rbRetroArchCore.Text = "External RetroArch Core"; + rbRetroArchCore.UseVisualStyleBackColor = true; + rbRetroArchCore.CheckedChanged += rbRetroArchCore_CheckedChanged; // // gbScrapeByName // - this.gbScrapeByName.Controls.Add(this.lbScrapeResults); - this.gbScrapeByName.Controls.Add(this.btnScrape); - this.gbScrapeByName.Controls.Add(this.tbScrapeName); - this.gbScrapeByName.Dock = System.Windows.Forms.DockStyle.Fill; - this.gbScrapeByName.Location = new System.Drawing.Point(2, 76); - this.gbScrapeByName.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3); - this.gbScrapeByName.Name = "gbScrapeByName"; - this.gbScrapeByName.Padding = new System.Windows.Forms.Padding(2, 3, 2, 3); - this.gbScrapeByName.Size = new System.Drawing.Size(342, 135); - this.gbScrapeByName.TabIndex = 1; - this.gbScrapeByName.TabStop = false; - this.gbScrapeByName.Text = "Scrape by game title"; + gbScrapeByName.Controls.Add(lbScrapeResults); + gbScrapeByName.Controls.Add(btnScrape); + gbScrapeByName.Controls.Add(tbScrapeName); + gbScrapeByName.Dock = System.Windows.Forms.DockStyle.Fill; + gbScrapeByName.Location = new System.Drawing.Point(2, 76); + gbScrapeByName.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3); + gbScrapeByName.Name = "gbScrapeByName"; + gbScrapeByName.Padding = new System.Windows.Forms.Padding(2, 3, 2, 3); + gbScrapeByName.Size = new System.Drawing.Size(385, 149); + gbScrapeByName.TabIndex = 1; + gbScrapeByName.TabStop = false; + gbScrapeByName.Text = "Scrape by game title"; // // lbScrapeResults // - this.lbScrapeResults.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.lbScrapeResults.Enabled = false; - this.lbScrapeResults.FormattingEnabled = true; - this.lbScrapeResults.ItemHeight = 15; - this.lbScrapeResults.Location = new System.Drawing.Point(4, 50); - this.lbScrapeResults.Name = "lbScrapeResults"; - this.lbScrapeResults.Size = new System.Drawing.Size(333, 79); - this.lbScrapeResults.TabIndex = 2; - this.lbScrapeResults.TabStop = false; - this.lbScrapeResults.SelectedIndexChanged += new System.EventHandler(this.lbScrapeResults_SelectedIndexChanged); + lbScrapeResults.Dock = System.Windows.Forms.DockStyle.Bottom; + lbScrapeResults.Enabled = false; + lbScrapeResults.FormattingEnabled = true; + lbScrapeResults.ItemHeight = 15; + lbScrapeResults.Location = new System.Drawing.Point(2, 52); + lbScrapeResults.Name = "lbScrapeResults"; + lbScrapeResults.Size = new System.Drawing.Size(381, 94); + lbScrapeResults.TabIndex = 2; + lbScrapeResults.TabStop = false; + lbScrapeResults.SelectedIndexChanged += lbScrapeResults_SelectedIndexChanged; // // btnScrape // - this.btnScrape.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnScrape.Enabled = false; - this.btnScrape.Location = new System.Drawing.Point(262, 20); - this.btnScrape.Name = "btnScrape"; - this.btnScrape.Size = new System.Drawing.Size(75, 23); - this.btnScrape.TabIndex = 1; - this.btnScrape.TabStop = false; - this.btnScrape.Text = "Search"; - this.btnScrape.UseVisualStyleBackColor = true; - this.btnScrape.Click += new System.EventHandler(this.btnScrape_Click); + btnScrape.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; + btnScrape.Enabled = false; + btnScrape.Location = new System.Drawing.Point(304, 20); + btnScrape.Name = "btnScrape"; + btnScrape.Size = new System.Drawing.Size(75, 23); + btnScrape.TabIndex = 1; + btnScrape.TabStop = false; + btnScrape.Text = "Search"; + btnScrape.UseVisualStyleBackColor = true; + btnScrape.Click += btnScrape_Click; // // tbScrapeName // - this.tbScrapeName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbScrapeName.Enabled = false; - this.tbScrapeName.Location = new System.Drawing.Point(4, 20); - this.tbScrapeName.Name = "tbScrapeName"; - this.tbScrapeName.Size = new System.Drawing.Size(252, 23); - this.tbScrapeName.TabIndex = 0; - this.tbScrapeName.TabStop = false; - this.tbScrapeName.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tbScrapeName_KeyPress); - // - // pbEverSD - // - this.pbEverSD.Dock = System.Windows.Forms.DockStyle.Fill; - this.pbEverSD.Image = global::EverLoader.Properties.Resources.Logo___EverSD; - this.pbEverSD.Location = new System.Drawing.Point(345, 577); - this.pbEverSD.Margin = new System.Windows.Forms.Padding(0, 0, 0, 8); - this.pbEverSD.Name = "pbEverSD"; - this.pbEverSD.Size = new System.Drawing.Size(345, 22); - this.pbEverSD.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.pbEverSD.TabIndex = 11; - this.pbEverSD.TabStop = false; - // - // panel6 - // - this.panel6.Controls.Add(this.lblNumberOfGamesSelected); - this.panel6.Controls.Add(this.pbConnected); - this.panel6.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel6.Location = new System.Drawing.Point(0, 577); - this.panel6.Margin = new System.Windows.Forms.Padding(0); - this.panel6.Name = "panel6"; - this.panel6.Size = new System.Drawing.Size(345, 30); - this.panel6.TabIndex = 12; - // - // lblNumberOfGamesSelected - // - this.lblNumberOfGamesSelected.AutoSize = true; - this.lblNumberOfGamesSelected.Dock = System.Windows.Forms.DockStyle.Right; - this.lblNumberOfGamesSelected.Location = new System.Drawing.Point(337, 0); - this.lblNumberOfGamesSelected.Name = "lblNumberOfGamesSelected"; - this.lblNumberOfGamesSelected.Padding = new System.Windows.Forms.Padding(0, 5, 8, 0); - this.lblNumberOfGamesSelected.Size = new System.Drawing.Size(8, 20); - this.lblNumberOfGamesSelected.TabIndex = 5; - // - // tableLayoutPanel7 - // - this.tableLayoutPanel7.ColumnCount = 3; - this.tableLayoutPanel7.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40F)); - this.tableLayoutPanel7.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 4F)); - this.tableLayoutPanel7.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 56F)); - this.tableLayoutPanel7.Controls.Add(this.btnNewSDFolder, 2, 0); - this.tableLayoutPanel7.Controls.Add(this.btnAddGames, 0, 0); - this.tableLayoutPanel7.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel7.Location = new System.Drawing.Point(0, 536); - this.tableLayoutPanel7.Margin = new System.Windows.Forms.Padding(0); - this.tableLayoutPanel7.Name = "tableLayoutPanel7"; - this.tableLayoutPanel7.RowCount = 1; - this.tableLayoutPanel7.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tableLayoutPanel7.Size = new System.Drawing.Size(345, 41); - this.tableLayoutPanel7.TabIndex = 13; - // - // btnNewSDFolder - // - this.btnNewSDFolder.Dock = System.Windows.Forms.DockStyle.Fill; - this.btnNewSDFolder.Enabled = false; - this.btnNewSDFolder.Location = new System.Drawing.Point(158, 7); - this.btnNewSDFolder.Margin = new System.Windows.Forms.Padding(7); - this.btnNewSDFolder.Name = "btnNewSDFolder"; - this.btnNewSDFolder.Size = new System.Drawing.Size(180, 27); - this.btnNewSDFolder.TabIndex = 2; - this.btnNewSDFolder.TabStop = false; - this.btnNewSDFolder.Text = "Create New Folder on MicroSD"; - this.btnNewSDFolder.UseVisualStyleBackColor = true; - this.btnNewSDFolder.Click += new System.EventHandler(this.btnNewSDFolder_Click); + tbScrapeName.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + tbScrapeName.Enabled = false; + tbScrapeName.Location = new System.Drawing.Point(4, 20); + tbScrapeName.Name = "tbScrapeName"; + tbScrapeName.Size = new System.Drawing.Size(294, 23); + tbScrapeName.TabIndex = 0; + tbScrapeName.TabStop = false; + tbScrapeName.KeyPress += tbScrapeName_KeyPress; // // openGameImage // - this.openGameImage.Filter = "Images (*.bmp;*.png;*.jpg;*.jpeg;*.gif)|*.bmp;*.png;*.jpg;*.jpeg;*.gif"; - this.openGameImage.Title = "Select Image"; + openGameImage.Filter = "Images (*.bmp;*.png;*.jpg;*.jpeg;*.gif)|*.bmp;*.png;*.jpg;*.jpeg;*.gif"; + openGameImage.Title = "Select Image"; // // contextMenuStrip1 // - this.contextMenuStrip1.ImageScalingSize = new System.Drawing.Size(32, 32); - this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.scrapeToolStripMenuItem, - this.toolStripSeparator1, - this.deleteSelectedGamesToolStripMenuItem}); - this.contextMenuStrip1.Name = "contextMenuStrip1"; - this.contextMenuStrip1.Size = new System.Drawing.Size(229, 54); - this.contextMenuStrip1.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStrip1_Opening); + contextMenuStrip1.ImageScalingSize = new System.Drawing.Size(32, 32); + contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { scrapeToolStripMenuItem, toolStripSeparator1, deleteSelectedGamesToolStripMenuItem }); + contextMenuStrip1.Name = "contextMenuStrip1"; + contextMenuStrip1.Size = new System.Drawing.Size(229, 54); + contextMenuStrip1.Opening += contextMenuStrip1_Opening; // // scrapeToolStripMenuItem // - this.scrapeToolStripMenuItem.Name = "scrapeToolStripMenuItem"; - this.scrapeToolStripMenuItem.Size = new System.Drawing.Size(228, 22); - this.scrapeToolStripMenuItem.Text = "Auto-scrape selected ROM(s)"; - this.scrapeToolStripMenuItem.Click += new System.EventHandler(this.scrapeToolStripMenuItem_Click); + scrapeToolStripMenuItem.Name = "scrapeToolStripMenuItem"; + scrapeToolStripMenuItem.Size = new System.Drawing.Size(228, 22); + scrapeToolStripMenuItem.Text = "Auto-scrape selected ROM(s)"; + scrapeToolStripMenuItem.Click += scrapeToolStripMenuItem_Click; // // toolStripSeparator1 // - this.toolStripSeparator1.Name = "toolStripSeparator1"; - this.toolStripSeparator1.Size = new System.Drawing.Size(225, 6); + toolStripSeparator1.Name = "toolStripSeparator1"; + toolStripSeparator1.Size = new System.Drawing.Size(225, 6); // // deleteSelectedGamesToolStripMenuItem // - this.deleteSelectedGamesToolStripMenuItem.Name = "deleteSelectedGamesToolStripMenuItem"; - this.deleteSelectedGamesToolStripMenuItem.Size = new System.Drawing.Size(228, 22); - this.deleteSelectedGamesToolStripMenuItem.Text = "Delete selected ROM(s)"; - this.deleteSelectedGamesToolStripMenuItem.Click += new System.EventHandler(this.deleteSelectedGamesToolStripMenuItem_Click); + deleteSelectedGamesToolStripMenuItem.Name = "deleteSelectedGamesToolStripMenuItem"; + deleteSelectedGamesToolStripMenuItem.Size = new System.Drawing.Size(228, 22); + deleteSelectedGamesToolStripMenuItem.Text = "Delete selected ROM(s)"; + deleteSelectedGamesToolStripMenuItem.Click += deleteSelectedGamesToolStripMenuItem_Click; // // toolTip1 // - this.toolTip1.IsBalloon = true; + toolTip1.IsBalloon = true; + // + // tableLayoutPanel8 + // + tableLayoutPanel8.ColumnCount = 3; + tableLayoutPanel8.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40F)); + tableLayoutPanel8.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 4F)); + tableLayoutPanel8.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 56F)); + tableLayoutPanel8.Controls.Add(button1, 2, 0); + tableLayoutPanel8.Dock = System.Windows.Forms.DockStyle.Fill; + tableLayoutPanel8.Location = new System.Drawing.Point(0, 0); + tableLayoutPanel8.Margin = new System.Windows.Forms.Padding(0); + tableLayoutPanel8.Name = "tableLayoutPanel8"; + tableLayoutPanel8.RowCount = 1; + tableLayoutPanel8.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + tableLayoutPanel8.Size = new System.Drawing.Size(200, 100); + tableLayoutPanel8.TabIndex = 0; + // + // button1 + // + button1.Dock = System.Windows.Forms.DockStyle.Fill; + button1.Enabled = false; + button1.Location = new System.Drawing.Point(98, 12); + button1.Margin = new System.Windows.Forms.Padding(10, 12, 10, 12); + button1.Name = "button1"; + button1.Size = new System.Drawing.Size(92, 76); + button1.TabIndex = 2; + button1.TabStop = false; + button1.Text = "Create New Folder on MicroSD"; + button1.UseVisualStyleBackColor = true; + // + // button2 + // + button2.Dock = System.Windows.Forms.DockStyle.Fill; + button2.Location = new System.Drawing.Point(10, 12); + button2.Margin = new System.Windows.Forms.Padding(10, 12, 10, 12); + button2.Name = "button2"; + button2.Size = new System.Drawing.Size(60, 76); + button2.TabIndex = 1; + button2.TabStop = false; + button2.Text = "Add New ROM(s)"; + button2.UseVisualStyleBackColor = true; + // + // contextMenuCartridge + // + contextMenuCartridge.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { importROMToCollectionToolStripMenuItem, toolStripSeparator2, deleteROMToolStripMenuItem, deleteFolderToolStripMenuItem }); + contextMenuCartridge.Name = "contextMenuCartridge"; + contextMenuCartridge.Size = new System.Drawing.Size(212, 76); + contextMenuCartridge.Opening += contextMenuCartridge_Opening; + // + // importROMToCollectionToolStripMenuItem + // + importROMToCollectionToolStripMenuItem.Name = "importROMToCollectionToolStripMenuItem"; + importROMToCollectionToolStripMenuItem.Size = new System.Drawing.Size(211, 22); + importROMToCollectionToolStripMenuItem.Text = "Import ROM to Collection"; + // + // toolStripSeparator2 + // + toolStripSeparator2.Name = "toolStripSeparator2"; + toolStripSeparator2.Size = new System.Drawing.Size(208, 6); + // + // deleteROMToolStripMenuItem + // + deleteROMToolStripMenuItem.Name = "deleteROMToolStripMenuItem"; + deleteROMToolStripMenuItem.Size = new System.Drawing.Size(211, 22); + deleteROMToolStripMenuItem.Text = "Delete ROM"; + // + // deleteFolderToolStripMenuItem + // + deleteFolderToolStripMenuItem.Name = "deleteFolderToolStripMenuItem"; + deleteFolderToolStripMenuItem.Size = new System.Drawing.Size(211, 22); + deleteFolderToolStripMenuItem.Text = "Delete Folder"; + // + // contextMenuStripMSD + // + contextMenuStripMSD.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { test1ToolStripMenuItem }); + contextMenuStripMSD.Name = "contextMenuStripMSD"; + contextMenuStripMSD.Size = new System.Drawing.Size(100, 26); + contextMenuStripMSD.Opening += contextMenuStripMSD_Opening; + // + // test1ToolStripMenuItem + // + test1ToolStripMenuItem.Name = "test1ToolStripMenuItem"; + test1ToolStripMenuItem.Size = new System.Drawing.Size(99, 22); + test1ToolStripMenuItem.Text = "test1"; // // MainForm // - this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.BackColor = System.Drawing.SystemColors.Control; - this.ClientSize = new System.Drawing.Size(1036, 631); - this.Controls.Add(this.tableLayoutPanel1); - this.Controls.Add(this.menuStrip1); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MainMenuStrip = this.menuStrip1; - this.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1); - this.Name = "MainForm"; - this.Text = "EverLoader"; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing); - this.Load += new System.EventHandler(this.MainForm_Load); - this.Shown += new System.EventHandler(this.MainForm_Shown); - this.Resize += new System.EventHandler(this.MainForm_Resize); - this.groupBox1.ResumeLayout(false); - this.tableLayoutPanel4.ResumeLayout(false); - this.panel15.ResumeLayout(false); - this.panel15.PerformLayout(); - this.panel2.ResumeLayout(false); - this.panel2.PerformLayout(); - this.panel8.ResumeLayout(false); - this.panel8.PerformLayout(); - this.panel9.ResumeLayout(false); - this.panel9.PerformLayout(); - this.panel10.ResumeLayout(false); - this.panel10.PerformLayout(); - this.panel11.ResumeLayout(false); - this.panel11.PerformLayout(); - this.groupBox2.ResumeLayout(false); - this.tableLayoutPanel5.ResumeLayout(false); - this.tableLayoutPanel6.ResumeLayout(false); - this.panel7.ResumeLayout(false); - this.panel7.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pbBoxArtLarge)).EndInit(); - this.panel12.ResumeLayout(false); - this.panel12.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pbBoxArtMedium)).EndInit(); - this.panel13.ResumeLayout(false); - this.panel13.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pbBoxArtSmall)).EndInit(); - this.panel14.ResumeLayout(false); - this.panel14.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pbBanner)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.pbConnected)).EndInit(); - this.groupBox3.ResumeLayout(false); - this.menuStrip1.ResumeLayout(false); - this.menuStrip1.PerformLayout(); - this.tableLayoutPanel1.ResumeLayout(false); - this.groupBox4.ResumeLayout(false); - this.tableLayoutPanel3.ResumeLayout(false); - this.panel3.ResumeLayout(false); - this.panel3.PerformLayout(); - this.panel4.ResumeLayout(false); - this.panel4.PerformLayout(); - this.panel1.ResumeLayout(false); - this.panel1.PerformLayout(); - this.panel5.ResumeLayout(false); - this.panel5.PerformLayout(); - this.tableLayoutPanel2.ResumeLayout(false); - this.groupBox5.ResumeLayout(false); - this.groupBox5.PerformLayout(); - this.gbScrapeByName.ResumeLayout(false); - this.gbScrapeByName.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pbEverSD)).EndInit(); - this.panel6.ResumeLayout(false); - this.panel6.PerformLayout(); - this.tableLayoutPanel7.ResumeLayout(false); - this.contextMenuStrip1.ResumeLayout(false); - this.ResumeLayout(false); - this.PerformLayout(); - + AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); + AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + BackColor = System.Drawing.SystemColors.Control; + ClientSize = new System.Drawing.Size(1291, 661); + Controls.Add(tableLayoutPanel1); + Controls.Add(menuStrip1); + Icon = (System.Drawing.Icon)resources.GetObject("$this.Icon"); + MainMenuStrip = menuStrip1; + Margin = new System.Windows.Forms.Padding(2, 1, 2, 1); + Name = "MainForm"; + Text = "EverLoader"; + FormClosing += MainForm_FormClosing; + Load += MainForm_Load; + Shown += MainForm_Shown; + Resize += MainForm_Resize; + groupBox1.ResumeLayout(false); + tableLayoutPanel4.ResumeLayout(false); + panel15.ResumeLayout(false); + panel15.PerformLayout(); + panel2.ResumeLayout(false); + panel2.PerformLayout(); + panel8.ResumeLayout(false); + panel8.PerformLayout(); + panel9.ResumeLayout(false); + panel9.PerformLayout(); + panel10.ResumeLayout(false); + panel10.PerformLayout(); + panel11.ResumeLayout(false); + panel11.PerformLayout(); + gbBoxArt.ResumeLayout(false); + tableLayoutPanel5.ResumeLayout(false); + tableLayoutPanel6.ResumeLayout(false); + panel12.ResumeLayout(false); + panel12.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)pbBoxArtMedium).EndInit(); + panel13.ResumeLayout(false); + panel13.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)pbBoxArtSmall).EndInit(); + panel7.ResumeLayout(false); + panel7.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)pbBoxArtLarge).EndInit(); + panel14.ResumeLayout(false); + panel14.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)pbBanner).EndInit(); + gbCollection.ResumeLayout(false); + tblLayoutCollection.ResumeLayout(false); + tblLayoutCollection.PerformLayout(); + menuStrip1.ResumeLayout(false); + menuStrip1.PerformLayout(); + tableLayoutPanel1.ResumeLayout(false); + gbCartridge.ResumeLayout(false); + tblLayoutCartridge.ResumeLayout(false); + tblLayoutCartridge.PerformLayout(); + tableLayoutPanel7.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)pictureBox3).EndInit(); + ((System.ComponentModel.ISupportInitialize)pbConnected2).EndInit(); + groupBox4.ResumeLayout(false); + tableLayoutPanel3.ResumeLayout(false); + panel3.ResumeLayout(false); + panel3.PerformLayout(); + panel4.ResumeLayout(false); + panel4.PerformLayout(); + panel1.ResumeLayout(false); + panel1.PerformLayout(); + tableLayoutPanel2.ResumeLayout(false); + groupBox5.ResumeLayout(false); + groupBox5.PerformLayout(); + gbScrapeByName.ResumeLayout(false); + gbScrapeByName.PerformLayout(); + contextMenuStrip1.ResumeLayout(false); + tableLayoutPanel8.ResumeLayout(false); + contextMenuCartridge.ResumeLayout(false); + contextMenuStripMSD.ResumeLayout(false); + ResumeLayout(false); + PerformLayout(); } #endregion - private System.Windows.Forms.Button btnAddGames; private System.Windows.Forms.GroupBox groupBox1; - private System.Windows.Forms.GroupBox groupBox2; - private System.Windows.Forms.GroupBox groupBox3; + private System.Windows.Forms.GroupBox gbBoxArt; + private System.Windows.Forms.GroupBox gbCollection; private System.Windows.Forms.MenuStrip menuStrip1; private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem helpToolStripMenuItem; @@ -1776,7 +1913,6 @@ private void InitializeComponent() private System.Windows.Forms.ToolStripMenuItem optimizeImagesToolStripMenuItem; private System.Windows.Forms.Label lblTitle; private System.Windows.Forms.TextBox tbTitle; - private System.Windows.Forms.PictureBox pbConnected; private System.Windows.Forms.TextBox tbDescription; private System.Windows.Forms.Label lblDescription; private System.Windows.Forms.Label lblPlatform; @@ -1794,8 +1930,6 @@ private void InitializeComponent() private System.Windows.Forms.Label label5; private System.Windows.Forms.Label label4; private System.Windows.Forms.PictureBox pbBoxArtMedium; - private System.Windows.Forms.Button btnSelectSD; - private System.Windows.Forms.Button btnSyncToSD; private System.Windows.Forms.GroupBox groupBox4; private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3; private System.Windows.Forms.Panel panel3; @@ -1839,9 +1973,6 @@ private void InitializeComponent() private System.Windows.Forms.PictureBox pbBanner; private System.Windows.Forms.OpenFileDialog openGameImage; private GroupedComboBox cbPlatform; - private System.Windows.Forms.Panel panel5; - private System.Windows.Forms.Label lblCartName; - private System.Windows.Forms.TextBox tbCartName; private System.Windows.Forms.Button btnClearBanner; private System.Windows.Forms.Button btnClearSmall; private System.Windows.Forms.Button btnClearMedium; @@ -1864,10 +1995,7 @@ private void InitializeComponent() private System.Windows.Forms.LinkLabel llBannerNext; private System.Windows.Forms.LinkLabel llBannerDown; private System.Windows.Forms.LinkLabel llBannerUp; - private System.Windows.Forms.PictureBox pbEverSD; private System.Windows.Forms.PageSetupDialog pageSetupDialog1; - private System.Windows.Forms.Label lblNumberOfGamesSelected; - private System.Windows.Forms.Panel panel6; private System.Windows.Forms.TableLayoutPanel tableLayoutPanel5; private System.Windows.Forms.TableLayoutPanel tableLayoutPanel6; private AspectRatioPanel panel7; @@ -1877,8 +2005,34 @@ private void InitializeComponent() private System.Windows.Forms.Panel panel2; private System.Windows.Forms.Panel panel15; private System.Windows.Forms.CheckBox cbMultiDisc; - private System.Windows.Forms.Button btnNewSDFolder; + private System.Windows.Forms.TableLayoutPanel tblLayoutCollection; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel8; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.GroupBox gbCartridge; + private System.Windows.Forms.TableLayoutPanel tblLayoutCartridge; + private System.Windows.Forms.Button btnSyncWithSDCard; + private System.Windows.Forms.TextBox tbCartName2; + private System.Windows.Forms.Label lblCartName; + private System.Windows.Forms.Button btnSelectedSD; + private System.Windows.Forms.Button button5; + private System.Windows.Forms.Label lblNumberOfGamesSelected; + private System.Windows.Forms.Button btnNewSDCardFolder; + private System.Windows.Forms.Label lblNumberGamesSDCard; + private System.Windows.Forms.TreeView tvCartridge; private System.Windows.Forms.TableLayoutPanel tableLayoutPanel7; + private System.Windows.Forms.PictureBox pictureBox3; + private System.Windows.Forms.PictureBox pbConnected2; + private System.Windows.Forms.ContextMenuStrip contextMenuCartridge; + private System.Windows.Forms.ToolStripMenuItem importROMToCollectionToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; + private System.Windows.Forms.ToolStripMenuItem deleteROMToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem deleteFolderToolStripMenuItem; + private System.Windows.Forms.ContextMenuStrip contextMenuStripMSD; + private System.Windows.Forms.ToolStripMenuItem test1ToolStripMenuItem; + private System.Windows.Forms.TextBox tbSearchCollection; + private System.Windows.Forms.TextBox tbSearchCartridge; + private System.Windows.Forms.ImageList imageList1; } } diff --git a/Forms/MainForm.cs b/Forms/MainForm.cs index 9472d74..784a4a2 100644 --- a/Forms/MainForm.cs +++ b/Forms/MainForm.cs @@ -8,17 +8,16 @@ using System; using System.Collections.Generic; using System.ComponentModel; -using System.Data; -using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; -using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Microsoft.Extensions.DependencyInjection; using System.Text.RegularExpressions; -using TheGamesDBApiWrapper.Data.ApiClasses; +using TreeView = System.Windows.Forms.TreeView; +using TextBox = System.Windows.Forms.TextBox; +using Button = System.Windows.Forms.Button; namespace EverLoader { @@ -31,6 +30,7 @@ public partial class MainForm : Form private readonly AppUpdateManager _appUpdateManager; private readonly AppSettings _appSettings; private readonly UserSettingsManager _userSettingsManager; + private ToolTip toolTipLabel = new ToolTip(); public string SDDrive { get; set; } public MainForm(GamesManager gamesManager, @@ -73,6 +73,9 @@ public MainForm(GamesManager gamesManager, CheckUserSettings(); PopulatePlatformCombobox(); + + GetFolderList(); + BuildFolderTree(""); } private void CheckUserSettings() @@ -102,11 +105,12 @@ private void PopulatePlatformCombobox() var xPlatform = _appSettings.Platforms.FirstOrDefault(p => p.Name == x); var yPlatform = _appSettings.Platforms.FirstOrDefault(p => p.Name == y); if (xPlatform != null && yPlatform != null - && xPlatform.Group == yPlatform.Group - && xPlatform.GroupItemSortOrder * yPlatform.GroupItemSortOrder != 0) + && xPlatform.Group == yPlatform.Group + && xPlatform.GroupItemSortOrder * yPlatform.GroupItemSortOrder != 0) { return Comparer.Default.Compare(xPlatform.GroupItemSortOrder, yPlatform.GroupItemSortOrder); } + return Comparer.Default.Compare(x == "Other" ? "ZZZ" : x, y == "Other" ? "ZZZ" : y); }); cbPlatform.DataSource = items; @@ -115,7 +119,6 @@ private void PopulatePlatformCombobox() private void MainForm_Load(object sender, EventArgs e) { - } private void MainForm_FormClosing(object sender, FormClosingEventArgs e) @@ -144,7 +147,7 @@ private void PopulateRomFilterCombobox() //add platforms used by current collection of games foreach (var platform in _gamesManager.GetExistingGamePlatforms()) { - dsRomFilter.Add(new + dsRomFilter.Add(new { Group = "Filter by Platform", Text = platform.GroupAndName, @@ -182,8 +185,8 @@ private async void MainForm_Shown(object sender, System.EventArgs e) if (_gamesManager.GamesDictionary.Count == 0) { toolTip1.Show("Welcome to EverLoader; the easiest way to sync your ROMs to the EverSD cart!\n\n" + - "It looks like your ROMs collection is still empty...\n\n" + - "Click the 'Add New ROM(s)' button below to import your ROMs.", lvGames); + "It looks like your ROMs collection is still empty...\n\n" + + "Click the 'Add New ROM(s)' button below to import your ROMs.", lvGames); } //run stuff in the background @@ -193,7 +196,10 @@ await Task.Run(async () => { await _romManager.Init(); } - catch (Exception) { /* ignore for now */ } + catch (Exception ex) + { + /* ignore for now */ + } }); } @@ -236,6 +242,7 @@ private void ClearDataBindings() { _game.GameInfoChanged -= Game_GameInfoChanged; } + //bind with empty game object to clear the form fields _game = null; //_platform = null; @@ -342,7 +349,7 @@ private void ComboBox_SelectionChangeCommitted(object sender, System.EventArgs e /// private void UpdateMissingBiosFilesLabel() { - var missingBiosFiles = _gamesManager.GetMissingBiosFiles(_game, includeOptionalBios:true); + var missingBiosFiles = _gamesManager.GetMissingBiosFiles(_game, includeOptionalBios: true); lblMissingBiosFiles.Visible = missingBiosFiles.Length > 0; var platform = _gamesManager.GetGamePlatform(_game); if (platform != null) @@ -363,7 +370,9 @@ private void UpdateMissingBiosFilesLabel() missingBiosList = string.Join("\n - ", missingBiosFiles.Select(b => b.FileName)); missingBiosText = "supports\nthese optional"; } - toolTip1.SetToolTip(lblMissingBiosFiles, $"The {platform.Name} emulator {missingBiosText} BIOS files:\n - {missingBiosList}"); + + toolTip1.SetToolTip(lblMissingBiosFiles, + $"The {platform.Name} emulator {missingBiosText} BIOS files:\n - {missingBiosList}"); } } @@ -392,33 +401,31 @@ private async void Game_GameInfoChanged(object sender, EventArgs e) //game name could have been changed lvGames.SelectedItems[0].Text = _gamesManager.GetRomListTitle(_game); } - } } private void btnSelectSD_Click(object sender, EventArgs e) { - fileToolStripMenuItem.ShowDropDown(); - selectSDDriveToolStripMenuItem.ShowDropDown(); + contextMenuStripMSD.Show(Cursor.Position); } private async Task SelectSDDrive(string driveName) { SDDrive = driveName; var validDrive = driveName != null; - pbConnected.Image = validDrive ? Properties.Resources.green : Properties.Resources.red; - btnSyncToSD.Enabled = validDrive; - btnNewSDFolder.Enabled = validDrive; + pbConnected2.Image = validDrive ? Properties.Resources.green : Properties.Resources.red; + btnSyncWithSDCard.Enabled = validDrive; + btnNewSDCardFolder.Enabled = validDrive; lblCartName.Enabled = validDrive; - tbCartName.Enabled = validDrive; + tbCartName2.Enabled = validDrive; if (validDrive) { - btnSelectSD.Text = $"MicroSD = {driveName}"; + btnSelectedSD.Text = $"MicroSD = {driveName}"; } else { - btnSelectSD.Text = "Select MicroSD"; + btnSelectedSD.Text = "Select MicroSD"; } if (!validDrive) return; @@ -430,22 +437,90 @@ private async Task SelectSDDrive(string driveName) if (await Task.Run(() => File.Exists(cartJsonPath))) { var cart = JsonConvert.DeserializeObject(await File.ReadAllTextAsync(cartJsonPath)); - tbCartName.Text = cart.cartridgeName; + tbCartName2.Text = cart.cartridgeName; } /* pre-select games which are found on the SD card */ var cartGamesDir = new DirectoryInfo($"{driveName}game"); - HashSet cartGameIds = new HashSet((cartGamesDir.Exists ? cartGamesDir.GetFiles("*.json") : new FileInfo[0]) - .Select(j => Path.GetFileNameWithoutExtension(j.Name)) - .Where(g => _gamesManager.GamesDictionary.ContainsKey(g))); + var gameJsonPaths = cartGamesDir.GetFiles("*.json"); + if (gameJsonPaths.Length > 0) + { + InitFolderList(SDDrive); + } + + GetFolderList(); + + foreach (var gameJsonPath in gameJsonPaths) + { + var gameId = Path.GetFileNameWithoutExtension(gameJsonPath.Name); + + if (_gamesManager.Games.Select(j => j.Id).Contains(gameId)) + { + var romPath = $"{driveName}game\\{gameId}.json"; + var gameJson = JsonConvert.DeserializeObject(await File.ReadAllTextAsync(romPath)); + var romTitle = gameJson.romTitle; + + _gamesManager.GamesOnSDCard.Add(new GameInfoTreeNode { Id = gameId, Title = romTitle, Path = romPath }); + } + else + { + if (!gameId.Equals("retroarch")) + { + var gameJson = JsonConvert.DeserializeObject(await File.ReadAllTextAsync(gameJsonPath.FullName)); + if (gameJson != null) + { + _gamesManager.GamesOnSDCard.Add(new GameInfoTreeNode { Id = gameId, Title = $"{gameJson.romFileName} ({gameJson.romTitle})", Path = $"{driveName}game\\{gameId}.json", IsMissngInCollection = true }); + } + } + } + } + + if (Directory.Exists($"{driveName}folders")) + { + cartGamesDir = new DirectoryInfo($"{driveName}folders"); + + var gameFolders = cartGamesDir.GetDirectories(); + foreach (var gameFolder in gameFolders) + { + var gameFolderDir = new DirectoryInfo($"{gameFolder.FullName}\\game"); + gameJsonPaths = gameFolderDir.GetFiles("*.json"); + + foreach (var gameJsonPath in gameJsonPaths) + { + var gameId = Path.GetFileNameWithoutExtension(gameJsonPath.Name); + if (gameId == "_HOME") + { + continue; + } + + if (_gamesManager.Games.Select(j => j.Id).Contains(gameId)) + { + var romPath = $"{gameFolder}\\game\\{gameId}.json"; + var gameJson = JsonConvert.DeserializeObject(await File.ReadAllTextAsync(romPath)); + var romTitle = gameJson.romTitle; + + _gamesManager.GamesOnSDCard.Add(new GameInfoTreeNode { Id = gameId, Title = romTitle, Path = $"{gameFolder}\\game\\{gameId}.json" }); + } + else + { + var gameJson = JsonConvert.DeserializeObject(await File.ReadAllTextAsync(gameJsonPath.FullName)); + _gamesManager.GamesOnSDCard.Add(new GameInfoTreeNode { Id = gameId, Title = $"{gameJson.romFileName} ({gameJson.romTitle})", Path = $"{gameFolder}\\game\\{gameId}.json", IsMissngInCollection = true }); + } + } + } + } + + _gamesManager.GamesOnSDCard = _gamesManager.GamesOnSDCard.OrderBy(x => x.Title).ToList(); foreach (var game in _gamesManager.Games) { - game.IsSelected = cartGameIds.Contains(game.Id); + game.IsPresentOnCartridge = _gamesManager.GamesOnSDCard.Where(g => g.Id == game.Id).Count() > 0; } - cbRomFilter_SelectedIndexChanged(null, null); //update checked games in current UI view + UpdateTotalSelectedGamesLabel(); - /* end of pre-select code */ + UpdateTotalGamesOnSDCardLabel(); + + BuildFolderTree(""); } } @@ -479,6 +554,7 @@ private void lvGames_KeyDown(object sender, KeyEventArgs e) { DeleteSelectedGames(); } + //select all if (e.KeyCode == Keys.A && e.Control) { @@ -502,6 +578,7 @@ private void DeleteSelectedGames() { listViewItem.Remove(); } + lvGames.Groups[0].Header = $"{lvGames.Items.Count} ROM(s)"; lvGames.EndUpdate(); @@ -514,7 +591,12 @@ private void DeleteSelectedGames() private void UpdateTotalSelectedGamesLabel() { - lblNumberOfGamesSelected.Text = $"{_gamesManager.Games.Count(g => g.IsSelected)} ROM(s) selected for Sync"; + lblNumberOfGamesSelected.Text = $"{_gamesManager.Games.Count(g => g.IsSelected)} / {_gamesManager.Games.Count()} ROM(s) selected for Sync"; + } + + private void UpdateTotalGamesOnSDCardLabel() + { + lblNumberGamesSDCard.Text = $"{_gamesManager.GamesOnSDCard.Count()} ROM(s) and {_gamesManager.GamesOnSDCard.Count(i => i.IsFolder) - 1} Folders on Cartridge"; } private async void pbGameImage_Click(object sender, EventArgs e) @@ -536,14 +618,17 @@ private async Task ImportResizeImages(Control targetControl, string imageFilePat { gameImages.Add(_gamesManager.GetGameImageInfo(_game.Id, ImageType.Small)); } + if (controlName == nameof(pbBoxArtMedium) || (controlName == nameof(pbBoxArtLarge) && _game.ImageHD == null)) { gameImages.Add(_gamesManager.GetGameImageInfo(_game.Id, ImageType.Medium)); } + if (controlName == nameof(pbBoxArtLarge)) { gameImages.Add(_gamesManager.GetGameImageInfo(_game.Id, ImageType.Large)); } + if (controlName == nameof(pbBanner)) { gameImages.Add(_gamesManager.GetGameImageInfo(_game.Id, ImageType.Banner)); @@ -558,24 +643,6 @@ private async Task ImportResizeImages(Control targetControl, string imageFilePat await _gamesManager.SerializeGame(_game); } - private async void btnAddGames_Click(object sender, EventArgs e) - { - var supportedExtensions = String.Join(";", _appSettings.Platforms - .SelectMany(p => p.SupportedExtensions).Distinct().Select(e => $"*{e}")); - - OpenFileDialog dialog = new OpenFileDialog() - { - Multiselect = true, - Filter = $"Game ROMs ({supportedExtensions})|{supportedExtensions}", - Title = "Select Game ROM(s)" - }; - - if (dialog.ShowDialog() == DialogResult.OK) - { - await AddGames(dialog.FileNames); - } - } - private async Task AddGames(string[] fileNames) { toolTip1.Hide(lvGames); //hide the welcome text @@ -661,7 +728,7 @@ private async void btnSyncToSD_Click(object sender, EventArgs e) { try { - await _gamesManager.SyncToSd(SDDrive, tbCartName.Text, progressForm.Reporter); + await _gamesManager.SyncToSd(SDDrive, tbCartName2.Text, "", progressForm.Reporter); } catch (Exception ex) { @@ -671,6 +738,15 @@ private async void btnSyncToSD_Click(object sender, EventArgs e) } MessageBox.Show("The selected ROMs were synced to MicroSD.\nPut the MicroSD card back in your EverSD cartridge and enjoy!", "ROM Sync Done", MessageBoxButtons.OK, MessageBoxIcon.Information); + + foreach (var game in _gamesManager.Games) + { + game.IsSelected = false; + } + + cbRomFilter_SelectedIndexChanged(sender, e); + + await SelectSDDrive(SDDrive); } private async void driveToolStripMenuItem_Click(object sender, EventArgs e) @@ -679,57 +755,323 @@ private async void driveToolStripMenuItem_Click(object sender, EventArgs e) { menuItem.Checked = false; } + var clickedItem = (ToolStripMenuItem)sender; clickedItem.Checked = true; await SelectSDDrive(clickedItem.Name); } + private void InitFolderList(string driveName) + { + _gamesManager.GamesOnSDCard.Clear(); + var folderItem = new GameInfoTreeNode(); + + if (String.IsNullOrEmpty(driveName)) + { + folderItem.Title = "Select MicroSD"; + } + else + { + folderItem.Title = "Top Level / Root"; + } + + if (!String.IsNullOrEmpty(driveName)) + { + folderItem.Path = driveName; + } + else + { + folderItem.Path = ""; + } + + folderItem.IsFolder = true; + + _gamesManager.GamesOnSDCard.Add(folderItem); + } + + private void GetFolderList() + { + if (_gamesManager.GamesOnSDCard.Count == 0) + { + InitFolderList(SDDrive); + } + + var drive = SDDrive; + if (!String.IsNullOrEmpty(drive)) + { + //check for subfolders of the /folders directory + var folders = new DirectoryInfo($"{drive}folders"); + if (folders.Exists) + { + foreach (var dir in folders.GetDirectories()) + { + var folderSubItem = new GameInfoTreeNode(); + var gameJsonPath = _gamesManager.GetGameJsonFromFolderPath(dir.FullName); + + if (File.Exists(gameJsonPath)) + { + var gameInfo = JsonConvert.DeserializeObject(File.ReadAllText(gameJsonPath)); + folderSubItem.Title = gameInfo.romTitle; + } + else + { + folderSubItem.IsMissngOnCartridge = true; + folderSubItem.Title = Path.GetFileName(dir.FullName); + } + + folderSubItem.Path = dir.FullName + "\\"; + folderSubItem.IsFolder = true; + + _gamesManager.GamesOnSDCard.Add(folderSubItem); + } + } + } + } + + private void BuildFolderTree(string search) + { + tvCartridge.Nodes.Clear(); + var rootNode = new TreeNode(); + + if (!string.IsNullOrWhiteSpace(SDDrive)) + { + var rootGameInfo = _gamesManager.GetGameJsonFromSDCardByPath(SDDrive); + rootNode.Text = rootGameInfo.Title; + rootNode.Name = rootGameInfo.Path; + rootNode.ImageIndex = 2; + tvCartridge.Nodes.Add(rootNode); + } + + foreach (var folder in _gamesManager.GamesOnSDCard) + { + if (folder.IsFolder) + { + if (!String.IsNullOrEmpty(folder.Path) && folder.Path == SDDrive) + { + // rootNode already exists + } + else + { + var folderNode = new TreeNode(folder.Title); + folderNode.Name = folder.Path; + folderNode.ImageIndex = 2; + if (folder.IsMissngOnCartridge) + { + folderNode.ImageIndex = 3; + } + + tvCartridge.Nodes.Add(folderNode); + } + } + } + + foreach (var folder in _gamesManager.GamesOnSDCard) + { + var addItem = false; + + if (!String.IsNullOrEmpty(folder.Path) && folder.Path.StartsWith($"{SDDrive}game")) + { + if (!folder.Path.StartsWith($"{SDDrive}game\\_")) + { + if (!String.IsNullOrEmpty(search)) + { + if (folder.Title.ToUpper().Contains(search.ToUpper())) + { + addItem = true; + } + } + else + { + addItem = true; + } + + if (addItem) + { + var node = new TreeNode(folder.Title); + node.Name = folder.Path; + + if (folder.IsMissngInCollection) + { + node.ImageIndex = 1; + + } + + rootNode.Nodes.Add(node); + } + } + + } + else + { + if (!folder.IsFolder) + { + var node = new TreeNode(folder.Title); + node.Name = folder.Path; + var folderNode = findParentNodeOfGamePath(node); + if (folderNode != null) + { + if (!String.IsNullOrEmpty(search)) + { + if (folder.Title.ToUpper().Contains(search.ToUpper())) + { + addItem = true; + } + } + else + { + addItem = true; + } + + if (addItem) + { + if (folder.IsMissngInCollection) + { + node.ImageIndex = 1; + + } + + folderNode.Nodes.Add(node); + } + } + } + } + } + + tvCartridge.ExpandAll(); + rootNode.EnsureVisible(); + } + + private TreeNode findParentNodeOfGamePath(TreeNode node) + { + if (node.Name.StartsWith($"{SDDrive}folders\\")) + { + var i = node.Name.IndexOf("\\game\\"); + if (i >= 0) + { + var key = node.Name.Substring(0, i + 1); + var nodeFound = tvCartridge.Nodes.Find(key, true); + if (nodeFound.Length > 0) + { + return nodeFound[0]; + } + } + else + { + return node; + } + } + else if (node.Name.StartsWith($"{SDDrive}game\\")) + { + var root = tvCartridge.Nodes.Find(SDDrive, true); + if (root.Length > 0) + { + return root[0]; + } + } + else if (node.Name == SDDrive) + { + return node; + } + + return null; + } private async void selectSDDriveToolStripMenuItem_DropDownOpening(object sender, EventArgs e) + { + selectSDDrive_Opening(true); + } + + private void contextMenuStripMSD_Opening(object sender, CancelEventArgs e) + { + selectSDDrive_Opening(false); + } + + private async void selectSDDrive_Opening(bool isMenu) { bool itemWasChecked = false; var drives = SDCardHelper.FindRemovableDrives(); - if (drives.Length == 0) + + if (isMenu) { - await SelectSDDrive(null); - if (selectSDDriveToolStripMenuItem.DropDownItems.Count == 0 - || selectSDDriveToolStripMenuItem.DropDownItems["notfound"] == null) + if (drives.Length == 0) + { + await SelectSDDrive(null); + + if (selectSDDriveToolStripMenuItem.DropDownItems.Count == 0 + || selectSDDriveToolStripMenuItem.DropDownItems["notfound"] == null) + { + selectSDDriveToolStripMenuItem.DropDownItems.Clear(); + var item = new ToolStripMenuItem("No removable drive(s) found...", null, null, "notfound"); + item.ForeColor = Color.Red; + selectSDDriveToolStripMenuItem.DropDownItems.Add(item); + } + } + else { selectSDDriveToolStripMenuItem.DropDownItems.Clear(); - var item = new ToolStripMenuItem("No removable drive(s) found...", null, null, "notfound"); - item.ForeColor = Color.Red; + + foreach (var drive in drives) + { + var item = new ToolStripMenuItem( + $"{drive.Name} {string.Empty.PadLeft(30)} [Total size: {drive.TotalSize.ToSize()}]", null, + driveToolStripMenuItem_Click, drive.Name); + + AddDrivePathItem(item); + } + + if (!itemWasChecked) + { + await SelectSDDrive(null); + } + } + + void AddDrivePathItem(ToolStripMenuItem item) + { + item.Checked = SDDrive != null && item.Name == SDDrive; + itemWasChecked |= item.Checked; selectSDDriveToolStripMenuItem.DropDownItems.Add(item); } } else { - selectSDDriveToolStripMenuItem.DropDownItems.Clear(); - - foreach (var drive in drives) + if (drives.Length == 0) { - var item = new ToolStripMenuItem($"{drive.Name} {string.Empty.PadLeft(30)} [Total size: {drive.TotalSize.ToSize()}]", null, driveToolStripMenuItem_Click, drive.Name); - AddDrivePathItem(item); + await SelectSDDrive(null); - //check for subfolders of the /folders directory - var folders = new DirectoryInfo($"{drive.Name}folders"); - if (folders.Exists) - foreach (var dir in folders.GetDirectories()) + if (contextMenuStripMSD.Items.Count == 0 + || contextMenuStripMSD.Items["notfound"] == null) { - var subitem = new ToolStripMenuItem($"{dir.FullName}\\", null, driveToolStripMenuItem_Click, dir.FullName + "\\"); - AddDrivePathItem(subitem); + contextMenuStripMSD.Items.Clear(); + var item = new ToolStripMenuItem("No removable drive(s) found...", null, null, "notfound"); + item.ForeColor = Color.Red; + contextMenuStripMSD.Items.Add(item); } } - if (!itemWasChecked) + else { - await SelectSDDrive(null); + contextMenuStripMSD.Items.Clear(); + + foreach (var drive in drives) + { + var item = new ToolStripMenuItem( + $"{drive.Name} {string.Empty.PadLeft(30)} [Total size: {drive.TotalSize.ToSize()}]", null, + driveToolStripMenuItem_Click, drive.Name); + + AddDrivePathItem(item); + } + + if (!itemWasChecked) + { + await SelectSDDrive(null); + } } - } - void AddDrivePathItem(ToolStripMenuItem item) - { - item.Checked = SDDrive != null && item.Name == SDDrive; - itemWasChecked |= item.Checked; - selectSDDriveToolStripMenuItem.DropDownItems.Add(item); + void AddDrivePathItem(ToolStripMenuItem item) + { + item.Checked = SDDrive != null && item.Name == SDDrive; + itemWasChecked |= item.Checked; + contextMenuStripMSD.Items.Add(item); + } } } @@ -745,6 +1087,7 @@ private async void btnImageClear_Click(object sender, EventArgs e) { pbBanner.Tag = 0; } + LoadBoxArt(); } } @@ -754,21 +1097,31 @@ private void cbRomFilter_SelectedIndexChanged(object sender, EventArgs e) { IEnumerable gameInfos = _gamesManager.Games; //default + gbBoxArt.Visible = false; + var romFeatureFilters = Enum.GetNames(typeof(RomFeatureFilter)); if (romFeatureFilters.Contains(cbRomFilter.SelectedValue as string)) { switch (Enum.Parse(typeof(RomFeatureFilter), cbRomFilter.SelectedValue as string)) { case RomFeatureFilter.SelectedForSync: - gameInfos = _gamesManager.Games.Where(g => g.IsSelected); break; + gameInfos = _gamesManager.Games.Where(g => g.IsSelected); + break; case RomFeatureFilter.RecentlyAdded: - gameInfos = _gamesManager.Games.Where(g => g.IsRecentlyAdded); break; + gameInfos = _gamesManager.Games.Where(g => g.IsRecentlyAdded); + break; case RomFeatureFilter.RomsWithoutBanner: - gameInfos = _gamesManager.Games.Where(g => g.ImageBanner == null); break; + gameInfos = _gamesManager.Games.Where(g => g.ImageBanner == null); + break; case RomFeatureFilter.RomsWithoutBoxart: - gameInfos = _gamesManager.Games.Where(g => g.Image == null && g.Image1080 == null); break; + gameInfos = _gamesManager.Games.Where(g => g.Image == null && g.Image1080 == null); + break; case RomFeatureFilter.RomsWithoutDescription: - gameInfos = _gamesManager.Games.Where(g => g.romDescription == string.Empty); break; + gameInfos = _gamesManager.Games.Where(g => g.romDescription == string.Empty); + break; + case RomFeatureFilter.RomsNotPresentOnCartridge: + gameInfos = _gamesManager.Games.Where(g => g.IsPresentOnCartridge == false); + break; //default } } @@ -778,6 +1131,11 @@ private void cbRomFilter_SelectedIndexChanged(object sender, EventArgs e) gameInfos = _gamesManager.Games.Where(g => g.romPlatformId == platformId); } + if (!String.IsNullOrEmpty(tbSearchCollection.Text)) + { + gameInfos = gameInfos.Where(g => g.romTitle.ToUpper().Contains(tbSearchCollection.Text.ToUpper())); + } + lvGames.BeginUpdate(); lvGames.SelectedIndices.Clear(); lvGames.Items.Clear(); @@ -811,6 +1169,8 @@ private void aboutToolStripMenuItem_Click(object sender, EventArgs e) private void lvGames_MouseClick(object sender, MouseEventArgs e) { + gbBoxArt.Visible = true; + if (e.Button == MouseButtons.Right) { var focusedItem = lvGames.FocusedItem; @@ -827,6 +1187,7 @@ private void ShowScrapingErrorMessageBox(Exception ex) } private bool IdleHandlerSet { get; set; } + private void lvGames_SelectedIndexChanged(object sender, EventArgs e) { // this will fire every time items are selected or deselected. @@ -860,16 +1221,17 @@ private void lblMissingBiosFiles_LinkClicked(object sender, LinkLabelLinkClicked if (missingBiosFile?.MD5.Length > 0 && !missingBiosFile.MD5.Contains(HashHelper.CalculateHashcodes(romFilePath).Md5)) { if (MessageBox.Show( - $"Uploaded BIOS file '{missingBiosFile.FileName}' doesn't have the expected MD5 hash { string.Join(" or ", missingBiosFile.MD5) }." + + $"Uploaded BIOS file '{missingBiosFile.FileName}' doesn't have the expected MD5 hash {string.Join(" or ", missingBiosFile.MD5)}." + "\nPlease try a different file.\n\n" + "Clicking 'OK' will copy the required MD5 hash(es) to your clipboard.", "BIOS file MD5 mismatch", MessageBoxButtons.OKCancel, MessageBoxIcon.Error) == DialogResult.OK) { Clipboard.SetText(string.Join(" ", missingBiosFile.MD5)); - } + } + continue; } - File.Copy(romFilePath, Path.Combine(platformRomsDir, Path.GetFileName(romFilePath)), overwrite:true); + File.Copy(romFilePath, Path.Combine(platformRomsDir, Path.GetFileName(romFilePath)), overwrite: true); } UpdateMissingBiosFilesLabel(); @@ -892,12 +1254,14 @@ private async void btnScrape_Click(object sender, EventArgs e) ShowScrapingErrorMessageBox(ex); //continue } + Cursor.Current = Cursors.Default; if (lbScrapeResults.Items.Count == 0) { lbScrapeResults.Items.Add("[no results - try again using less words]"); } } + private void tbScrapeName_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == (char)Keys.Return) @@ -913,10 +1277,11 @@ private async void lbScrapeResults_SelectedIndexChanged(object sender, EventArgs { if ((_game.romDescription != "" || _game.Image != null || _game.Image1080 != null) && (lbScrapeResults.Tag as string) != "WARNING_SHOWN" - && MessageBox.Show("This will overwrite the current ROM description and images with the scraped information.\nIs this OK?", - "Applying scraped game content", - MessageBoxButtons.YesNo, - MessageBoxIcon.Warning) == DialogResult.No) + && MessageBox.Show( + "This will overwrite the current ROM description and images with the scraped information.\nIs this OK?", + "Applying scraped game content", + MessageBoxButtons.YesNo, + MessageBoxIcon.Warning) == DialogResult.No) { return; } @@ -949,6 +1314,8 @@ private async void lbScrapeResults_SelectedIndexChanged(object sender, EventArgs await _gamesManager.SerializeGame(_game); SetDataBindings(refreshOnly: true); + gbBoxArt.Visible = true; + _game.GameInfoChanged += Game_GameInfoChanged; } } @@ -1042,7 +1409,7 @@ private void lvGames_DragEnter(object sender, DragEventArgs e) { var files = (string[])e.Data.GetData(DataFormats.FileDrop); var allowedExtensions = _appSettings.Platforms.SelectMany(p => p.SupportedExtensions); - if (files.Any(f => allowedExtensions.Contains(Path.GetExtension(f)?.ToLower()))) + if (files.Any(f => allowedExtensions.Contains(Path.GetExtension(f)?.ToLower()))) { e.Effect = DragDropEffects.Copy; return; @@ -1112,7 +1479,51 @@ private async void pbGameImage_DragDrop(object sender, DragEventArgs e) } } + private void tvCartridge_OnDragEnter(object sender, DragEventArgs e) + { + e.Effect = DragDropEffects.Move; + } + + private void tvCartridge_OnItemDrag(object sender, ItemDragEventArgs e) + { + DoDragDrop(e.Item, DragDropEffects.Move); + } + + private void tvCartridge_DragOver(object sender, DragEventArgs e) + { + // Retrieve the client coordinates of the mouse position. + Point targetPoint = tvCartridge.PointToClient(new Point(e.X, e.Y)); + + // Select the node at the mouse position. + tvCartridge.SelectedNode = tvCartridge.GetNodeAt(targetPoint); + } + + private async void tvCartridge_OnDragDrop(object sender, DragEventArgs e) + { + TreeNode srcNode; + + if (e.Data.GetDataPresent("System.Windows.Forms.TreeNode", false)) + { + srcNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode"); + + Point pt = ((TreeView)sender).PointToClient(new Point(e.X, e.Y)); + + TreeNode dstNode = ((TreeView)sender).GetNodeAt(pt); + dstNode = findParentNodeOfGamePath(dstNode); + + if (dstNode != null) + { + var success = await MoveGameOnSDCard(srcNode.Name, dstNode.Name); + if (success) + { + await SelectSDDrive(SDDrive); + } + } + } + } + #region toolstrip menu + private void deleteSelectedGamesToolStripMenuItem_Click(object sender, EventArgs e) { DeleteSelectedGames(); @@ -1132,6 +1543,7 @@ private async void scrapeToolStripMenuItem_Click(object sender, EventArgs e) ShowScrapingErrorMessageBox(ex); //show error, but don't break the flow } + _game.GameInfoChanged += Game_GameInfoChanged; SetDataBindings(); } @@ -1159,6 +1571,7 @@ private async void setCoreMenuItem_Click(object sender, EventArgs e) await _gamesManager.SerializeGame(game); } } + SetDataBindings(); //update form UI } @@ -1179,6 +1592,7 @@ private void contextMenuStrip1_Opening(object sender, CancelEventArgs e) contextMenuStrip1.Items.Add(new ToolStripSeparator()); contextMenuStrip1.Items.Add("Selected ROM(s) -> Use Internal Emulator", null, setCoreMenuItem_Click); } + if (firstGamePlatform.RetroArchCores.Length > 0) { contextMenuStrip1.Items.Add(new ToolStripSeparator()); @@ -1188,18 +1602,325 @@ private void contextMenuStrip1_Opening(object sender, CancelEventArgs e) } } } + + private void contextMenuCartridge_Opening(object sender, CancelEventArgs e) + { + //clean previously dynamically added items + for (int i = contextMenuCartridge.Items.Count; i > 0; i--) contextMenuCartridge.Items.RemoveAt(i - 1); + if (_gamesManager.GamesOnSDCard.Count == 0) return; + + var currNode = tvCartridge.SelectedNode; + if (currNode.Name.EndsWith("\\")) + { + if (!currNode.Name.Equals(SDDrive)) + { + contextMenuCartridge.Items.Add("Rename Folder", null, contextMenuCartridge_RenameFolder_Click); + contextMenuCartridge.Items.Add(new ToolStripSeparator()); + contextMenuCartridge.Items.Add("Delete Folder", null, contextMenuCartridge_DeleteFolder_Click); + } + } + else if (currNode.Name.EndsWith(".json")) + { + contextMenuCartridge.Items.Add("Delete Game from Cartridge", null, contextMenuCartridge_DeleteGame_Click); + + var gameRoot = _gamesManager.GetGameRootFromJsonPath(SDDrive, currNode.Name); + var gameId = _gamesManager.GetGameIdFromJsonPath(gameRoot, currNode.Name); + var exists = _gamesManager.GetGameById(gameId); + if (exists == null) + { + var extensionIsSupported = false; + try + { + var gameInfo = JsonConvert.DeserializeObject(File.ReadAllText($"{currNode.Name}")); + if (gameInfo != null) + { + extensionIsSupported = _appSettings.Platforms.SelectMany(p => p.SupportedExtensions).Distinct().Select(e => e).Contains(Path.GetExtension(gameInfo.romFileName)); + + } + } + catch (Exception ex) + { + + } + + if (extensionIsSupported) + { + contextMenuCartridge.Items.Add(new ToolStripSeparator()); + contextMenuCartridge.Items.Add("Import Game into ROM Collection", null, contextMenuCartridge_ImportGame_Click); + } + } + } + } + + private async void contextMenuCartridge_RenameFolder_Click(object sender, EventArgs e) + { + var currNode = tvCartridge.SelectedNode; + var newName = Prompt.ShowDialog("Please enter new Name:", $"Rename Folder \"{currNode.Text}\""); + if (!String.IsNullOrEmpty(newName)) + { + try + { + var folderPath = currNode.Name; + + var gameJsonPath = _gamesManager.GetGameJsonFromFolderPath(folderPath); + var gameInfo = JsonConvert.DeserializeObject(File.ReadAllText(gameJsonPath)); + gameInfo.romTitle = newName; + File.WriteAllText(gameJsonPath, JsonConvert.SerializeObject(gameInfo, Formatting.Indented)); + + var gameCartridgeJson = $"{currNode.Name}\\cartridge.json"; + var cartInfo = JsonConvert.DeserializeObject(File.ReadAllText(gameCartridgeJson)); + cartInfo.cartridgeName = newName; + File.WriteAllText(gameCartridgeJson, JsonConvert.SerializeObject(cartInfo, Formatting.Indented)); + } + catch (Exception ex) + { + var err = ex; + } + + await SelectSDDrive(SDDrive); + } + } + + private async void contextMenuCartridge_DeleteFolder_Click(object sender, EventArgs e) + { + var currNode = tvCartridge.SelectedNode; + if (MessageBox.Show($"Are you sure you want to delete this Folder (\"{currNode.Text}\") from the Cartridge?", "Confirm Delete", + MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) + { + _gamesManager.DeleteGameFolderOnSD(new GameInfo { Id = currNode.Name }, SDDrive); + await SelectSDDrive(SDDrive); + } + } + + private async void contextMenuCartridge_DeleteGame_Click(object sender, EventArgs e) + { + //tvCartridge.SelectedNode = tvCartridge.GetNodeAt(e.X, e.Y); + var currNode = tvCartridge.SelectedNode; + if (MessageBox.Show($"Are you sure you want to delete this ROM (\"{currNode.Text}\") from the Cartridge?", "Confirm Delete", + MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) + { + _gamesManager.DeleteGameFilesOnSD(new GameInfo { Id = currNode.Name }, _gamesManager.GetGameRootFromJsonPath(SDDrive, currNode.Name)); // SDDrive + await SelectSDDrive(SDDrive); + } + } + + private async void contextMenuCartridge_ImportGame_Click(object sender, EventArgs e) + { + var currNode = tvCartridge.SelectedNode; + var gameInfo = JsonConvert.DeserializeObject(File.ReadAllText(currNode.Name)); + var filePath = $"{_gamesManager.GetGameRootFromJsonPath(SDDrive, currNode.Name)}game\\{gameInfo.romFileName}"; + var newGames = new List(); + newGames.Add(filePath); + await AddGames(newGames.ToArray()); + } #endregion toolstrip menu - private async void btnNewSDFolder_Click(object sender, EventArgs e) + private async void btnNewSDCardFolder_Click(object sender, EventArgs e) { using (var form = new CreateNewFolder(SDDrive)) { form.ShowDialog(); if (form.JustCreatedFolderName != null && Directory.Exists(Path.Combine(Path.GetPathRoot(SDDrive), "folders", form.JustCreatedFolderName))) { - await SelectSDDrive(Path.Combine(Path.GetPathRoot(SDDrive), "folders", form.JustCreatedFolderName) + "\\"); + await SelectSDDrive(SDDrive); + } + } + } + public async Task MoveGameOnSDCard(string currentCartJsonFilePath, string newSDCardLocationPath) + { + var ret = true; + + try + { + var gameInfo = JsonConvert.DeserializeObject(File.ReadAllText(currentCartJsonFilePath)); + gameInfo.Id = _gamesManager.GetGameIdFromJsonPath(SDDrive, currentCartJsonFilePath); + + var success = await _gamesManager.CopyGameToSDPath(newSDCardLocationPath, gameInfo); + if (!success) + { + MessageBox.Show($"Could not move game to folder - perhaps the game doesn't exist in the collection?", "Error", + MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + + _gamesManager.DeleteGameFilesOnSD(gameInfo, _gamesManager.GetGameRootFromJsonPath(SDDrive, currentCartJsonFilePath)); + } + catch (Exception ex) + { + MessageBox.Show($"Could not sync to MicroSD. Error message: \"{ex.Message}\".", "Error", + MessageBoxButtons.OK, MessageBoxIcon.Error); + ret = false; + } + + return ret; + } + + private async void btnAddGame_Click(object sender, EventArgs e) + { + var supportedExtensions = String.Join("; ", _appSettings.Platforms + .SelectMany(p => p.SupportedExtensions).Distinct().Select(e => $"*{e}")); + + OpenFileDialog dialog = new OpenFileDialog() + { + Multiselect = true, + Filter = $"Game ROMs ({supportedExtensions})|{supportedExtensions}", + Title = "Select Game ROM(s)" + }; + + if (dialog.ShowDialog() == DialogResult.OK) + { + await AddGames(dialog.FileNames); + } + } + + private async void tvCartridge_MouseClick(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Right) + { + TreeNode dstNode = tvCartridge.GetNodeAt(e.X, e.Y); + tvCartridge.SelectedNode = dstNode; + + contextMenuCartridge.Show(Cursor.Position); + return; + } + else if (e.Button == MouseButtons.Left) + { + TreeNode dstNode = tvCartridge.GetNodeAt(e.X, e.Y); + tvCartridge.SelectedNode = dstNode; + var isFolder = false; + var isRoot = false; + var gameId = Path.GetFileNameWithoutExtension(dstNode.Name); + + if (String.IsNullOrEmpty(gameId)) + { + if (dstNode.Name.Equals(SDDrive)) + { + isRoot = true; + } + else + { + gameId = "_" + _gamesManager.GetFolderIdFromPath(dstNode.Name); + } + + isFolder = true; + } + + var gameInfo = _gamesManager.GetGameJsonFromSDCardByGameId(gameId); + if (!isRoot && (gameInfo == null || gameInfo.IsMissngOnCartridge)) + { + var msg = $"Missing: {Path.Combine(Path.GetPathRoot(dstNode.Name), "game", gameId + ".json")}"; + lblNumberGamesSDCard.Text = $"{msg.Substring(0, 30 > msg.Length ? msg.Length : 30)}..."; + toolTipLabel.SetToolTip(lblNumberGamesSDCard, msg); + + if (tvCartridge.SelectedNode != null) + { + tvCartridge.SelectedNode.ImageIndex = 3; + tvCartridge.SelectedNode.SelectedImageIndex = 3; + } + } + else if (!isFolder && gameInfo != null && gameInfo.IsMissngInCollection) + { + var msg = $"Missing in Collection"; + lblNumberGamesSDCard.Text = msg; + toolTipLabel.SetToolTip(lblNumberGamesSDCard, msg); + if (tvCartridge.SelectedNode != null) + { + tvCartridge.SelectedNode.ImageIndex = 1; + tvCartridge.SelectedNode.SelectedImageIndex = 1; + } + } + else + { + UpdateTotalGamesOnSDCardLabel(); + toolTipLabel.SetToolTip(lblNumberGamesSDCard, ""); + if (isFolder) + { + if (tvCartridge.SelectedNode != null) + { + tvCartridge.SelectedNode.ImageIndex = 2; + tvCartridge.SelectedNode.SelectedImageIndex = 2; + } + } + } + + var found = false; + foreach (var groupItem in lvGames.Groups) + { + var items = ((ListViewGroup)groupItem).Items; + + foreach (var item in items) + { + var currItem = (ListViewItem)item; + currItem.Selected = false; + if (currItem.Name.ToLower().Equals(gameId.ToLower())) + { + gbBoxArt.Visible = true; + + currItem.Selected = true; + currItem.EnsureVisible(); + + lvGames.Focus(); + + found = true; + } + } + } + + if (!found) + { + cbRomFilter_SelectedIndexChanged(null, null); } } } + + private void tbSearchCollection_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + cbRomFilter_SelectedIndexChanged(sender, e); + } + } + + private void tbSearchCartridge_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + BuildFolderTree(tbSearchCartridge.Text); + } + } + } + + public static class Prompt + { + public static string ShowDialog(string text, string caption) + { + Form prompt = new Form() + { + Width = 500, + Height = 120, + FormBorderStyle = FormBorderStyle.FixedDialog, + Text = caption, + StartPosition = FormStartPosition.CenterScreen + }; + //Label textLabel = new Label() { Left = 50, Top = 20, Width = 400, Text = text }; + TextBox textBox = new TextBox() { Left = 50, Top = 20, Width = 400 }; + Button confirmation = new Button() { Text = "Ok", Left = 350, Width = 100, Top = 50, DialogResult = DialogResult.OK }; + Button cancel = new Button() { Text = "Cancel", Left = 250, Width = 100, Top = 50, DialogResult = DialogResult.Cancel }; + confirmation.Click += (sender, e) => { prompt.Close(); }; + cancel.Click += (sender, e) => + { + prompt.Close(); + }; + prompt.Controls.Add(textBox); + prompt.Controls.Add(confirmation); + prompt.Controls.Add(cancel); + //prompt.Controls.Add(textLabel); + prompt.AcceptButton = confirmation; + prompt.CancelButton = cancel; + + return prompt.ShowDialog() == DialogResult.OK ? textBox.Text : ""; + } } -} + + +} \ No newline at end of file diff --git a/Forms/MainForm.resx b/Forms/MainForm.resx index 9aa3053..04761f5 100644 --- a/Forms/MainForm.resx +++ b/Forms/MainForm.resx @@ -1,4 +1,64 @@ - + + + @@ -57,6 +117,54 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 1080, 17 + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs + LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu + SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA6AgAAAJNU0Z0AUkBTAIBAQQB + AAGIAQQBiAEEARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMAAUADAAEgAwABAQEAAQgG + AAEIGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEAAfABygGmAQABMwUAATMB + AAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEAAYABfAH/AQACUAH/AQAB + kwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFmAwABmQMAAcwCAAEzAwAC + MwIAATMBZgIAATMBmQIAATMBzAIAATMB/wIAAWYDAAFmATMCAAJmAgABZgGZAgABZgHMAgABZgH/AgAB + mQMAAZkBMwIAAZkBZgIAApkCAAGZAcwCAAGZAf8CAAHMAwABzAEzAgABzAFmAgABzAGZAgACzAIAAcwB + /wIAAf8BZgIAAf8BmQIAAf8BzAEAATMB/wIAAf8BAAEzAQABMwEAAWYBAAEzAQABmQEAATMBAAHMAQAB + MwEAAf8BAAH/ATMCAAMzAQACMwFmAQACMwGZAQACMwHMAQACMwH/AQABMwFmAgABMwFmATMBAAEzAmYB + AAEzAWYBmQEAATMBZgHMAQABMwFmAf8BAAEzAZkCAAEzAZkBMwEAATMBmQFmAQABMwKZAQABMwGZAcwB + AAEzAZkB/wEAATMBzAIAATMBzAEzAQABMwHMAWYBAAEzAcwBmQEAATMCzAEAATMBzAH/AQABMwH/ATMB + AAEzAf8BZgEAATMB/wGZAQABMwH/AcwBAAEzAv8BAAFmAwABZgEAATMBAAFmAQABZgEAAWYBAAGZAQAB + ZgEAAcwBAAFmAQAB/wEAAWYBMwIAAWYCMwEAAWYBMwFmAQABZgEzAZkBAAFmATMBzAEAAWYBMwH/AQAC + ZgIAAmYBMwEAA2YBAAJmAZkBAAJmAcwBAAFmAZkCAAFmAZkBMwEAAWYBmQFmAQABZgKZAQABZgGZAcwB + AAFmAZkB/wEAAWYBzAIAAWYBzAEzAQABZgHMAZkBAAFmAswBAAFmAcwB/wEAAWYB/wIAAWYB/wEzAQAB + ZgH/AZkBAAFmAf8BzAEAAcwBAAH/AQAB/wEAAcwBAAKZAgABmQEzAZkBAAGZAQABmQEAAZkBAAHMAQAB + mQMAAZkCMwEAAZkBAAFmAQABmQEzAcwBAAGZAQAB/wEAAZkBZgIAAZkBZgEzAQABmQEzAWYBAAGZAWYB + mQEAAZkBZgHMAQABmQEzAf8BAAKZATMBAAKZAWYBAAOZAQACmQHMAQACmQH/AQABmQHMAgABmQHMATMB + AAFmAcwBZgEAAZkBzAGZAQABmQLMAQABmQHMAf8BAAGZAf8CAAGZAf8BMwEAAZkBzAFmAQABmQH/AZkB + AAGZAf8BzAEAAZkC/wEAAcwDAAGZAQABMwEAAcwBAAFmAQABzAEAAZkBAAHMAQABzAEAAZkBMwIAAcwC + MwEAAcwBMwFmAQABzAEzAZkBAAHMATMBzAEAAcwBMwH/AQABzAFmAgABzAFmATMBAAGZAmYBAAHMAWYB + mQEAAcwBZgHMAQABmQFmAf8BAAHMAZkCAAHMAZkBMwEAAcwBmQFmAQABzAKZAQABzAGZAcwBAAHMAZkB + /wEAAswCAALMATMBAALMAWYBAALMAZkBAAPMAQACzAH/AQABzAH/AgABzAH/ATMBAAGZAf8BZgEAAcwB + /wGZAQABzAH/AcwBAAHMAv8BAAHMAQABMwEAAf8BAAFmAQAB/wEAAZkBAAHMATMCAAH/AjMBAAH/ATMB + ZgEAAf8BMwGZAQAB/wEzAcwBAAH/ATMB/wEAAf8BZgIAAf8BZgEzAQABzAJmAQAB/wFmAZkBAAH/AWYB + zAEAAcwBZgH/AQAB/wGZAgAB/wGZATMBAAH/AZkBZgEAAf8CmQEAAf8BmQHMAQAB/wGZAf8BAAH/AcwC + AAH/AcwBMwEAAf8BzAFmAQAB/wHMAZkBAAH/AswBAAH/AcwB/wEAAv8BMwEAAcwB/wFmAQAC/wGZAQAC + /wHMAQACZgH/AQABZgH/AWYBAAFmAv8BAAH/AmYBAAH/AWYB/wEAAv8BZgEAASEBAAGlAQADXwEAA3cB + AAOGAQADlgEAA8sBAAOyAQAD1wEAA90BAAPjAQAD6gEAA/EBAAP4AQAB8AH7Af8BAAGkAqABAAOAAwAB + /wIAAf8DAAL/AQAB/wMAAf8BAAH/AQAC/wIAA///AP8A/wD/AJcAAfQLOAMADlkDAAH0C0cGAAH/Ae0B + 6gH/CgABwws4AwAOWQMAAcMLRwUAAf8B7QESAe0BEwH/CgAFOAESBDgBmgMADlkEAAVHAfsERwGaBAAB + /wHtARIC/wHsAUMB/wkAAf8JOAQADlkEAAH/CUcFAAHsARQB/wIAAf8B6wFDAf8JAAQ4ARIDOAH0BAAO + WQUABEcB+wNHAfQFAAESAf8FAAHrARUB/wkAAzgBEgM4BQAOWQYAA0cB+wNHDQAB/wHsARQB/wgAAVkC + OAESAjgB/wUADnoGAAFZAkcB+wJHAf8OAAH/Ae0BEgH/CAACOAESAjgGAA56BwACRwESAUcBOBAAAf8B + 7QESAf8HAAHDAzgHAA56BwABwwNHEgAB/wHtARIIAAI4AZoHAAcxB5oIAAJHAZoTAAH/Ae8IAAH/ATgI + AAc3DwAB/wFHxwABQgFNAT4HAAE+AwABKAMAAUADAAEgAwABAQEAAQEGAAEBFgAD/4EAEv8BwAEDAYAB + AQHAAQMB8AH/AcABAwGAAQEBwAEDAeABfwHgAQMBgAEBAeABAwHAAT8B4AEHAYABAQHgAQcBxgEfAfAB + BwGAAQEB8AEHAc8BjwH4AQ8BgAEBAfgBDwH/AYcB+AEPAYABAQH4AQ8B/wHDAfwBHwGAAQEB/AEfAf8B + 4QH8AT8BgAEBAfwBPwH/AfEB/gE/AYABAQH+AT8B/wH5Af4BfwGAAf8B/gF/GP8L + + 833, 17 @@ -72,8 +180,14 @@ 930, 17 + + 1080, 5 + + + 1080, 5 + - 112 + 25 diff --git a/Forms/SelectPlatform.Designer.cs b/Forms/SelectPlatform.Designer.cs index 9a86a1c..5c30844 100644 --- a/Forms/SelectPlatform.Designer.cs +++ b/Forms/SelectPlatform.Designer.cs @@ -29,80 +29,91 @@ protected override void Dispose(bool disposing) /// private void InitializeComponent() { - this.label1 = new System.Windows.Forms.Label(); - this.cbPossiblePlatforms = new System.Windows.Forms.ComboBox(); - this.btnSelectPlatformOK = new System.Windows.Forms.Button(); - this.lblGame = new System.Windows.Forms.Label(); - this.label2 = new System.Windows.Forms.Label(); - this.SuspendLayout(); + label1 = new System.Windows.Forms.Label(); + cbPossiblePlatforms = new System.Windows.Forms.ComboBox(); + btnSelectPlatformOK = new System.Windows.Forms.Button(); + lblGame = new System.Windows.Forms.Label(); + label2 = new System.Windows.Forms.Label(); + btnSelectPlatformCancel = new System.Windows.Forms.Button(); + SuspendLayout(); // // label1 // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(13, 13); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(187, 15); - this.label1.TabIndex = 0; - this.label1.Text = "Could not autodetect platform for"; + label1.AutoSize = true; + label1.Location = new System.Drawing.Point(13, 13); + label1.Name = "label1"; + label1.Size = new System.Drawing.Size(187, 15); + label1.TabIndex = 0; + label1.Text = "Could not autodetect platform for"; // // cbPossiblePlatforms // - this.cbPossiblePlatforms.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cbPossiblePlatforms.FormattingEnabled = true; - this.cbPossiblePlatforms.Location = new System.Drawing.Point(206, 35); - this.cbPossiblePlatforms.Name = "cbPossiblePlatforms"; - this.cbPossiblePlatforms.Size = new System.Drawing.Size(218, 23); - this.cbPossiblePlatforms.TabIndex = 1; + cbPossiblePlatforms.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + cbPossiblePlatforms.FormattingEnabled = true; + cbPossiblePlatforms.Location = new System.Drawing.Point(206, 35); + cbPossiblePlatforms.Name = "cbPossiblePlatforms"; + cbPossiblePlatforms.Size = new System.Drawing.Size(218, 23); + cbPossiblePlatforms.TabIndex = 1; // // btnSelectPlatformOK // - this.btnSelectPlatformOK.Location = new System.Drawing.Point(430, 35); - this.btnSelectPlatformOK.Name = "btnSelectPlatformOK"; - this.btnSelectPlatformOK.Size = new System.Drawing.Size(75, 23); - this.btnSelectPlatformOK.TabIndex = 2; - this.btnSelectPlatformOK.Text = "OK"; - this.btnSelectPlatformOK.UseVisualStyleBackColor = true; - this.btnSelectPlatformOK.Click += new System.EventHandler(this.btnSelectPlatformOK_Click); + btnSelectPlatformOK.Location = new System.Drawing.Point(430, 35); + btnSelectPlatformOK.Name = "btnSelectPlatformOK"; + btnSelectPlatformOK.Size = new System.Drawing.Size(75, 23); + btnSelectPlatformOK.TabIndex = 2; + btnSelectPlatformOK.Text = "OK"; + btnSelectPlatformOK.UseVisualStyleBackColor = true; + btnSelectPlatformOK.Click += btnSelectPlatformOK_Click; // // lblGame // - this.lblGame.AutoSize = true; - this.lblGame.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); - this.lblGame.Location = new System.Drawing.Point(206, 13); - this.lblGame.Name = "lblGame"; - this.lblGame.Size = new System.Drawing.Size(53, 15); - this.lblGame.TabIndex = 4; - this.lblGame.Text = "lblGame"; + lblGame.AutoSize = true; + lblGame.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); + lblGame.Location = new System.Drawing.Point(206, 13); + lblGame.Name = "lblGame"; + lblGame.Size = new System.Drawing.Size(53, 15); + lblGame.TabIndex = 4; + lblGame.Text = "lblGame"; // // label2 // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(13, 38); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(125, 15); - this.label2.TabIndex = 5; - this.label2.Text = "Please select platform:"; + label2.AutoSize = true; + label2.Location = new System.Drawing.Point(13, 38); + label2.Name = "label2"; + label2.Size = new System.Drawing.Size(125, 15); + label2.TabIndex = 5; + label2.Text = "Please select platform:"; + // + // btnSelectPlatformCancel + // + btnSelectPlatformCancel.Location = new System.Drawing.Point(430, 64); + btnSelectPlatformCancel.Name = "btnSelectPlatformCancel"; + btnSelectPlatformCancel.Size = new System.Drawing.Size(75, 23); + btnSelectPlatformCancel.TabIndex = 6; + btnSelectPlatformCancel.Text = "Cancel"; + btnSelectPlatformCancel.UseVisualStyleBackColor = true; + btnSelectPlatformCancel.Click += btnSelectPlatformCancel_Click; // // SelectPlatform // - this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(512, 66); - this.ControlBox = false; - this.Controls.Add(this.label2); - this.Controls.Add(this.lblGame); - this.Controls.Add(this.btnSelectPlatformOK); - this.Controls.Add(this.cbPossiblePlatforms); - this.Controls.Add(this.label1); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "SelectPlatform"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Select Game Platform"; - this.TopMost = true; - this.ResumeLayout(false); - this.PerformLayout(); - + AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); + AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + ClientSize = new System.Drawing.Size(512, 96); + ControlBox = false; + Controls.Add(btnSelectPlatformCancel); + Controls.Add(label2); + Controls.Add(lblGame); + Controls.Add(btnSelectPlatformOK); + Controls.Add(cbPossiblePlatforms); + Controls.Add(label1); + MaximizeBox = false; + MinimizeBox = false; + Name = "SelectPlatform"; + StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + Text = "Select Game Platform"; + TopMost = true; + ResumeLayout(false); + PerformLayout(); } #endregion @@ -112,5 +123,6 @@ private void InitializeComponent() private System.Windows.Forms.Button btnSelectPlatformOK; private System.Windows.Forms.Label lblGame; private System.Windows.Forms.Label label2; + private System.Windows.Forms.Button btnSelectPlatformCancel; } } \ No newline at end of file diff --git a/Forms/SelectPlatform.cs b/Forms/SelectPlatform.cs index 94f7079..69e3d2b 100644 --- a/Forms/SelectPlatform.cs +++ b/Forms/SelectPlatform.cs @@ -34,5 +34,11 @@ private void btnSelectPlatformOK_Click(object sender, EventArgs e) //UseAsDefault = cbUseAsDefault.Checked; this.Close(); } + + private void btnSelectPlatformCancel_Click(object sender, EventArgs e) + { + SelectedPlatform = null; + this.Close(); + } } } diff --git a/Forms/SelectPlatform.resx b/Forms/SelectPlatform.resx index f298a7b..af32865 100644 --- a/Forms/SelectPlatform.resx +++ b/Forms/SelectPlatform.resx @@ -1,4 +1,64 @@ - + + + diff --git a/Models/GameInfo.cs b/Models/GameInfo.cs index cf8cbd1..f359284 100644 --- a/Models/GameInfo.cs +++ b/Models/GameInfo.cs @@ -1,10 +1,4 @@ -using EverLoader.JsonConverters; -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Text; +using Newtonsoft.Json; namespace EverLoader.Models { @@ -79,5 +73,7 @@ public void FixRomLaunchType() public bool IsSelected { get; set; } //indicates if game is selected in UI [JsonIgnore] public bool IsRecentlyAdded { get; set; } //indicates if game was recently added in the app + [JsonIgnore] + public bool IsPresentOnCartridge { get; set; } //indicates if game exists on the inserted cartridge/microsd } } diff --git a/Models/GameInfoTreeNode.cs b/Models/GameInfoTreeNode.cs new file mode 100644 index 0000000..21e27ec --- /dev/null +++ b/Models/GameInfoTreeNode.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace EverLoader.Models +{ + public class GameInfoTreeNode + { + public string Id { get; set; } + public string Title { get; set; } + public string Path { get; set; } + public bool IsFolder { get; set; } + public bool IsMissngInCollection { get; set; } + public bool IsMissngOnCartridge { get; set; } + } +} diff --git a/Services/GamesManager.cs b/Services/GamesManager.cs index c03a745..c659348 100644 --- a/Services/GamesManager.cs +++ b/Services/GamesManager.cs @@ -11,12 +11,12 @@ using System.Threading.Tasks; using TheGamesDBApiWrapper.Models.Enums; using System.Globalization; -using System.Threading; using System.Windows.Forms; using TheGamesDBApiWrapper.Domain; using EverLoader.Properties; using EverLoader.Forms; using System.Text; +using System.IO.Compression; namespace EverLoader.Services { @@ -56,6 +56,8 @@ public GamesManager(ITheGamesDBAPI tgdbApi, public IEnumerable Games => _games.Values; public Dictionary GamesDictionary => _games; + public List GamesOnSDCard = new List(); + public IEnumerable GetGameBoxartImageInfo(string gameId) { return new[] @@ -178,159 +180,198 @@ public bool SdContainsKnownGames(string sdDrive) return sdGamesDir.EnumerateFiles("*.json") .Select(j => Path.GetFileNameWithoutExtension(j.Name)) .Any(i => _games.ContainsKey(i)); - } + } - public async Task SyncToSd(string sdDrive, string cartName, IProgress<(string, int, int)> progress) + public GameInfoTreeNode GetGameJsonFromSDCardByGameId(string gameId) { - var selectedGameIds = _games.Values.Where(g => g.IsSelected).Select(g => g.Id).ToArray(); + var ret = GamesOnSDCard.Where(g => g.Id != null && g.Id.ToLower() == gameId.ToLower()).ToList().FirstOrDefault(); - // 1. write cartridge.json - var cartJson = JsonConvert.SerializeObject(new Cartridge() - { - cartridgeName = cartName - }, Formatting.Indented); - await File.WriteAllTextAsync($"{sdDrive}cartridge.json", cartJson); + return ret; + } - // 2. ensure the game directory exists on MicroSD - Directory.CreateDirectory($"{sdDrive}game"); + public GameInfoTreeNode GetGameJsonFromSDCardByPath(string path) + { + var ret = GamesOnSDCard.Where(g => g.Path != null && g.Path.ToLower() == path.ToLower()).ToList().FirstOrDefault(); - // 3. Remove games on SD which are known but not selected - var sdGamesDir = new DirectoryInfo($"{sdDrive}game"); - foreach (var sdGameId in sdGamesDir.EnumerateFiles("*.json") - .Select(j => Path.GetFileNameWithoutExtension(j.Name))) + return ret; + } + public async Task CopyGameToSDPath(string sdDrive, GameInfo gameParam) + { + bool ret = true; + if (gameParam.Id is null) { - if (_games.TryGetValue(sdGameId, out GameInfo foundGame)) - { - if (foundGame.IsSelected) DeleteObsoleteRomFilesOnSD(foundGame, sdDrive); - else DeleteGameFilesOnSD(foundGame, sdDrive); - } + gameParam.Id = GenerateGameId(gameParam.romTitle,true);// Path.GetFileName(gameParam.romFileName); } - int syncedGameIndex = 0; - // 4. Save assets for each selected game - foreach (var game in _games.Values.Where(g => g.IsSelected)) + var game = GetGameById(gameParam.Id); + if (game == null) { - progress.Show(("Syncing Games", ++syncedGameIndex, selectedGameIds.Length)); + return false; + } - var platform = _appSettings.Platforms.SingleOrDefault(p => p.Id == game.romPlatformId); - if (platform == null) continue; + var platform = _appSettings.Platforms.SingleOrDefault(p => p.Id == game.romPlatformId); + if (platform == null) return false; - game.FixRomLaunchType(); //fix old romLaunchType values + game.FixRomLaunchType(); //fix old romLaunchType values - // RA cores should go to the SD root path, not to subfolders - var targetCorePath = game.RetroArchCore == null ? sdDrive : Path.GetPathRoot(sdDrive); + // RA cores should go to the SD root path, not to subfolders + var targetCorePath = game.RetroArchCore == null ? sdDrive : Path.GetPathRoot(sdDrive); - // 4a. copy emulator core (only overwrite if newer) + bios files (only overwrite if newer) - //first select the right core (note: megadrive has an 'empty' BlastRetro core, as it uses BlastEm emulator) - var selectedCore = game.RetroArchCore == null - ? platform.InternalEmulator - : platform.RetroArchCores.OrderBy(c => c.CoreFileName == game.RetroArchCore ? 0 : 1).FirstOrDefault(); + // 4a. copy emulator core (only overwrite if newer) + bios files (only overwrite if newer) + //first select the right core (note: megadrive has an 'empty' BlastRetro core, as it uses BlastEm emulator) + var selectedCore = game.RetroArchCore == null + ? platform.InternalEmulator + : platform.RetroArchCores.OrderBy(c => c.CoreFileName == game.RetroArchCore ? 0 : 1).FirstOrDefault(); - if (selectedCore != null) + if (selectedCore != null) + { + foreach (var file in selectedCore.Files) { - foreach (var file in selectedCore.Files) + var destFilePath = $"{targetCorePath}{file.TargetPath}".Replace("[game.Id]", game.Id); + if (!File.Exists(destFilePath)) Directory.CreateDirectory(Path.GetDirectoryName(destFilePath)); //ensure target dir exists + if (file.SourceContent != null) { - var destFilePath = $"{targetCorePath}{file.TargetPath}".Replace("[game.Id]", game.Id); - if (!File.Exists(destFilePath)) Directory.CreateDirectory(Path.GetDirectoryName(destFilePath)); //ensure target dir exists - if (file.SourceContent != null) - { - await File.WriteAllLinesAsync(destFilePath, file.SourceContent); - } - else - { - var sourceFile = new FileInfo(await _downloadManager.GetDownloadedFilePath(new Uri(file.SourceUrl), file.SourcePath)); - sourceFile.CopyToOverwriteIfNewer(destFilePath); - } + await File.WriteAllLinesAsync(destFilePath, file.SourceContent); } - - //copy over BIOS files - foreach (var biosFile in platform.BiosFiles) + else { - var sourceBiosFile = new FileInfo($"{Constants.APP_ROOT_FOLDER}bios\\{platform.Alias}\\{biosFile.FileName}"); - //bios files go into /sdcard/bios (for internal emulator) or /sdcard/retroarch/system (for RA cores) - var destBiosFilePath = $"{targetCorePath}{(game.RetroArchCore == null ? "bios" : "retroarch\\system")}\\{biosFile.FileName}"; - if (sourceBiosFile.Exists) - { - if (!File.Exists(destBiosFilePath)) Directory.CreateDirectory(Path.GetDirectoryName(destBiosFilePath)); //ensure target dir exists - sourceBiosFile.CopyToOverwriteIfNewer(destBiosFilePath); - } + var sourceFile = new FileInfo(await _downloadManager.GetDownloadedFilePath(new Uri(file.SourceUrl), file.SourcePath)); + sourceFile.CopyToOverwriteIfNewer(destFilePath); } } - // 4b. copy all image files (only overwrite if newer) - var imagesDir = new DirectoryInfo($"{APP_GAMES_FOLDER}{game.Id}\\{SUBFOLDER_IMAGES}"); - if (imagesDir.Exists) imagesDir.GetFiles().ToList().ForEach(f => + //copy over BIOS files + foreach (var biosFile in platform.BiosFiles) { - f.CopyToOverwriteIfNewer($"{sdDrive}game\\{f.Name}"); - }); + var sourceBiosFile = new FileInfo($"{Constants.APP_ROOT_FOLDER}bios\\{platform.Alias}\\{biosFile.FileName}"); + //bios files go into /sdcard/bios (for internal emulator) or /sdcard/retroarch/system (for RA cores) + var destBiosFilePath = $"{targetCorePath}{(game.RetroArchCore == null ? "bios" : "retroarch\\system")}\\{biosFile.FileName}"; + if (sourceBiosFile.Exists) + { + if (!File.Exists(destBiosFilePath)) Directory.CreateDirectory(Path.GetDirectoryName(destBiosFilePath)); //ensure target dir exists + sourceBiosFile.CopyToOverwriteIfNewer(destBiosFilePath); + } + } + } - // 4c. copy over rom file (only overwrite if newer) - var targetRomDir = game.RetroArchCore != null - ? $"roms\\{game.Id}" /* for RetroArch, put all roms under /sdcard/roms */ - : (platform.Id == 1 ? "mame" : "game"); /* internal emulator: arcade roms to /sdcard/mame, otherwise use /sdcard/game */ - Directory.CreateDirectory($"{sdDrive}{targetRomDir}"); //ensure target directory exists on MicroSD card - var sourceRomDir = new DirectoryInfo($"{APP_GAMES_FOLDER}{game.Id}\\{SUBFOLDER_ROM}"); - if (sourceRomDir.Exists) sourceRomDir.GetFiles().ToList().ForEach(f => - { - var targetRomFileName = game.RetroArchCore != null - ? f.Name /* for RA, use original filename */ - : (Path.GetExtension(f.Name.ToLower()) == Path.GetExtension(game.romFileName) ? game.romFileName : f.Name); - var targetFile = $"{sdDrive}{targetRomDir}\\{targetRomFileName}"; - f.CopyToOverwriteIfNewer(targetFile); - }); + // 4b. copy all image files (only overwrite if newer) + var imagesDir = new DirectoryInfo($"{APP_GAMES_FOLDER}{game.Id}\\{SUBFOLDER_IMAGES}"); + if (imagesDir.Exists) imagesDir.GetFiles().ToList().ForEach(f => + { + f.CopyToOverwriteIfNewer($"{sdDrive}game\\{f.Name}"); + }); + + // 4c. copy over rom file (only overwrite if newer) + var targetRomDir = game.RetroArchCore != null + ? $"roms\\{game.Id}" /* for RetroArch, put all roms under /sdcard/roms */ + : (platform.Id == 1 ? "mame" : "game"); /* internal emulator: arcade roms to /sdcard/mame, otherwise use /sdcard/game */ + Directory.CreateDirectory($"{sdDrive}{targetRomDir}"); //ensure target directory exists on MicroSD card + var sourceRomDir = new DirectoryInfo($"{APP_GAMES_FOLDER}{game.Id}\\{SUBFOLDER_ROM}"); + if (sourceRomDir.Exists) sourceRomDir.GetFiles().ToList().ForEach(f => + { + var targetRomFileName = game.RetroArchCore != null + ? f.Name /* for RA, use original filename */ + : (Path.GetExtension(f.Name.ToLower()) == Path.GetExtension(game.romFileName) ? game.romFileName : f.Name); + var targetFile = $"{sdDrive}{targetRomDir}\\{targetRomFileName}"; + f.CopyToOverwriteIfNewer(targetFile); + }); + + // multidisc without a m3u? => create a m3u + string multiDiscFilePath = null; + if (game.IsMultiDisc && !game.romFileName.EndsWith(".m3u")) + { + multiDiscFilePath = $"{sdDrive}{targetRomDir}\\{RemoveInvalidChars(game.romTitle)}.m3u"; + var cueFileFound = sourceRomDir.GetFiles().Any(f => f.Extension?.ToLower() == ".cue"); + File.WriteAllLines(multiDiscFilePath, cueFileFound + ? sourceRomDir.GetFiles().Where(f => f.Extension?.ToLower() == ".cue").Select(f => f.Name) + : sourceRomDir.GetFiles().Select(f => f.Name)); + } - // multidisc without a m3u? => create a m3u - string multiDiscFilePath = null; - if (game.IsMultiDisc && !game.romFileName.EndsWith(".m3u")) + //custom handling for cores without autolaunch + var gameJson = JsonConvert.SerializeObject(game, Formatting.Indented); + var evercadeGameInfo = new EvercadeGameInfo(gameJson); + if (selectedCore?.AutoLaunch == false) + { + //clean up any old-style 0-byte pointer file if it exists + if (File.Exists($"{sdDrive}game\\{game.Id}")) File.Delete($"{sdDrive}game\\{game.Id}"); + + // for internal Arcade/MAME, we have special way of launching using .cue file + if (game.RetroArchCore == null && platform.Id == 1) { - multiDiscFilePath = $"{sdDrive}{targetRomDir}\\{RemoveInvalidChars(game.romTitle)}.m3u"; - var cueFileFound = sourceRomDir.GetFiles().Any(f => f.Extension?.ToLower() == ".cue"); - File.WriteAllLines(multiDiscFilePath, cueFileFound - ? sourceRomDir.GetFiles().Where(f => f.Extension?.ToLower() == ".cue").Select(f => f.Name) - : sourceRomDir.GetFiles().Select(f => f.Name)); + File.WriteAllText($"{sdDrive}game\\{game.Id}.cue", game.PreferedRomFileName()); + evercadeGameInfo.romFileName = $"{game.Id}.cue"; } - - //custom handling for cores without autolaunch - var gameJson = JsonConvert.SerializeObject(game, Formatting.Indented); - var evercadeGameInfo = new EvercadeGameInfo(gameJson); - if (selectedCore?.AutoLaunch == false) + else + { + //no auto launcher, so write out special script and 0-byte pointer file + var pointerFileName = $"{game.Id}-"; + evercadeGameInfo.romFileName = pointerFileName; + File.Create($"{sdDrive}game\\{pointerFileName}").Dispose(); //create 0-byte pointer file + + Directory.CreateDirectory($"{sdDrive}special"); //ensure special directory exists + + string shScript = game.RetroArchCore != null ? Resources.special_bash_ra : Resources.special_bash; + string romFileName = multiDiscFilePath != null ? Path.GetFileName(multiDiscFilePath) : game.PreferedRomFileName(); + string romFileRelativePath = game.RetroArchCore == null ? romFileName : $"{game.Id}/{romFileName}"; + shScript = shScript + .Replace("{CORE_FILENAME}", selectedCore.CoreFileName) + .Replace("{ROM_FILENAME}", romFileRelativePath) + .Replace("\r", ""); //remove possible windows CR + + await File.WriteAllTextAsync($"{sdDrive}special\\{pointerFileName}.sh", shScript, new UTF8Encoding(false)); + } + } + //now write out evercade game json + var evercadeGameJson = JsonConvert.SerializeObject(evercadeGameInfo, Formatting.Indented); + await File.WriteAllTextAsync($"{sdDrive}game\\{game.Id}.json", evercadeGameJson, new UTF8Encoding(false)); + + return ret; + } + + public async Task SyncToSd(string sdDrive, string cartName, string gameId, IProgress<(string, int, int)> progress) + { + var selectedGameIds = _games.Values.Where(g => g.IsSelected).Select(g => g.Id).ToArray(); + + if ( gameId.Length > 0) + { + selectedGameIds = new List { - //clean up any old-style 0-byte pointer file if it exists - if (File.Exists($"{sdDrive}game\\{game.Id}")) File.Delete($"{sdDrive}game\\{game.Id}"); + gameId + }.ToArray(); + } - // for internal Arcade/MAME, we have special way of launching using .cue file - if (game.RetroArchCore == null && platform.Id == 1) - { - File.WriteAllText($"{sdDrive}game\\{game.Id}.cue", game.PreferedRomFileName()); - evercadeGameInfo.romFileName = $"{game.Id}.cue"; - } - else - { - //no auto launcher, so write out special script and 0-byte pointer file - var pointerFileName = $"{game.Id}-"; - evercadeGameInfo.romFileName = pointerFileName; - File.Create($"{sdDrive}game\\{pointerFileName}").Dispose(); //create 0-byte pointer file - - Directory.CreateDirectory($"{sdDrive}special"); //ensure special directory exists - - string shScript = game.RetroArchCore != null ? Resources.special_bash_ra : Resources.special_bash; - string romFileName = multiDiscFilePath != null ? Path.GetFileName(multiDiscFilePath) : game.PreferedRomFileName(); - string romFileRelativePath = game.RetroArchCore == null ? romFileName : $"{game.Id}/{romFileName}"; - shScript = shScript - .Replace("{CORE_FILENAME}", selectedCore.CoreFileName) - .Replace("{ROM_FILENAME}", romFileRelativePath) - .Replace("\r", ""); //remove possible windows CR - - await File.WriteAllTextAsync($"{sdDrive}special\\{pointerFileName}.sh", shScript, new UTF8Encoding(false)); - } + // 1. write cartridge.json + var cartJson = JsonConvert.SerializeObject(new Cartridge() + { + cartridgeName = cartName + }, Formatting.Indented); + await File.WriteAllTextAsync($"{sdDrive}cartridge.json", cartJson); + + // 2. ensure the game directory exists on MicroSD + Directory.CreateDirectory($"{sdDrive}game"); + + int syncedGameIndex = 0; + // 4. Save assets for each selected game + foreach (var game in _games.Values.Where(g => g.IsSelected)) + { + progress.Show(("Syncing Games", ++syncedGameIndex, selectedGameIds.Length)); + var platform = _appSettings.Platforms.SingleOrDefault(p => p.Id == game.romPlatformId); + if (platform == null) return; + + var exists = GetGameJsonFromSDCardByGameId(game.Id); + var gameFolder = sdDrive; + if (exists != null) + { + gameFolder = GetGameRootFromJsonPath(sdDrive, exists.Path); } - //now write out evercade game json - var evercadeGameJson = JsonConvert.SerializeObject(evercadeGameInfo, Formatting.Indented); - await File.WriteAllTextAsync($"{sdDrive}game\\{game.Id}.json", evercadeGameJson, new UTF8Encoding(false)); + + await CopyGameToSDPath(gameFolder, game); + + game.IsSelected = false; } } - private string GenerateGameId(string title) + private string GenerateGameId(string title, bool ignoreDupicates) { //remove text within parenthesis var cleanTitle = Regex.Replace(title, @"\([^)]*\)", ""); @@ -345,7 +386,7 @@ private string GenerateGameId(string title) cleanTitle = cleanTitle.Substring(0, Math.Min(cleanTitle.Length, MAX_GAME_ID_LENGTH)); int addedNumber = 2; //start with 2 - while (_games.ContainsKey(cleanTitle)) + while (!ignoreDupicates && _games.ContainsKey(cleanTitle)) { cleanTitle = cleanTitle.Substring(0, (cleanTitle+"_").IndexOf("_")); //replace last chars with a number @@ -363,7 +404,7 @@ private IEnumerable GetFilesFromCue(string cueFilePath) var metaFiles = new List(); foreach (var line in File.ReadAllLines(cueFilePath)) { - if (!line.StartsWith("FILE \"") || line.Split('"').Length != 3) continue; + if (!line.Trim().StartsWith("FILE \"") || line.Split('"').Length != 3) continue; metaFiles.Add(Path.Combine(Path.GetDirectoryName(cueFilePath), line.Split('"')[1])); } return metaFiles; @@ -428,10 +469,96 @@ bool IsValidM3u(string m3uFilePath) string multiDiscBaseTitleStart = null; string multiDiscBaseTitleEnd = null; - foreach (var romPath in validRomPaths) + foreach (var romPathEntry in validRomPaths) { + var romPath = romPathEntry; progress.Show(("Importing game(s)", ++importedGames, validRomPaths.Count)); + var romExtracted = false; + var romTmpFilePath = ""; + + var f = new FileInfo(romPath); + + if (!f.Exists || f.Length == 0) + { + var msg = $"Trying to add this file to collection:\n\n{romPath}\n\nBut it doesn't exist!\n\n"; + msg += "Do you want to select the correct file?"; + + var answer = MessageBox.Show(msg, "", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning); + if (answer == DialogResult.Yes) + { + OpenFileDialog dialog = new OpenFileDialog() + { + Multiselect = false, + Filter = $"*.*|*.*", + Title = "Select ROM file", + InitialDirectory = Path.GetDirectoryName(romPath), + FileName = romPath + }; + + if (dialog.ShowDialog() == DialogResult.OK) + { + romPath = dialog.FileNames[0]; + } + else + { + continue; + } + } + else + { + continue; + } + } + + if (Path.GetExtension(romPath).ToLower() == ".zip") + { + string tempFileName = Path.GetFileNameWithoutExtension(Path.GetTempFileName()); + string tempPath = Path.GetTempPath(); + + using (var file = new FileStream(romPath, FileMode.Open, FileAccess.Read, FileShare.Read)) + { + try + { + using (var zip = new ZipArchive(file, ZipArchiveMode.Read,true)) + { + var extList = new List(); + + var possiblePlatforms = _appSettings.Platforms.Select(p => p.SupportedExtensions ).ToList(); + foreach (var possiblePlatform in possiblePlatforms) + { + foreach (var platform in possiblePlatform) + { + extList.Add(platform); + } + } + + //check if a console rom is present in archive and extract it before adding rom to collection + var exists2 = zip.Entries.Select(k => k.Name).Where( j => extList.Contains(Path.GetExtension(j))).ToList(); + if (exists2 .Count > 0) + { + var zipPath = Path.Combine(tempPath, tempFileName); + zip.ExtractToDirectory(zipPath); + romTmpFilePath = Path.Combine(zipPath, exists2.First()); + romExtracted = true; + } + } + } + catch (Exception ex) + { + /* suppress scraping errors during rom import */ + } + } + } + + if (romExtracted) + { + romPath = romTmpFilePath; + } + + + //await Task.Run(() => zip..ExtractToDirectory(tempPath, true)); + //1. don't add rom if CRC is already in collection (var romCRC32, var romMD5) = HashHelper.CalculateHashcodes(romPath); var crc32 = uint.Parse(romCRC32, NumberStyles.HexNumber); @@ -442,7 +569,7 @@ bool IsValidM3u(string m3uFilePath) var ext = Path.GetExtension(romPath).ToLower(); if (ext != ".zip") title = title.Replace("_", " "); //for non-MAME roms, get rid of underscores title = Regex.Replace(title, @"\s+", " "); //replace multiple whitespace chars by a single space - var newId = GenerateGameId(title); + var newId = GenerateGameId(title, false); var newRomFileName = $"{newId}{ext}"; var originalRomFileName = $"{Path.GetFileNameWithoutExtension(romPath)}{ext}"; @@ -541,6 +668,11 @@ bool IsValidM3u(string m3uFilePath) _gameCRCs.Add(crc32); newGames.Add(newGame); + + if (romExtracted) + { + Directory.Delete( Path.GetDirectoryName( romTmpFilePath), true); + } } if (!newGames.Any()) return newGames; @@ -553,6 +685,8 @@ bool IsValidM3u(string m3uFilePath) await EnsurePlatform(newGames, progress); + + return newGames; //note: MainForm will take care of adding the new game to the UI } @@ -610,9 +744,14 @@ public void DeleteObsoleteRomFilesOnSD(GameInfo game, string sdDrive) /// /// /// + public void DeleteGameFilesOnSD(GameInfo game, string sdDrive) { - var gameId = game.Id; + var gameId = GetGameIdFromJsonPath(sdDrive, game.Id); + if (gameId == null) + { + gameId = game.Id; + } //if there is a mame cue file, get info from it and delete the rom from /sdcard/mame dir if (File.Exists($"{sdDrive}game\\{gameId}.cue")) @@ -640,7 +779,19 @@ public void DeleteGameFilesOnSD(GameInfo game, string sdDrive) .Concat(sdGameDir.EnumerateFiles($"{gameId}1*.png")) //artwork gfx .Concat(sdGameDir.EnumerateFiles($"{gameId}2*.png")) //artwork gfx .Concat(sdGameDir.EnumerateFiles($"{gameId}_gamebanner.png")) //optional banner gfx - .ToList().ForEach(f => File.Delete(f.FullName)); + .ToList().ForEach(f => { + File.Delete(f.FullName); + }); + } + public void DeleteGameFolderOnSD(GameInfo game, string SDDrive) + { + var folderPath = game.Id; + var gameJsonPath = GetGameJsonFromFolderPath(folderPath); + + //a folder also has "game files" which need to be deleted + DeleteGameFilesOnSD(new GameInfo { Id = gameJsonPath }, GetGameRootFromJsonPath(SDDrive, gameJsonPath)); + + Directory.Delete(folderPath, true); } public void DeleteGameByIds(IEnumerable ids) @@ -776,7 +927,14 @@ internal async Task EnsurePlatform(IEnumerable games, IProgress<(strin using (var form = new SelectPlatform(possiblePlatforms, game)) { form.ShowDialog(); - game.romPlatformId = form.SelectedPlatform.Id; + if (form.SelectedPlatform != null) + { + game.romPlatformId = form.SelectedPlatform.Id; + } else + { + game.romPlatform = ""; + } + if (form.UseAsDefault) { useAsDefaultExtensions.Add(ext, game.romPlatformId); @@ -1004,5 +1162,69 @@ public string GetRomListTitle(GameInfo game) if (game == null) return ""; return $"{game.romTitle} [{game.romPlatform}]"; } + + public string GetGameRootFromJsonPath(string sdDrive, string currentGameJsonFilePath) + { + var ret = ""; + + if (currentGameJsonFilePath.StartsWith($"{sdDrive}folders\\")) + { + var i = currentGameJsonFilePath.IndexOf("\\game\\"); + if (i >= 0) + { + ret = currentGameJsonFilePath.Substring(0, i + 1); + } + } + else + { + ret = sdDrive; + } + + return ret; + } + + public string GetGameIdFromJsonPath(string sdDrive, string currentGameJsonFilePath) + { + var ret = currentGameJsonFilePath; + var folderPrefix = $"{sdDrive}folders\\"; + var rootPrefix = sdDrive; + + var i = currentGameJsonFilePath.IndexOf("\\game\\"); + if (i >= 0) + { + if (currentGameJsonFilePath.StartsWith(folderPrefix)) + { + ret = currentGameJsonFilePath.Substring(i + 6); + } + else + { + ret = currentGameJsonFilePath.Substring(rootPrefix.Length + 5); + } + + ret = ret.Substring(0, ret.IndexOf(".json")); + } + + return ret; + } + + public string GetFolderIdFromPath(string path) + { + if (path[path.Length - 1] == '\\') + { + path = path.Substring(0, path.Length - 1); + } + var indexFolder = path.LastIndexOf("\\"); + var folderName = path.Substring(indexFolder + 1, path.Length - (indexFolder + 1)); + return folderName; + } + + public string GetGameJsonFromFolderPath(string dir) + { + var folderName = GetFolderIdFromPath(dir); + var gameJsonFileName = folderName + ".json"; + + string gameJsonFilePath = Path.Combine(Path.GetPathRoot(dir), "game", $"_{gameJsonFileName}"); + return gameJsonFilePath; + } } }