Skip to content

Commit

Permalink
Manually merge labyrinthofdreams fork
Browse files Browse the repository at this point in the history
  • Loading branch information
szymmirr committed Jan 5, 2021
1 parent 5afafbe commit 2826149
Show file tree
Hide file tree
Showing 5 changed files with 380 additions and 0 deletions.
144 changes: 144 additions & 0 deletions GHNamespace8/MainMenu.cs
Original file line number Diff line number Diff line change
Expand Up @@ -341,6 +341,8 @@ public class MainMenu : Form
};

private IContainer components;
private ToolStripMenuItem _exportSongListToolStripMenuItem;
private ToolStripMenuItem _exportSongListToolStripMenuItem1;
private TabControl _tabControl;
private TabPage _setlistTab;
private ToolStripContainer _setlistConfigContainer;
Expand Down Expand Up @@ -2050,6 +2052,8 @@ private void InitializeComponent()
_saveSghMenuItem = new ToolStripMenuItem();
_saveChartMenuItem = new ToolStripMenuItem();
_exportSetlistAsChartsToolStripMenuItem = new ToolStripMenuItem();
_exportSongListToolStripMenuItem = new ToolStripMenuItem();
_exportSongListToolStripMenuItem1 = new ToolStripMenuItem();
_toolStripSeparator6 = new ToolStripSeparator();
_exitMenuItem = new ToolStripMenuItem();
_addMenuItem = new ToolStripMenuItem();
Expand Down Expand Up @@ -2310,6 +2314,8 @@ private void InitializeComponent()
_saveSghMenuItem,
_saveChartMenuItem,
_exportSetlistAsChartsToolStripMenuItem,
_exportSongListToolStripMenuItem,
_exportSongListToolStripMenuItem1,
_toolStripSeparator6,
_exitMenuItem
});
Expand Down Expand Up @@ -2396,6 +2402,24 @@ private void InitializeComponent()
_exportSetlistAsChartsToolStripMenuItem.Size = new Size(264, 22);
_exportSetlistAsChartsToolStripMenuItem.Text = "Export Setlist as Charts";
_exportSetlistAsChartsToolStripMenuItem.Click += exportSetlistAsChartsToolStripMenuItem_Click_1;
//
// exportSongListToolStripMenuItem
//
_exportSongListToolStripMenuItem.Enabled = false;
_exportSongListToolStripMenuItem.Name = "exportSongListToolStripMenuItem";
_exportSongListToolStripMenuItem.Size = new Size(264, 22);
_exportSongListToolStripMenuItem.Text = "Export Setlist as CSV";
_exportSongListToolStripMenuItem.ToolTipText = "Export songs in the selected setlist as CSV";
_exportSongListToolStripMenuItem.Click += new EventHandler(exportSongListToolStripMenuItem_Click);
//
// exportSongListToolStripMenuItem1
//
_exportSongListToolStripMenuItem1.Enabled = false;
_exportSongListToolStripMenuItem1.Name = "exportSongListToolStripMenuItem1";
_exportSongListToolStripMenuItem1.Size = new Size(264, 22);
_exportSongListToolStripMenuItem1.Text = "Export Songlist as CSV";
_exportSongListToolStripMenuItem1.ToolTipText = "Export the whole songlist as CSV";
_exportSongListToolStripMenuItem1.Click += new EventHandler(exportSongListToolStripMenuItem1_Click);
//
// toolStripSeparator6
//
Expand Down Expand Up @@ -3915,6 +3939,8 @@ private void method_12(bool bool1)
argAc0.Enabled = bool1;
argB30.Enabled = bool1;
export.Enabled = bool1;
_exportSongListToolStripMenuItem.Enabled = bool1;
_exportSongListToolStripMenuItem1.Enabled = bool1;
}

public void InitializeLanguageList()
Expand Down Expand Up @@ -4516,5 +4542,123 @@ private void TierApply_Btn_Click(object sender, EventArgs e)
private void forceRB3MidConversionToolStripMenuItem_Click(object sender, EventArgs e)
{
}

private void exportSongListToolStripMenuItem_Click(object sender, EventArgs e)
{
if (_gh3Songlist.Gh3SetlistList.ContainsKey(_selectedSetlist))
{
SaveFileDialog saveFileDlg = new SaveFileDialog();
saveFileDlg.Filter = "CSV files (*.csv)|*.csv";
saveFileDlg.Title = "Please select where you would like to save the songlist";
saveFileDlg.FileName = String.Format("{0}.csv", _setlistDropBox.Text);
if (saveFileDlg.ShowDialog() != DialogResult.OK)
{
return;
}

// Open selected file for writing
using (Stream myStream = saveFileDlg.OpenFile())
{
if (myStream == null)
{
MessageBox.Show("Couldn't open file for writing");
return;
}

// Get songs for this setlist
List<Gh3Song> songs = new List<Gh3Song>();
foreach (Gh3Tier tier in _gh3Songlist.Gh3SetlistList[_selectedSetlist].Tiers)
{
foreach (Gh3Song song in tier.Songs)
{
songs.Add(song);
}
}

// Sort songs by artist and title
songs = songs.OrderBy(song => song.Artist).ThenBy(song => song.Title).ToList();

// Write to file
using (StreamWriter outFile = new StreamWriter(myStream))
{
// Write CSV header
outFile.WriteLine("\"artist\",\"song\"");
foreach (Gh3Song song in songs)
{
outFile.WriteLine(String.Format("\"{0}\",\"{1}\"", song.Artist.Replace("\"", "\"\""),
song.Title.Replace("\"", "\"\"")));
}
}
}

MessageBox.Show("Done.");
}
}

private void exportSongListToolStripMenuItem1_Click(object sender, EventArgs e)
{
SortSongListForm form = new SortSongListForm();
form.ShowDialog();

bool sortBySetlist = form.sortBy == SortSongListForm.SortBy.Setlist;

SaveFileDialog saveFileDlg = new SaveFileDialog();
saveFileDlg.Filter = "CSV files (*.csv)|*.csv";
saveFileDlg.Title = "Please select where you would like to save the songlist";
saveFileDlg.FileName = "songlist.csv";
if (saveFileDlg.ShowDialog() != DialogResult.OK)
{
return;
}

// Open selected file for writing
using (Stream myStream = saveFileDlg.OpenFile())
{
if (myStream == null)
{
MessageBox.Show("Couldn't open file for writing");
return;
}

// Retrieve songs and associated setlist name
List<KeyValuePair<string, Gh3Song>> songs = new List<KeyValuePair<string, Gh3Song>>();
// Setlist contains a pair of setlist name => setlist id
foreach (KeyValuePair<string, int> setlist in _gh3Songlist.Class2140)
{
foreach (Gh3Tier tier in _gh3Songlist.Gh3SetlistList[_selectedSetlist = _gh3Songlist.method_9(setlist.Key)].Tiers)
{
foreach (Gh3Song song in tier.Songs)
{
songs.Add(new KeyValuePair<string, Gh3Song>(setlist.Key, song));
}
}
}

// Sort by setlist or artist
if (sortBySetlist)
{
songs = songs.OrderBy(pair => pair.Key).ThenBy(pair => pair.Value.Artist).ThenBy(pair => pair.Value.Title).ToList();
}
else
{
songs = songs.OrderBy(pair => pair.Value.Artist).ThenBy(pair => pair.Value.Title).ThenBy(pair => pair.Key).ToList();
}

// Write results to file
using (StreamWriter outFile = new StreamWriter(myStream))
{
// Write CSV header
outFile.WriteLine("\"artist\",\"song\",\"setlist\"");
foreach (KeyValuePair<string, Gh3Song> song in songs)
{
outFile.WriteLine(String.Format("\"{1}\",\"{2}\",\"{0}\"", song.Key.Replace("\"", "\"\""),
song.Value.Artist.Replace("\"", "\"\""),
song.Value.Title.Replace("\"", "\"\"")));
}
}
}

MessageBox.Show("Done.");
}
}
}
73 changes: 73 additions & 0 deletions GHNamespace8/SortSongListForm.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

32 changes: 32 additions & 0 deletions GHNamespace8/SortSongListForm.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
using System;
using System.Windows.Forms;

namespace GHNamespace8
{
public partial class SortSongListForm : Form
{
public enum SortBy
{
Setlist,
Artist
};
public SortBy sortBy;

public SortSongListForm()
{
InitializeComponent();
}

private void button1_Click_1(object sender, EventArgs e)
{
sortBy = SortBy.Setlist;
this.Close();
}

private void button2_Click(object sender, EventArgs e)
{
sortBy = SortBy.Artist;
this.Close();
}
}
}
Loading

0 comments on commit 2826149

Please sign in to comment.