From 2d20ddb306c98b37639db76cf160c56a0c4e01ca Mon Sep 17 00:00:00 2001 From: Elie Rodrigue Date: Fri, 26 May 2017 21:58:05 -0400 Subject: Entry creator --- MainForm.Designer.cs | 130 +++++++------ MainForm.cs | 58 +----- MainForm.resx | 310 +++++++++++++++++-------------- Manager/BookManager.cs | 23 ++- Manager/CoverManager.cs | 19 +- Manager/EmulatorManager.cs | 14 ++ Manager/RomManager.cs | 6 +- Tooling/Tasks/SaveCurrentConfigAsBook.cs | 35 ++++ UI/Components/BookMenuItem.cs | 65 +++++++ UI/Components/EntryMenuItem.cs | 34 ++++ UI/Components/PageMenuItem.cs | 55 ++++++ UI/Forms/EntryCreator.Designer.cs | 249 +++++++++++++++++++++++++ UI/Forms/EntryCreator.cs | 136 ++++++++++++++ UI/Forms/EntryCreator.resx | 120 ++++++++++++ hakchi_gui.csproj | 19 ++ 15 files changed, 1009 insertions(+), 264 deletions(-) create mode 100644 Tooling/Tasks/SaveCurrentConfigAsBook.cs create mode 100644 UI/Components/BookMenuItem.cs create mode 100644 UI/Components/EntryMenuItem.cs create mode 100644 UI/Components/PageMenuItem.cs create mode 100644 UI/Forms/EntryCreator.Designer.cs create mode 100644 UI/Forms/EntryCreator.cs create mode 100644 UI/Forms/EntryCreator.resx diff --git a/MainForm.Designer.cs b/MainForm.Designer.cs index c2dc6a87..b96ce180 100644 --- a/MainForm.Designer.cs +++ b/MainForm.Designer.cs @@ -110,6 +110,14 @@ this.importRomsFolderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.viewAvailableRomsToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.viewRomsInfoToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.coverManagerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.importCoversFolderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.viewCoversListToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.booksToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem10 = new System.Windows.Forms.ToolStripSeparator(); + this.createNewBookToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripTextBox1 = new System.Windows.Forms.ToolStripTextBox(); + this.createToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.gitHubPageWithActualReleasesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.fAQToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -127,14 +135,7 @@ this.timerConnectionCheck = new System.Windows.Forms.Timer(this.components); this.gameDetail1 = new com.clusterrr.hakchi_gui.UI.Components.GameDetail(); this.gameSelecter1 = new com.clusterrr.hakchi_gui.UI.Components.GameSelecter(); - this.coverManagerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.viewCoversListToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.importCoversFolderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.booksToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripMenuItem10 = new System.Windows.Forms.ToolStripSeparator(); - this.createNewBookToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripTextBox1 = new System.Windows.Forms.ToolStripTextBox(); - this.createToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.button1 = new System.Windows.Forms.Button(); this.menuStrip.SuspendLayout(); this.statusStrip.SuspendLayout(); this.SuspendLayout(); @@ -717,6 +718,60 @@ resources.ApplyResources(this.viewRomsInfoToolStripMenuItem1, "viewRomsInfoToolStripMenuItem1"); this.viewRomsInfoToolStripMenuItem1.Click += new System.EventHandler(this.viewRomsInfoToolStripMenuItem1_Click); // + // coverManagerToolStripMenuItem + // + this.coverManagerToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.importCoversFolderToolStripMenuItem, + this.viewCoversListToolStripMenuItem}); + this.coverManagerToolStripMenuItem.Name = "coverManagerToolStripMenuItem"; + resources.ApplyResources(this.coverManagerToolStripMenuItem, "coverManagerToolStripMenuItem"); + // + // importCoversFolderToolStripMenuItem + // + this.importCoversFolderToolStripMenuItem.Name = "importCoversFolderToolStripMenuItem"; + resources.ApplyResources(this.importCoversFolderToolStripMenuItem, "importCoversFolderToolStripMenuItem"); + this.importCoversFolderToolStripMenuItem.Click += new System.EventHandler(this.importCoversFolderToolStripMenuItem_Click); + // + // viewCoversListToolStripMenuItem + // + this.viewCoversListToolStripMenuItem.Name = "viewCoversListToolStripMenuItem"; + resources.ApplyResources(this.viewCoversListToolStripMenuItem, "viewCoversListToolStripMenuItem"); + this.viewCoversListToolStripMenuItem.Click += new System.EventHandler(this.viewCoversListToolStripMenuItem_Click); + // + // booksToolStripMenuItem + // + this.booksToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripMenuItem10, + this.createNewBookToolStripMenuItem}); + this.booksToolStripMenuItem.Name = "booksToolStripMenuItem"; + resources.ApplyResources(this.booksToolStripMenuItem, "booksToolStripMenuItem"); + this.booksToolStripMenuItem.DropDownOpening += new System.EventHandler(this.booksToolStripMenuItem_DropDownOpening); + // + // toolStripMenuItem10 + // + this.toolStripMenuItem10.Name = "toolStripMenuItem10"; + resources.ApplyResources(this.toolStripMenuItem10, "toolStripMenuItem10"); + // + // createNewBookToolStripMenuItem + // + this.createNewBookToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripTextBox1, + this.createToolStripMenuItem}); + this.createNewBookToolStripMenuItem.Name = "createNewBookToolStripMenuItem"; + resources.ApplyResources(this.createNewBookToolStripMenuItem, "createNewBookToolStripMenuItem"); + this.createNewBookToolStripMenuItem.Click += new System.EventHandler(this.createNewBookToolStripMenuItem_Click); + // + // toolStripTextBox1 + // + this.toolStripTextBox1.Name = "toolStripTextBox1"; + resources.ApplyResources(this.toolStripTextBox1, "toolStripTextBox1"); + // + // createToolStripMenuItem + // + this.createToolStripMenuItem.Name = "createToolStripMenuItem"; + resources.ApplyResources(this.createToolStripMenuItem, "createToolStripMenuItem"); + this.createToolStripMenuItem.Click += new System.EventHandler(this.createToolStripMenuItem_Click); + // // helpToolStripMenuItem // this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -830,65 +885,19 @@ resources.ApplyResources(this.gameSelecter1, "gameSelecter1"); this.gameSelecter1.Name = "gameSelecter1"; // - // coverManagerToolStripMenuItem - // - this.coverManagerToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.importCoversFolderToolStripMenuItem, - this.viewCoversListToolStripMenuItem}); - this.coverManagerToolStripMenuItem.Name = "coverManagerToolStripMenuItem"; - resources.ApplyResources(this.coverManagerToolStripMenuItem, "coverManagerToolStripMenuItem"); + // button1 // - // viewCoversListToolStripMenuItem - // - this.viewCoversListToolStripMenuItem.Name = "viewCoversListToolStripMenuItem"; - resources.ApplyResources(this.viewCoversListToolStripMenuItem, "viewCoversListToolStripMenuItem"); - this.viewCoversListToolStripMenuItem.Click += new System.EventHandler(this.viewCoversListToolStripMenuItem_Click); - // - // importCoversFolderToolStripMenuItem - // - this.importCoversFolderToolStripMenuItem.Name = "importCoversFolderToolStripMenuItem"; - resources.ApplyResources(this.importCoversFolderToolStripMenuItem, "importCoversFolderToolStripMenuItem"); - this.importCoversFolderToolStripMenuItem.Click += new System.EventHandler(this.importCoversFolderToolStripMenuItem_Click); - // - // booksToolStripMenuItem - // - this.booksToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.toolStripMenuItem10, - this.createNewBookToolStripMenuItem}); - this.booksToolStripMenuItem.Name = "booksToolStripMenuItem"; - resources.ApplyResources(this.booksToolStripMenuItem, "booksToolStripMenuItem"); - this.booksToolStripMenuItem.DropDownOpening += new System.EventHandler(this.booksToolStripMenuItem_DropDownOpening); - // - // toolStripMenuItem10 - // - this.toolStripMenuItem10.Name = "toolStripMenuItem10"; - resources.ApplyResources(this.toolStripMenuItem10, "toolStripMenuItem10"); - // - // createNewBookToolStripMenuItem - // - this.createNewBookToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.toolStripTextBox1, - this.createToolStripMenuItem}); - this.createNewBookToolStripMenuItem.Name = "createNewBookToolStripMenuItem"; - resources.ApplyResources(this.createNewBookToolStripMenuItem, "createNewBookToolStripMenuItem"); - this.createNewBookToolStripMenuItem.Click += new System.EventHandler(this.createNewBookToolStripMenuItem_Click); - // - // toolStripTextBox1 - // - this.toolStripTextBox1.Name = "toolStripTextBox1"; - resources.ApplyResources(this.toolStripTextBox1, "toolStripTextBox1"); - // - // createToolStripMenuItem - // - this.createToolStripMenuItem.Name = "createToolStripMenuItem"; - resources.ApplyResources(this.createToolStripMenuItem, "createToolStripMenuItem"); - this.createToolStripMenuItem.Click += new System.EventHandler(this.createToolStripMenuItem_Click); + resources.ApplyResources(this.button1, "button1"); + this.button1.Name = "button1"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); // // MainForm // this.AllowDrop = true; resources.ApplyResources(this, "$this"); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.button1); this.Controls.Add(this.gameSelecter1); this.Controls.Add(this.gameDetail1); this.Controls.Add(this.buttonStart); @@ -1022,6 +1031,7 @@ private System.Windows.Forms.ToolStripMenuItem createNewBookToolStripMenuItem; private System.Windows.Forms.ToolStripTextBox toolStripTextBox1; private System.Windows.Forms.ToolStripMenuItem createToolStripMenuItem; + private System.Windows.Forms.Button button1; } } diff --git a/MainForm.cs b/MainForm.cs index 8e5fe491..818b70ec 100644 --- a/MainForm.cs +++ b/MainForm.cs @@ -1235,66 +1235,18 @@ namespace com.clusterrr.hakchi_gui booksToolStripMenuItem.DropDownItems.Clear(); foreach(Manager.BookManager.Book b in Manager.BookManager.getInstance().GetLibrary()) { - ToolStripMenuItem bookItm = new ToolStripMenuItem(b.Name); - bookItm.Tag = b; - bookItm.DropDownOpened += BookItm_DropDownOpened; - ToolStripMenuItem tempItm = new ToolStripMenuItem("-"); - - bookItm.DropDownItems.Add(tempItm); - booksToolStripMenuItem.DropDownItems.Add(bookItm); + + booksToolStripMenuItem.DropDownItems.Add(new UI.Components.BookMenuItem(b)); } booksToolStripMenuItem.DropDownItems.Add(toolStripMenuItem10); booksToolStripMenuItem.DropDownItems.Add(createNewBookToolStripMenuItem); } - private void BookItm_DropDownOpened(object sender, EventArgs e) - { - ToolStripMenuItem itm = (ToolStripMenuItem)sender; - Manager.BookManager.Book b = (Manager.BookManager.Book)itm.Tag; - - itm.DropDownItems.Clear(); - foreach(Manager.BookManager.Page p in b.Pages) - { - ToolStripMenuItem pageItm = new ToolStripMenuItem(p.FriendlyName); - pageItm.Tag = p; - pageItm.DropDownOpened += PageItm_DropDownOpened; - ToolStripSeparator atempItm = new ToolStripSeparator(); - - pageItm.DropDownItems.Add(atempItm); - itm.DropDownItems.Add(pageItm); - } - ToolStripSeparator tempItm = new ToolStripSeparator(); - - - itm.DropDownItems.Add(tempItm); - ToolStripMenuItem addPageItm = new ToolStripMenuItem("Add Page"); - ToolStripTextBox pageName = new ToolStripTextBox(); - pageName.Tag = b; - addPageItm.DropDownItems.Add(pageName); - ToolStripMenuItem doAdd = new ToolStripMenuItem("Add!"); - doAdd.Click += DoAdd_Click; - doAdd.Tag = pageName; - addPageItm.DropDownItems.Add(doAdd); - itm.DropDownItems.Add(addPageItm); - // throw new NotImplementedException(); - Console.Write(""); - } - - private void DoAdd_Click(object sender, EventArgs e) - { - ToolStripMenuItem itm = (ToolStripMenuItem)sender; - ToolStripTextBox txt = (ToolStripTextBox)itm.Tag; - if(txt.Text.Trim()!="") - { - Manager.BookManager.Book b = (Manager.BookManager.Book)txt.Tag; - b.AddPage(txt.Text); - } - } - - private void PageItm_DropDownOpened(object sender, EventArgs e) + private void button1_Click(object sender, EventArgs e) { - // throw new NotImplementedException(); + UI.Forms.AsyncTask ast = new UI.Forms.AsyncTask(new Tooling.Tasks.SaveCurrentConfigAsBook()); + ast.ShowDialog(); } } } \ No newline at end of file diff --git a/MainForm.resx b/MainForm.resx index 2d8fed37..10473656 100644 --- a/MainForm.resx +++ b/MainForm.resx @@ -121,75 +121,6 @@ 17, 17 - - 37, 20 - - - &File - - - 52, 20 - - - &Kernel - - - 65, 20 - - - &Modules - - - 61, 20 - - - &Settings - - - 47, 20 - - - &Tools - - - 155, 22 - - - Rom Manager - - - 155, 22 - - - Cover Manager - - - 160, 6 - - - 163, 22 - - - Create new book - - - 155, 22 - - - Books - - - 72, 20 - - - Advanced - - - 44, 20 - - - &Help - 0, 0 @@ -213,7 +144,13 @@ $this - 6 + 7 + + + 37, 20 + + + &File @@ -279,6 +216,12 @@ &Exit + + 52, 20 + + + &Kernel + 179, 22 @@ -303,6 +246,12 @@ Uninstall + + 65, 20 + + + &Modules + 197, 22 @@ -315,6 +264,12 @@ Uninstall extra modules + + 61, 20 + + + &Settings + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAA0BJREFUOE91 @@ -587,6 +542,12 @@ Save settings to NES Mini now + + 47, 20 + + + &Tools + 331, 22 @@ -647,6 +608,18 @@ Fetch Original Games + + 72, 20 + + + Advanced + + + 155, 22 + + + Rom Manager + 178, 22 @@ -665,6 +638,54 @@ View roms info + + 155, 22 + + + Cover Manager + + + 181, 22 + + + Import covers folder + + + 181, 22 + + + View covers list + + + 155, 22 + + + Books + + + 160, 6 + + + 163, 22 + + + Create new book + + + 100, 23 + + + 160, 22 + + + Create + + + 44, 20 + + + &Help + 246, 22 @@ -711,7 +732,7 @@ $this - 5 + 6 None @@ -738,7 +759,7 @@ $this - 4 + 5 109, 17 @@ -765,7 +786,7 @@ $this - 3 + 4 False @@ -807,10 +828,10 @@ None - 306, 568 + 426, 568 - 293, 38 + 173, 38 6 @@ -828,7 +849,7 @@ $this - 2 + 3 775, 17 @@ -852,7 +873,7 @@ $this - 1 + 2 15, 49 @@ -873,28 +894,37 @@ $this - 0 + 1 - - 181, 22 + + None - - View covers list + + NoControl - - 181, 22 + + 300, 568 - - Import covers folder + + 120, 38 - - 100, 23 + + 9 - - 160, 22 + + Save as book - - Create + + button1 + + + System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 True @@ -2529,6 +2559,54 @@ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + coverManagerToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + importCoversFolderToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + viewCoversListToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + booksToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripMenuItem10 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + createNewBookToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripTextBox1 + + + System.Windows.Forms.ToolStripTextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + createToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + helpToolStripMenuItem @@ -2595,54 +2673,6 @@ System.Windows.Forms.Timer, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - coverManagerToolStripMenuItem - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - viewCoversListToolStripMenuItem - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - importCoversFolderToolStripMenuItem - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - booksToolStripMenuItem - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripMenuItem10 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - createNewBookToolStripMenuItem - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripTextBox1 - - - System.Windows.Forms.ToolStripTextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - createToolStripMenuItem - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - MainForm diff --git a/Manager/BookManager.cs b/Manager/BookManager.cs index 48345c2d..ba4c3212 100644 --- a/Manager/BookManager.cs +++ b/Manager/BookManager.cs @@ -5,7 +5,7 @@ using System.Text; namespace com.clusterrr.hakchi_gui.Manager { - class BookManager + public class BookManager { private string BookLibraryPath = System.IO.Path.Combine(Program.BaseDirectoryExternal, "Books\\data.dat"); private static BookManager instance; @@ -113,6 +113,10 @@ namespace com.clusterrr.hakchi_gui.Manager } public class Page { + public override string ToString() + { + return FriendlyName; + } public Page() { Entries = new List(); @@ -121,19 +125,20 @@ namespace com.clusterrr.hakchi_gui.Manager public List Entries { get; set; } public int Id { get; set; } } - public abstract class Entry + public class Entry { + public Entry() + { + IsLink = false; + } public string Label { get; set; } public CoverManager.Cover Cover { get; set; } - } - public class LinkEntry:Entry - { - public string PageId; - } - public class GameEntry : Entry - { + public int PageId; + public RomManager.Rom Rom { get; set; } public EmulatorManager.Emulator Emulator { get; set; } + public bool IsLink { get; set; } } + } } diff --git a/Manager/CoverManager.cs b/Manager/CoverManager.cs index 150f7f6c..c30f2671 100644 --- a/Manager/CoverManager.cs +++ b/Manager/CoverManager.cs @@ -5,7 +5,7 @@ using System.Text; using System.Drawing; namespace com.clusterrr.hakchi_gui.Manager { - class CoverManager + public class CoverManager { public string CoverFolder = System.IO.Path.Combine(Program.BaseDirectoryExternal, "covers"); private CoverManager() @@ -23,6 +23,10 @@ namespace com.clusterrr.hakchi_gui.Manager } public class Cover { + public override string ToString() + { + return System.IO.Path.GetFileNameWithoutExtension(LocalPath); + } public Cover(string path) { LocalPath = path; @@ -99,6 +103,19 @@ namespace com.clusterrr.hakchi_gui.Manager return ret; } + public Cover GetCoverByName(string name) + { + Cover ret = null; + foreach(Cover c in _CoverLibrary) + { + if(System.IO.Path.GetFileNameWithoutExtension(c.LocalPath).ToLower() == name.ToLower()) + { + ret = c; + break; + } + } + return ret; + } public Cover AddCover(string filePath) { Cover ret = null; diff --git a/Manager/EmulatorManager.cs b/Manager/EmulatorManager.cs index 1c15e7ea..85dfafa2 100644 --- a/Manager/EmulatorManager.cs +++ b/Manager/EmulatorManager.cs @@ -35,6 +35,20 @@ namespace com.clusterrr.hakchi_gui.Manager return (Executable + " " + app.Arguments).Trim(); } } + public List GetAllCompatibleRoms() + { + List ret = new List(); + + foreach(Manager.RomManager.Rom r in RomManager.getInstance().GetLibrary()) + { + string extension = r.Extension.ToLower(); + if(Extensions.Contains(extension)) + { + ret.Add(r); + } + } + return ret; + } } public static EmulatorManager getInstance() { diff --git a/Manager/RomManager.cs b/Manager/RomManager.cs index b27e3d2a..24eb2f67 100644 --- a/Manager/RomManager.cs +++ b/Manager/RomManager.cs @@ -12,7 +12,11 @@ namespace com.clusterrr.hakchi_gui.Manager public event RomModificationHandler RomAdded; public class Rom { - + public override string ToString() + { + return DetectedName; + } + public Rom(string filePath) { LocalPath = filePath; diff --git a/Tooling/Tasks/SaveCurrentConfigAsBook.cs b/Tooling/Tasks/SaveCurrentConfigAsBook.cs new file mode 100644 index 00000000..ded8651c --- /dev/null +++ b/Tooling/Tasks/SaveCurrentConfigAsBook.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace com.clusterrr.hakchi_gui.Tooling.Tasks +{ + public class SaveCurrentConfigAsBook : TaskableTool + { + public SaveCurrentConfigAsBook() : base("Saving current config as book") + { + } + public override void Execute() + { + ReportStatus("Importing all selected games in library"); + IOrderedEnumerable selectedGames = Manager.GameManager.GetInstance().getSelectedGames(); + int processed = 0; + foreach(NesMiniApplication mn in selectedGames) + { + string localRom = System.IO.Path.Combine(mn.GamePath, mn.RomFile); + if(System.IO.File.Exists(localRom)) + { + Manager.RomManager.getInstance().AddRom(localRom); + + } + Manager.CoverManager.getInstance().AddCover(mn.IconPath); + processed++; + ReportProgress(processed * 100 / selectedGames.Count()); + Console.Write(mn.RomFile); + } + NesMenuCollection nmc = new NesMenuCollection(); + ReportCompleted(); + } + } +} diff --git a/UI/Components/BookMenuItem.cs b/UI/Components/BookMenuItem.cs new file mode 100644 index 00000000..3c460cb4 --- /dev/null +++ b/UI/Components/BookMenuItem.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; +namespace com.clusterrr.hakchi_gui.UI.Components +{ + class BookMenuItem:ToolStripMenuItem + { + Manager.BookManager.Book _TheBook; + public BookMenuItem(Manager.BookManager.Book b):base(b.Name) + { + _TheBook = b; + this.DropDownOpening += BookMenuItem_DropDownOpening; + this.DropDownItems.Add(new ToolStripSeparator()); + } + ToolStripTextBox pageName = new ToolStripTextBox(); + private void BookMenuItem_DropDownOpening(object sender, EventArgs e) + { + DropDownItems.Clear(); + + foreach (Manager.BookManager.Page ee in _TheBook.Pages) + { + DropDownItems.Add(new PageMenuItem(ee,_TheBook)); + } + this.DropDownItems.Add(new ToolStripSeparator()); + ToolStripMenuItem ts = new ToolStripMenuItem("Add Page"); + ts.Click += Ts_Click; + + + ts.DropDownItems.Add(pageName); + + ToolStripMenuItem doAdd = new ToolStripMenuItem("Add!"); + doAdd.Click += DoAdd_Click; + + ts.DropDownItems.Add(doAdd); + + DropDownItems.Add(ts); + ToolStripMenuItem dts = new ToolStripMenuItem("Delete Book"); + dts.Click += Dts_Click; + DropDownItems.Add(dts); + } + + private void DoAdd_Click(object sender, EventArgs e) + { + + if (pageName.Text.Trim() != "") + { + + _TheBook.AddPage(pageName.Text); + } + } + + private void Dts_Click(object sender, EventArgs e) + { + + } + + private void Ts_Click(object sender, EventArgs e) + { + + + } + } +} diff --git a/UI/Components/EntryMenuItem.cs b/UI/Components/EntryMenuItem.cs new file mode 100644 index 00000000..d9f75515 --- /dev/null +++ b/UI/Components/EntryMenuItem.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; +namespace com.clusterrr.hakchi_gui.UI.Components +{ + public class EntryMenuItem : System.Windows.Forms.ToolStripMenuItem + { + Manager.BookManager.Entry _TheEntry; + public EntryMenuItem(Manager.BookManager.Entry entr):base(entr.Label) + { + _TheEntry = entr; + ToolStripMenuItem entryEdititm = new ToolStripMenuItem("Edit"); + entryEdititm.Click += EntryEdititm_Click; + + this.DropDownItems.Add(entryEdititm); + ToolStripMenuItem entryDeleteitm = new ToolStripMenuItem("Delete"); + entryDeleteitm.Click += EntryDeleteitm_Click; ; ; + + this.DropDownItems.Add(entryDeleteitm); + } + + private void EntryDeleteitm_Click(object sender, EventArgs e) + { + throw new NotImplementedException(); + } + + private void EntryEdititm_Click(object sender, EventArgs e) + { + throw new NotImplementedException(); + } + } +} diff --git a/UI/Components/PageMenuItem.cs b/UI/Components/PageMenuItem.cs new file mode 100644 index 00000000..481b3107 --- /dev/null +++ b/UI/Components/PageMenuItem.cs @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; +namespace com.clusterrr.hakchi_gui.UI.Components +{ + class PageMenuItem : ToolStripMenuItem + { + private Manager.BookManager.Book _theBook; + private Manager.BookManager.Page _ThePage; + public PageMenuItem(Manager.BookManager.Page thePage, Manager.BookManager.Book theBook) : base(thePage.FriendlyName) + { + _ThePage = thePage; + _theBook = theBook; + this.DropDownOpening += PageMenuItem_DropDownOpening; + this.DropDownItems.Add(new ToolStripSeparator()); + } + + private void PageMenuItem_DropDownOpening(object sender, EventArgs e) + { + DropDownItems.Clear(); + + foreach (Manager.BookManager.Entry ee in _ThePage.Entries) + { + DropDownItems.Add(new EntryMenuItem(ee)); + } + this.DropDownItems.Add(new ToolStripSeparator()); + ToolStripMenuItem ts = new ToolStripMenuItem("Add Entry"); + ts.Click += Ts_Click; + DropDownItems.Add(ts); + ToolStripMenuItem dts = new ToolStripMenuItem("Delete page"); + dts.Click += Dts_Click; + DropDownItems.Add(dts); + } + + private void Dts_Click(object sender, EventArgs e) + { + + } + + private void Ts_Click(object sender, EventArgs e) + { + + UI.EntryCreator ec = new UI.EntryCreator(_theBook); + + if (ec.ShowDialog() == DialogResult.OK) + { + _ThePage.Entries.Add(ec.entr); + Manager.BookManager.getInstance().SaveSettings(); + } + Console.Write(""); + } + } +} diff --git a/UI/Forms/EntryCreator.Designer.cs b/UI/Forms/EntryCreator.Designer.cs new file mode 100644 index 00000000..4a59dd36 --- /dev/null +++ b/UI/Forms/EntryCreator.Designer.cs @@ -0,0 +1,249 @@ +namespace com.clusterrr.hakchi_gui.UI +{ + partial class EntryCreator + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.tabPage2 = new System.Windows.Forms.TabPage(); + this.label1 = new System.Windows.Forms.Label(); + this.comboBox1 = new System.Windows.Forms.ComboBox(); + this.label2 = new System.Windows.Forms.Label(); + this.cmbCover = new System.Windows.Forms.ComboBox(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.button1 = new System.Windows.Forms.Button(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.cmbEmulator = new System.Windows.Forms.ComboBox(); + this.cmbRoms = new System.Windows.Forms.ComboBox(); + this.label4 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.tabControl1.SuspendLayout(); + this.tabPage1.SuspendLayout(); + this.tabPage2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.SuspendLayout(); + // + // tabControl1 + // + this.tabControl1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.tabControl1.Controls.Add(this.tabPage1); + this.tabControl1.Controls.Add(this.tabPage2); + this.tabControl1.Location = new System.Drawing.Point(12, 12); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(223, 137); + this.tabControl1.TabIndex = 0; + // + // tabPage1 + // + this.tabPage1.Controls.Add(this.comboBox1); + this.tabPage1.Controls.Add(this.label1); + this.tabPage1.Location = new System.Drawing.Point(4, 22); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Padding = new System.Windows.Forms.Padding(3); + this.tabPage1.Size = new System.Drawing.Size(215, 111); + this.tabPage1.TabIndex = 0; + this.tabPage1.Text = "Link"; + this.tabPage1.UseVisualStyleBackColor = true; + // + // tabPage2 + // + this.tabPage2.Controls.Add(this.cmbRoms); + this.tabPage2.Controls.Add(this.label4); + this.tabPage2.Controls.Add(this.cmbEmulator); + this.tabPage2.Controls.Add(this.label3); + this.tabPage2.Location = new System.Drawing.Point(4, 22); + this.tabPage2.Name = "tabPage2"; + this.tabPage2.Padding = new System.Windows.Forms.Padding(3); + this.tabPage2.Size = new System.Drawing.Size(215, 111); + this.tabPage2.TabIndex = 1; + this.tabPage2.Text = "Game"; + this.tabPage2.UseVisualStyleBackColor = true; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(6, 3); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(72, 13); + this.label1.TabIndex = 0; + this.label1.Text = "Link to page :"; + // + // comboBox1 + // + this.comboBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.comboBox1.FormattingEnabled = true; + this.comboBox1.Location = new System.Drawing.Point(3, 19); + this.comboBox1.Name = "comboBox1"; + this.comboBox1.Size = new System.Drawing.Size(207, 21); + this.comboBox1.TabIndex = 1; + this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(19, 191); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(35, 13); + this.label2.TabIndex = 2; + this.label2.Text = "Cover"; + // + // cmbCover + // + this.cmbCover.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.cmbCover.FormattingEnabled = true; + this.cmbCover.Location = new System.Drawing.Point(12, 207); + this.cmbCover.Name = "cmbCover"; + this.cmbCover.Size = new System.Drawing.Size(219, 21); + this.cmbCover.TabIndex = 3; + this.cmbCover.SelectedIndexChanged += new System.EventHandler(this.comboBox2_SelectedIndexChanged); + // + // pictureBox1 + // + this.pictureBox1.Location = new System.Drawing.Point(19, 234); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(204, 204); + this.pictureBox1.TabIndex = 4; + this.pictureBox1.TabStop = false; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(12, 444); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(219, 52); + this.button1.TabIndex = 5; + this.button1.Text = "Save"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // textBox1 + // + this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox1.Location = new System.Drawing.Point(12, 168); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(219, 20); + this.textBox1.TabIndex = 1; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(3, 3); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(48, 13); + this.label3.TabIndex = 0; + this.label3.Text = "Emulator"; + // + // cmbEmulator + // + this.cmbEmulator.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.cmbEmulator.FormattingEnabled = true; + this.cmbEmulator.Location = new System.Drawing.Point(3, 19); + this.cmbEmulator.Name = "cmbEmulator"; + this.cmbEmulator.Size = new System.Drawing.Size(207, 21); + this.cmbEmulator.TabIndex = 2; + this.cmbEmulator.SelectedIndexChanged += new System.EventHandler(this.cmbEmulator_SelectedIndexChanged); + // + // cmbRoms + // + this.cmbRoms.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.cmbRoms.FormattingEnabled = true; + this.cmbRoms.Location = new System.Drawing.Point(3, 63); + this.cmbRoms.Name = "cmbRoms"; + this.cmbRoms.Size = new System.Drawing.Size(207, 21); + this.cmbRoms.TabIndex = 4; + this.cmbRoms.SelectedIndexChanged += new System.EventHandler(this.cmbRoms_SelectedIndexChanged); + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(3, 47); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(29, 13); + this.label4.TabIndex = 3; + this.label4.Text = "Rom"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(19, 152); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(33, 13); + this.label5.TabIndex = 6; + this.label5.Text = "Label"; + // + // EntryCreator + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(247, 508); + this.Controls.Add(this.label5); + this.Controls.Add(this.button1); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.pictureBox1); + this.Controls.Add(this.tabControl1); + this.Controls.Add(this.cmbCover); + this.Controls.Add(this.label2); + this.Name = "EntryCreator"; + this.Text = "EntryCreator"; + this.tabControl1.ResumeLayout(false); + this.tabPage1.ResumeLayout(false); + this.tabPage1.PerformLayout(); + this.tabPage2.ResumeLayout(false); + this.tabPage2.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabPage tabPage1; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.ComboBox cmbCover; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.ComboBox comboBox1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TabPage tabPage2; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.ComboBox cmbRoms; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.ComboBox cmbEmulator; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label5; + } +} \ No newline at end of file diff --git a/UI/Forms/EntryCreator.cs b/UI/Forms/EntryCreator.cs new file mode 100644 index 00000000..b1c6be8d --- /dev/null +++ b/UI/Forms/EntryCreator.cs @@ -0,0 +1,136 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace com.clusterrr.hakchi_gui.UI +{ + public partial class EntryCreator : Form + { + private Manager.BookManager.Book _theBook; + public EntryCreator(Manager.BookManager.Book theBook) + { + InitializeComponent(); + _theBook = theBook; + foreach(Manager.BookManager.Page p in _theBook.Pages) + { + comboBox1.Items.Add(p); + } + foreach(Manager.CoverManager.Cover c in Manager.CoverManager.getInstance().GetLibrary()) + { + cmbCover.Items.Add(c); + } + foreach(Manager.EmulatorManager.Emulator emu in Manager.EmulatorManager.getInstance().getEmulatorList()) + { + cmbEmulator.Items.Add(emu); + } + } + + private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) + { + Manager.CoverManager.Cover c = Manager.CoverManager.getInstance().GetCoverByName(((Manager.BookManager.Page)comboBox1.SelectedItem).FriendlyName); + if(c!=null) + { + cmbCover.SelectedItem = c; + } + + } + + private void comboBox2_SelectedIndexChanged(object sender, EventArgs e) + { + pictureBox1.Image = null; + if (cmbCover.SelectedItem != null) + { + + + pictureBox1.Image = Manager.BitmapManager.getInstance().GetBitmap(((Manager.CoverManager.Cover)cmbCover.SelectedItem).LocalPath); + } + } + public Manager.BookManager.Entry entr; + private void button1_Click(object sender, EventArgs e) + { + if(textBox1.Text.Trim() != "") + { + Manager.BookManager.Entry le = new Manager.BookManager.Entry(); + le.Cover = (Manager.CoverManager.Cover)cmbCover.SelectedItem; + le.Label = textBox1.Text; + if (tabControl1.SelectedTab.Text == "Link") + { + le.PageId = ((Manager.BookManager.Page)comboBox1.SelectedItem).Id; + le.IsLink = true; + } + else + { + le.Emulator = (Manager.EmulatorManager.Emulator)cmbEmulator.SelectedItem; + if (cmbRoms.SelectedItem != null) + { + le.Rom = (Manager.RomManager.Rom)cmbRoms.SelectedItem; + } + } + entr = le; + DialogResult = DialogResult.OK; + this.Close(); + + } + else + + { + MessageBox.Show("You need to enter a name"); + } + } + + private void cmbEmulator_SelectedIndexChanged(object sender, EventArgs e) + { + cmbRoms.Items.Clear(); + cmbRoms.SelectedItem = null; + if (cmbEmulator.SelectedItem != null) + { + Manager.EmulatorManager.Emulator emu = (Manager.EmulatorManager.Emulator)cmbEmulator.SelectedItem; + + + cmbRoms.Enabled = emu.NeedRomParameter; + foreach (Manager.RomManager.Rom r in emu.GetAllCompatibleRoms()) + { + cmbRoms.Items.Add(r); + } + + } + else + { + + } + } + + private void cmbRoms_SelectedIndexChanged(object sender, EventArgs e) + { + if(cmbRoms.SelectedItem == null) + { + textBox1.Text = ""; + } + else + { + Manager.RomManager.Rom r = (Manager.RomManager.Rom)cmbRoms.SelectedItem; + textBox1.Text = r.DetectedName; + + + Manager.CoverManager.Cover c = Manager.CoverManager.getInstance().GetCoverByName(r.DetectedName); + if (c != null) + { + cmbCover.SelectedItem = c; + } + else + { + Manager.EmulatorManager.Emulator emu = (Manager.EmulatorManager.Emulator)cmbEmulator.SelectedItem; + c = Manager.CoverManager.getInstance().AddCover(".\\images\\" + emu.DefaultImage); + cmbCover.SelectedItem = c; + + } + + } + } + } +} diff --git a/UI/Forms/EntryCreator.resx b/UI/Forms/EntryCreator.resx new file mode 100644 index 00000000..5ea0895e --- /dev/null +++ b/UI/Forms/EntryCreator.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/hakchi_gui.csproj b/hakchi_gui.csproj index 25484198..5a3c07d7 100644 --- a/hakchi_gui.csproj +++ b/hakchi_gui.csproj @@ -452,12 +452,19 @@ + + + Component + UserControl EmulatorSelector.cs + + Component + UserControl @@ -473,6 +480,15 @@ Component + + Component + + + Form + + + EntryCreator.cs + Form @@ -1047,6 +1063,9 @@ GameSelecter.cs + + EntryCreator.cs + AsyncTask.cs -- cgit v1.2.3