diff --git a/Controls/MusicOrderViewer.cs b/Controls/MusicOrderViewer.cs
index dab9f2f..db02a6d 100644
--- a/Controls/MusicOrderViewer.cs
+++ b/Controls/MusicOrderViewer.cs
@@ -24,8 +24,31 @@ namespace TaikoSoundEditor.Controls
public void AddSong(MusicOrder mo)
{
- SongCards.Add(new SongCard(WordList, mo));
- CurrentPage = CurrentPage;
+ var songCard = new SongCard(WordList, mo);
+
+ if (Config.MusicOrderSort == Config.MusicOrderSortValueNone)
+ {
+ SongCards.Add(songCard);
+ }
+ else if (Config.MusicOrderSort == Config.MusicOrderSortValueId)
+ {
+ SongCards.Add(songCard);
+ SongCards.Sort((c1, c2) => c1.Id.CompareTo(c2.Id));
+ }
+ else if (Config.MusicOrderSort == Config.MusicOrderSortValueGenre)
+ {
+ var firstInGenre = SongCards.Find(c => c.MusicOrder.Genre == mo.Genre);
+ if (firstInGenre == null)
+ {
+ SongCards.Add(songCard);
+ }
+ else
+ {
+ var index = SongCards.IndexOf(firstInGenre);
+ SongCards.Insert(index, songCard);
+ }
+ }
+ CurrentPage = CurrentPage;
}
public void RemoveSong(MusicOrder mo)
diff --git a/MainForm.Designer.cs b/MainForm.Designer.cs
index 9a4f7e0..e5ee0b7 100644
--- a/MainForm.Designer.cs
+++ b/MainForm.Designer.cs
@@ -88,6 +88,13 @@
this.WordsGrid = new System.Windows.Forms.PropertyGrid();
this.MusicOrderTab = new System.Windows.Forms.TabPage();
this.MusicOrderViewer = new TaikoSoundEditor.Controls.MusicOrderViewer();
+ this.menuStrip1 = new System.Windows.Forms.MenuStrip();
+ this.preferencesToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
+ this.musicOrderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.SortByGenreToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.SortByIdToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.NoSortToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.checkForUpdatesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.RemoveSongButton = new System.Windows.Forms.Button();
this.DatatableSpaces = new System.Windows.Forms.CheckBox();
this.ExportOpenOnFinished = new System.Windows.Forms.CheckBox();
@@ -99,6 +106,8 @@
this.groupBox8 = new System.Windows.Forms.GroupBox();
this.NewSoundsBox = new System.Windows.Forms.ListBox();
this.groupBox3 = new System.Windows.Forms.GroupBox();
+ this.SearchBox = new System.Windows.Forms.TextBox();
+ this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.LoadedMusicBox = new System.Windows.Forms.ListBox();
this.tabPage3 = new System.Windows.Forms.TabPage();
this.panel4 = new System.Windows.Forms.Panel();
@@ -119,8 +128,6 @@
this.TJASelector = new TaikoSoundEditor.PathSelector();
this.AudioFileSelector = new TaikoSoundEditor.PathSelector();
this.label10 = new System.Windows.Forms.Label();
- this.pictureBox1 = new System.Windows.Forms.PictureBox();
- this.SearchBox = new System.Windows.Forms.TextBox();
this.TabControl.SuspendLayout();
this.tabPage1.SuspendLayout();
this.panel1.SuspendLayout();
@@ -147,14 +154,15 @@
this.WordSubGB.SuspendLayout();
this.WordsGB.SuspendLayout();
this.MusicOrderTab.SuspendLayout();
+ this.menuStrip1.SuspendLayout();
this.groupBox8.SuspendLayout();
this.groupBox3.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.tabPage3.SuspendLayout();
this.panel4.SuspendLayout();
this.groupBox10.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.SilenceBox)).BeginInit();
this.groupBox9.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.SuspendLayout();
//
// TabControl
@@ -351,6 +359,7 @@
//
this.tabPage2.BackColor = System.Drawing.Color.White;
this.tabPage2.Controls.Add(this.SoundViewTab);
+ this.tabPage2.Controls.Add(this.menuStrip1);
this.tabPage2.Controls.Add(this.RemoveSongButton);
this.tabPage2.Controls.Add(this.DatatableSpaces);
this.tabPage2.Controls.Add(this.ExportOpenOnFinished);
@@ -376,10 +385,10 @@
this.SoundViewTab.Controls.Add(this.SoundViewerSimple);
this.SoundViewTab.Controls.Add(this.SoundViewerExpert);
this.SoundViewTab.Controls.Add(this.MusicOrderTab);
- this.SoundViewTab.Location = new System.Drawing.Point(139, 7);
+ this.SoundViewTab.Location = new System.Drawing.Point(139, 28);
this.SoundViewTab.Name = "SoundViewTab";
this.SoundViewTab.SelectedIndex = 0;
- this.SoundViewTab.Size = new System.Drawing.Size(529, 324);
+ this.SoundViewTab.Size = new System.Drawing.Size(529, 303);
this.SoundViewTab.TabIndex = 13;
this.SoundViewTab.SelectedIndexChanged += new System.EventHandler(this.SoundViewTab_SelectedIndexChanged);
//
@@ -400,7 +409,7 @@
this.SoundViewerSimple.Location = new System.Drawing.Point(4, 24);
this.SoundViewerSimple.Name = "SoundViewerSimple";
this.SoundViewerSimple.Padding = new System.Windows.Forms.Padding(3);
- this.SoundViewerSimple.Size = new System.Drawing.Size(521, 296);
+ this.SoundViewerSimple.Size = new System.Drawing.Size(521, 275);
this.SoundViewerSimple.TabIndex = 1;
this.SoundViewerSimple.Text = "Simple View";
this.SoundViewerSimple.UseVisualStyleBackColor = true;
@@ -611,7 +620,7 @@
this.SoundViewerExpert.Location = new System.Drawing.Point(4, 24);
this.SoundViewerExpert.Name = "SoundViewerExpert";
this.SoundViewerExpert.Padding = new System.Windows.Forms.Padding(3);
- this.SoundViewerExpert.Size = new System.Drawing.Size(521, 296);
+ this.SoundViewerExpert.Size = new System.Drawing.Size(521, 275);
this.SoundViewerExpert.TabIndex = 0;
this.SoundViewerExpert.Text = "Expert View";
this.SoundViewerExpert.UseVisualStyleBackColor = true;
@@ -622,7 +631,7 @@
this.groupBox4.Dock = System.Windows.Forms.DockStyle.Fill;
this.groupBox4.Location = new System.Drawing.Point(3, 3);
this.groupBox4.Name = "groupBox4";
- this.groupBox4.Size = new System.Drawing.Size(515, 290);
+ this.groupBox4.Size = new System.Drawing.Size(515, 269);
this.groupBox4.TabIndex = 4;
this.groupBox4.TabStop = false;
this.groupBox4.Text = "Sound Data";
@@ -641,7 +650,7 @@
this.EditorTable.Name = "EditorTable";
this.EditorTable.RowCount = 1;
this.EditorTable.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.EditorTable.Size = new System.Drawing.Size(509, 268);
+ this.EditorTable.Size = new System.Drawing.Size(509, 247);
this.EditorTable.TabIndex = 7;
this.EditorTable.Resize += new System.EventHandler(this.EditorTable_Resize);
//
@@ -652,7 +661,7 @@
this.panel3.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel3.Location = new System.Drawing.Point(170, 3);
this.panel3.Name = "panel3";
- this.panel3.Size = new System.Drawing.Size(167, 262);
+ this.panel3.Size = new System.Drawing.Size(167, 241);
this.panel3.TabIndex = 5;
//
// groupBox6
@@ -661,7 +670,7 @@
this.groupBox6.Dock = System.Windows.Forms.DockStyle.Fill;
this.groupBox6.Location = new System.Drawing.Point(0, 0);
this.groupBox6.Name = "groupBox6";
- this.groupBox6.Size = new System.Drawing.Size(167, 138);
+ this.groupBox6.Size = new System.Drawing.Size(167, 117);
this.groupBox6.TabIndex = 5;
this.groupBox6.TabStop = false;
this.groupBox6.Text = "Music Attributes";
@@ -672,7 +681,7 @@
this.MusicAttributesGrid.HelpVisible = false;
this.MusicAttributesGrid.Location = new System.Drawing.Point(3, 19);
this.MusicAttributesGrid.Name = "MusicAttributesGrid";
- this.MusicAttributesGrid.Size = new System.Drawing.Size(161, 116);
+ this.MusicAttributesGrid.Size = new System.Drawing.Size(161, 95);
this.MusicAttributesGrid.TabIndex = 3;
this.MusicAttributesGrid.ToolbarVisible = false;
//
@@ -680,7 +689,7 @@
//
this.groupBox7.Controls.Add(this.MusicOrderGrid);
this.groupBox7.Dock = System.Windows.Forms.DockStyle.Bottom;
- this.groupBox7.Location = new System.Drawing.Point(0, 138);
+ this.groupBox7.Location = new System.Drawing.Point(0, 117);
this.groupBox7.Name = "groupBox7";
this.groupBox7.Size = new System.Drawing.Size(167, 124);
this.groupBox7.TabIndex = 6;
@@ -703,7 +712,7 @@
this.groupBox5.Dock = System.Windows.Forms.DockStyle.Fill;
this.groupBox5.Location = new System.Drawing.Point(3, 3);
this.groupBox5.Name = "groupBox5";
- this.groupBox5.Size = new System.Drawing.Size(161, 262);
+ this.groupBox5.Size = new System.Drawing.Size(161, 241);
this.groupBox5.TabIndex = 4;
this.groupBox5.TabStop = false;
this.groupBox5.Text = "Music Info";
@@ -714,7 +723,7 @@
this.MusicInfoGrid.HelpVisible = false;
this.MusicInfoGrid.Location = new System.Drawing.Point(3, 19);
this.MusicInfoGrid.Name = "MusicInfoGrid";
- this.MusicInfoGrid.Size = new System.Drawing.Size(155, 240);
+ this.MusicInfoGrid.Size = new System.Drawing.Size(155, 219);
this.MusicInfoGrid.TabIndex = 3;
this.MusicInfoGrid.ToolbarVisible = false;
//
@@ -726,7 +735,7 @@
this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel2.Location = new System.Drawing.Point(343, 3);
this.panel2.Name = "panel2";
- this.panel2.Size = new System.Drawing.Size(163, 262);
+ this.panel2.Size = new System.Drawing.Size(163, 241);
this.panel2.TabIndex = 6;
//
// WordDetailGB
@@ -799,7 +808,7 @@
this.MusicOrderTab.Location = new System.Drawing.Point(4, 24);
this.MusicOrderTab.Name = "MusicOrderTab";
this.MusicOrderTab.Padding = new System.Windows.Forms.Padding(3);
- this.MusicOrderTab.Size = new System.Drawing.Size(521, 296);
+ this.MusicOrderTab.Size = new System.Drawing.Size(521, 275);
this.MusicOrderTab.TabIndex = 2;
this.MusicOrderTab.Text = "Music Order";
this.MusicOrderTab.UseVisualStyleBackColor = true;
@@ -816,11 +825,71 @@
this.MusicOrderViewer.PasteActive = false;
this.MusicOrderViewer.PasteMode = false;
this.MusicOrderViewer.RemoveActive = false;
- this.MusicOrderViewer.Size = new System.Drawing.Size(515, 290);
+ this.MusicOrderViewer.Size = new System.Drawing.Size(515, 269);
this.MusicOrderViewer.TabIndex = 0;
this.MusicOrderViewer.SongRemoved += new TaikoSoundEditor.Controls.MusicOrderViewer.OnSongRemoved(this.MusicOrderViewer_SongRemoved);
this.MusicOrderViewer.SongDoubleClick += new TaikoSoundEditor.Controls.MusicOrderViewer.OnSongDoubleClick(this.MusicOrderViewer_SongDoubleClick);
//
+ // menuStrip1
+ //
+ this.menuStrip1.BackColor = System.Drawing.Color.Transparent;
+ this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.preferencesToolStripMenuItem1,
+ this.checkForUpdatesToolStripMenuItem});
+ this.menuStrip1.Location = new System.Drawing.Point(3, 3);
+ this.menuStrip1.Name = "menuStrip1";
+ this.menuStrip1.Size = new System.Drawing.Size(670, 24);
+ this.menuStrip1.TabIndex = 1;
+ this.menuStrip1.Text = "menuStrip1";
+ //
+ // preferencesToolStripMenuItem1
+ //
+ this.preferencesToolStripMenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.musicOrderToolStripMenuItem});
+ this.preferencesToolStripMenuItem1.Name = "preferencesToolStripMenuItem1";
+ this.preferencesToolStripMenuItem1.Size = new System.Drawing.Size(80, 20);
+ this.preferencesToolStripMenuItem1.Text = "Preferences";
+ //
+ // musicOrderToolStripMenuItem
+ //
+ this.musicOrderToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.SortByGenreToolStripMenuItem,
+ this.SortByIdToolStripMenuItem,
+ this.NoSortToolStripMenuItem});
+ this.musicOrderToolStripMenuItem.Name = "musicOrderToolStripMenuItem";
+ this.musicOrderToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
+ this.musicOrderToolStripMenuItem.Text = "Music order";
+ //
+ // SortByGenreToolStripMenuItem
+ //
+ this.SortByGenreToolStripMenuItem.CheckOnClick = true;
+ this.SortByGenreToolStripMenuItem.Name = "SortByGenreToolStripMenuItem";
+ this.SortByGenreToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
+ this.SortByGenreToolStripMenuItem.Text = "Sort by genre";
+ this.SortByGenreToolStripMenuItem.Click += new System.EventHandler(this.MusicOrderSortToolStripMenuItem_Click);
+ //
+ // SortByIdToolStripMenuItem
+ //
+ this.SortByIdToolStripMenuItem.CheckOnClick = true;
+ this.SortByIdToolStripMenuItem.Name = "SortByIdToolStripMenuItem";
+ this.SortByIdToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
+ this.SortByIdToolStripMenuItem.Text = "Sort by Id";
+ this.SortByIdToolStripMenuItem.Click += new System.EventHandler(this.MusicOrderSortToolStripMenuItem_Click);
+ //
+ // NoSortToolStripMenuItem
+ //
+ this.NoSortToolStripMenuItem.CheckOnClick = true;
+ this.NoSortToolStripMenuItem.Name = "NoSortToolStripMenuItem";
+ this.NoSortToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
+ this.NoSortToolStripMenuItem.Text = "No sort";
+ this.NoSortToolStripMenuItem.Click += new System.EventHandler(this.MusicOrderSortToolStripMenuItem_Click);
+ //
+ // checkForUpdatesToolStripMenuItem
+ //
+ this.checkForUpdatesToolStripMenuItem.Name = "checkForUpdatesToolStripMenuItem";
+ this.checkForUpdatesToolStripMenuItem.Size = new System.Drawing.Size(115, 20);
+ this.checkForUpdatesToolStripMenuItem.Text = "Check for updates";
+ //
// RemoveSongButton
//
this.RemoveSongButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
@@ -914,9 +983,9 @@
// groupBox8
//
this.groupBox8.Controls.Add(this.NewSoundsBox);
- this.groupBox8.Location = new System.Drawing.Point(8, 212);
+ this.groupBox8.Location = new System.Drawing.Point(8, 239);
this.groupBox8.Name = "groupBox8";
- this.groupBox8.Size = new System.Drawing.Size(125, 213);
+ this.groupBox8.Size = new System.Drawing.Size(125, 207);
this.groupBox8.TabIndex = 3;
this.groupBox8.TabStop = false;
this.groupBox8.Text = "New Sounds List";
@@ -928,7 +997,7 @@
this.NewSoundsBox.ItemHeight = 15;
this.NewSoundsBox.Location = new System.Drawing.Point(3, 19);
this.NewSoundsBox.Name = "NewSoundsBox";
- this.NewSoundsBox.Size = new System.Drawing.Size(119, 191);
+ this.NewSoundsBox.Size = new System.Drawing.Size(119, 185);
this.NewSoundsBox.TabIndex = 1;
this.NewSoundsBox.SelectedIndexChanged += new System.EventHandler(this.NewSoundsBox_SelectedIndexChanged);
//
@@ -937,13 +1006,33 @@
this.groupBox3.Controls.Add(this.SearchBox);
this.groupBox3.Controls.Add(this.pictureBox1);
this.groupBox3.Controls.Add(this.LoadedMusicBox);
- this.groupBox3.Location = new System.Drawing.Point(8, 6);
+ this.groupBox3.Location = new System.Drawing.Point(8, 30);
this.groupBox3.Name = "groupBox3";
this.groupBox3.Size = new System.Drawing.Size(125, 203);
this.groupBox3.TabIndex = 2;
this.groupBox3.TabStop = false;
this.groupBox3.Text = "Sounds List";
//
+ // SearchBox
+ //
+ this.SearchBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.SearchBox.Location = new System.Drawing.Point(29, 20);
+ this.SearchBox.Name = "SearchBox";
+ this.SearchBox.Size = new System.Drawing.Size(90, 23);
+ this.SearchBox.TabIndex = 3;
+ this.SearchBox.TextChanged += new System.EventHandler(this.SearchBox_TextChanged);
+ //
+ // pictureBox1
+ //
+ this.pictureBox1.Image = global::TaikoSoundEditor.Properties.Resources.ic_search;
+ this.pictureBox1.Location = new System.Drawing.Point(3, 22);
+ this.pictureBox1.Name = "pictureBox1";
+ this.pictureBox1.Size = new System.Drawing.Size(20, 20);
+ this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
+ this.pictureBox1.TabIndex = 2;
+ this.pictureBox1.TabStop = false;
+ //
// LoadedMusicBox
//
this.LoadedMusicBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
@@ -1183,26 +1272,6 @@
this.label10.TabIndex = 8;
this.label10.Text = "Audio file";
//
- // pictureBox1
- //
- this.pictureBox1.Image = global::TaikoSoundEditor.Properties.Resources.ic_search;
- this.pictureBox1.Location = new System.Drawing.Point(3, 22);
- this.pictureBox1.Name = "pictureBox1";
- this.pictureBox1.Size = new System.Drawing.Size(20, 20);
- this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
- this.pictureBox1.TabIndex = 2;
- this.pictureBox1.TabStop = false;
- //
- // SearchBox
- //
- this.SearchBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.SearchBox.Location = new System.Drawing.Point(29, 20);
- this.SearchBox.Name = "SearchBox";
- this.SearchBox.Size = new System.Drawing.Size(90, 23);
- this.SearchBox.TabIndex = 3;
- this.SearchBox.TextChanged += new System.EventHandler(this.SearchBox_TextChanged);
- //
// MainForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
@@ -1210,6 +1279,7 @@
this.BackColor = System.Drawing.Color.White;
this.ClientSize = new System.Drawing.Size(684, 461);
this.Controls.Add(this.TabControl);
+ this.MainMenuStrip = this.menuStrip1;
this.MinimumSize = new System.Drawing.Size(700, 500);
this.Name = "MainForm";
this.Text = "Taiko Sound Editor";
@@ -1244,9 +1314,12 @@
this.WordSubGB.ResumeLayout(false);
this.WordsGB.ResumeLayout(false);
this.MusicOrderTab.ResumeLayout(false);
+ this.menuStrip1.ResumeLayout(false);
+ this.menuStrip1.PerformLayout();
this.groupBox8.ResumeLayout(false);
this.groupBox3.ResumeLayout(false);
this.groupBox3.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.tabPage3.ResumeLayout(false);
this.panel4.ResumeLayout(false);
this.groupBox10.ResumeLayout(false);
@@ -1254,7 +1327,6 @@
((System.ComponentModel.ISupportInitialize)(this.SilenceBox)).EndInit();
this.groupBox9.ResumeLayout(false);
this.groupBox9.PerformLayout();
- ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.ResumeLayout(false);
}
@@ -1354,5 +1426,12 @@
private Controls.MusicOrderViewer MusicOrderViewer;
private TextBox SearchBox;
private PictureBox pictureBox1;
+ private MenuStrip menuStrip1;
+ private ToolStripMenuItem preferencesToolStripMenuItem1;
+ private ToolStripMenuItem musicOrderToolStripMenuItem;
+ private ToolStripMenuItem SortByGenreToolStripMenuItem;
+ private ToolStripMenuItem SortByIdToolStripMenuItem;
+ private ToolStripMenuItem NoSortToolStripMenuItem;
+ private ToolStripMenuItem checkForUpdatesToolStripMenuItem;
}
}
\ No newline at end of file
diff --git a/MainForm.cs b/MainForm.cs
index 6c67018..6748d2d 100644
--- a/MainForm.cs
+++ b/MainForm.cs
@@ -18,7 +18,11 @@ namespace TaikoSoundEditor
NewSoundsBox.DataSource = AddedMusicBinding;
TabControl.SelectedIndexChanged += TabControl_SelectedIndexChanged;
- SimpleGenreBox.DataSource = Enum.GetValues(typeof(Genre));
+ SimpleGenreBox.DataSource = Enum.GetValues(typeof(Genre));
+
+
+ LoadPreferences();
+ //SortByGenreToolStripMenuItem.RadioCheck = true;
}
private void TabControl_SelectedIndexChanged(object sender, EventArgs e)
@@ -353,5 +357,45 @@ namespace TaikoSoundEditor
LoadedMusicBox.DataSource = list;
LoadedMusicBinding.ResetBindings(false);
}
+
+ private void MusicOrderSortToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ SortByGenreToolStripMenuItem.Checked = SortByIdToolStripMenuItem.Checked = NoSortToolStripMenuItem.Checked = false;
+
+ if (sender == SortByGenreToolStripMenuItem)
+ {
+ SortByGenreToolStripMenuItem.Checked = true;
+ Config.SetMusicOrderSortByGenre();
+ }
+ else if(sender == SortByIdToolStripMenuItem)
+ {
+ SortByIdToolStripMenuItem.Checked = true;
+ Config.SetMusicOrderSortById();
+ }
+ else //if (sender == NoSortToolStripMenuItem)
+ {
+ NoSortToolStripMenuItem.Checked = true;
+ Config.SetMusicOrderNoSort();
+ }
+ }
+
+ private void LoadPreferences()
+ {
+ var musicOrderSort = Config.IniFile.Read(Config.MusicOrderSortProperty);
+ if (musicOrderSort == Config.MusicOrderSortValueGenre)
+ {
+ SortByGenreToolStripMenuItem.PerformClick();
+ }
+ else if (musicOrderSort == Config.MusicOrderSortValueId)
+ {
+ SortByIdToolStripMenuItem.PerformClick();
+ }
+ else
+ {
+ NoSortToolStripMenuItem.PerformClick();
+ }
+ }
+
+
}
}
\ No newline at end of file
diff --git a/MainForm.resx b/MainForm.resx
index f298a7b..938108a 100644
--- a/MainForm.resx
+++ b/MainForm.resx
@@ -57,4 +57,7 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 17, 17
+
\ No newline at end of file
diff --git a/Program.cs b/Program.cs
index 603b834..4e18201 100644
--- a/Program.cs
+++ b/Program.cs
@@ -11,9 +11,13 @@ namespace TaikoSoundEditor
///
[STAThread]
static void Main()
- {
+ {
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
CultureInfo.CurrentCulture = CultureInfo.InvariantCulture;
+
+
+
+
ApplicationConfiguration.Initialize();
Application.Run(new MainForm());
}
diff --git a/Utils/Config.cs b/Utils/Config.cs
new file mode 100644
index 0000000..8a70c65
--- /dev/null
+++ b/Utils/Config.cs
@@ -0,0 +1,35 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace TaikoSoundEditor.Utils
+{
+ public static class Config
+ {
+ private static IniFile CreateIniFile()
+ {
+ var ini = new IniFile();
+ if(!ini.KeyExists("MusicOrderSort"))
+ {
+ ini.Write(MusicOrderSortProperty, MusicOrderSortValueNone);
+ }
+ return ini;
+ }
+
+ public static readonly IniFile IniFile = CreateIniFile();
+
+ public static void SetMusicOrderSortById() => IniFile.Write(MusicOrderSortProperty, MusicOrderSortValueId);
+ public static void SetMusicOrderNoSort() => IniFile.Write(MusicOrderSortProperty, MusicOrderSortValueNone);
+ public static void SetMusicOrderSortByGenre() => IniFile.Write(MusicOrderSortProperty, MusicOrderSortValueGenre);
+
+ public static string MusicOrderSort => IniFile.Read(MusicOrderSortProperty);
+
+ public static string MusicOrderSortProperty = "MusicOrderSort";
+
+ public static string MusicOrderSortValueNone = "None";
+ public static string MusicOrderSortValueId = "Id";
+ public static string MusicOrderSortValueGenre = "Genre";
+ }
+}
diff --git a/Utils/IniFile.cs b/Utils/IniFile.cs
new file mode 100644
index 0000000..2355ac1
--- /dev/null
+++ b/Utils/IniFile.cs
@@ -0,0 +1,55 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Runtime.InteropServices;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace TaikoSoundEditor.Utils
+{
+ // https://stackoverflow.com/questions/217902/reading-writing-an-ini-file
+ public class IniFile // revision 11
+ {
+ string Path;
+ string EXE = Assembly.GetExecutingAssembly().GetName().Name;
+
+ [DllImport("kernel32", CharSet = CharSet.Unicode)]
+ static extern long WritePrivateProfileString(string Section, string Key, string Value, string FilePath);
+
+ [DllImport("kernel32", CharSet = CharSet.Unicode)]
+ static extern int GetPrivateProfileString(string Section, string Key, string Default, StringBuilder RetVal, int Size, string FilePath);
+
+ public IniFile(string IniPath = null)
+ {
+ Path = new FileInfo(IniPath ?? EXE + ".ini").FullName;
+ }
+
+ public string Read(string Key, string Section = null)
+ {
+ var RetVal = new StringBuilder(255);
+ GetPrivateProfileString(Section ?? EXE, Key, "", RetVal, 255, Path);
+ return RetVal.ToString();
+ }
+
+ public void Write(string Key, string Value, string Section = null)
+ {
+ WritePrivateProfileString(Section ?? EXE, Key, Value, Path);
+ }
+
+ public void DeleteKey(string Key, string Section = null)
+ {
+ Write(Key, null, Section ?? EXE);
+ }
+
+ public void DeleteSection(string Section = null)
+ {
+ Write(null, null, Section ?? EXE);
+ }
+
+ public bool KeyExists(string Key, string Section = null)
+ {
+ return Read(Key, Section).Length > 0;
+ }
+ }
+}