From d83aee88745e4a3b797157a4fc1a39579ed3d7dc Mon Sep 17 00:00:00 2001 From: givememystuffplease Date: Sat, 15 Jan 2011 00:37:44 +0000 Subject: [PATCH] Added DSi Database support (dsidatabase.xml) --- NUS Downloader/Database.cs | 211 ++++++++++++ NUS Downloader/Form1.Designer.cs | 308 ++++++++++------- NUS Downloader/Form1.cs | 310 +++++++++++++++--- NUS Downloader/Latest/NUS Downloader.exe | Bin 454656 -> 472064 bytes NUS Downloader/NUS Downloader.csproj | 3 + .../Properties/Resources.Designer.cs | 21 ++ NUS Downloader/Properties/Resources.resx | 49 +-- 7 files changed, 711 insertions(+), 191 deletions(-) diff --git a/NUS Downloader/Database.cs b/NUS Downloader/Database.cs index 617c857..b30c625 100644 --- a/NUS Downloader/Database.cs +++ b/NUS Downloader/Database.cs @@ -21,6 +21,9 @@ namespace NUS_Downloader private string WwTag = "WW"; private string UpdateTag = "UPD"; + private string DSiSystemTag = "DSISYSTEM"; + private string DSiWareTag = "DSIWARE"; + private string[] VcConsoles = new string[11] { "C64", "GEN", "MSX", "N64", "NEO", "NES", "SMS", "SNES", "TG16", "TGCD", "ARC" }; @@ -619,5 +622,213 @@ namespace NUS_Downloader return scriptCollection; } + + public ToolStripMenuItem[] LoadDSiSystemTitles() + { + if (databaseString.Length < 1) + { + throw new Exception("Load the database into a memory stream first!"); + } + + XmlDocument xDoc = new XmlDocument(); + xDoc.LoadXml(databaseString); + XmlNodeList DSiSystemTitlesXMLNodes = xDoc.GetElementsByTagName(DSiSystemTag); + ToolStripMenuItem[] dsiSystemTitleCollection = new ToolStripMenuItem[DSiSystemTitlesXMLNodes.Count]; + + for (int x = 0; x < DSiSystemTitlesXMLNodes.Count; x++) + { + ToolStripMenuItem XMLToolStripItem = new ToolStripMenuItem(); + XmlAttributeCollection XMLAttributes = DSiSystemTitlesXMLNodes[x].Attributes; + + string titleID = ""; + string descname = ""; + bool dangerous = false; + bool ticket = true; + + XmlNodeList ChildrenOfTheNode = DSiSystemTitlesXMLNodes[x].ChildNodes; + + for (int z = 0; z < ChildrenOfTheNode.Count; z++) + { + switch (ChildrenOfTheNode[z].Name) + { + case "name": + descname = ChildrenOfTheNode[z].InnerText; + break; + case "titleID": + titleID = ChildrenOfTheNode[z].InnerText; + break; + case "version": + string[] versions = ChildrenOfTheNode[z].InnerText.Split(','); + // Add to region things? + if (XMLToolStripItem.DropDownItems.Count > 0) + { + for (int b = 0; b < XMLToolStripItem.DropDownItems.Count; b++) + { + if (ChildrenOfTheNode[z].InnerText != "") + { + ToolStripMenuItem regitem = + (ToolStripMenuItem)XMLToolStripItem.DropDownItems[b]; + regitem.DropDownItems.Add("Latest Version"); + for (int y = 0; y < versions.Length; y++) + { + regitem.DropDownItems.Add("v" + versions[y]); + } + //regitem.DropDownItemClicked += new ToolStripItemClickedEventHandler(deepitem_clicked); + } + } + } + else + { + XMLToolStripItem.DropDownItems.Add("Latest Version"); + if (ChildrenOfTheNode[z].InnerText != "") + { + for (int y = 0; y < versions.Length; y++) + { + XMLToolStripItem.DropDownItems.Add("v" + versions[y]); + } + } + } + break; + case "region": + string[] regions = ChildrenOfTheNode[z].InnerText.Split(','); + if (ChildrenOfTheNode[z].InnerText != "") + { + for (int y = 0; y < regions.Length; y++) + { + XMLToolStripItem.DropDownItems.Add(RegionFromIndex(Convert.ToInt32(regions[y]))); + } + } + break; + default: + break; + case "ticket": + ticket = Convert.ToBoolean(ChildrenOfTheNode[z].InnerText); + break; + case "danger": + dangerous = true; + XMLToolStripItem.ToolTipText = ChildrenOfTheNode[z].InnerText; + break; + } + XMLToolStripItem.Image = SelectItemImage(ticket, dangerous); + + if (titleID != "") + { + XMLToolStripItem.Text = String.Format("{0} - {1}", titleID, descname); + } + else + { // Wait what? + XMLToolStripItem.Text = descname; + } + } + + dsiSystemTitleCollection[x] = XMLToolStripItem; + } + + return dsiSystemTitleCollection; + } + + public ToolStripMenuItem[] LoadDsiWareTitles() + { + if (databaseString.Length < 1) + { + throw new Exception("Load the database into a memory stream first!"); + } + + XmlDocument xDoc = new XmlDocument(); + xDoc.LoadXml(databaseString); + XmlNodeList DSiWareTitlesXMLNodes = xDoc.GetElementsByTagName(DSiWareTag); + ToolStripMenuItem[] DSiWareTitleCollection = new ToolStripMenuItem[DSiWareTitlesXMLNodes.Count]; + + for (int x = 0; x < DSiWareTitlesXMLNodes.Count; x++) + { + ToolStripMenuItem XMLToolStripItem = new ToolStripMenuItem(); + XmlAttributeCollection XMLAttributes = DSiWareTitlesXMLNodes[x].Attributes; + + string titleID = ""; + string descname = ""; + bool dangerous = false; + bool ticket = true; + + XmlNodeList ChildrenOfTheNode = DSiWareTitlesXMLNodes[x].ChildNodes; + + for (int z = 0; z < ChildrenOfTheNode.Count; z++) + { + switch (ChildrenOfTheNode[z].Name) + { + case "name": + descname = ChildrenOfTheNode[z].InnerText; + break; + case "titleID": + titleID = ChildrenOfTheNode[z].InnerText; + break; + case "version": + string[] versions = ChildrenOfTheNode[z].InnerText.Split(','); + // Add to region things? + if (XMLToolStripItem.DropDownItems.Count > 0) + { + for (int b = 0; b < XMLToolStripItem.DropDownItems.Count; b++) + { + if (ChildrenOfTheNode[z].InnerText != "") + { + ToolStripMenuItem regitem = + (ToolStripMenuItem)XMLToolStripItem.DropDownItems[b]; + regitem.DropDownItems.Add("Latest Version"); + for (int y = 0; y < versions.Length; y++) + { + regitem.DropDownItems.Add("v" + versions[y]); + } + //regitem.DropDownItemClicked += new ToolStripItemClickedEventHandler(deepitem_clicked); + } + } + } + else + { + XMLToolStripItem.DropDownItems.Add("Latest Version"); + if (ChildrenOfTheNode[z].InnerText != "") + { + for (int y = 0; y < versions.Length; y++) + { + XMLToolStripItem.DropDownItems.Add("v" + versions[y]); + } + } + } + break; + case "region": + string[] regions = ChildrenOfTheNode[z].InnerText.Split(','); + if (ChildrenOfTheNode[z].InnerText != "") + { + for (int y = 0; y < regions.Length; y++) + { + XMLToolStripItem.DropDownItems.Add(RegionFromIndex(Convert.ToInt32(regions[y]))); + } + } + break; + default: + break; + case "ticket": + ticket = Convert.ToBoolean(ChildrenOfTheNode[z].InnerText); + break; + case "danger": + dangerous = true; + XMLToolStripItem.ToolTipText = ChildrenOfTheNode[z].InnerText; + break; + } + XMLToolStripItem.Image = SelectItemImage(ticket, dangerous); + + if (titleID != "") + { + XMLToolStripItem.Text = String.Format("{0} - {1}", titleID, descname); + } + else + { // Wait what? + XMLToolStripItem.Text = descname; + } + } + + DSiWareTitleCollection[x] = XMLToolStripItem; + } + + return DSiWareTitleCollection; + } } } diff --git a/NUS Downloader/Form1.Designer.cs b/NUS Downloader/Form1.Designer.cs index 4f1f525..a2028fd 100644 --- a/NUS Downloader/Form1.Designer.cs +++ b/NUS Downloader/Form1.Designer.cs @@ -44,23 +44,12 @@ namespace NUS_Downloader this.label1 = new System.Windows.Forms.Label(); this.wadnamebox = new System.Windows.Forms.TextBox(); this.databaseStrip = new System.Windows.Forms.ContextMenuStrip(this.components); - this.SystemMenuList = new System.Windows.Forms.ToolStripMenuItem(); - this.IOSMenuList = new System.Windows.Forms.ToolStripMenuItem(); - this.VCMenuList = new System.Windows.Forms.ToolStripMenuItem(); - this.C64MenuList = new System.Windows.Forms.ToolStripMenuItem(); - this.GenesisMenuList = new System.Windows.Forms.ToolStripMenuItem(); - this.MSXMenuList = new System.Windows.Forms.ToolStripMenuItem(); - this.N64MenuList = new System.Windows.Forms.ToolStripMenuItem(); - this.NeoGeoMenuList = new System.Windows.Forms.ToolStripMenuItem(); - this.NESMenuList = new System.Windows.Forms.ToolStripMenuItem(); - this.SegaMSMenuList = new System.Windows.Forms.ToolStripMenuItem(); - this.SNESMenuList = new System.Windows.Forms.ToolStripMenuItem(); - this.TurboGrafx16MenuList = new System.Windows.Forms.ToolStripMenuItem(); - this.TurboGrafxCDMenuList = new System.Windows.Forms.ToolStripMenuItem(); - this.VCArcadeMenuList = new System.Windows.Forms.ToolStripMenuItem(); - this.WiiWareMenuList = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); + this.dSiWareToolStripMenu = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); this.RegionCodesList = new System.Windows.Forms.ToolStripMenuItem(); + this.wiiRegionCodesMenu = new System.Windows.Forms.ToolStripMenuItem(); + this.dsiRegionCodesMenu = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); this.extrasStrip = new System.Windows.Forms.ContextMenuStrip(this.components); this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); @@ -98,10 +87,28 @@ namespace NUS_Downloader this.packbox = new System.Windows.Forms.CheckBox(); this.decryptbox = new System.Windows.Forms.CheckBox(); this.localuse = new System.Windows.Forms.CheckBox(); + this.SystemMenuList = new System.Windows.Forms.ToolStripMenuItem(); this.systemFakeMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.IOSMenuList = new System.Windows.Forms.ToolStripMenuItem(); this.iosFakeMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.VCMenuList = new System.Windows.Forms.ToolStripMenuItem(); + this.C64MenuList = new System.Windows.Forms.ToolStripMenuItem(); + this.GenesisMenuList = new System.Windows.Forms.ToolStripMenuItem(); + this.MSXMenuList = new System.Windows.Forms.ToolStripMenuItem(); + this.N64MenuList = new System.Windows.Forms.ToolStripMenuItem(); + this.NeoGeoMenuList = new System.Windows.Forms.ToolStripMenuItem(); + this.NESMenuList = new System.Windows.Forms.ToolStripMenuItem(); + this.SegaMSMenuList = new System.Windows.Forms.ToolStripMenuItem(); + this.SNESMenuList = new System.Windows.Forms.ToolStripMenuItem(); + this.TurboGrafx16MenuList = new System.Windows.Forms.ToolStripMenuItem(); + this.TurboGrafxCDMenuList = new System.Windows.Forms.ToolStripMenuItem(); + this.VCArcadeMenuList = new System.Windows.Forms.ToolStripMenuItem(); this.vcFakeMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.WiiWareMenuList = new System.Windows.Forms.ToolStripMenuItem(); this.wwFakeMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.dsiSystemToolStripMenu = new System.Windows.Forms.ToolStripMenuItem(); + this.dsiFakeSystemToolStripMenu = new System.Windows.Forms.ToolStripMenuItem(); + this.dSiWareFakeToolStripMenu = new System.Windows.Forms.ToolStripMenuItem(); this.updateDatabaseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.loadInfoFromTMDToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.proxySettingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -204,118 +211,32 @@ namespace NUS_Downloader this.vcFakeMenuItem, this.WiiWareMenuList, this.wwFakeMenuItem, + this.toolStripSeparator5, + this.dsiSystemToolStripMenu, + this.dsiFakeSystemToolStripMenu, + this.dSiWareToolStripMenu, + this.dSiWareFakeToolStripMenu, this.toolStripSeparator1, this.RegionCodesList, this.toolStripSeparator4, this.updateDatabaseToolStripMenuItem}); this.databaseStrip.Name = "databaseStrip"; this.databaseStrip.ShowItemToolTips = false; - this.databaseStrip.Size = new System.Drawing.Size(159, 236); + this.databaseStrip.Size = new System.Drawing.Size(159, 352); this.databaseStrip.Text = "Hidden"; this.databaseStrip.Closed += new System.Windows.Forms.ToolStripDropDownClosedEventHandler(this.anyStrip_Closed); // - // SystemMenuList + // toolStripSeparator5 // - this.SystemMenuList.AutoSize = false; - this.SystemMenuList.Name = "SystemMenuList"; - this.SystemMenuList.Size = new System.Drawing.Size(158, 22); - this.SystemMenuList.Text = "System"; + this.toolStripSeparator5.Name = "toolStripSeparator5"; + this.toolStripSeparator5.Size = new System.Drawing.Size(155, 6); // - // IOSMenuList + // dSiWareToolStripMenu // - this.IOSMenuList.Name = "IOSMenuList"; - this.IOSMenuList.Size = new System.Drawing.Size(158, 22); - this.IOSMenuList.Text = "IOS"; - // - // VCMenuList - // - this.VCMenuList.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.C64MenuList, - this.GenesisMenuList, - this.MSXMenuList, - this.N64MenuList, - this.NeoGeoMenuList, - this.NESMenuList, - this.SegaMSMenuList, - this.SNESMenuList, - this.TurboGrafx16MenuList, - this.TurboGrafxCDMenuList, - this.VCArcadeMenuList}); - this.VCMenuList.Name = "VCMenuList"; - this.VCMenuList.Size = new System.Drawing.Size(158, 22); - this.VCMenuList.Text = "Virtual Console"; - // - // C64MenuList - // - this.C64MenuList.Name = "C64MenuList"; - this.C64MenuList.Size = new System.Drawing.Size(182, 22); - this.C64MenuList.Text = "Commodore 64"; - // - // GenesisMenuList - // - this.GenesisMenuList.Name = "GenesisMenuList"; - this.GenesisMenuList.Size = new System.Drawing.Size(182, 22); - this.GenesisMenuList.Text = "Mega Drive/Genesis"; - // - // MSXMenuList - // - this.MSXMenuList.Name = "MSXMenuList"; - this.MSXMenuList.Size = new System.Drawing.Size(182, 22); - this.MSXMenuList.Text = "MSX"; - // - // N64MenuList - // - this.N64MenuList.Name = "N64MenuList"; - this.N64MenuList.Size = new System.Drawing.Size(182, 22); - this.N64MenuList.Text = "Nintendo 64"; - // - // NeoGeoMenuList - // - this.NeoGeoMenuList.Name = "NeoGeoMenuList"; - this.NeoGeoMenuList.Size = new System.Drawing.Size(182, 22); - this.NeoGeoMenuList.Text = "NeoGeo"; - // - // NESMenuList - // - this.NESMenuList.Name = "NESMenuList"; - this.NESMenuList.Size = new System.Drawing.Size(182, 22); - this.NESMenuList.Text = "NES"; - // - // SegaMSMenuList - // - this.SegaMSMenuList.Name = "SegaMSMenuList"; - this.SegaMSMenuList.Size = new System.Drawing.Size(182, 22); - this.SegaMSMenuList.Text = "Sega Master System"; - // - // SNESMenuList - // - this.SNESMenuList.Name = "SNESMenuList"; - this.SNESMenuList.Size = new System.Drawing.Size(182, 22); - this.SNESMenuList.Text = "SNES"; - // - // TurboGrafx16MenuList - // - this.TurboGrafx16MenuList.Name = "TurboGrafx16MenuList"; - this.TurboGrafx16MenuList.Size = new System.Drawing.Size(182, 22); - this.TurboGrafx16MenuList.Text = "TruboGrafx-16"; - // - // TurboGrafxCDMenuList - // - this.TurboGrafxCDMenuList.Name = "TurboGrafxCDMenuList"; - this.TurboGrafxCDMenuList.Size = new System.Drawing.Size(182, 22); - this.TurboGrafxCDMenuList.Text = "TurboGrafx-CD"; - // - // VCArcadeMenuList - // - this.VCArcadeMenuList.Name = "VCArcadeMenuList"; - this.VCArcadeMenuList.Size = new System.Drawing.Size(182, 22); - this.VCArcadeMenuList.Text = "Virtual Console Arcade"; - // - // WiiWareMenuList - // - this.WiiWareMenuList.Name = "WiiWareMenuList"; - this.WiiWareMenuList.Size = new System.Drawing.Size(158, 22); - this.WiiWareMenuList.Text = "WiiWare"; + this.dSiWareToolStripMenu.Image = global::NUS_Downloader.Properties.Resources.dsi16x16; + this.dSiWareToolStripMenu.Name = "dSiWareToolStripMenu"; + this.dSiWareToolStripMenu.Size = new System.Drawing.Size(158, 22); + this.dSiWareToolStripMenu.Text = "DSiWare"; // // toolStripSeparator1 // @@ -324,10 +245,26 @@ namespace NUS_Downloader // // RegionCodesList // + this.RegionCodesList.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.wiiRegionCodesMenu, + this.dsiRegionCodesMenu}); this.RegionCodesList.Name = "RegionCodesList"; this.RegionCodesList.Size = new System.Drawing.Size(158, 22); this.RegionCodesList.Text = "Region Codes"; - this.RegionCodesList.DropDownItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.RegionCodesList_DropDownItemClicked); + // + // wiiRegionCodesMenu + // + this.wiiRegionCodesMenu.Name = "wiiRegionCodesMenu"; + this.wiiRegionCodesMenu.Size = new System.Drawing.Size(89, 22); + this.wiiRegionCodesMenu.Text = "Wii"; + this.wiiRegionCodesMenu.DropDownItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.wiiRegionCodesMenu_DropDownItemClicked); + // + // dsiRegionCodesMenu + // + this.dsiRegionCodesMenu.Name = "dsiRegionCodesMenu"; + this.dsiRegionCodesMenu.Size = new System.Drawing.Size(89, 22); + this.dsiRegionCodesMenu.Text = "DSi"; + this.dsiRegionCodesMenu.DropDownItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.dsiRegionCodesMenu_DropDownItemClicked); // // toolStripSeparator4 // @@ -348,7 +285,7 @@ namespace NUS_Downloader this.donateToolStripMenuItem, this.aboutNUSDToolStripMenuItem}); this.extrasStrip.Name = "extrasStrip"; - this.extrasStrip.Size = new System.Drawing.Size(178, 170); + this.extrasStrip.Size = new System.Drawing.Size(178, 148); this.extrasStrip.Text = "Hidden"; this.extrasStrip.Closed += new System.Windows.Forms.ToolStripDropDownClosedEventHandler(this.anyStrip_Closed); this.extrasStrip.Opening += new System.ComponentModel.CancelEventHandler(this.extrasStrip_Opening); @@ -767,6 +704,14 @@ namespace NUS_Downloader this.localuse.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; this.localuse.UseVisualStyleBackColor = true; // + // SystemMenuList + // + this.SystemMenuList.AutoSize = false; + this.SystemMenuList.Image = global::NUS_Downloader.Properties.Resources.wii16x16_copy; + this.SystemMenuList.Name = "SystemMenuList"; + this.SystemMenuList.Size = new System.Drawing.Size(158, 22); + this.SystemMenuList.Text = "System"; + // // systemFakeMenuItem // this.systemFakeMenuItem.Image = global::NUS_Downloader.Properties.Resources.arrow_ticker; @@ -775,6 +720,13 @@ namespace NUS_Downloader this.systemFakeMenuItem.Text = "System"; this.systemFakeMenuItem.Visible = false; // + // IOSMenuList + // + this.IOSMenuList.Image = global::NUS_Downloader.Properties.Resources.wii16x16_copy; + this.IOSMenuList.Name = "IOSMenuList"; + this.IOSMenuList.Size = new System.Drawing.Size(158, 22); + this.IOSMenuList.Text = "IOS"; + // // iosFakeMenuItem // this.iosFakeMenuItem.Image = global::NUS_Downloader.Properties.Resources.arrow_ticker; @@ -783,6 +735,91 @@ namespace NUS_Downloader this.iosFakeMenuItem.Text = "IOS"; this.iosFakeMenuItem.Visible = false; // + // VCMenuList + // + this.VCMenuList.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.C64MenuList, + this.GenesisMenuList, + this.MSXMenuList, + this.N64MenuList, + this.NeoGeoMenuList, + this.NESMenuList, + this.SegaMSMenuList, + this.SNESMenuList, + this.TurboGrafx16MenuList, + this.TurboGrafxCDMenuList, + this.VCArcadeMenuList}); + this.VCMenuList.Image = global::NUS_Downloader.Properties.Resources.wii16x16_copy; + this.VCMenuList.Name = "VCMenuList"; + this.VCMenuList.Size = new System.Drawing.Size(158, 22); + this.VCMenuList.Text = "Virtual Console"; + // + // C64MenuList + // + this.C64MenuList.Name = "C64MenuList"; + this.C64MenuList.Size = new System.Drawing.Size(182, 22); + this.C64MenuList.Text = "Commodore 64"; + // + // GenesisMenuList + // + this.GenesisMenuList.Name = "GenesisMenuList"; + this.GenesisMenuList.Size = new System.Drawing.Size(182, 22); + this.GenesisMenuList.Text = "Mega Drive/Genesis"; + // + // MSXMenuList + // + this.MSXMenuList.Name = "MSXMenuList"; + this.MSXMenuList.Size = new System.Drawing.Size(182, 22); + this.MSXMenuList.Text = "MSX"; + // + // N64MenuList + // + this.N64MenuList.Name = "N64MenuList"; + this.N64MenuList.Size = new System.Drawing.Size(182, 22); + this.N64MenuList.Text = "Nintendo 64"; + // + // NeoGeoMenuList + // + this.NeoGeoMenuList.Name = "NeoGeoMenuList"; + this.NeoGeoMenuList.Size = new System.Drawing.Size(182, 22); + this.NeoGeoMenuList.Text = "NeoGeo"; + // + // NESMenuList + // + this.NESMenuList.Name = "NESMenuList"; + this.NESMenuList.Size = new System.Drawing.Size(182, 22); + this.NESMenuList.Text = "NES"; + // + // SegaMSMenuList + // + this.SegaMSMenuList.Name = "SegaMSMenuList"; + this.SegaMSMenuList.Size = new System.Drawing.Size(182, 22); + this.SegaMSMenuList.Text = "Sega Master System"; + // + // SNESMenuList + // + this.SNESMenuList.Name = "SNESMenuList"; + this.SNESMenuList.Size = new System.Drawing.Size(182, 22); + this.SNESMenuList.Text = "SNES"; + // + // TurboGrafx16MenuList + // + this.TurboGrafx16MenuList.Name = "TurboGrafx16MenuList"; + this.TurboGrafx16MenuList.Size = new System.Drawing.Size(182, 22); + this.TurboGrafx16MenuList.Text = "TruboGrafx-16"; + // + // TurboGrafxCDMenuList + // + this.TurboGrafxCDMenuList.Name = "TurboGrafxCDMenuList"; + this.TurboGrafxCDMenuList.Size = new System.Drawing.Size(182, 22); + this.TurboGrafxCDMenuList.Text = "TurboGrafx-CD"; + // + // VCArcadeMenuList + // + this.VCArcadeMenuList.Name = "VCArcadeMenuList"; + this.VCArcadeMenuList.Size = new System.Drawing.Size(182, 22); + this.VCArcadeMenuList.Text = "Virtual Console Arcade"; + // // vcFakeMenuItem // this.vcFakeMenuItem.Image = global::NUS_Downloader.Properties.Resources.arrow_ticker; @@ -791,6 +828,13 @@ namespace NUS_Downloader this.vcFakeMenuItem.Text = "Virtual Console"; this.vcFakeMenuItem.Visible = false; // + // WiiWareMenuList + // + this.WiiWareMenuList.Image = global::NUS_Downloader.Properties.Resources.wii16x16_copy; + this.WiiWareMenuList.Name = "WiiWareMenuList"; + this.WiiWareMenuList.Size = new System.Drawing.Size(158, 22); + this.WiiWareMenuList.Text = "WiiWare"; + // // wwFakeMenuItem // this.wwFakeMenuItem.Image = global::NUS_Downloader.Properties.Resources.arrow_ticker; @@ -799,6 +843,29 @@ namespace NUS_Downloader this.wwFakeMenuItem.Text = "WiiWare"; this.wwFakeMenuItem.Visible = false; // + // dsiSystemToolStripMenu + // + this.dsiSystemToolStripMenu.Image = global::NUS_Downloader.Properties.Resources.dsi16x16; + this.dsiSystemToolStripMenu.Name = "dsiSystemToolStripMenu"; + this.dsiSystemToolStripMenu.Size = new System.Drawing.Size(158, 22); + this.dsiSystemToolStripMenu.Text = "System"; + // + // dsiFakeSystemToolStripMenu + // + this.dsiFakeSystemToolStripMenu.Image = global::NUS_Downloader.Properties.Resources.arrow_ticker; + this.dsiFakeSystemToolStripMenu.Name = "dsiFakeSystemToolStripMenu"; + this.dsiFakeSystemToolStripMenu.Size = new System.Drawing.Size(158, 22); + this.dsiFakeSystemToolStripMenu.Text = "System"; + this.dsiFakeSystemToolStripMenu.Visible = false; + // + // dSiWareFakeToolStripMenu + // + this.dSiWareFakeToolStripMenu.Image = global::NUS_Downloader.Properties.Resources.arrow_ticker; + this.dSiWareFakeToolStripMenu.Name = "dSiWareFakeToolStripMenu"; + this.dSiWareFakeToolStripMenu.Size = new System.Drawing.Size(158, 22); + this.dSiWareFakeToolStripMenu.Text = "DSiWare"; + this.dSiWareFakeToolStripMenu.Visible = false; + // // updateDatabaseToolStripMenuItem // this.updateDatabaseToolStripMenuItem.Image = global::NUS_Downloader.Properties.Resources.database_save; @@ -1111,6 +1178,13 @@ namespace NUS_Downloader private System.Windows.Forms.ToolStripMenuItem databaseToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem localTicketInventoryToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem donateToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator5; + private System.Windows.Forms.ToolStripMenuItem dsiSystemToolStripMenu; + private System.Windows.Forms.ToolStripMenuItem dsiFakeSystemToolStripMenu; + private System.Windows.Forms.ToolStripMenuItem dSiWareToolStripMenu; + private System.Windows.Forms.ToolStripMenuItem dSiWareFakeToolStripMenu; + private System.Windows.Forms.ToolStripMenuItem wiiRegionCodesMenu; + private System.Windows.Forms.ToolStripMenuItem dsiRegionCodesMenu; } } diff --git a/NUS Downloader/Form1.cs b/NUS Downloader/Form1.cs index c841ad3..b7b7f95 100644 --- a/NUS Downloader/Form1.cs +++ b/NUS Downloader/Form1.cs @@ -50,8 +50,6 @@ namespace NUS_Downloader private string version = "v2.0"; #endif - private static bool dsidecrypt = false; - // Cross-thread Windows Formsing private delegate void AddToolStripItemToStripCallback( ToolStripMenuItem menulist, ToolStripMenuItem[] additionitems); @@ -73,8 +71,9 @@ namespace NUS_Downloader private string proxy_usr; private string proxy_pwd; - // Database thread - private BackgroundWorker fds; + // Database threads + private BackgroundWorker databaseWorker; + private BackgroundWorker dsiDatabaseWorker; // Scripts Thread private BackgroundWorker scriptsWorker; @@ -124,27 +123,7 @@ namespace NUS_Downloader else { BootChecks(); - } - - - - /* Fix proxy entry. - if (!(String.IsNullOrEmpty(proxy_url))) - while (String.IsNullOrEmpty(proxy_pwd)) - Thread.Sleep(1000); - - if ((args.Length == 1) && (args[0] == "folderfix")) - { - // Organizing folders from past NUSD releases... - BackgroundWorker folder_fixer = new BackgroundWorker(); - folder_fixer.DoWork += new DoWorkEventHandler(ReorganizePreviousFolderStructure); - folder_fixer.RunWorkerCompleted += new RunWorkerCompletedEventHandler(ReorganizePreviousFolderStructure_Completed); - Debug.WriteLine("folderfix active"); - WriteStatus("Organizing your old folder structure..."); - folder_fixer.RunWorkerAsync(); - }*/ - - + } } private void RunCommandMode(string[] args) @@ -249,12 +228,19 @@ namespace NUS_Downloader WriteStatus("\r\n"); } - // Database BGLoader - this.fds = new BackgroundWorker(); - this.fds.DoWork += new DoWorkEventHandler(DoAllDatabaseyStuff); - this.fds.RunWorkerCompleted += new RunWorkerCompletedEventHandler(DoAllDatabaseyStuff_Completed); - this.fds.ProgressChanged += new ProgressChangedEventHandler(DoAllDatabaseyStuff_ProgressChanged); - this.fds.WorkerReportsProgress = true; + // Database BackgroundWorker + this.databaseWorker = new BackgroundWorker(); + this.databaseWorker.DoWork += new DoWorkEventHandler(DoAllDatabaseyStuff); + this.databaseWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(DoAllDatabaseyStuff_Completed); + this.databaseWorker.ProgressChanged += new ProgressChangedEventHandler(DoAllDatabaseyStuff_ProgressChanged); + this.databaseWorker.WorkerReportsProgress = true; + + // DSi Database BackgroundWorker + this.dsiDatabaseWorker = new BackgroundWorker(); + this.dsiDatabaseWorker.DoWork += new DoWorkEventHandler(DSiDatabaseWork); + this.dsiDatabaseWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(DSiDatabaseWork_Completed); + this.dsiDatabaseWorker.ProgressChanged += new ProgressChangedEventHandler(DSiDatabaseWork_ProgressChanged); + this.dsiDatabaseWorker.WorkerReportsProgress = true; // Scripts BGLoader this.scriptsWorker = new BackgroundWorker(); @@ -289,20 +275,17 @@ namespace NUS_Downloader return; } - // Check for DSi common key bin file... + /* Check for DSi common key bin file... if (NUSDFileExists("dsikey.bin") == true) { WriteStatus("DSi Common Key detected."); dsidecrypt = true; - } - + }*/ + /* // Check for database.xml if (NUSDFileExists("database.xml") == false) { WriteStatus("Database.xml not found. Title database not usable!"); - /*databaseButton.Click -= new System.EventHandler(this.button4_Click); - databaseButton.Click += new System.EventHandler(this.updateDatabaseToolStripMenuItem_Click); - databaseButton.Text = "Download DB"; */ DatabaseEnabled(false); updateDatabaseToolStripMenuItem.Enabled = true; updateDatabaseToolStripMenuItem.Visible = true; @@ -324,6 +307,59 @@ namespace NUS_Downloader this.fds.RunWorkerAsync(); } + // Check for database.xml + if (NUSDFileExists("dsidatabase.xml") == false) + { + WriteStatus("DSiDatabase.xml not found. DSi database not usable!"); + DatabaseEnabled(false); + updateDatabaseToolStripMenuItem.Enabled = true; + updateDatabaseToolStripMenuItem.Visible = true; + updateDatabaseToolStripMenuItem.Text = "Download Database"; + } + else + { + Database db = new Database(); + db.LoadDatabaseToStream(Path.Combine(CURRENT_DIR, "database.xml")); + string version = db.GetDatabaseVersion(); + WriteStatus("Database.xml detected."); + WriteStatus(" - Version: " + version); + updateDatabaseToolStripMenuItem.Text = "Update Database"; + //databaseButton.Enabled = false; + //databaseButton.Text = "DB Loading"; + databaseButton.Text = " [ ]"; + databaseButton.Image = Properties.Resources.arrow_ticker; + // Load it up... + this.fds.RunWorkerAsync(); + }*/ + + if (NUSDFileExists("database.xml") == true) + { + Database db = new Database(); + db.LoadDatabaseToStream(Path.Combine(CURRENT_DIR, "database.xml")); + string version = db.GetDatabaseVersion(); + WriteStatus("Database.xml detected."); + WriteStatus(" - Version: " + version); + updateDatabaseToolStripMenuItem.Text = "Update Database"; + databaseButton.Text = " [ ]"; + databaseButton.Image = Properties.Resources.arrow_ticker; + // Load it up... + this.databaseWorker.RunWorkerAsync(); + } + + if (NUSDFileExists("dsidatabase.xml") == true) + { + Database db = new Database(); + db.LoadDatabaseToStream(Path.Combine(CURRENT_DIR, "dsidatabase.xml")); + string version = db.GetDatabaseVersion(); + WriteStatus("DSiDatabase.xml detected."); + WriteStatus(" - Version: " + version); + updateDatabaseToolStripMenuItem.Text = "Update Database"; + databaseButton.Text = " [ ]"; + databaseButton.Image = Properties.Resources.arrow_ticker; + // Load it up... + this.dsiDatabaseWorker.RunWorkerAsync(); + } + // Load scripts (local) RunScriptOrganizer(); @@ -818,14 +854,6 @@ namespace NUS_Downloader // Cannot Pack WADs packbox.Checked = false; packbox.Enabled = false; - - // Can decrypt if dsikey exists... - if (dsidecrypt == false) - { - decryptbox.Checked = false; - decryptbox.Enabled = false; - } - wadnamebox.Enabled = false; wadnamebox.Text = ""; } @@ -969,7 +997,10 @@ namespace NUS_Downloader C64MenuList, NeoGeoMenuList, NESMenuList, SNESMenuList, N64MenuList, TurboGrafx16MenuList, TurboGrafxCDMenuList, MSXMenuList, SegaMSMenuList, - GenesisMenuList, VCArcadeMenuList + GenesisMenuList, VCArcadeMenuList, + + // DSi Entries + dsiSystemToolStripMenu, dSiWareToolStripMenu }; foreach (System.Windows.Forms.ToolStripMenuItem tsmiclear in thingstoclear) @@ -1100,6 +1131,74 @@ namespace NUS_Downloader worker.ReportProgress(100); } + /// + /// Fills the database strip with the local database.xml file. + /// + private void FillDSiDatabaseStrip(BackgroundWorker worker) + { + // Set fake items visible and real ones not. Only way to stop buggy enabled stuff. + SetPropertyThreadSafe(dsiSystemToolStripMenu, false, "Visible"); + SetPropertyThreadSafe(dSiWareToolStripMenu, false, "Visible"); + + SetPropertyThreadSafe(dsiFakeSystemToolStripMenu, true, "Visible"); + SetPropertyThreadSafe(dSiWareFakeToolStripMenu, true, "Visible"); + + Database databaseObj = new Database(); + databaseObj.LoadDatabaseToStream(Path.Combine(CURRENT_DIR, "dsidatabase.xml")); + + ToolStripMenuItem[] systemItems = databaseObj.LoadDSiSystemTitles(); + for (int a = 0; a < systemItems.Length; a++) + { + systemItems[a].DropDownItemClicked += new ToolStripItemClickedEventHandler(DatabaseItem_Clicked); + for (int b = 0; b < systemItems[a].DropDownItems.Count; b++) + { + ToolStripMenuItem syslowerentry = (ToolStripMenuItem)systemItems[a].DropDownItems[b]; + if (syslowerentry.DropDownItems.Count > 0) + { + syslowerentry.DropDownItemClicked += new ToolStripItemClickedEventHandler(DatabaseItem_Clicked); + } + } + } + Array.Sort(systemItems, delegate(ToolStripMenuItem tsmi1, ToolStripMenuItem tsmi2) + { + return tsmi1.Text + .Substring(18, tsmi1.Text.Length - 19).CompareTo(tsmi2.Text.Substring(18, tsmi2.Text.Length - 19)); + }); + AddToolStripItemToStrip(dsiSystemToolStripMenu, systemItems); + + SetPropertyThreadSafe(dsiFakeSystemToolStripMenu, false, "Visible"); + SetPropertyThreadSafe(dsiSystemToolStripMenu, true, "Visible"); + + Debug.WriteLine("Database: DSiSysTitles added"); + worker.ReportProgress(50); + + ToolStripMenuItem[] dsiWareItems = databaseObj.LoadDsiWareTitles(); + for (int a = 0; a < dsiWareItems.Length; a++) + { + dsiWareItems[a].DropDownItemClicked += new ToolStripItemClickedEventHandler(DatabaseItem_Clicked); + for (int b = 0; b < dsiWareItems[a].DropDownItems.Count; b++) + { + ToolStripMenuItem lowerentry = (ToolStripMenuItem)dsiWareItems[a].DropDownItems[b]; + if (lowerentry.DropDownItems.Count > 0) + { + lowerentry.DropDownItemClicked += new ToolStripItemClickedEventHandler(DatabaseItem_Clicked); + } + + } + } + Array.Sort(dsiWareItems, delegate(ToolStripMenuItem tsmi1, ToolStripMenuItem tsmi2) + { + return tsmi1.Text + .Substring(18, tsmi1.Text.Length - 19).CompareTo(tsmi2.Text.Substring(18, tsmi2.Text.Length - 19)); + }); + AddToolStripItemToStrip(dSiWareToolStripMenu, dsiWareItems); + + SetPropertyThreadSafe(dSiWareFakeToolStripMenu, false, "Visible"); + SetPropertyThreadSafe(dSiWareToolStripMenu, true, "Visible"); + Debug.WriteLine("Database: DSiWareTitles added"); + worker.ReportProgress(100); + } + /// /// Adds the tool strip item to strip. /// @@ -1228,6 +1327,13 @@ namespace NUS_Downloader Regex RegionEntry = new Regex(@"[0-9A-Z][0-9A-Z] \(.*\)"); Regex VersionEntry = new Regex(@"v[0-9]*.*"); + object[] wiiMenuLists = new object[] { + SystemMenuList, IOSMenuList, WiiWareMenuList, VCMenuList + }; + object[] dsiMenuLists = new object[] { + dsiSystemToolStripMenu, dSiWareToolStripMenu + }; + // This item is a Titleid - Descname entry if (IdandTitle.IsMatch(e.ClickedItem.Text)) { @@ -1247,6 +1353,18 @@ namespace NUS_Downloader // Check for danger item if ((e.ClickedItem.Image) == (Database.redgreen) || (e.ClickedItem.Image) == (Database.redorange)) WriteStatus("\n" + e.ClickedItem.ToolTipText); + + // Set server selection + foreach (System.Windows.Forms.ToolStripMenuItem tsmi in wiiMenuLists) + { + if (tsmi.Name == e.ClickedItem.OwnerItem.Name) + consoleCBox.SelectedIndex = 0; + } + foreach (System.Windows.Forms.ToolStripMenuItem tsmi in dsiMenuLists) + { + if (tsmi.Name == e.ClickedItem.OwnerItem.Name) + consoleCBox.SelectedIndex = 1; + } } // Region ClickedItem @@ -1271,6 +1389,18 @@ namespace NUS_Downloader // Check for danger item if ((e.ClickedItem.OwnerItem.Image) == (Database.redgreen) || (e.ClickedItem.OwnerItem.Image) == (Database.redorange)) WriteStatus("\n" + e.ClickedItem.OwnerItem.ToolTipText); + + // Set server selection + foreach (System.Windows.Forms.ToolStripMenuItem tsmi in wiiMenuLists) + { + if (tsmi.Name == e.ClickedItem.OwnerItem.OwnerItem.Name) + consoleCBox.SelectedIndex = 0; + } + foreach (System.Windows.Forms.ToolStripMenuItem tsmi in dsiMenuLists) + { + if (tsmi.Name == e.ClickedItem.OwnerItem.OwnerItem.Name) + consoleCBox.SelectedIndex = 1; + } } // Version ClickedItem @@ -1315,6 +1445,18 @@ namespace NUS_Downloader // Check for danger item if ((e.ClickedItem.OwnerItem.OwnerItem.Image) == (Database.redgreen) || (e.ClickedItem.OwnerItem.OwnerItem.Image) == (Database.redorange)) WriteStatus("\n" + e.ClickedItem.OwnerItem.OwnerItem.ToolTipText); + + // Set server selection + foreach (System.Windows.Forms.ToolStripMenuItem tsmi in wiiMenuLists) + { + if (tsmi.Name == e.ClickedItem.OwnerItem.OwnerItem.OwnerItem.Name) + consoleCBox.SelectedIndex = 0; + } + foreach (System.Windows.Forms.ToolStripMenuItem tsmi in dsiMenuLists) + { + if (tsmi.Name == e.ClickedItem.OwnerItem.OwnerItem.OwnerItem.Name) + consoleCBox.SelectedIndex = 1; + } } else { @@ -1328,6 +1470,18 @@ namespace NUS_Downloader // Check for danger item if ((e.ClickedItem.OwnerItem.Image) == (Database.redgreen) || (e.ClickedItem.OwnerItem.Image) == (Database.redorange)) WriteStatus("\n" + e.ClickedItem.OwnerItem.ToolTipText); + + // Set server selection + foreach (System.Windows.Forms.ToolStripMenuItem tsmi in wiiMenuLists) + { + if (tsmi.Name == e.ClickedItem.OwnerItem.OwnerItem.Name) + consoleCBox.SelectedIndex = 0; + } + foreach (System.Windows.Forms.ToolStripMenuItem tsmi in dsiMenuLists) + { + if (tsmi.Name == e.ClickedItem.OwnerItem.OwnerItem.Name) + consoleCBox.SelectedIndex = 1; + } } } } @@ -1388,6 +1542,9 @@ namespace NUS_Downloader return; } + wiiRegionCodesMenu.DropDownItems.Clear(); + dsiRegionCodesMenu.DropDownItems.Clear(); + Database databaseObj = new Database(); databaseObj.LoadDatabaseToStream(Path.Combine(CURRENT_DIR, "database.xml")); @@ -1396,16 +1553,21 @@ namespace NUS_Downloader // For each child node (region node) for (int z = 0; z < regionItems.Length; z++) { - RegionCodesList.DropDownItems.Add(regionItems[z].Text); + wiiRegionCodesMenu.DropDownItems.Add(regionItems[z].Text); + } + + Database dsiDatabaseObj = new Database(); + dsiDatabaseObj.LoadDatabaseToStream(Path.Combine(CURRENT_DIR, "dsidatabase.xml")); + + ToolStripMenuItem[] dsiRegionItems = dsiDatabaseObj.LoadRegionCodes(); + + // For each child node (region node) + for (int z = 0; z < dsiRegionItems.Length; z++) + { + dsiRegionCodesMenu.DropDownItems.Add(dsiRegionItems[z].Text); } } - private void RegionCodesList_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e) - { - if (titleidbox.Text.Length == 16) - titleidbox.Text = titleidbox.Text.Substring(0, 14) + e.ClickedItem.Text.Substring(0, 2); - } - /// /// Removes the illegal characters. /// @@ -1671,7 +1833,7 @@ namespace NUS_Downloader } // Load it up... - this.fds.RunWorkerAsync(); + this.databaseWorker.RunWorkerAsync(); if (isCreation) { @@ -2755,5 +2917,45 @@ namespace NUS_Downloader //TODO: Organize how this will work... Process.Start("http://wb3000.atspace.name/donations.html"); } + + private void DSiDatabaseWork(object sender, System.ComponentModel.DoWorkEventArgs e) + { + while (databaseWorker.IsBusy) + { + Thread.Sleep(1000); + } + BackgroundWorker worker = sender as BackgroundWorker; + FillDSiDatabaseStrip(worker); + LoadRegionCodes(); + //FillDatabaseScripts(); + ShowInnerToolTips(false); + } + + private void DSiDatabaseWork_Completed(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e) + { + this.databaseButton.Text = "Database..."; + this.databaseButton.Image = null; + } + + private void DSiDatabaseWork_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e) + { + if (e.ProgressPercentage == 50) + databaseButton.Text = " [. ]"; + else if (e.ProgressPercentage == 100) + databaseButton.Text = " [..]"; + + } + + private void wiiRegionCodesMenu_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e) + { + if (titleidbox.Text.Length == 16) + titleidbox.Text = titleidbox.Text.Substring(0, 14) + e.ClickedItem.Text.Substring(0, 2); + } + + private void dsiRegionCodesMenu_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e) + { + if (titleidbox.Text.Length == 16) + titleidbox.Text = titleidbox.Text.Substring(0, 14) + e.ClickedItem.Text.Substring(0, 2); + } } } \ No newline at end of file diff --git a/NUS Downloader/Latest/NUS Downloader.exe b/NUS Downloader/Latest/NUS Downloader.exe index 37cd0e272d8e973676a716d4e4b5a943d87542ce..65d0befd339a4705532a9b7b920f6f4e0bf23143 100644 GIT binary patch delta 67103 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 JpTDri{{<(k==%Tw delta 59448 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%0A-$+p5)n@z}MGH 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 Hb7=Wrn$fci diff --git a/NUS Downloader/NUS Downloader.csproj b/NUS Downloader/NUS Downloader.csproj index 6e9fe5c..3c39912 100644 --- a/NUS Downloader/NUS Downloader.csproj +++ b/NUS Downloader/NUS Downloader.csproj @@ -142,6 +142,8 @@ + + @@ -165,6 +167,7 @@ + diff --git a/NUS Downloader/Properties/Resources.Designer.cs b/NUS Downloader/Properties/Resources.Designer.cs index d51253a..67f8d19 100644 --- a/NUS Downloader/Properties/Resources.Designer.cs +++ b/NUS Downloader/Properties/Resources.Designer.cs @@ -179,6 +179,13 @@ namespace NUS_Downloader.Properties { } } + internal static System.Drawing.Bitmap dsi16x16 { + get { + object obj = ResourceManager.GetObject("dsi16x16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + internal static System.Drawing.Bitmap folder { get { object obj = ResourceManager.GetObject("folder", resourceCulture); @@ -305,6 +312,20 @@ namespace NUS_Downloader.Properties { } } + internal static System.Drawing.Bitmap wii16x16 { + get { + object obj = ResourceManager.GetObject("wii16x16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + internal static System.Drawing.Bitmap wii16x16_copy { + get { + object obj = ResourceManager.GetObject("wii16x16 copy", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + internal static System.Drawing.Bitmap wrench { get { object obj = ResourceManager.GetObject("wrench", resourceCulture); diff --git a/NUS Downloader/Properties/Resources.resx b/NUS Downloader/Properties/Resources.resx index c89a012..dc45ffe 100644 --- a/NUS Downloader/Properties/Resources.resx +++ b/NUS Downloader/Properties/Resources.resx @@ -121,9 +121,15 @@ ..\Resources\server_connect.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\package_delete.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\bullet_redorange.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\wii16x16 copy.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\bullet_redgreen.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -133,8 +139,8 @@ ..\Resources\script_go.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\bullet_green-blue.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\package_green.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\help.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -145,8 +151,8 @@ ..\Resources\page_white_magnify.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\box.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\money.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\script_code_red.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -181,50 +187,53 @@ ..\Resources\package.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\folder_table.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\database_save.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\wii16x16.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\bullet_green.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\script_code.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\bullet_orange.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\folder_table.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\box.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\picture_empty.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\package_green.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\bullet_green-blue.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\bug_add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\bullet_orange-blue.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\wrench.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\package_delete.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\script_code.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\drive_disk.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\bullet_orange-blue.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\package_add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\drive_disk.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\information.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\money.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\dsi16x16.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file