mirror of
https://github.com/claunia/cuetools.net.git
synced 2025-12-16 18:14:25 +00:00
* support for new metadata sources via CTDB
* CUETools: GUI tweaks for large screen resolutions on windows 7 * CUETools.Codecs.LAMEEncoder: fix VBR header update for filenames with unicode characters * CUERipper: more string messages for SCSI errors when ripping
This commit is contained in:
@@ -22,17 +22,15 @@ namespace JDP
|
||||
public CUESheet CUE;
|
||||
|
||||
private bool ctdb;
|
||||
private CTDBPriority priorityMusicbrainz, priorityFreedb, priorityFreedbFuzzy;
|
||||
private CTDBMetadataSearch metadataSearch;
|
||||
|
||||
public void LookupAlbumInfo(bool cache, bool cue, bool ctdb, CTDBPriority priorityMusicbrainz, CTDBPriority priorityFreedb, CTDBPriority priorityFreedbFuzzy)
|
||||
public void LookupAlbumInfo(bool cache, bool cue, bool ctdb, CTDBMetadataSearch metadataSearch)
|
||||
{
|
||||
this.ctdb = ctdb;
|
||||
this.priorityMusicbrainz = priorityMusicbrainz;
|
||||
this.priorityFreedb = priorityFreedb;
|
||||
this.priorityFreedbFuzzy = priorityFreedbFuzzy;
|
||||
var releases = CUE.LookupAlbumInfo(cache, cue, false, CTDBPriority.None, CTDBPriority.None, CTDBPriority.None);
|
||||
this.metadataSearch = metadataSearch;
|
||||
var releases = CUE.LookupAlbumInfo(cache, cue, false, CTDBMetadataSearch.None);
|
||||
this.Choices = releases;
|
||||
if (ctdb || priorityMusicbrainz != CTDBPriority.None || priorityFreedb != CTDBPriority.None || priorityFreedbFuzzy != CTDBPriority.None)
|
||||
if (ctdb || metadataSearch != CTDBMetadataSearch.None)
|
||||
backgroundWorker1.RunWorkerAsync(null);
|
||||
}
|
||||
|
||||
@@ -159,14 +157,19 @@ namespace JDP
|
||||
CUE.CopyMetadata(ri.metadata);
|
||||
}
|
||||
|
||||
private void AutoResizeTracks()
|
||||
private void AutoResizeList(ListView list, int mainCol)
|
||||
{
|
||||
listTracks.Columns[1].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent);
|
||||
listTracks.Columns[2].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent);
|
||||
listTracks.Columns[3].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent);
|
||||
int widthAvailable = listTracks.Width - listTracks.Columns[1].Width - listTracks.Columns[2].Width - listTracks.Columns[3].Width - listTracks.Padding.Horizontal - 24;
|
||||
if (listTracks.Columns[0].Width < widthAvailable)
|
||||
listTracks.Columns[0].Width = widthAvailable;
|
||||
list.SuspendLayout();
|
||||
int widthAvailable = list.Width - SystemInformation.BorderSize.Width - SystemInformation.VerticalScrollBarWidth;
|
||||
for (int i = 0; i < list.Columns.Count; i++)
|
||||
if (i != mainCol)
|
||||
{
|
||||
list.Columns[i].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent);
|
||||
widthAvailable -= list.Columns[i].Width + SystemInformation.BorderSize.Width;
|
||||
}
|
||||
if (list.Columns[mainCol].Width != widthAvailable)
|
||||
list.Columns[mainCol].Width = widthAvailable;
|
||||
list.ResumeLayout(false);
|
||||
}
|
||||
|
||||
private void listChoices_SelectedIndexChanged(object sender, EventArgs e)
|
||||
@@ -190,65 +193,147 @@ namespace JDP
|
||||
else if (item != null && item is CUEMetadataEntry)
|
||||
{
|
||||
CUEMetadataEntry r = (item as CUEMetadataEntry);
|
||||
listTracks.Items.Clear();
|
||||
dataGridViewTracks.SuspendLayout();
|
||||
dataGridViewTracks.Rows.Clear();
|
||||
foreach (CUETrackMetadata track in r.metadata.Tracks)
|
||||
{
|
||||
listTracks.Items.Add(new ListViewItem(new string[] {
|
||||
int no = dataGridViewTracks.Rows.Count;
|
||||
dataGridViewTracks.Rows.Add(
|
||||
(no + 1).ToString(),
|
||||
track.Title,
|
||||
(listTracks.Items.Count + 1).ToString(),
|
||||
r.TOC[listTracks.Items.Count + r.TOC.FirstAudio].StartMSF,
|
||||
r.TOC[listTracks.Items.Count + r.TOC.FirstAudio].LengthMSF
|
||||
}));
|
||||
r.TOC[no + r.TOC.FirstAudio].StartMSF,
|
||||
r.TOC[no + r.TOC.FirstAudio].LengthMSF
|
||||
);
|
||||
}
|
||||
AutoResizeTracks();
|
||||
listMetadata.Items.Clear();
|
||||
listMetadata.Items.Add(new ListViewItem(new string[] { r.metadata.Artist, "Artist" }));
|
||||
listMetadata.Items.Add(new ListViewItem(new string[] { r.metadata.Title, "Album" }));
|
||||
listMetadata.Items.Add(new ListViewItem(new string[] { r.metadata.Year, "Date" }));
|
||||
listMetadata.Items.Add(new ListViewItem(new string[] { r.metadata.Genre, "Genre" }));
|
||||
listMetadata.Items.Add(new ListViewItem(new string[] { r.metadata.DiscNumber, "Disc Number" }));
|
||||
listMetadata.Items.Add(new ListViewItem(new string[] { r.metadata.TotalDiscs, "Total Discs" }));
|
||||
listMetadata.Items.Add(new ListViewItem(new string[] { r.metadata.DiscName, "Disc Name" }));
|
||||
listMetadata.Items.Add(new ListViewItem(new string[] { r.metadata.Barcode, "Barcode" }));
|
||||
listMetadata.Items.Add(new ListViewItem(new string[] { r.metadata.ReleaseDate, "Release Date" }));
|
||||
listMetadata.Items.Add(new ListViewItem(new string[] { r.metadata.Label, "Label" }));
|
||||
listMetadata.Items.Add(new ListViewItem(new string[] { r.metadata.Country, "Country" }));
|
||||
dataGridViewTracks.ResumeLayout();
|
||||
dataGridViewMetadata.Rows.Clear();
|
||||
dataGridViewMetadata.Rows.Add("Artist", r.metadata.Artist);
|
||||
dataGridViewMetadata.Rows.Add("Album", r.metadata.Title);
|
||||
dataGridViewMetadata.Rows.Add("Date", r.metadata.Year);
|
||||
dataGridViewMetadata.Rows.Add("Genre", r.metadata.Genre);
|
||||
dataGridViewMetadata.Rows.Add("Disc Number", r.metadata.DiscNumber);
|
||||
dataGridViewMetadata.Rows.Add("Total Discs", r.metadata.TotalDiscs);
|
||||
dataGridViewMetadata.Rows.Add("Disc Name", r.metadata.DiscName);
|
||||
dataGridViewMetadata.Rows.Add("Barcode", r.metadata.Barcode);
|
||||
dataGridViewMetadata.Rows.Add("Release Date", r.metadata.ReleaseDate);
|
||||
dataGridViewMetadata.Rows.Add("Label", r.metadata.Label);
|
||||
dataGridViewMetadata.Rows.Add("Country", r.metadata.Country);
|
||||
}
|
||||
else
|
||||
{
|
||||
listMetadata.Items.Clear();
|
||||
listTracks.Items.Clear();
|
||||
dataGridViewMetadata.Rows.Clear();
|
||||
dataGridViewTracks.Rows.Clear();
|
||||
textBox1.Text = "";
|
||||
}
|
||||
}
|
||||
|
||||
private void listTracks_DoubleClick(object sender, EventArgs e)
|
||||
private void pictureBox1_DoubleClick(object sender, EventArgs e)
|
||||
{
|
||||
listTracks.FocusedItem.BeginEdit();
|
||||
pictureBox1.SizeMode = pictureBox1.SizeMode == PictureBoxSizeMode.Zoom ?
|
||||
PictureBoxSizeMode.CenterImage : PictureBoxSizeMode.Zoom;
|
||||
}
|
||||
|
||||
private void listTracks_KeyDown(object sender, KeyEventArgs e)
|
||||
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
|
||||
{
|
||||
if (e.KeyCode == Keys.F2)
|
||||
listTracks.FocusedItem.BeginEdit();
|
||||
e.Result = CUE.LookupAlbumInfo(false, false, this.ctdb, this.metadataSearch);
|
||||
}
|
||||
|
||||
private void listTracks_BeforeLabelEdit(object sender, LabelEditEventArgs e)
|
||||
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
|
||||
{
|
||||
if (ChosenRelease == null)
|
||||
foreach (object i in (e.Result as List<object>))
|
||||
AddItem(i);
|
||||
}
|
||||
|
||||
private void frmChoice_Resize(object sender, EventArgs e)
|
||||
{
|
||||
AutoResizeList(listChoices, 0);
|
||||
}
|
||||
|
||||
private void dataGridViewMetadata_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
|
||||
{
|
||||
var te = e.Control as DataGridViewTextBoxEditingControl;
|
||||
if (te != null)
|
||||
{
|
||||
e.CancelEdit = true;
|
||||
return;
|
||||
// te.AutoCompleteMode = AutoCompleteMode.None;
|
||||
te.AutoCompleteMode = AutoCompleteMode.Suggest;
|
||||
te.AutoCompleteSource = AutoCompleteSource.CustomSource;
|
||||
te.AutoCompleteCustomSource.Clear();
|
||||
foreach (ListViewItem item in listChoices.Items)
|
||||
{
|
||||
var r = item.Tag as CUEMetadataEntry;
|
||||
switch (dataGridViewMetadata.CurrentCell.RowIndex)
|
||||
{
|
||||
case 0:
|
||||
foreach (CUETrackMetadata track in r.metadata.Tracks)
|
||||
te.AutoCompleteCustomSource.Add(track.Artist);
|
||||
te.AutoCompleteCustomSource.Add(r.metadata.Artist);
|
||||
break;
|
||||
case 1: te.AutoCompleteCustomSource.Add(r.metadata.Title); break;
|
||||
case 2: te.AutoCompleteCustomSource.Add(r.metadata.Year); break;
|
||||
case 3: te.AutoCompleteCustomSource.Add(r.metadata.Genre); break;
|
||||
case 4: te.AutoCompleteCustomSource.Add(r.metadata.DiscNumber); break;
|
||||
case 5: te.AutoCompleteCustomSource.Add(r.metadata.TotalDiscs); break;
|
||||
case 6: te.AutoCompleteCustomSource.Add(r.metadata.DiscName); break;
|
||||
case 7: te.AutoCompleteCustomSource.Add(r.metadata.Barcode); break;
|
||||
case 8: te.AutoCompleteCustomSource.Add(r.metadata.ReleaseDate); break;
|
||||
case 9: te.AutoCompleteCustomSource.Add(r.metadata.Label); break;
|
||||
case 10: te.AutoCompleteCustomSource.Add(r.metadata.Country); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void listTracks_AfterLabelEdit(object sender, LabelEditEventArgs e)
|
||||
private void dataGridViewMetadata_CellEndEdit(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
CUEMetadataEntry ri = ChosenRelease;
|
||||
if (ri != null && e.Label != null)
|
||||
ri.metadata.Tracks[e.Item].Title = e.Label;
|
||||
ListViewItem item = ChosenItem;
|
||||
CUEMetadataEntry r = ChosenRelease;
|
||||
var label = dataGridViewMetadata.Rows[e.RowIndex].Cells[1].Value as string;
|
||||
if (label != null && item != null && r != null)
|
||||
{
|
||||
switch (e.RowIndex)
|
||||
{
|
||||
case 0:
|
||||
foreach (CUETrackMetadata track in r.metadata.Tracks)
|
||||
if (track.Artist == r.metadata.Artist)
|
||||
track.Artist = label;
|
||||
r.metadata.Artist = label;
|
||||
break;
|
||||
case 1: r.metadata.Title = label; break;
|
||||
case 2: r.metadata.Year = label; break;
|
||||
case 3: r.metadata.Genre = label; break;
|
||||
case 4: r.metadata.DiscNumber = label; break;
|
||||
case 5: r.metadata.TotalDiscs = label; break;
|
||||
case 6: r.metadata.DiscName = label; break;
|
||||
case 7: r.metadata.Barcode = label; break;
|
||||
case 8: r.metadata.ReleaseDate = label; break;
|
||||
case 9: r.metadata.Label = label; break;
|
||||
case 10: r.metadata.Country = label; break;
|
||||
}
|
||||
item.Text = r.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
private void dataGridViewMetadata_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
CUEMetadataEntry r = ChosenRelease;
|
||||
if (e.KeyCode == Keys.Delete && r != null)
|
||||
{
|
||||
var ee = new DataGridViewCellEventArgs(1, dataGridViewMetadata.CurrentCellAddress.Y);
|
||||
dataGridViewMetadata.Rows[ee.RowIndex].Cells[1].Value = "";
|
||||
dataGridViewMetadata_CellEndEdit(sender, ee);
|
||||
}
|
||||
}
|
||||
|
||||
private void dataGridViewTracks_CellEndEdit(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
CUEMetadataEntry ri = ChosenRelease;
|
||||
var label = dataGridViewTracks.Rows[e.RowIndex].Cells[e.ColumnIndex].Value as string;
|
||||
if (ri != null && label != null)
|
||||
ri.metadata.Tracks[e.RowIndex].Title = label;
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
private void listTracks_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
|
||||
{
|
||||
if (e.KeyCode == Keys.Enter)
|
||||
@@ -262,91 +347,6 @@ namespace JDP
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void listMetadata_DoubleClick(object sender, EventArgs e)
|
||||
{
|
||||
listMetadata.FocusedItem.BeginEdit();
|
||||
}
|
||||
|
||||
private void listMetadata_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
CUEMetadataEntry r = ChosenRelease;
|
||||
if (e.KeyCode == Keys.F2)
|
||||
listMetadata.FocusedItem.BeginEdit();
|
||||
if (e.KeyCode == Keys.Delete && r != null)
|
||||
{
|
||||
foreach (int i in listMetadata.SelectedIndices)
|
||||
{
|
||||
switch (i)
|
||||
{
|
||||
case 0:
|
||||
foreach (CUETrackMetadata track in r.metadata.Tracks)
|
||||
if (track.Artist == r.metadata.Artist)
|
||||
track.Artist = "";
|
||||
r.metadata.Artist = "";
|
||||
break;
|
||||
case 1: r.metadata.Title = ""; break;
|
||||
case 2: r.metadata.Year = ""; break;
|
||||
case 3: r.metadata.Genre = ""; break;
|
||||
case 4: r.metadata.DiscNumber = ""; break;
|
||||
case 5: r.metadata.TotalDiscs = ""; break;
|
||||
case 6: r.metadata.DiscName = ""; break;
|
||||
case 7: r.metadata.Barcode = ""; break;
|
||||
case 8: r.metadata.ReleaseDate = ""; break;
|
||||
case 9: r.metadata.Label = ""; break;
|
||||
case 10: r.metadata.Country = ""; break;
|
||||
}
|
||||
listMetadata.Items[i].Text = "";
|
||||
}
|
||||
ListViewItem item = ChosenItem;
|
||||
item.Text = r.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
private void listMetadata_AfterLabelEdit(object sender, LabelEditEventArgs e)
|
||||
{
|
||||
ListViewItem item = ChosenItem;
|
||||
CUEMetadataEntry r = ChosenRelease;
|
||||
if (e.Label != null && item != null && r != null)
|
||||
{
|
||||
switch (e.Item)
|
||||
{
|
||||
case 0:
|
||||
foreach (CUETrackMetadata track in r.metadata.Tracks)
|
||||
if (track.Artist == r.metadata.Artist)
|
||||
track.Artist = e.Label;
|
||||
r.metadata.Artist = e.Label;
|
||||
break;
|
||||
case 1: r.metadata.Title = e.Label; break;
|
||||
case 2: r.metadata.Year = e.Label; break;
|
||||
case 3: r.metadata.Genre = e.Label; break;
|
||||
case 4: r.metadata.DiscNumber = e.Label; break;
|
||||
case 5: r.metadata.TotalDiscs = e.Label; break;
|
||||
case 6: r.metadata.DiscName = e.Label; break;
|
||||
case 7: r.metadata.Barcode = e.Label; break;
|
||||
case 8: r.metadata.ReleaseDate = e.Label; break;
|
||||
case 9: r.metadata.Label = e.Label; break;
|
||||
case 10: r.metadata.Country = e.Label; break;
|
||||
}
|
||||
item.Text = r.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
private void pictureBox1_DoubleClick(object sender, EventArgs e)
|
||||
{
|
||||
pictureBox1.SizeMode = pictureBox1.SizeMode == PictureBoxSizeMode.Zoom ?
|
||||
PictureBoxSizeMode.CenterImage : PictureBoxSizeMode.Zoom;
|
||||
}
|
||||
|
||||
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
|
||||
{
|
||||
e.Result = CUE.LookupAlbumInfo(false, false, this.ctdb, this.priorityMusicbrainz, this.priorityFreedb, this.priorityFreedbFuzzy);
|
||||
}
|
||||
|
||||
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
|
||||
{
|
||||
foreach (object i in (e.Result as List<object>))
|
||||
AddItem(i);
|
||||
}
|
||||
* */
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user