From 3a50c03cef4807b97d7cc42d36b4c1c7659c6458 Mon Sep 17 00:00:00 2001 From: chudov Date: Mon, 16 Apr 2012 07:19:57 +0000 Subject: [PATCH] * Better tagging with CTDB metadata * Removed old LAME encoder from plugins list * CUERipper: main window resizeable * taglib-sharp.dll removed, taglib-sharp source code imported --- CUERipper/frmCUERipper.Designer.cs | 119 +- CUERipper/frmCUERipper.cs | 72 +- CUERipper/frmCUERipper.resx | 365 ++- CUETools.CTDB/CTDBResponseMeta.cs | 2 +- CUETools.CTDB/CTDBResponseMetaTrack.cs | 2 +- CUETools.Codecs.ALAC/ALACWriter.cs | 2 +- .../CUETools.Codecs.HDCD.csproj | 2 +- CUETools.Codecs.LAME/LAMEEncoderCBR.cs | 2 +- CUETools.Codecs.LAME/LAMEEncoderVBR.cs | 2 +- CUETools.Codecs.LAME/LameWriterCBR.cs | 2 +- CUETools.Codecs.LAME/LameWriterVBR.cs | 2 +- CUETools.Processor/CUEConfig.cs | 8 +- CUETools.Processor/CUEConfigAdvanced.cs | 3 + CUETools.Processor/CUEMetadata.cs | 67 +- CUETools.Processor/CUESheet.cs | 104 +- CUETools.Processor/CUETools.Processor.csproj | 8 +- CUETools.Processor/CUETrackMetadata.cs | 5 +- CUETools.Processor/General.cs | 2 +- CUETools.Processor/Tagging.cs | 330 +-- CUETools/CUETools.sln | 20 +- CUETools/frmCUETools.Designer.cs | 12 +- CUETools/frmCUETools.cs | 4 + CUETools/frmCUETools.resx | 1991 +++++++---------- CUETools/frmChoice.cs | 32 +- ThirdParty/taglib-sharp.dll | Bin 299008 -> 0 bytes 25 files changed, 1537 insertions(+), 1621 deletions(-) delete mode 100644 ThirdParty/taglib-sharp.dll diff --git a/CUERipper/frmCUERipper.Designer.cs b/CUERipper/frmCUERipper.Designer.cs index 39931f9..664857f 100644 --- a/CUERipper/frmCUERipper.Designer.cs +++ b/CUERipper/frmCUERipper.Designer.cs @@ -56,6 +56,7 @@ namespace CUERipper this.numericWriteOffset = new System.Windows.Forms.NumericUpDown(); this.lblWriteOffset = new System.Windows.Forms.Label(); this.groupBoxSettings = new System.Windows.Forms.GroupBox(); + this.checkBoxTestAndCopy = new System.Windows.Forms.CheckBox(); this.bnComboBoxLosslessOrNot = new CUEControls.ImgComboBox(); this.losslessOrNotBindingSource = new System.Windows.Forms.BindingSource(this.components); this.bindingSourceCR = new System.Windows.Forms.BindingSource(this.components); @@ -102,7 +103,12 @@ namespace CUERipper this.pictureBox1 = new System.Windows.Forms.PictureBox(); this.backgroundWorkerArtwork = new System.ComponentModel.BackgroundWorker(); this.buttonSettings = new System.Windows.Forms.Button(); - this.checkBoxTestAndCopy = new System.Windows.Forms.CheckBox(); + this.panel2 = new System.Windows.Forms.Panel(); + this.panel7 = new System.Windows.Forms.Panel(); + this.panel3 = new System.Windows.Forms.Panel(); + this.panel4 = new System.Windows.Forms.Panel(); + this.panel5 = new System.Windows.Forms.Panel(); + this.panel6 = new System.Windows.Forms.Panel(); this.statusStrip1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericWriteOffset)).BeginInit(); this.groupBoxSettings.SuspendLayout(); @@ -117,6 +123,12 @@ namespace CUERipper ((System.ComponentModel.ISupportInitialize)(this.releasesBindingSource)).BeginInit(); this.panel1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.panel2.SuspendLayout(); + this.panel7.SuspendLayout(); + this.panel3.SuspendLayout(); + this.panel4.SuspendLayout(); + this.panel5.SuspendLayout(); + this.panel6.SuspendLayout(); this.SuspendLayout(); // // statusStrip1 @@ -187,13 +199,13 @@ namespace CUERipper // // listTracks // - resources.ApplyResources(this.listTracks, "listTracks"); this.listTracks.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.Title, this.TrackNo, this.columnHeaderArtist, this.Start, this.Length}); + resources.ApplyResources(this.listTracks, "listTracks"); this.listTracks.FullRowSelect = true; this.listTracks.GridLines = true; this.listTracks.LabelEdit = true; @@ -288,6 +300,13 @@ namespace CUERipper this.groupBoxSettings.Name = "groupBoxSettings"; this.groupBoxSettings.TabStop = false; // + // checkBoxTestAndCopy + // + resources.ApplyResources(this.checkBoxTestAndCopy, "checkBoxTestAndCopy"); + this.checkBoxTestAndCopy.Name = "checkBoxTestAndCopy"; + this.checkBoxTestAndCopy.UseVisualStyleBackColor = true; + this.checkBoxTestAndCopy.Click += new System.EventHandler(this.checkBoxTestAndCopy_Click); + // // bnComboBoxLosslessOrNot // this.bnComboBoxLosslessOrNot.BackColor = System.Drawing.Color.Transparent; @@ -384,6 +403,7 @@ namespace CUERipper rectRadius4.TopLeft = 2; rectRadius4.TopRight = 6; this.bnComboBoxImage.Radius = rectRadius4; + this.bnComboBoxImage.SelectedValueChanged += new System.EventHandler(this.bnComboBoxImage_SelectedValueChanged); // // cUEStylesBindingSource // @@ -570,10 +590,10 @@ namespace CUERipper // // bnComboBoxOutputFormat // - resources.ApplyResources(this.bnComboBoxOutputFormat, "bnComboBoxOutputFormat"); this.bnComboBoxOutputFormat.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend; this.bnComboBoxOutputFormat.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems; this.bnComboBoxOutputFormat.BackColor = System.Drawing.Color.Transparent; + resources.ApplyResources(this.bnComboBoxOutputFormat, "bnComboBoxOutputFormat"); this.bnComboBoxOutputFormat.ImageList = null; this.bnComboBoxOutputFormat.MinimumSize = new System.Drawing.Size(40, 0); this.bnComboBoxOutputFormat.Name = "bnComboBoxOutputFormat"; @@ -590,10 +610,10 @@ namespace CUERipper // // listMetadata // - resources.ApplyResources(this.listMetadata, "listMetadata"); this.listMetadata.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.columnHeaderValue, this.columnHeaderName}); + resources.ApplyResources(this.listMetadata, "listMetadata"); this.listMetadata.FullRowSelect = true; this.listMetadata.GridLines = true; this.listMetadata.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; @@ -675,17 +695,18 @@ namespace CUERipper // // panel1 // - resources.ApplyResources(this.panel1, "panel1"); this.panel1.Controls.Add(this.buttonGo); this.panel1.Controls.Add(this.buttonPause); this.panel1.Controls.Add(this.buttonAbort); this.panel1.Controls.Add(this.progressBarCD); this.panel1.Controls.Add(this.progressBarErrors); + resources.ApplyResources(this.panel1, "panel1"); this.panel1.Name = "panel1"; // // pictureBox1 // resources.ApplyResources(this.pictureBox1, "pictureBox1"); + this.pictureBox1.MinimumSize = new System.Drawing.Size(100, 100); this.pictureBox1.Name = "pictureBox1"; this.pictureBox1.TabStop = false; this.pictureBox1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseClick); @@ -706,42 +727,71 @@ namespace CUERipper this.buttonSettings.UseVisualStyleBackColor = true; this.buttonSettings.Click += new System.EventHandler(this.buttonSettings_Click); // - // checkBoxTestAndCopy + // panel2 // - resources.ApplyResources(this.checkBoxTestAndCopy, "checkBoxTestAndCopy"); - this.checkBoxTestAndCopy.Name = "checkBoxTestAndCopy"; - this.checkBoxTestAndCopy.UseVisualStyleBackColor = true; - this.checkBoxTestAndCopy.Click += new System.EventHandler(this.checkBoxTestAndCopy_Click); + this.panel2.Controls.Add(this.panel7); + this.panel2.Controls.Add(this.panel1); + this.panel2.Controls.Add(this.groupBoxSettings); + resources.ApplyResources(this.panel2, "panel2"); + this.panel2.Name = "panel2"; + // + // panel7 + // + this.panel7.Controls.Add(this.pictureBox1); + resources.ApplyResources(this.panel7, "panel7"); + this.panel7.Name = "panel7"; + // + // panel3 + // + this.panel3.Controls.Add(this.bnComboBoxDrives); + this.panel3.Controls.Add(this.bnComboBoxRelease); + this.panel3.Controls.Add(this.buttonSettings); + this.panel3.Controls.Add(this.buttonVA); + this.panel3.Controls.Add(this.buttonFreedbSubmit); + this.panel3.Controls.Add(this.buttonTrackMetadata); + this.panel3.Controls.Add(this.buttonTracks); + this.panel3.Controls.Add(this.buttonReload); + this.panel3.Controls.Add(this.buttonEncoding); + this.panel3.Controls.Add(this.buttonMetadata); + resources.ApplyResources(this.panel3, "panel3"); + this.panel3.Name = "panel3"; + // + // panel4 + // + this.panel4.Controls.Add(this.listTracks); + this.panel4.Controls.Add(this.listMetadata); + resources.ApplyResources(this.panel4, "panel4"); + this.panel4.Name = "panel4"; + // + // panel5 + // + this.panel5.Controls.Add(this.bnComboBoxOutputFormat); + this.panel5.Controls.Add(this.txtOutputPath); + resources.ApplyResources(this.panel5, "panel5"); + this.panel5.Name = "panel5"; + // + // panel6 + // + this.panel6.Controls.Add(this.panel4); + this.panel6.Controls.Add(this.panel5); + this.panel6.Controls.Add(this.panel2); + this.panel6.Controls.Add(this.panel3); + resources.ApplyResources(this.panel6, "panel6"); + this.panel6.Name = "panel6"; // // frmCUERipper // resources.ApplyResources(this, "$this"); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.Controls.Add(this.buttonSettings); - this.Controls.Add(this.pictureBox1); - this.Controls.Add(this.panel1); - this.Controls.Add(this.buttonFreedbSubmit); - this.Controls.Add(this.buttonTracks); - this.Controls.Add(this.buttonEncoding); - this.Controls.Add(this.buttonMetadata); - this.Controls.Add(this.buttonReload); - this.Controls.Add(this.buttonTrackMetadata); - this.Controls.Add(this.buttonVA); - this.Controls.Add(this.bnComboBoxRelease); - this.Controls.Add(this.bnComboBoxDrives); - this.Controls.Add(this.bnComboBoxOutputFormat); - this.Controls.Add(this.groupBoxSettings); - this.Controls.Add(this.listTracks); + this.Controls.Add(this.panel6); this.Controls.Add(this.statusStrip1); - this.Controls.Add(this.txtOutputPath); - this.Controls.Add(this.listMetadata); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.KeyPreview = true; this.MaximizeBox = false; this.Name = "frmCUERipper"; this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.frmCUERipper_FormClosed); this.Load += new System.EventHandler(this.frmCUERipper_Load); + this.ClientSizeChanged += new System.EventHandler(this.frmCUERipper_ClientSizeChanged); this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.frmCUERipper_KeyDown); this.statusStrip1.ResumeLayout(false); this.statusStrip1.PerformLayout(); @@ -759,6 +809,13 @@ namespace CUERipper ((System.ComponentModel.ISupportInitialize)(this.releasesBindingSource)).EndInit(); this.panel1.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.panel2.ResumeLayout(false); + this.panel7.ResumeLayout(false); + this.panel3.ResumeLayout(false); + this.panel4.ResumeLayout(false); + this.panel5.ResumeLayout(false); + this.panel5.PerformLayout(); + this.panel6.ResumeLayout(false); this.ResumeLayout(false); this.PerformLayout(); @@ -832,6 +889,12 @@ namespace CUERipper private System.ComponentModel.BackgroundWorker backgroundWorkerArtwork; private System.Windows.Forms.Button buttonSettings; private System.Windows.Forms.CheckBox checkBoxTestAndCopy; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Panel panel3; + private System.Windows.Forms.Panel panel4; + private System.Windows.Forms.Panel panel5; + private System.Windows.Forms.Panel panel6; + private System.Windows.Forms.Panel panel7; } } diff --git a/CUERipper/frmCUERipper.cs b/CUERipper/frmCUERipper.cs index 1600c4e..194772e 100644 --- a/CUERipper/frmCUERipper.cs +++ b/CUERipper/frmCUERipper.cs @@ -166,6 +166,11 @@ namespace CUERipper trackBarSecureMode_Scroll(this, new EventArgs()); defaultDrive = sr.Load("DefaultDrive"); this.checkBoxTestAndCopy.Checked = this.testAndCopy = sr.LoadBoolean("TestAndCopy") ?? this.testAndCopy; + + Size SizeIncrement = new Size(sr.LoadInt32("WidthIncrement", 0, null) ?? 0, sr.LoadInt32("HeightIncrement", 0, null) ?? 0); + Size = MinimumSize + SizeIncrement; + Left -= SizeIncrement.Width / 2; + Top -= SizeIncrement.Height / 2; UpdateDrives(); } @@ -371,6 +376,7 @@ namespace CUERipper private void Rip(object o) { ICDRipper audioSource = o as ICDRipper; + audioSource.ReadProgress += new EventHandler(CDReadProgress); audioSource.DriveOffset = (int)numericWriteOffset.Value; @@ -439,6 +445,7 @@ namespace CUERipper this.BeginInvoke((MethodInvoker)delegate() { SetupControls(); + UpdateOutputPath(); }); } @@ -474,14 +481,16 @@ namespace CUERipper MessageBox.Show(this, "Output path generation failed", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } - cueSheet.GenerateFilenames(SelectedOutputAudioType, selectedFormat.ToString(), _pathOut); + if (cueSheet.Metadata.Comment == "") + cueSheet.Metadata.Comment = selectedDriveInfo.drive.RipperVersion; + cueSheet.GenerateFilenames(SelectedOutputAudioType, selectedFormat.ToString(), _pathOut); selectedDriveInfo.drive.CorrectionQuality = trackBarSecureMode.Value; _workThread = new Thread(Rip); _workThread.Priority = ThreadPriority.BelowNormal; _workThread.IsBackground = true; SetupControls(); - _workThread.Start(selectedDriveInfo.drive); + _workThread.Start(selectedDriveInfo.drive); } private void buttonAbort_Click(object sender, EventArgs e) @@ -494,10 +503,21 @@ namespace CUERipper _startStop.Pause(); } + private void ResizeList(ListView list, ColumnHeader title) + { + int colSum = 0; + foreach (ColumnHeader col in list.Columns) + { + colSum += col.Width + SystemInformation.BorderSize.Width; + } + + title.Width += list.Width - colSum - 2 * SystemInformation.BorderSize.Width - SystemInformation.VerticalScrollBarWidth; + } + private void UpdateRelease() { data.selectedRelease = bnComboBoxRelease.SelectedItem as CUEMetadataEntry; - comboBoxOutputFormat_TextUpdate(this, new EventArgs()); + UpdateOutputPath(); listTracks.BeginUpdate(); listMetadata.BeginUpdate(); listTracks.Items.Clear(); @@ -508,17 +528,7 @@ namespace CUERipper listMetadata.Visible = false; if (data.selectedRelease != null) { - bool various = data.selectedRelease.metadata.IsVarious(); - if (various) - { - Title.Width = 300; - columnHeaderArtist.Width = 120; - } - else - { - Title.Width = 300 + 120; - columnHeaderArtist.Width = 0; - } + columnHeaderArtist.Width = data.selectedRelease.metadata.IsVarious() ? 120 : 0; for (int i = 1; i <= selectedDriveInfo.drive.TOC.TrackCount; i++) { string title = "Data track"; @@ -544,7 +554,7 @@ namespace CUERipper if (data.selectedRelease != null) { PropertyDescriptorCollection props = TypeDescriptor.GetProperties(data.selectedRelease.metadata); - PropertyDescriptorCollection sortedprops = props.Sort(new string[] { "Artist", "Title", "Genre", "Year", "DiscNumber", "TotalDiscs" }); + PropertyDescriptorCollection sortedprops = props.Sort(new string[] { "Artist", "Title", "Genre", "Year", "DiscNumber", "TotalDiscs", "DiscName", "Label", "LabelNo", "Country", "ReleaseDate" }); foreach (PropertyDescriptor p in sortedprops) if (p.Name != "Tracks" && p.Name != "AlbumArt" && p.Name != "Id" && !p.Attributes.Contains(new System.Xml.Serialization.XmlIgnoreAttribute())) listMetadata.Items.Add(new ListViewItem(new string[] { p.GetValue(data.selectedRelease.metadata).ToString(), p.Name })); @@ -571,6 +581,8 @@ namespace CUERipper } } } + ResizeList(listTracks, Title); + ResizeList(listMetadata, columnHeaderValue); listTracks.EndUpdate(); listMetadata.EndUpdate(); @@ -658,7 +670,6 @@ namespace CUERipper cueSheet.UseAccurateRip(); General.SetCUELine(cueSheet.Attributes, "REM", "DISCID", AccurateRipVerify.CalculateCDDBId(audioSource.TOC), false); - General.SetCUELine(cueSheet.Attributes, "REM", "COMMENT", audioSource.RipperVersion, true); try { @@ -908,7 +919,10 @@ namespace CUERipper sw.Save("SecureMode", trackBarSecureMode.Value); sw.Save("OutputPathUseTemplates", bnComboBoxOutputFormat.Items.Count - OutputPathUseTemplates.Length); sw.Save("TestAndCopy", this.testAndCopy); - for (int iFormat = bnComboBoxOutputFormat.Items.Count - 1; iFormat >= OutputPathUseTemplates.Length; iFormat--) + var SizeIncrement = Size - MinimumSize; + sw.Save("WidthIncrement", SizeIncrement.Width); + sw.Save("HeightIncrement", SizeIncrement.Height); + for (int iFormat = bnComboBoxOutputFormat.Items.Count - 1; iFormat >= OutputPathUseTemplates.Length; iFormat--) sw.Save(string.Format("OutputPathUseTemplate{0}", iFormat - OutputPathUseTemplates.Length), bnComboBoxOutputFormat.Items[iFormat].ToString()); if (defaultDrive != null) @@ -1030,12 +1044,7 @@ namespace CUERipper } } - private void comboBoxOutputFormat_SelectedIndexChanged(object sender, EventArgs e) - { - comboBoxOutputFormat_TextUpdate(sender, e); - } - - private void comboBoxOutputFormat_TextUpdate(object sender, EventArgs e) + private void UpdateOutputPath() { if (selectedFormat == null) return; if (data.selectedRelease == null) @@ -1104,7 +1113,12 @@ namespace CUERipper data.Encoders.ResetBindings(); bnComboBoxEncoder.SelectedItem = select; - comboBoxOutputFormat_TextUpdate(sender, e); + UpdateOutputPath(); + } + + private void bnComboBoxImage_SelectedValueChanged(object sender, EventArgs e) + { + UpdateOutputPath(); } private void bnComboBoxLosslessOrNot_SelectedValueChanged(object sender, EventArgs e) @@ -1152,7 +1166,7 @@ namespace CUERipper private void bnComboBoxOutputFormat_TextChanged(object sender, EventArgs e) { - comboBoxOutputFormat_TextUpdate(sender, e); + UpdateOutputPath(); } private void txtOutputPath_Enter(object sender, EventArgs e) @@ -1288,7 +1302,7 @@ namespace CUERipper data.selectedRelease.metadata.FreedbToEncoding(); UpdateRelease(); data.Releases.ResetItem(bnComboBoxRelease.SelectedIndex); - comboBoxOutputFormat_TextUpdate(sender, e); + UpdateOutputPath(); SetupControls(); } @@ -1543,6 +1557,12 @@ namespace CUERipper { this.testAndCopy = checkBoxTestAndCopy.Checked; } + + private void frmCUERipper_ClientSizeChanged(object sender, EventArgs e) + { + ResizeList(listTracks, Title); + ResizeList(listMetadata, columnHeaderValue); + } } internal class BackgroundWorkerArtworkArgs diff --git a/CUERipper/frmCUERipper.resx b/CUERipper/frmCUERipper.resx index f94fad6..e87deca 100644 --- a/CUERipper/frmCUERipper.resx +++ b/CUERipper/frmCUERipper.resx @@ -122,7 +122,7 @@ - 473, 20 + 487, 20 MiddleLeft @@ -174,10 +174,10 @@ toolStripStatusAr - 0, 469 + 0, 424 - 650, 25 + 664, 25 @@ -196,11 +196,7 @@ $this - 15 - - - - Top, Left, Right + 1 1 @@ -238,11 +234,15 @@ 70 + + + Fill + - 7, 87 + 0, 0 - 630, 220 + 656, 158 7 @@ -260,10 +260,10 @@ System.Windows.Forms.ListView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - $this + panel4 - 14 + 0 Top, Left, Right @@ -362,7 +362,7 @@ 1 - 257, 20 + 271, 20 54, 20 @@ -392,7 +392,7 @@ NoControl - 189, 22 + 203, 22 62, 13 @@ -419,7 +419,7 @@ True - 192, 48 + 206, 48 83, 17 @@ -452,7 +452,7 @@ 6, 19 - 80, 21 + 82, 21 0 @@ -476,10 +476,10 @@ 1217, 56 - 92, 46 + 94, 46 - 80, 21 + 101, 21 3 @@ -503,7 +503,7 @@ NoControl - 195, 103 + 209, 103 109, 18 @@ -530,10 +530,10 @@ 1045, 56 - 92, 19 + 94, 19 - 80, 21 + 101, 21 2 @@ -599,7 +599,7 @@ 6, 46 - 80, 21 + 82, 21 1 @@ -629,7 +629,7 @@ NoControl - 143, 106 + 166, 106 0, 0, 0, 0 @@ -665,13 +665,13 @@ NoControl - 12, 106 + 6, 106 0, 0, 0, 0 - 167, 15 + 189, 15 31 @@ -704,7 +704,7 @@ 0, 0, 0, 0 - 166, 45 + 189, 45 4 @@ -725,7 +725,7 @@ NoControl - 184, 76 + 198, 76 127, 45 @@ -745,11 +745,14 @@ 10 + + Left + - 6, 332 + 0, 0 - 320, 134 + 339, 136 11 @@ -761,10 +764,10 @@ System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - $this + panel2 - 13 + 2 882, 56 @@ -777,7 +780,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABy - CQAAAk1TRnQBSQFMAgEBBAEAAYwBAAGMAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CQAAAk1TRnQBSQFMAgEBBAEAAYwBAQGMAQEBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAASADAAEBAQABCAYAAQgYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA @@ -851,7 +854,7 @@ progressBarErrors - ProgressODoom.ProgressBarEx, ProgressODoom, Version=1.0.4313.32741, Culture=neutral, PublicKeyToken=null + ProgressODoom.ProgressBarEx, ProgressODoom, Version=1.0.4486.36018, Culture=neutral, PublicKeyToken=null panel1 @@ -878,7 +881,7 @@ progressBarCD - ProgressODoom.ProgressBarEx, ProgressODoom, Version=1.0.4313.32741, Culture=neutral, PublicKeyToken=null + ProgressODoom.ProgressBarEx, ProgressODoom, Version=1.0.4486.36018, Culture=neutral, PublicKeyToken=null panel1 @@ -886,14 +889,14 @@ 3 - - Top, Left, Right + + Fill - 5, 312 + 0, 4 - 633, 20 + 656, 20 10 @@ -908,10 +911,10 @@ System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - $this + panel5 - 16 + 1 Top, Left, Right @@ -927,7 +930,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADy - EAAAAk1TRnQBSQFMAgEBCgEAAYwBAAGMAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + EAAAAk1TRnQBSQFMAgEBCgEAAYwBAQGMAQEBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAATADAAEBAQABCAYAAQwYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA @@ -1003,10 +1006,10 @@ - 6, 33 + 0, 28 - 632, 21 + 656, 21 1 @@ -1021,19 +1024,19 @@ CUEControls.ImgComboBox, CUEControls, Version=2.1.4.0, Culture=neutral, PublicKeyToken=null - $this + panel3 - 10 + 1 Top, Left, Right - 6, 6 + 0, 0 - 632, 21 + 656, 21 0 @@ -1048,19 +1051,19 @@ CUEControls.ImgComboBox, CUEControls, Version=2.1.4.0, Culture=neutral, PublicKeyToken=null - $this + panel3 - 11 + 0 - - Top, Left, Right + + Fill - 5, 312 + 0, 4 - 633, 21 + 656, 21 9 @@ -1075,13 +1078,10 @@ CUEControls.ImgComboBox, CUEControls, Version=2.1.4.0, Culture=neutral, PublicKeyToken=null - $this + panel5 - 12 - - - Top, Left, Right + 0 1 @@ -1101,11 +1101,14 @@ 140 + + Fill + - 7, 87 + 0, 0 - 630, 220 + 656, 158 8 @@ -1120,10 +1123,10 @@ System.Windows.Forms.ListView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - $this + panel4 - 17 + 1 Flat @@ -1135,7 +1138,7 @@ NoControl - 595, 64 + 594, 61 19, 17 @@ -1153,13 +1156,13 @@ System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - $this + panel3 - 8 + 5 - 7, 60 + 6, 57 80, 23 @@ -1180,16 +1183,16 @@ System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - $this + panel3 - 6 + 9 NoControl - 183, 60 + 182, 57 80, 23 @@ -1210,16 +1213,16 @@ System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - $this + panel3 - 9 + 3 NoControl - 95, 60 + 94, 57 80, 23 @@ -1240,7 +1243,7 @@ System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - $this + panel3 7 @@ -1249,7 +1252,7 @@ NoControl - 271, 60 + 270, 57 80, 23 @@ -1270,16 +1273,16 @@ System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - $this + panel3 - 5 + 8 NoControl - 7, 60 + 6, 57 80, 23 @@ -1303,16 +1306,16 @@ System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - $this + panel3 - 4 + 6 NoControl - 357, 60 + 356, 57 80, 23 @@ -1333,19 +1336,19 @@ System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - $this + panel3 - 3 + 4 - - Top, Right + + Right - 462, 339 + 480, 0 - 176, 125 + 176, 136 42 @@ -1357,16 +1360,19 @@ System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - $this + panel2 - 2 + 1 + + + Fill - 332, 339 + 5, 5 - 125, 125 + 131, 126 Zoom @@ -1381,10 +1387,10 @@ System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - $this + panel7 - 1 + 0 1148, 17 @@ -1393,7 +1399,7 @@ NoControl - 443, 60 + 442, 57 80, 23 @@ -1414,9 +1420,165 @@ System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - $this + panel3 + 2 + + + Fill + + + 339, 0 + + + 5, 5, 5, 5 + + + 141, 136 + + + 44 + + + panel7 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel2 + + + 0 + + + Bottom + + + 4, 284 + + + 656, 136 + + + 45 + + + panel2 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel6 + + + 2 + + + Top + + + 4, 4 + + + 0, 0, 0, 0 + + + 656, 90 + + + 46 + + + panel3 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel6 + + + 3 + + + Fill + + + 4, 94 + + + 656, 158 + + + 47 + + + panel4 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel6 + + + 0 + + + Bottom + + + 4, 252 + + + 0, 4, 0, 0 + + + 656, 32 + + + 48 + + + panel5 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel6 + + + 1 + + + Fill + + + 0, 0 + + + 4, 4, 4, 4 + + + 664, 424 + + + 49 + + + panel6 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + 0 @@ -1429,7 +1591,7 @@ 6, 13 - 650, 494 + 664, 449 @@ -1828,6 +1990,9 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAQAAwAMAAPAPAAA= + + 680, 487 + CenterScreen @@ -1952,31 +2117,31 @@ plainBackgroundPainter1 - ProgressODoom.PlainBackgroundPainter, ProgressODoom, Version=1.0.4313.32741, Culture=neutral, PublicKeyToken=null + ProgressODoom.PlainBackgroundPainter, ProgressODoom, Version=1.0.4486.36018, Culture=neutral, PublicKeyToken=null styledBorderPainter1 - ProgressODoom.StyledBorderPainter, ProgressODoom, Version=1.0.4313.32741, Culture=neutral, PublicKeyToken=null + ProgressODoom.StyledBorderPainter, ProgressODoom, Version=1.0.4486.36018, Culture=neutral, PublicKeyToken=null plainProgressPainter1 - ProgressODoom.PlainProgressPainter, ProgressODoom, Version=1.0.4313.32741, Culture=neutral, PublicKeyToken=null + ProgressODoom.PlainProgressPainter, ProgressODoom, Version=1.0.4486.36018, Culture=neutral, PublicKeyToken=null gradientGlossPainter1 - ProgressODoom.GradientGlossPainter, ProgressODoom, Version=1.0.4313.32741, Culture=neutral, PublicKeyToken=null + ProgressODoom.GradientGlossPainter, ProgressODoom, Version=1.0.4486.36018, Culture=neutral, PublicKeyToken=null plainProgressPainter2 - ProgressODoom.PlainProgressPainter, ProgressODoom, Version=1.0.4313.32741, Culture=neutral, PublicKeyToken=null + ProgressODoom.PlainProgressPainter, ProgressODoom, Version=1.0.4486.36018, Culture=neutral, PublicKeyToken=null toolTip1 diff --git a/CUETools.CTDB/CTDBResponseMeta.cs b/CUETools.CTDB/CTDBResponseMeta.cs index 888555b..0a6c2bc 100644 --- a/CUETools.CTDB/CTDBResponseMeta.cs +++ b/CUETools.CTDB/CTDBResponseMeta.cs @@ -60,7 +60,7 @@ namespace CUETools.CTDB public string year { get; set; } [XmlAttribute] public string genre { get; set; } - [XmlAttribute] + [XmlElement] public string extra { get; set; } [XmlAttribute] public string country { get; set; } diff --git a/CUETools.CTDB/CTDBResponseMetaTrack.cs b/CUETools.CTDB/CTDBResponseMetaTrack.cs index a9f55b9..2c6e553 100644 --- a/CUETools.CTDB/CTDBResponseMetaTrack.cs +++ b/CUETools.CTDB/CTDBResponseMetaTrack.cs @@ -21,7 +21,7 @@ namespace CUETools.CTDB public string name { get; set; } [XmlAttribute] public string artist { get; set; } - [XmlAttribute] + [XmlElement] public string extra { get; set; } } } diff --git a/CUETools.Codecs.ALAC/ALACWriter.cs b/CUETools.Codecs.ALAC/ALACWriter.cs index aaadc78..9fdc77b 100644 --- a/CUETools.Codecs.ALAC/ALACWriter.cs +++ b/CUETools.Codecs.ALAC/ALACWriter.cs @@ -1304,7 +1304,7 @@ namespace CUETools.Codecs.ALAC } } - string vendor_string = "CUETools.2.05"; + string vendor_string = "CUETools 2.1.4"; int select_blocksize(int samplerate, int time_ms) { diff --git a/CUETools.Codecs.HDCD/CUETools.Codecs.HDCD.csproj b/CUETools.Codecs.HDCD/CUETools.Codecs.HDCD.csproj index c43084b..3633790 100644 --- a/CUETools.Codecs.HDCD/CUETools.Codecs.HDCD.csproj +++ b/CUETools.Codecs.HDCD/CUETools.Codecs.HDCD.csproj @@ -46,7 +46,7 @@ pdbonly true - ..\bin\Release\plugins\ + ..\bin\Release\plugins %28Win32%29\ TRACE prompt 4 diff --git a/CUETools.Codecs.LAME/LAMEEncoderCBR.cs b/CUETools.Codecs.LAME/LAMEEncoderCBR.cs index 8ea8d1d..9dedaef 100644 --- a/CUETools.Codecs.LAME/LAMEEncoderCBR.cs +++ b/CUETools.Codecs.LAME/LAMEEncoderCBR.cs @@ -4,7 +4,7 @@ using CUETools.Codecs.LAME.Interop; namespace CUETools.Codecs.LAME { - [AudioEncoderClass("lame CBR", "mp3", false, "96 128 192 256 320", "256", 2, typeof(LAMEEncoderCBRSettings))] + //[AudioEncoderClass("lame CBR", "mp3", false, "96 128 192 256 320", "256", 2, typeof(LAMEEncoderCBRSettings))] public class LAMEEncoderCBR : LAMEEncoder { private static readonly uint[] bps_table = new uint[] { 96, 128, 192, 256, 320 }; diff --git a/CUETools.Codecs.LAME/LAMEEncoderVBR.cs b/CUETools.Codecs.LAME/LAMEEncoderVBR.cs index 30a4e07..0732ef2 100644 --- a/CUETools.Codecs.LAME/LAMEEncoderVBR.cs +++ b/CUETools.Codecs.LAME/LAMEEncoderVBR.cs @@ -4,7 +4,7 @@ using CUETools.Codecs.LAME.Interop; namespace CUETools.Codecs.LAME { - [AudioEncoderClass("lame VBR", "mp3", false, "V9 V8 V7 V6 V5 V4 V3 V2 V1 V0", "V2", 2, typeof(LAMEEncoderVBRSettings))] + //[AudioEncoderClass("lame VBR", "mp3", false, "V9 V8 V7 V6 V5 V4 V3 V2 V1 V0", "V2", 2, typeof(LAMEEncoderVBRSettings))] public class LAMEEncoderVBR : LAMEEncoder { private int quality = 0; diff --git a/CUETools.Codecs.LAME/LameWriterCBR.cs b/CUETools.Codecs.LAME/LameWriterCBR.cs index bf73b06..8dd3038 100644 --- a/CUETools.Codecs.LAME/LameWriterCBR.cs +++ b/CUETools.Codecs.LAME/LameWriterCBR.cs @@ -3,7 +3,7 @@ using System.IO; namespace CUETools.Codecs.LAME { - [AudioEncoderClass("libmp3lame CBR", "mp3", false, "96 128 192 256 320", "256", 2, typeof(LameWriterCBRSettings))] + [AudioEncoderClass("CBR (libmp3lame)", "mp3", false, "96 128 192 256 320", "256", 1, typeof(LameWriterCBRSettings))] public class LameWriterCBR : LameWriter { private static readonly int[] bps_table = new int[] { 96, 128, 192, 256, 320 }; diff --git a/CUETools.Codecs.LAME/LameWriterVBR.cs b/CUETools.Codecs.LAME/LameWriterVBR.cs index bf93915..c97977e 100644 --- a/CUETools.Codecs.LAME/LameWriterVBR.cs +++ b/CUETools.Codecs.LAME/LameWriterVBR.cs @@ -3,7 +3,7 @@ using System.IO; namespace CUETools.Codecs.LAME { - [AudioEncoderClass("libmp3lame VBR", "mp3", false, "V9 V8 V7 V6 V5 V4 V3 V2 V1 V0", "V2", 2, typeof(LameWriterVBRSettings))] + [AudioEncoderClass("VBR (libmp3lame)", "mp3", false, "V9 V8 V7 V6 V5 V4 V3 V2 V1 V0", "V2", 2, typeof(LameWriterVBRSettings))] public class LameWriterVBR : LameWriter { private int quality = 0; diff --git a/CUETools.Processor/CUEConfig.cs b/CUETools.Processor/CUEConfig.cs index 1ece8a8..d63b37a 100644 --- a/CUETools.Processor/CUEConfig.cs +++ b/CUETools.Processor/CUEConfig.cs @@ -162,8 +162,8 @@ namespace CUETools.Processor encoders.Add(new CUEToolsUDC("flake", "flac", true, "0 1 2 3 4 5 6 7 8 9 10 11 12", "8", "flake.exe", "-%M - -o %O -p %P")); encoders.Add(new CUEToolsUDC("takc", "tak", true, "0 1 2 2e 2m 3 3e 3m 4 4e 4m", "2", "takc.exe", "-e -p%M -overwrite - %O")); encoders.Add(new CUEToolsUDC("ffmpeg alac", "m4a", true, "", "", "ffmpeg.exe", "-i - -f ipod -acodec alac -y %O")); - encoders.Add(new CUEToolsUDC("lame vbr", "mp3", false, "V9 V8 V7 V6 V5 V4 V3 V2 V1 V0", "V2", "lame.exe", "--vbr-new -%M - %O")); - encoders.Add(new CUEToolsUDC("lame cbr", "mp3", false, "96 128 192 256 320", "256", "lame.exe", "-m s -q 0 -b %M --noreplaygain - %O")); + encoders.Add(new CUEToolsUDC("VBR (lame.exe)", "mp3", false, "V9 V8 V7 V6 V5 V4 V3 V2 V1 V0", "V2", "lame.exe", "--vbr-new -%M - %O")); + encoders.Add(new CUEToolsUDC("CBR (lame.exe)", "mp3", false, "96 128 192 256 320", "256", "lame.exe", "-m s -q 0 -b %M --noreplaygain - %O")); encoders.Add(new CUEToolsUDC("oggenc", "ogg", false, "-1 -0.5 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6 6.5 7 7.5 8", "3", "oggenc.exe", "-q %M - -o %O")); encoders.Add(new CUEToolsUDC("nero aac", "m4a", false, "0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9", "0.4", "neroAacEnc.exe", "-q %M -if - -of %O")); encoders.Add(new CUEToolsUDC("qaac tvbr", "m4a", false, "10 20 30 40 50 60 70 80 90 100 110 127", "80", "qaac.exe", "-s -V %M -q 2 - -o %O")); @@ -539,9 +539,9 @@ return processor.Go(); CUEToolsFormat format; CUEToolsUDC udcLossless, udcLossy; if (encoderLossless == "" || !encoders.TryGetValue(encoderLossless, out udcLossless)) - udcLossless = null; + udcLossless = encoders.GetDefault(extension, true); if (encoderLossy == "" || !encoders.TryGetValue(encoderLossy, out udcLossy)) - udcLossy = null; + udcLossy = encoders.GetDefault(extension, false); if (!formats.TryGetValue(extension, out format)) formats.Add(extension, new CUEToolsFormat(extension, tagger, allowLossless, allowLossy, allowLossyWav, allowEmbed, false, udcLossless, udcLossy, decoder)); else diff --git a/CUETools.Processor/CUEConfigAdvanced.cs b/CUETools.Processor/CUEConfigAdvanced.cs index fa236c5..77d337d 100644 --- a/CUETools.Processor/CUEConfigAdvanced.cs +++ b/CUETools.Processor/CUEConfigAdvanced.cs @@ -81,5 +81,8 @@ namespace CUETools.Processor [DefaultValue(CTDBCoversSearch.Small), Category("CTDB"), DisplayName("Album art search")] public CTDBCoversSearch coversSearch { get; set; } + + [DefaultValue(false), Category("CTDB"), DisplayName("Detailed log")] + public bool DetailedCTDBLog { get; set; } } } diff --git a/CUETools.Processor/CUEMetadata.cs b/CUETools.Processor/CUEMetadata.cs index 90708ca..35de74e 100644 --- a/CUETools.Processor/CUEMetadata.cs +++ b/CUETools.Processor/CUEMetadata.cs @@ -16,13 +16,15 @@ namespace CUETools.Processor TotalDiscs = ""; DiscNumber = ""; DiscName = ""; - Year = ""; + Comment = ""; + Year = ""; Genre = ""; Artist = ""; Title = ""; Barcode = ""; ReleaseDate = ""; Label = ""; + LabelNo = ""; Country = ""; AlbumArt = new List(); Tracks = new List(); @@ -62,7 +64,9 @@ namespace CUETools.Processor public string DiscNumber { get; set; } [DefaultValue("")] public string DiscName { get; set; } - [DefaultValue("")] + [DefaultValue("")] + public string Comment { get; set; } + [DefaultValue("")] public string Year { get; set; } [DefaultValue("")] public string Genre { get; set; } @@ -76,7 +80,9 @@ namespace CUETools.Processor public string ReleaseDate { get; set; } [DefaultValue("")] public string Label { get; set; } - [DefaultValue("")] + [DefaultValue("")] + public string LabelNo { get; set; } + [DefaultValue("")] public string Country { get; set; } public List Tracks { get; set; } @@ -103,15 +109,24 @@ namespace CUETools.Processor } } + [XmlIgnore] + public string LabelAndNumber + { + get + { + return Label + (Label != "" && LabelNo != "" ? " " : "") + LabelNo; + } + } + [XmlIgnore] public string ReleaseDateAndLabel { get { - return Label == "" && ReleaseDate == "" && Country == "" ? "" - : Country - + (Country != "" && Label != "" ? " - " : "") + Label - + (Label + Country != "" && ReleaseDate != "" ? " - " : "") + ReleaseDate; + return LabelAndNumber == "" && ReleaseDate == "" && Country == "" ? "" + : Country + + (Country != "" && LabelAndNumber != "" ? " - " : "") + LabelAndNumber + + (LabelAndNumber + Country != "" && ReleaseDate != "" ? " - " : "") + ReleaseDate; } } @@ -145,19 +160,22 @@ namespace CUETools.Processor if ((overwrite || TotalDiscs == "") && metadata.TotalDiscs != "") TotalDiscs = metadata.TotalDiscs; if ((overwrite || DiscNumber == "") && metadata.DiscNumber != "") DiscNumber = metadata.DiscNumber; if ((overwrite || DiscName == "") && metadata.DiscName != "") DiscName = metadata.DiscName; - if ((overwrite || Year == "") && metadata.Year != "") Year = metadata.Year; + if ((overwrite || Comment == "") && metadata.Comment != "") Comment = metadata.Comment; + if ((overwrite || Year == "") && metadata.Year != "") Year = metadata.Year; if ((overwrite || Genre == "") && metadata.Genre != "") Genre = metadata.Genre; if ((overwrite || Artist == "") && metadata.Artist != "") Artist = metadata.Artist; if ((overwrite || Title == "") && metadata.Title != "") Title = metadata.Title; if ((overwrite || Barcode == "") && metadata.Barcode != "") Barcode = metadata.Barcode; if ((overwrite || ReleaseDate == "") && metadata.ReleaseDate != "") ReleaseDate = metadata.ReleaseDate; if ((overwrite || Label == "") && metadata.Label != "") Label = metadata.Label; + if ((overwrite || LabelNo == "") && metadata.LabelNo != "") LabelNo = metadata.LabelNo; if ((overwrite || Country == "") && metadata.Country != "") Country = metadata.Country; if ((overwrite || AlbumArt.Count == 0) && metadata.AlbumArt.Count != 0) AlbumArt = metadata.AlbumArt; for (int i = 0; i < Tracks.Count; i++) { if ((overwrite || Tracks[i].Title == "") && metadata.Tracks[i].Title != "") Tracks[i].Title = metadata.Tracks[i].Title; if ((overwrite || Tracks[i].Artist == "") && metadata.Tracks[i].Artist != "") Tracks[i].Artist = metadata.Tracks[i].Artist; + if ((overwrite || Tracks[i].Comment == "") && metadata.Tracks[i].Artist != "") Tracks[i].Comment = metadata.Tracks[i].Comment; if ((overwrite || Tracks[i].ISRC == "") && metadata.Tracks[i].ISRC != "") Tracks[i].ISRC = metadata.Tracks[i].ISRC; } } @@ -175,6 +193,7 @@ namespace CUETools.Processor if (TotalDiscs != metadata.TotalDiscs || DiscNumber != metadata.DiscNumber || DiscName != metadata.DiscName || + Comment != metadata.Comment || Year != metadata.Year || Genre != metadata.Genre || Artist != metadata.Artist || @@ -182,6 +201,7 @@ namespace CUETools.Processor Barcode != metadata.Barcode || ReleaseDate != metadata.ReleaseDate || Label != metadata.Label || + LabelNo != metadata.LabelNo || Country != metadata.Country || Tracks.Count != metadata.Tracks.Count ) @@ -189,6 +209,7 @@ namespace CUETools.Processor for (int i = 0; i < Tracks.Count; i++) if (Tracks[i].Title != metadata.Tracks[i].Title || Tracks[i].Artist != metadata.Tracks[i].Artist || + Tracks[i].Comment != metadata.Tracks[i].Comment || Tracks[i].ISRC != metadata.Tracks[i].ISRC) return false; return true; @@ -208,6 +229,7 @@ namespace CUETools.Processor TotalDiscs = metadata.TotalDiscs; DiscNumber = metadata.DiscNumber; DiscName = metadata.DiscName; + Comment = metadata.Comment; Year = metadata.Year; Genre = metadata.Genre; Artist = metadata.Artist; @@ -216,11 +238,13 @@ namespace CUETools.Processor ReleaseDate = metadata.ReleaseDate; Country = metadata.Country; Label = metadata.Label; + LabelNo = metadata.LabelNo; AlbumArt = metadata.AlbumArt; for (int i = 0; i < Tracks.Count; i++) { Tracks[i].Title = metadata.Tracks[i].Title; Tracks[i].Artist = metadata.Tracks[i].Artist; + Tracks[i].Comment = metadata.Tracks[i].Comment; Tracks[i].ISRC = metadata.Tracks[i].ISRC; } } @@ -231,10 +255,12 @@ namespace CUETools.Processor Genre = cdEntry.Genre; Artist = cdEntry.Artist; Title = cdEntry.Title; + Comment = cdEntry.ExtendedData; for (int i = 0; i < Tracks.Count; i++) { Tracks[i].Title = cdEntry.Tracks[i + firstAudio].Title; Tracks[i].Artist = cdEntry.Artist; + Tracks[i].Comment = cdEntry.ExtendedData; } } @@ -247,14 +273,32 @@ namespace CUETools.Processor this.DiscNumber = cdEntry.discnumber ?? ""; this.TotalDiscs = cdEntry.disccount ?? ""; this.DiscName = cdEntry.discname ?? ""; + this.Comment = cdEntry.extra ?? ""; this.Barcode = cdEntry.barcode ?? ""; this.ReleaseDate = cdEntry.releasedate ?? ""; this.Country = cdEntry.country ?? ""; this.Genre = cdEntry.genre ?? ""; this.Label = ""; - if (cdEntry.label != null) + this.LabelNo = ""; + if (cdEntry.label != null && cdEntry.label.Length > 0) + { + var listLabel = new List(); + var listLabelNo = new List(); foreach (var l in cdEntry.label) - this.Label = (this.Label == "" ? "" : this.Label + ": ") + (l.name ?? "") + (l.name != null && l.catno != null ? " " : "") + (l.catno ?? ""); + { + listLabel.Add(l.name ?? ""); + listLabelNo.Add(l.catno?? ""); + } + + if (listLabel.Find(s => s != listLabel[0]) == null) + this.Label = listLabel[0]; + else + this.Label = string.Join(";", listLabel.ToArray()); + if (listLabelNo.Find(s => s != listLabelNo[0]) == null) + this.LabelNo = listLabelNo[0]; + else + this.LabelNo = string.Join(";", listLabelNo.ToArray()); + } this.AlbumArt.Clear(); if (cdEntry.coverart != null) this.AlbumArt.AddRange(cdEntry.coverart); @@ -266,6 +310,7 @@ namespace CUETools.Processor { this.Tracks[i].Title = cdEntry.track[i + firstAudio].name ?? ""; this.Tracks[i].Artist = cdEntry.track[i + firstAudio].artist ?? cdEntry.artist ?? ""; + this.Tracks[i].Comment = cdEntry.track[i + firstAudio].extra ?? ""; } } } @@ -293,10 +338,12 @@ namespace CUETools.Processor bool error = false; Artist = FreedbToEncoding(iso, def, ref different, ref error, Artist); Title = FreedbToEncoding(iso, def, ref different, ref error, Title); + Comment = FreedbToEncoding(iso, def, ref different, ref error, Comment); for (int i = 0; i < Tracks.Count; i++) { Tracks[i].Artist = FreedbToEncoding(iso, def, ref different, ref error, Tracks[i].Artist); Tracks[i].Title = FreedbToEncoding(iso, def, ref different, ref error, Tracks[i].Title); + Tracks[i].Comment = FreedbToEncoding(iso, def, ref different, ref error, Tracks[i].Comment); } return different && !error; } diff --git a/CUETools.Processor/CUESheet.cs b/CUETools.Processor/CUESheet.cs index 3bb107f..c21a6bd 100644 --- a/CUETools.Processor/CUESheet.cs +++ b/CUETools.Processor/CUESheet.cs @@ -1360,7 +1360,7 @@ namespace CUETools.Processor { if (line.Params.Count > 2 && !line.IsQuoted[1] && (line.Params[0].ToUpper() == "TITLE" || line.Params[0].ToUpper() == "ARTIST" || - (line.Params[0].ToUpper() == "REM" && line.Params[1].ToUpper() == "GENRE" && line.Params.Count > 3 && !line.IsQuoted[2]))) + (line.Params[0].ToUpper() == "REM" && (line.Params[1].ToUpper() == "GENRE" || line.Params[1].ToUpper() == "COMMENT") && line.Params.Count > 3 && !line.IsQuoted[2]))) { CUELine modline = new CUELine(); int nParams = line.Params[0].ToUpper() == "REM" ? 2 : 1; @@ -1452,8 +1452,14 @@ namespace CUETools.Processor taglibMetadata.Title = GetCommonTag(file => file.Tag.Album) ?? ""; taglibMetadata.Year = GetCommonTag(file => file.Tag.Year != 0 ? file.Tag.Year.ToString() : null) ?? ""; taglibMetadata.Genre = GetCommonTag(file => file.Tag.JoinedGenres) ?? ""; + taglibMetadata.Comment = GetCommonTag(file => file.Tag.Comment) ?? ""; taglibMetadata.TotalDiscs = GetCommonTag(file => file.Tag.DiscCount != 0 ? file.Tag.DiscCount.ToString() : null) ?? ""; taglibMetadata.DiscNumber = GetCommonTag(file => file.Tag.Disc != 0 ? file.Tag.Disc.ToString() : null) ?? ""; + taglibMetadata.ReleaseDate = GetCommonTag(file => file.Tag.ReleaseDate) ?? ""; + taglibMetadata.Country = GetCommonTag(file => file.Tag.MusicBrainzReleaseCountry) ?? ""; + taglibMetadata.Label = GetCommonTag(file => file.Tag.Publisher) ?? ""; + taglibMetadata.LabelNo = GetCommonTag(file => file.Tag.CatalogNo) ?? ""; + taglibMetadata.DiscName = GetCommonTag(file => file.Tag.DiscSubtitle) ?? ""; for (i = 0; i < TrackCount; i++) { TrackInfo track = _tracks[i]; @@ -1463,7 +1469,10 @@ namespace CUETools.Processor taglibMetadata.Tracks[i].Title = (_hasTrackFilenames && track._fileInfo != null ? track._fileInfo.Tag.Title : _hasEmbeddedCUESheet && _fileInfo != null ? Tagging.TagListToSingleValue(Tagging.GetMiscTag(_fileInfo, String.Format("cue_track{0:00}_TITLE", i + 1))) : null) ?? ""; - } + taglibMetadata.Tracks[i].Comment = (_hasTrackFilenames && track._fileInfo != null ? track._fileInfo.Tag.Title : + _hasEmbeddedCUESheet && _fileInfo != null ? Tagging.TagListToSingleValue(Tagging.GetMiscTag(_fileInfo, String.Format("cue_track{0:00}_COMMENT", i + 1))) : + null) ?? ""; + } cueMetadata = new CUEMetadata(TOC.TOCID, (int)TOC.AudioTracks); cueMetadata.Artist = General.GetCUELine(_attributes, "PERFORMER"); @@ -1473,6 +1482,12 @@ namespace CUETools.Processor cueMetadata.DiscNumber = General.GetCUELine(_attributes, "REM", "DISCNUMBER"); cueMetadata.TotalDiscs = General.GetCUELine(_attributes, "REM", "TOTALDISCS"); cueMetadata.Genre = General.GetCUELine(_attributes, "REM", "GENRE"); + cueMetadata.Comment = General.GetCUELine(_attributes, "REM", "COMMENT"); + cueMetadata.ReleaseDate = General.GetCUELine(_attributes, "REM", "RELEASEDATE"); + cueMetadata.Country = General.GetCUELine(_attributes, "REM", "COUNTRY"); + cueMetadata.Label = General.GetCUELine(_attributes, "REM", "LABEL"); + cueMetadata.LabelNo = General.GetCUELine(_attributes, "REM", "CATALOGNUMBER"); + cueMetadata.DiscName = General.GetCUELine(_attributes, "REM", "DISCSUBTITLE"); for (i = 0; i < Tracks.Count; i++) { cueMetadata.Tracks[i].Artist = General.GetCUELine(Tracks[i].Attributes, "PERFORMER"); @@ -1962,8 +1977,10 @@ namespace CUETools.Processor if (cueSheet != null) { vars.Add("year", General.EmptyStringToNull(_config.CleanseString(cueSheet.Metadata.Year))); - vars.Add("catalog", General.EmptyStringToNull(_config.CleanseString(cueSheet.Metadata.Barcode))); + vars.Add("barcode", General.EmptyStringToNull(_config.CleanseString(cueSheet.Metadata.Barcode))); vars.Add("label", General.EmptyStringToNull(_config.CleanseString(cueSheet.Metadata.Label))); + vars.Add("labelno", General.EmptyStringToNull(_config.CleanseString(cueSheet.Metadata.LabelNo))); + vars.Add("labelandnumber", General.EmptyStringToNull(_config.CleanseString(cueSheet.Metadata.LabelAndNumber))); vars.Add("country", General.EmptyStringToNull(_config.CleanseString(cueSheet.Metadata.Country))); vars.Add("releasedate", General.EmptyStringToNull(_config.CleanseString(cueSheet.Metadata.ReleaseDate))); vars.Add("discname", General.EmptyStringToNull(_config.CleanseString(cueSheet.Metadata.DiscName))); @@ -1985,14 +2002,14 @@ namespace CUETools.Processor vars.Add("unique", null); string outputPath = ""; - for (int maxLen = 260; maxLen >= 16; maxLen--) + for (int maxLen = 255; maxLen >= 8; maxLen--) { outputPath = General.ReplaceMultiple(format, vars, "unique", pathOut => File.Exists(Path.ChangeExtension(pathOut, ext)), maxLen); if (outputPath == "" || outputPath == null) return ""; try { outputPath = Path.ChangeExtension(outputPath, ext); } catch { return ""; } - if (outputPath.Length < 260) + if (outputPath.Length < 255) return outputPath; } return outputPath; @@ -2035,8 +2052,18 @@ namespace CUETools.Processor extension = ".20bit" + extension; } - ArLogFileName = General.ReplaceMultiple(_config.ArLogFilenameFormat, vars, "unique", CheckIfFileExists, -1) - ?? vars["%filename%"] + ".accurip"; + for (int maxLen = 255; maxLen >= 8; maxLen--) + { + ArLogFileName = General.ReplaceMultiple(_config.ArLogFilenameFormat, vars, "unique", CheckIfFileExists, maxLen); + if (ArLogFileName == "" || ArLogFileName == null) + { + ArLogFileName = "ar.log"; + break; + } + if (Path.Combine(OutputDir, ArLogFileName).Length < 255) + break; + } + AlArtFileName = General.ReplaceMultiple(_config.AlArtFilenameFormat, vars, "unique", CheckIfFileExists, -1) ?? "folder.jpg"; @@ -2071,7 +2098,7 @@ namespace CUETools.Processor vars["title"] = General.EmptyStringToNull(_config.CleanseString(title)); filename = ""; - for (int maxLen = 260; maxLen >= 16; maxLen--) + for (int maxLen = 255; maxLen >= 8; maxLen--) { filename = General.ReplaceMultiple(_config.trackFilenameFormat, vars, maxLen); if (filename == "" || filename == null) @@ -2287,6 +2314,7 @@ namespace CUETools.Processor General.SetCUELine(_attributes, "REM", "DISCNUMBER", Metadata.DiscNumber, false); General.SetCUELine(_attributes, "REM", "TOTALDISCS", Metadata.TotalDiscs, false); General.SetCUELine(_attributes, "REM", "GENRE", Metadata.Genre, true); + General.SetCUELine(_attributes, "REM", "COMMENT", Metadata.Comment, true); for (i = 0; i < Tracks.Count; i++) { General.SetCUELine(Tracks[i].Attributes, "PERFORMER", Metadata.Tracks[i].Artist, true); @@ -2358,7 +2386,7 @@ namespace CUETools.Processor return; if (_CUEToolsDB.SubStatus != null) sw.WriteLine("CUETools DB: {0}.", _CUEToolsDB.SubStatus); - _CUEToolsDB.GenerateLog(sw, true); + _CUEToolsDB.GenerateLog(sw, _config.advanced.DetailedCTDBLog); } public string GenerateAccurateRipStatus() @@ -2627,7 +2655,19 @@ namespace CUETools.Processor fileInfo.Tag.Disc = temp; if (fileInfo.Tag.Year == 0 && Metadata.Year != "" && uint.TryParse(Metadata.Year, out temp)) fileInfo.Tag.Year = temp; - } + if (fileInfo.Tag.Comment == null && Metadata.Comment != "") + fileInfo.Tag.Comment = Metadata.Comment; + if (fileInfo.Tag.ReleaseDate == null && Metadata.ReleaseDate != "") + fileInfo.Tag.ReleaseDate = Metadata.ReleaseDate; + if (fileInfo.Tag.MusicBrainzReleaseCountry == null && Metadata.Country != "") + fileInfo.Tag.MusicBrainzReleaseCountry = Metadata.Country; + if (fileInfo.Tag.Publisher == null && Metadata.Label != "") + fileInfo.Tag.Publisher = Metadata.Label; + if (fileInfo.Tag.CatalogNo == null && Metadata.LabelNo != "") + fileInfo.Tag.CatalogNo = Metadata.LabelNo; + if (fileInfo.Tag.DiscSubtitle == null && Metadata.DiscName != "") + fileInfo.Tag.DiscSubtitle = Metadata.DiscName; + } // fill up missing information from tags if (_config.copyBasicTags && sourceFileInfo != null) @@ -2647,7 +2687,19 @@ namespace CUETools.Processor fileInfo.Tag.Genres = sourceFileInfo.Tag.Genres; if (fileInfo.Tag.Year == 0) fileInfo.Tag.Year = sourceFileInfo.Tag.Year; - } + if (fileInfo.Tag.Comment == null) + fileInfo.Tag.Comment = sourceFileInfo.Tag.Comment; + if (fileInfo.Tag.ReleaseDate == null) + fileInfo.Tag.ReleaseDate = sourceFileInfo.Tag.ReleaseDate; + if (fileInfo.Tag.MusicBrainzReleaseCountry == null) + fileInfo.Tag.MusicBrainzReleaseCountry = sourceFileInfo.Tag.MusicBrainzReleaseCountry; + if (fileInfo.Tag.Publisher == null) + fileInfo.Tag.Publisher = sourceFileInfo.Tag.Publisher; + if (fileInfo.Tag.CatalogNo == null) + fileInfo.Tag.CatalogNo = sourceFileInfo.Tag.CatalogNo; + if (fileInfo.Tag.DiscSubtitle == null) + fileInfo.Tag.DiscSubtitle = sourceFileInfo.Tag.DiscSubtitle; + } if ((_config.embedAlbumArt || _config.CopyAlbumArt) && _albumArt.Count > 0) fileInfo.Tag.Pictures = _albumArt.ToArray(); @@ -2694,7 +2746,19 @@ namespace CUETools.Processor fileInfo.Tag.Disc = temp; if (fileInfo.Tag.Year == 0 && Metadata.Year != "" && uint.TryParse(Metadata.Year, out temp)) fileInfo.Tag.Year = temp; - } + if (fileInfo.Tag.Comment == null && Metadata.Comment != "") + fileInfo.Tag.Comment = Metadata.Comment; + if (fileInfo.Tag.ReleaseDate == null && Metadata.ReleaseDate != "") + fileInfo.Tag.ReleaseDate = Metadata.ReleaseDate; + if (fileInfo.Tag.MusicBrainzReleaseCountry == null && Metadata.Country != "") + fileInfo.Tag.MusicBrainzReleaseCountry = Metadata.Country; + if (fileInfo.Tag.Publisher == null && Metadata.Label != "") + fileInfo.Tag.Publisher = Metadata.Label; + if (fileInfo.Tag.CatalogNo == null && Metadata.LabelNo != "") + fileInfo.Tag.CatalogNo = Metadata.LabelNo; + if (fileInfo.Tag.DiscSubtitle == null && Metadata.DiscName != "") + fileInfo.Tag.DiscSubtitle = Metadata.DiscName; + } if (_config.copyBasicTags && sourceFileInfo != null) { @@ -2714,7 +2778,19 @@ namespace CUETools.Processor fileInfo.Tag.Year = sourceFileInfo.Tag.Year; if (fileInfo.Tag.Genres.Length == 0) fileInfo.Tag.Genres = sourceFileInfo.Tag.Genres; - } + if (fileInfo.Tag.Comment == null) + fileInfo.Tag.Comment = sourceFileInfo.Tag.Comment; + if (fileInfo.Tag.ReleaseDate == null) + fileInfo.Tag.ReleaseDate = sourceFileInfo.Tag.ReleaseDate; + if (fileInfo.Tag.MusicBrainzReleaseCountry == null) + fileInfo.Tag.MusicBrainzReleaseCountry = sourceFileInfo.Tag.MusicBrainzReleaseCountry; + if (fileInfo.Tag.Publisher == null) + fileInfo.Tag.Publisher = sourceFileInfo.Tag.Publisher; + if (fileInfo.Tag.CatalogNo == null) + fileInfo.Tag.CatalogNo = sourceFileInfo.Tag.CatalogNo; + if (fileInfo.Tag.DiscSubtitle == null) + fileInfo.Tag.DiscSubtitle = sourceFileInfo.Tag.DiscSubtitle; + } if ((_config.embedAlbumArt || _config.CopyAlbumArt) && _albumArt.Count > 0) fileInfo.Tag.Pictures = _albumArt.ToArray(); @@ -3003,6 +3079,7 @@ namespace CUETools.Processor destTags.Remove("ALBUM ARTIST"); destTags.Remove("DATE"); destTags.Remove("GENRE"); + destTags.Remove("COMMENT"); destTags.Remove("TRACKNUMBER"); destTags.Remove("TRACKTOTAL"); destTags.Remove("TOTALTRACKS"); @@ -3074,6 +3151,7 @@ namespace CUETools.Processor destTags.Remove("ALBUM ARTIST"); destTags.Remove("DATE"); destTags.Remove("GENRE"); + destTags.Remove("COMMENT"); destTags.Remove("TRACKNUMBER"); destTags.Remove("TRACKTOTAL"); destTags.Remove("TOTALTRACKS"); diff --git a/CUETools.Processor/CUETools.Processor.csproj b/CUETools.Processor/CUETools.Processor.csproj index 43c18ad..c88950f 100644 --- a/CUETools.Processor/CUETools.Processor.csproj +++ b/CUETools.Processor/CUETools.Processor.csproj @@ -66,10 +66,6 @@ - - False - ..\ThirdParty\taglib-sharp.dll - @@ -148,6 +144,10 @@ {8A0426FA-0BC2-4C49-A6E5-1F9A68156F19} CUETools.Codecs.LossyWAV + + {6B143A39-C7B2-4743-9917-92262C60E9A6} + taglib-sharp + diff --git a/CUETools.Processor/CUETrackMetadata.cs b/CUETools.Processor/CUETrackMetadata.cs index b6f88b5..a5ca3aa 100644 --- a/CUETools.Processor/CUETrackMetadata.cs +++ b/CUETools.Processor/CUETrackMetadata.cs @@ -8,13 +8,16 @@ namespace CUETools.Processor public string Artist { get; set; } [DefaultValue("")] public string Title { get; set; } - [DefaultValue("")] + [DefaultValue("")] + public string Comment { get; set; } + [DefaultValue("")] public string ISRC { get; set; } public CUETrackMetadata() { Artist = ""; Title = ""; + Comment = ""; ISRC = ""; } } diff --git a/CUETools.Processor/General.cs b/CUETools.Processor/General.cs index baa76f2..a010519 100644 --- a/CUETools.Processor/General.cs +++ b/CUETools.Processor/General.cs @@ -369,7 +369,7 @@ namespace CUETools.Processor public static string Shorten(string f, string s, int maxLen) { - return maxLen <= 0 || maxLen >= s.Length || f == "music" || f == "path" || f == "filename" || f == "filename_ext" || f == "directoryname" ? + return maxLen <= 0 || maxLen >= s.Length || f == "music" || f == "path" /*|| f == "filename"*/ || f == "filename_ext" || f == "directoryname" ? s : s.Substring(0, maxLen); } diff --git a/CUETools.Processor/Tagging.cs b/CUETools.Processor/Tagging.cs index 27adc19..567cbdb 100644 --- a/CUETools.Processor/Tagging.cs +++ b/CUETools.Processor/Tagging.cs @@ -5,187 +5,191 @@ using System.Text; namespace CUETools.Processor { - public class Tagging - { - public static bool UpdateTags(TagLib.File fileInfo, NameValueCollection tags, CUEConfig config) - { - if (fileInfo is TagLib.Riff.File) - return false; - TagLib.Ogg.XiphComment xiph = (TagLib.Ogg.XiphComment)fileInfo.GetTag(TagLib.TagTypes.Xiph); - if (xiph != null) - { - foreach (string tag in tags.AllKeys) - xiph.SetField(tag, tags.GetValues(tag)); - return true; - } - if (fileInfo is TagLib.Mpeg4.File) - { - // remove fb2k/nero nasty tags mess - //if (((TagLib.Mpeg4.File)fileInfo).UserData. - ((TagLib.Mpeg4.File)fileInfo).UserData.RemoveChild("tags"); - TagLib.Mpeg4.AppleTag mpeg4 = (TagLib.Mpeg4.AppleTag)fileInfo.GetTag(TagLib.TagTypes.Apple, true); - return true; - } - if (fileInfo is TagLib.UserDefined.File && (fileInfo as TagLib.UserDefined.File).Tagger != CUEToolsTagger.APEv2) - { - if ((fileInfo as TagLib.UserDefined.File).Tagger != CUEToolsTagger.ID3v2) - return false; - TagLib.Id3v2.Tag id3v2 = (TagLib.Id3v2.Tag)fileInfo.GetTag(TagLib.TagTypes.Id3v2, true); - return true; - } - TagLib.Ape.Tag ape = (TagLib.Ape.Tag)fileInfo.GetTag(TagLib.TagTypes.Ape, true); - foreach (string tag in tags.AllKeys) - ape.SetValue(XiphTagNameToApe(tag), tags.GetValues(tag)); - return true; - } + public class Tagging + { + public static bool UpdateTags(TagLib.File fileInfo, NameValueCollection tags, CUEConfig config) + { + if (fileInfo is TagLib.Riff.File) + return false; + TagLib.Ogg.XiphComment xiph = (TagLib.Ogg.XiphComment)fileInfo.GetTag(TagLib.TagTypes.Xiph); + if (xiph != null) + { + foreach (string tag in tags.AllKeys) + xiph.SetField(tag, tags.GetValues(tag)); + return true; + } + if (fileInfo is TagLib.Mpeg4.File) + { + var mpeg4 = (TagLib.Mpeg4.AppleTag)fileInfo.GetTag(TagLib.TagTypes.Apple, true); + foreach (string tag in tags.AllKeys) + { + mpeg4.SetDashBox("com.apple.iTunes", tag, string.Join(";", tags.GetValues(tag))); + } + return true; + } + if (fileInfo is TagLib.Mpeg.AudioFile || (fileInfo is TagLib.UserDefined.File && (fileInfo as TagLib.UserDefined.File).Tagger == CUEToolsTagger.ID3v2)) + { + var id3v2 = (TagLib.Id3v2.Tag)fileInfo.GetTag(TagLib.TagTypes.Id3v2, true); + foreach (string tag in tags.AllKeys) + { + var frame = TagLib.Id3v2.UserTextInformationFrame.Get(id3v2, tag, true); + frame.Text = tags.GetValues(tag); + } + return true; + } + TagLib.Ape.Tag ape = (TagLib.Ape.Tag)fileInfo.GetTag(TagLib.TagTypes.Ape, true); + foreach (string tag in tags.AllKeys) + ape.SetValue(XiphTagNameToApe(tag), tags.GetValues(tag)); + return true; + } - public static void UpdateTags(string path, NameValueCollection tags, CUEConfig config) - { - TagLib.UserDefined.AdditionalFileTypes.Config = config; - TagLib.File fileInfo = TagLib.File.Create(new TagLib.File.LocalFileAbstraction(path)); - if (UpdateTags(fileInfo, tags, config)) - fileInfo.Save(); - //IAudioSource audioSource = AudioReadWrite.GetAudioSource(path, null, config); - //audioSource.Tags = tags; - //audioSource.UpdateTags(false); - //audioSource.Close(); - //audioSource = null; - } + public static void UpdateTags(string path, NameValueCollection tags, CUEConfig config) + { + TagLib.UserDefined.AdditionalFileTypes.Config = config; + TagLib.File fileInfo = TagLib.File.Create(new TagLib.File.LocalFileAbstraction(path)); + if (UpdateTags(fileInfo, tags, config)) + fileInfo.Save(); + //IAudioSource audioSource = AudioReadWrite.GetAudioSource(path, null, config); + //audioSource.Tags = tags; + //audioSource.UpdateTags(false); + //audioSource.Close(); + //audioSource = null; + } - public static string[] GetMiscTag(TagLib.File file, string name) - { - //TagLib.Mpeg4.AppleTag apple = (TagLib.Mpeg4.AppleTag)file.GetTag(TagLib.TagTypes.Apple); - //TagLib.Id3v2.Tag id3v2 = (TagLib.Id3v2.Tag)file.GetTag(TagLib.TagTypes.Id3v2); - TagLib.Ogg.XiphComment xiph = (TagLib.Ogg.XiphComment)file.GetTag(TagLib.TagTypes.Xiph); - TagLib.Ape.Tag ape = (TagLib.Ape.Tag)file.GetTag(TagLib.TagTypes.Ape); + public static string[] GetMiscTag(TagLib.File file, string name) + { + //TagLib.Mpeg4.AppleTag apple = (TagLib.Mpeg4.AppleTag)file.GetTag(TagLib.TagTypes.Apple); + //TagLib.Id3v2.Tag id3v2 = (TagLib.Id3v2.Tag)file.GetTag(TagLib.TagTypes.Id3v2); + TagLib.Ogg.XiphComment xiph = (TagLib.Ogg.XiphComment)file.GetTag(TagLib.TagTypes.Xiph); + TagLib.Ape.Tag ape = (TagLib.Ape.Tag)file.GetTag(TagLib.TagTypes.Ape); - //if (apple != null) - //{ - // string[] text = apple.GetText(name); - // if (text.Length != 0) - // return text; - //} + //if (apple != null) + //{ + // string[] text = apple.GetText(name); + // if (text.Length != 0) + // return text; + //} - //if (id3v2 != null) - // foreach (TagLib.Id3v2.Frame f in id3v2.GetFrames()) - // if (f is TagLib.Id3v2.TextInformationFrame && ((TagLib.Id3v2.TextInformationFrame)f).Text != null) - // return ((TagLib.Id3v2.TextInformationFrame)f).Text; + //if (id3v2 != null) + // foreach (TagLib.Id3v2.Frame f in id3v2.GetFrames()) + // if (f is TagLib.Id3v2.TextInformationFrame && ((TagLib.Id3v2.TextInformationFrame)f).Text != null) + // return ((TagLib.Id3v2.TextInformationFrame)f).Text; - if (xiph != null) - { - string[] l = xiph.GetField(name); - if (l != null && l.Length != 0) - return l; - } + if (xiph != null) + { + string[] l = xiph.GetField(name); + if (l != null && l.Length != 0) + return l; + } - if (ape != null) - { - TagLib.Ape.Item item = ape.GetItem(name); - if (item != null) - return item.ToStringArray(); - } + if (ape != null) + { + TagLib.Ape.Item item = ape.GetItem(name); + if (item != null) + return item.ToStringArray(); + } - return null; - } + return null; + } - public static string TagListToSingleValue(string[] list) - { - return list == null ? null : - list.Length == 0 ? null : - list.Length == 1 ? list[0] : - null; // TODO: merge them? - } + public static string TagListToSingleValue(string[] list) + { + return list == null ? null : + list.Length == 0 ? null : + list.Length == 1 ? list[0] : + null; // TODO: merge them? + } - public static string ApeTagNameToXiph(string tag) - { - if (tag.ToUpper() == "YEAR") - return "DATE"; - if (tag.ToUpper() == "TRACK") - return "TRACKNUMBER"; - if (tag.ToUpper() == "DISC") - return "DISCNUMBER"; - return tag; - } + public static string ApeTagNameToXiph(string tag) + { + if (tag.ToUpper() == "YEAR") + return "DATE"; + if (tag.ToUpper() == "TRACK") + return "TRACKNUMBER"; + if (tag.ToUpper() == "DISC") + return "DISCNUMBER"; + return tag; + } - public static string XiphTagNameToApe(string tag) - { - if (tag.ToUpper() == "DATE") - return "Year"; - if (tag.ToUpper() == "TRACKNUMBER") - return "Track"; - if (tag.ToUpper() == "DISCNUMBER") - return "Disc"; - return tag; - } + public static string XiphTagNameToApe(string tag) + { + if (tag.ToUpper() == "DATE") + return "Year"; + if (tag.ToUpper() == "TRACKNUMBER") + return "Track"; + if (tag.ToUpper() == "DISCNUMBER") + return "Disc"; + return tag; + } - public static NameValueCollection Analyze(string path) - { - return Analyze(new TagLib.File.LocalFileAbstraction(path)); - } + public static NameValueCollection Analyze(string path) + { + return Analyze(new TagLib.File.LocalFileAbstraction(path)); + } - public static NameValueCollection Analyze(TagLib.File.IFileAbstraction file) - { - return Analyze(TagLib.File.Create(file)); - } + public static NameValueCollection Analyze(TagLib.File.IFileAbstraction file) + { + return Analyze(TagLib.File.Create(file)); + } - public static NameValueCollection Analyze(TagLib.File fileInfo) - { - NameValueCollection tags = new NameValueCollection(); - - TagLib.Ogg.XiphComment xiph = (TagLib.Ogg.XiphComment)fileInfo.GetTag(TagLib.TagTypes.Xiph); - TagLib.Ape.Tag ape = (TagLib.Ape.Tag)fileInfo.GetTag(TagLib.TagTypes.Ape); + public static NameValueCollection Analyze(TagLib.File fileInfo) + { + NameValueCollection tags = new NameValueCollection(); - if (xiph != null) - { - foreach (string tag in xiph) - foreach (string value in xiph.GetField(tag)) - tags.Add(tag, value); - } - else if (ape != null) - { - foreach (string tag in ape) - foreach (string value in ape.GetItem(tag).ToStringArray()) - tags.Add(ApeTagNameToXiph(tag), value); - } - else - { - //if (audioSource is CUETools.Codecs.ALAC.ALACReader) - //tags = (audioSource as CUETools.Codecs.ALAC.ALACReader).Tags; - } + TagLib.Ogg.XiphComment xiph = (TagLib.Ogg.XiphComment)fileInfo.GetTag(TagLib.TagTypes.Xiph); + TagLib.Ape.Tag ape = (TagLib.Ape.Tag)fileInfo.GetTag(TagLib.TagTypes.Ape); - // TODO: enumerate dash atoms somehow? - //TagLib.Mpeg4.AppleTag apple = (TagLib.Mpeg4.AppleTag)fileInfo.GetTag(TagLib.TagTypes.Apple); - //if (apple != null) - //{ - // tags = new NameValueCollection(); - // foreach (TagLib.Mpeg4.Box tag in apple) - // if (tag.BoxType == "----") - // foreach (string value in apple.GetDashBox(tag.) - // tags.Add(tag, value); - //} - return tags; - } + if (xiph != null) + { + foreach (string tag in xiph) + foreach (string value in xiph.GetField(tag)) + tags.Add(tag, value); + } + else if (ape != null) + { + foreach (string tag in ape) + foreach (string value in ape.GetItem(tag).ToStringArray()) + tags.Add(ApeTagNameToXiph(tag), value); + } + else + { + //if (audioSource is CUETools.Codecs.ALAC.ALACReader) + //tags = (audioSource as CUETools.Codecs.ALAC.ALACReader).Tags; + } - //public void SetTextField(TagLib.File file, - // TagLib.ByteVector apple_name, TagLib.ByteVector id3v2_name, - // string xiph_name, string ape_name, string[] values) - //{ - // TagLib.Mpeg4.AppleTag apple = (TagLib.Mpeg4.AppleTag)file.GetTag(TagLib.TagTypes.Apple, true); - // TagLib.Id3v2.Tag id3v2 = (TagLib.Id3v2.Tag)file.GetTag(TagLib.TagTypes.Id3v2, true); - // TagLib.Ogg.XiphComment xiph = (TagLib.Ogg.XiphComment)file.GetTag(TagLib.TagTypes.Xiph, true); - // TagLib.Ape.Tag ape = (TagLib.Ape.Tag)file.GetTag(TagLib.TagTypes.Ape, (file is TagLib.Mpc.File)); + // TODO: enumerate dash atoms somehow? + //TagLib.Mpeg4.AppleTag apple = (TagLib.Mpeg4.AppleTag)fileInfo.GetTag(TagLib.TagTypes.Apple); + //if (apple != null) + //{ + // tags = new NameValueCollection(); + // foreach (TagLib.Mpeg4.Box tag in apple) + // if (tag.BoxType == "----") + // foreach (string value in apple.GetDashBox(tag.) + // tags.Add(tag, value); + //} + return tags; + } - // if (apple != null) - // apple.SetText(apple_name, values); + //public void SetTextField(TagLib.File file, + // TagLib.ByteVector apple_name, TagLib.ByteVector id3v2_name, + // string xiph_name, string ape_name, string[] values) + //{ + // TagLib.Mpeg4.AppleTag apple = (TagLib.Mpeg4.AppleTag)file.GetTag(TagLib.TagTypes.Apple, true); + // TagLib.Id3v2.Tag id3v2 = (TagLib.Id3v2.Tag)file.GetTag(TagLib.TagTypes.Id3v2, true); + // TagLib.Ogg.XiphComment xiph = (TagLib.Ogg.XiphComment)file.GetTag(TagLib.TagTypes.Xiph, true); + // TagLib.Ape.Tag ape = (TagLib.Ape.Tag)file.GetTag(TagLib.TagTypes.Ape, (file is TagLib.Mpc.File)); - // if (id3v2 != null) - // id3v2.SetTextFrame(id3v2_name, new TagLib.StringList(values)); + // if (apple != null) + // apple.SetText(apple_name, values); - // if (xiph != null) - // xiph.AddFields(xiph_name, values); + // if (id3v2 != null) + // id3v2.SetTextFrame(id3v2_name, new TagLib.StringList(values)); - // if (ape != null) - // ape.AddValues(ape_name, values, true); - //} - } + // if (xiph != null) + // xiph.AddFields(xiph_name, values); + + // if (ape != null) + // ape.AddValues(ape_name, values, true); + //} + } } diff --git a/CUETools/CUETools.sln b/CUETools/CUETools.sln index 91fb9f3..e2f849e 100644 --- a/CUETools/CUETools.sln +++ b/CUETools/CUETools.sln @@ -33,7 +33,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Third party binaries", "Thi ..\ThirdParty\Freedb.dll = ..\ThirdParty\Freedb.dll ..\ThirdParty\ICSharpCode.SharpZipLib.dll = ..\ThirdParty\ICSharpCode.SharpZipLib.dll ..\ThirdParty\MusicBrainz.dll = ..\ThirdParty\MusicBrainz.dll - ..\ThirdParty\taglib-sharp.dll = ..\ThirdParty\taglib-sharp.dll EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Win32", "Win32", "{9A0D1EB8-269E-4165-971C-541C96AA506F}" @@ -174,6 +173,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CUETools.CTDB.Converter", " EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CUETools.AVX", "..\CUETools.AVX\CUETools.AVX.vcxproj", "{CC022842-F2E9-4016-82B8-65A264B642D5}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Third Party Libraries", "Third Party Libraries", "{7E402406-7E51-4F0D-8209-60824C1CD6E8}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "taglib-sharp", "..\taglib-sharp\src\taglib-sharp.csproj", "{6B143A39-C7B2-4743-9917-92262C60E9A6}" +EndProject Global GlobalSection(TestCaseManagementSettings) = postSolution CategoryFile = CUETools1.vsmdi @@ -1083,6 +1086,20 @@ Global {CC022842-F2E9-4016-82B8-65A264B642D5}.Release|Win32.Build.0 = Release|Win32 {CC022842-F2E9-4016-82B8-65A264B642D5}.Release|x64.ActiveCfg = Release|x64 {CC022842-F2E9-4016-82B8-65A264B642D5}.Release|x86.ActiveCfg = Release|Win32 + {6B143A39-C7B2-4743-9917-92262C60E9A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6B143A39-C7B2-4743-9917-92262C60E9A6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6B143A39-C7B2-4743-9917-92262C60E9A6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {6B143A39-C7B2-4743-9917-92262C60E9A6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {6B143A39-C7B2-4743-9917-92262C60E9A6}.Debug|Win32.ActiveCfg = Debug|Any CPU + {6B143A39-C7B2-4743-9917-92262C60E9A6}.Debug|x64.ActiveCfg = Debug|Any CPU + {6B143A39-C7B2-4743-9917-92262C60E9A6}.Debug|x86.ActiveCfg = Debug|Any CPU + {6B143A39-C7B2-4743-9917-92262C60E9A6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6B143A39-C7B2-4743-9917-92262C60E9A6}.Release|Any CPU.Build.0 = Release|Any CPU + {6B143A39-C7B2-4743-9917-92262C60E9A6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {6B143A39-C7B2-4743-9917-92262C60E9A6}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {6B143A39-C7B2-4743-9917-92262C60E9A6}.Release|Win32.ActiveCfg = Release|Any CPU + {6B143A39-C7B2-4743-9917-92262C60E9A6}.Release|x64.ActiveCfg = Release|Any CPU + {6B143A39-C7B2-4743-9917-92262C60E9A6}.Release|x86.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -1136,5 +1153,6 @@ Global {0E404B8B-FF82-427F-ADE4-77B54A29219F} = {5D823ABE-D280-4800-824C-2633CBAB2EA9} {816D964C-9772-46C5-AF1D-49E8C78A1E7C} = {86BBE3FC-E4E5-4190-B675-C6745EAF4E64} {0AC7691C-562A-4879-8A11-6C7890BF659B} = {86BBE3FC-E4E5-4190-B675-C6745EAF4E64} + {6B143A39-C7B2-4743-9917-92262C60E9A6} = {7E402406-7E51-4F0D-8209-60824C1CD6E8} EndGlobalSection EndGlobal diff --git a/CUETools/frmCUETools.Designer.cs b/CUETools/frmCUETools.Designer.cs index 789c57e..7db1830 100644 --- a/CUETools/frmCUETools.Designer.cs +++ b/CUETools/frmCUETools.Designer.cs @@ -126,9 +126,9 @@ namespace JDP { this.editMetadataToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.addFolderToLocalDatabaseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.removeItemFromDatabaseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.backgroundWorkerAddToLocalDB = new System.ComponentModel.BackgroundWorker(); this.updateLocalDatabaseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.locateInExplorerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.backgroundWorkerAddToLocalDB = new System.ComponentModel.BackgroundWorker(); this.toolStripContainer1.BottomToolStripPanel.SuspendLayout(); this.toolStripContainer1.ContentPanel.SuspendLayout(); this.toolStripContainer1.TopToolStripPanel.SuspendLayout(); @@ -1045,11 +1045,6 @@ namespace JDP { resources.ApplyResources(this.removeItemFromDatabaseToolStripMenuItem, "removeItemFromDatabaseToolStripMenuItem"); this.removeItemFromDatabaseToolStripMenuItem.Click += new System.EventHandler(this.removeItemFromDatabaseToolStripMenuItem_Click); // - // backgroundWorkerAddToLocalDB - // - this.backgroundWorkerAddToLocalDB.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorkerAddToLocalDB_DoWork); - this.backgroundWorkerAddToLocalDB.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorkerAddToLocalDB_RunWorkerCompleted); - // // updateLocalDatabaseToolStripMenuItem // this.updateLocalDatabaseToolStripMenuItem.Name = "updateLocalDatabaseToolStripMenuItem"; @@ -1062,6 +1057,11 @@ namespace JDP { resources.ApplyResources(this.locateInExplorerToolStripMenuItem, "locateInExplorerToolStripMenuItem"); this.locateInExplorerToolStripMenuItem.Click += new System.EventHandler(this.locateInExplorerToolStripMenuItem_Click); // + // backgroundWorkerAddToLocalDB + // + this.backgroundWorkerAddToLocalDB.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorkerAddToLocalDB_DoWork); + this.backgroundWorkerAddToLocalDB.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorkerAddToLocalDB_RunWorkerCompleted); + // // frmCUETools // resources.ApplyResources(this, "$this"); diff --git a/CUETools/frmCUETools.cs b/CUETools/frmCUETools.cs index 589b531..ec9bc8f 100644 --- a/CUETools/frmCUETools.cs +++ b/CUETools/frmCUETools.cs @@ -2676,6 +2676,10 @@ namespace JDP { SetStatus(sender, new CUEToolsProgressEventArgs()); SetupControls(false); + foreach (TreeNode node in fileSystemTreeView1.Nodes) + if (node is FileSystemTreeNodeLocalDB) + foreach(TreeNode grp in node.Nodes) + grp.Collapse(); } private void removeItemFromDatabaseToolStripMenuItem_Click(object sender, EventArgs e) diff --git a/CUETools/frmCUETools.resx b/CUETools/frmCUETools.resx index 82fea9c..d71501e 100644 --- a/CUETools/frmCUETools.resx +++ b/CUETools/frmCUETools.resx @@ -252,6 +252,21 @@ 0 + + Top, Bottom, Left, Right + + + 19 + + + 3, 17 + + + 192, 304 + + + 1 + fileSystemTreeView1 @@ -297,993 +312,9 @@ 3 - - 3, 17 - - - tableLayoutPanelVerifyMode - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBoxMode - - - 0 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="checkBoxSkipRecent" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="checkBoxVerifyUseLocal" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="checkBoxVerifyUseCDRepair" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,33.33333,Percent,33.33333,Percent,33.33333,Absolute,20" /><Rows Styles="Percent,32.72727,Percent,67.27273" /></TableLayoutSettings> - - - tableLayoutPanelCUEStyle - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBoxMode - - - 1 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="checkBoxUseAccurateRip" Row="4" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="checkBoxUseFreeDb" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="rbTracks" Row="2" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="rbEmbedCUE" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="rbSingleFile" Row="1" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="checkBoxUseMusicBrainz" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,33.33332,Percent,33.33334,Percent,33.33334" /><Rows Styles="Percent,18.18229,Percent,18.18229,Percent,18.18229,Percent,22.72658,Percent,22.72658" /></TableLayoutSettings> - - - toolStripCorrectorFormat - - - System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBoxMode - - - 2 - - - Fill - - - 173, 101 - - - 150, 130 - - - 12 - - - Mode - - - groupBoxMode - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel2 - - - 0 - - - labelEncoderMaxMode - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpAudioOutput - - - 0 - - - labelEncoderMinMode - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpAudioOutput - - - 1 - - - labelEncoderMode - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpAudioOutput - - - 2 - - - trackBarEncoderMode - - - System.Windows.Forms.TrackBar, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpAudioOutput - - - 3 - - - comboBoxEncoder - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpAudioOutput - - - 4 - - - radioButtonAudioNone - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpAudioOutput - - - 5 - - - radioButtonAudioLossy - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpAudioOutput - - - 6 - - - radioButtonAudioHybrid - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpAudioOutput - - - 7 - - - radioButtonAudioLossless - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpAudioOutput - - - 8 - - - labelFormat - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpAudioOutput - - - 9 - - - comboBoxAudioFormat - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpAudioOutput - - - 10 - - - Fill - - - 329, 101 - - - 148, 194 - - - 2 - - - Audio Output - - - grpAudioOutput - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel2 - - - 1 - - - Fill - - - NoControl - - - 3, 237 - - - 164, 90 - - - Zoom - - - 15 - - - pictureBoxMotd - - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel2 - - - 2 - - - 2 - - - Fill - - - NoControl - - - 0, 48 - - - 0, 0, 0, 0 - - - 97, 24 - - - 13 - - - Template: - - - MiddleLeft - - - labelOutputTemplate - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanelPaths - - - 0 - - - Fill - - - 100, 51 - - - 365, 21 - - - 9 - - - 153, 8 - - - Template for output files (foobar2000 format) - - - comboBoxOutputFormat - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanelPaths - - - 1 - - - Fill - - - 100, 3 - - - 365, 21 - - - 0 - - - Input file - - - txtInputPath - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanelPaths - - - 2 - - - Fill - - - 100, 27 - - - 365, 21 - - - 0 - - - Output file - - - txtOutputPath - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanelPaths - - - 3 - - - 0, 0 - - - Fill - - - 0, 0 - - - 0, 0, 0, 0 - - - 97, 24 - - - 14 - - - toolStripInput - - - toolStripInput - - - System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanelPaths - - - 4 - - - 0, 24 - - - Fill - - - 0, 24 - - - 0, 0, 0, 0 - - - 97, 24 - - - 15 - - - toolStripOutput - - - toolStripOutput - - - System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanelPaths - - - 5 - - - Fill - - - 3, 17 - - - 0, 0, 0, 0 - - - 3 - - - 468, 72 - - - 14 - - - tableLayoutPanelPaths - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpOutputPathGeneration - - - 0 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="labelOutputTemplate" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="comboBoxOutputFormat" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="txtInputPath" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="txtOutputPath" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="toolStripInput" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="toolStripOutput" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,20.94017,Percent,79.05983" /><Rows Styles="Percent,33.33333,Percent,33.33333,Percent,33.33333" /></TableLayoutSettings> - - - Fill - - - 3, 3 - - - 474, 92 - - - 1 - - - CUE Paths - - - grpOutputPathGeneration - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel2 - - - 3 - - - comboBoxScript - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpAction - - - 0 - - - rbActionCorrectFilenames - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpAction - - - 1 - - - rbActionCreateCUESheet - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpAction - - - 2 - - - rbActionVerify - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpAction - - - 3 - - - rbActionEncode - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpAction - - - 4 - - - Fill - - - 3, 101 - - - 164, 130 - - - 4 - - - Action - - - grpAction - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel2 - - - 4 - - - tableLayoutPanel4 - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpExtra - - - 0 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="labelPregap" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="lblWriteOffset" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="numericWriteOffset" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="txtPreGapLength" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="labelDataTrack" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="txtDataTrackLength" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Percent,56.75676,Percent,43.24324" /><Rows Styles="Percent,33.33333,Percent,33.33333,Percent,33.33333" /></TableLayoutSettings> - - - Fill - - - 173, 237 - - - 150, 90 - - - 6 - - - Extra - - - grpExtra - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel2 - - - 5 - - - btnConvert - - - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panelGo - - - 0 - - - btnStop - - - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panelGo - - - 1 - - - btnResume - - - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panelGo - - - 2 - - - btnPause - - - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panelGo - - - 3 - - - Fill - - - 338, 301 - - - 12, 3, 12, 3 - - - 130, 26 - - - 14 - - - panelGo - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel2 - - - 6 - - - Fill - - - 204, 0 - - - 0, 0, 0, 0 - - - 4 - - - 480, 330 - - - 1 - - - tableLayoutPanel2 - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 2 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="groupBoxMode" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="grpAudioOutput" Row="1" RowSpan="2" Column="2" ColumnSpan="1" /><Control Name="pictureBoxMotd" Row="2" RowSpan="2" Column="0" ColumnSpan="1" /><Control Name="grpOutputPathGeneration" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="grpAction" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="grpExtra" Row="2" RowSpan="2" Column="1" ColumnSpan="1" /><Control Name="panelGo" Row="3" RowSpan="1" Column="2" ColumnSpan="1" /></Controls><Columns Styles="Percent,35.41667,Percent,32.70833,Percent,31.875" /><Rows Styles="Percent,29.69697,Percent,41.51515,Percent,19.39394,Percent,9.393939" /></TableLayoutSettings> - - - Fill - - - 0, 0 - - - 0, 0, 0, 0 - - - 2 - - - 684, 448 - - - 17 - - - tableLayoutPanel1 - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripContainer1.ContentPanel - - - 0 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="textBatchReport" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="grpInput" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutPanel2" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Percent,100,Absolute,480" /><Rows Styles="Absolute,330,Percent,100" /></TableLayoutSettings> - - - 0, 0, 0, 0 - - - 684, 448 - - - toolStripContainer1.ContentPanel - - - System.Windows.Forms.ToolStripContentPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripContainer1 - - - 0 - - - Fill - - - toolStripContainer1.LeftToolStripPanel - - - System.Windows.Forms.ToolStripPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripContainer1 - - - 1 - - - 0, 0 - - - toolStripContainer1.RightToolStripPanel - - - System.Windows.Forms.ToolStripPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripContainer1 - - - 2 - - - 684, 502 - - - 17 - - - toolStripContainer1 - - - 0, 0 - - - None - - - 0, 0 - - - 684, 25 - - - 0 - - - toolStripMenu - - - System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripContainer1.TopToolStripPanel - - - 0 - - - toolStripContainer1.TopToolStripPanel - - - System.Windows.Forms.ToolStripPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripContainer1 - - - 3 - - - toolStripContainer1 - - - System.Windows.Forms.ToolStripContainer, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 1 - - - Top, Bottom, Left, Right - - - 19 - - - 3, 17 - - - 192, 304 - - - 1 - - - fileSystemTreeView1 - - - CUEControls.FileSystemTreeView, CUEControls, Version=2.1.4.0, Culture=neutral, PublicKeyToken=null - - - grpInput - - - 0 - 3 - - checkBoxSkipRecent - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanelVerifyMode - - - 0 - - - checkBoxVerifyUseLocal - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanelVerifyMode - - - 1 - - - checkBoxVerifyUseCDRepair - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanelVerifyMode - - - 2 - - - Fill - - - 3, 17 - - - 2 - - - 144, 110 - - - 2 - - - tableLayoutPanelVerifyMode - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBoxMode - - - 0 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="checkBoxSkipRecent" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="checkBoxVerifyUseLocal" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="checkBoxVerifyUseCDRepair" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,33.33333,Percent,33.33333,Percent,33.33333,Absolute,20" /><Rows Styles="Percent,32.72727,Percent,67.27273" /></TableLayoutSettings> - - - 153, 8 - True @@ -1302,6 +333,9 @@ 2 + + 153, 8 + Skip recently verified @@ -1383,113 +417,38 @@ 2 - - 3 - - - checkBoxUseAccurateRip - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanelCUEStyle - - - 0 - - - checkBoxUseFreeDb - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanelCUEStyle - - - 1 - - - rbTracks - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanelCUEStyle - - - 2 - - - rbEmbedCUE - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanelCUEStyle - - - 3 - - - rbSingleFile - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanelCUEStyle - - - 4 - - - checkBoxUseMusicBrainz - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanelCUEStyle - - - 5 - - + Fill - + 3, 17 - - 0, 0, 0, 0 + + 2 - - 5 - - + 144, 110 - - 11 + + 2 - - tableLayoutPanelCUEStyle + + tableLayoutPanelVerifyMode - + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + groupBoxMode - - 1 + + 0 - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="checkBoxUseAccurateRip" Row="4" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="checkBoxUseFreeDb" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="rbTracks" Row="2" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="rbEmbedCUE" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="rbSingleFile" Row="1" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="checkBoxUseMusicBrainz" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,33.33332,Percent,33.33334,Percent,33.33334" /><Rows Styles="Percent,18.18229,Percent,18.18229,Percent,18.18229,Percent,22.72658,Percent,22.72658" /></TableLayoutSettings> + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="checkBoxSkipRecent" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="checkBoxVerifyUseLocal" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="checkBoxVerifyUseCDRepair" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,33.33333,Percent,33.33333,Percent,33.33333,Absolute,20" /><Rows Styles="Percent,32.72727,Percent,67.27273" /></TableLayoutSettings> + + + 3 True @@ -1716,6 +675,39 @@ 5 + + Fill + + + 3, 17 + + + 0, 0, 0, 0 + + + 5 + + + 144, 110 + + + 11 + + + tableLayoutPanelCUEStyle + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxMode + + + 1 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="checkBoxUseAccurateRip" Row="4" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="checkBoxUseFreeDb" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="rbTracks" Row="2" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="rbEmbedCUE" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="rbSingleFile" Row="1" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="checkBoxUseMusicBrainz" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,33.33332,Percent,33.33334,Percent,33.33334" /><Rows Styles="Percent,18.18229,Percent,18.18229,Percent,18.18229,Percent,22.72658,Percent,22.72658" /></TableLayoutSettings> + 3, 17 @@ -1725,6 +717,51 @@ Fill + + Magenta + + + 78, 20 + + + Overwrite + + + 168, 22 + + + Locate files + + + Try to locate missing files automatically + + + 168, 22 + + + Change extension + + + Replace extension for audio files with this: + + + Magenta + + + 79, 19 + + + Locate files + + + Magenta + + + 39, 19 + + + flac + 3, 17 @@ -1749,50 +786,32 @@ 2 - - Magenta + + Fill - - 78, 20 + + 173, 101 - - Overwrite + + 150, 130 - - Magenta + + 12 - - 79, 19 + + Mode - - Locate files + + groupBoxMode - - 168, 22 + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Locate files + + tableLayoutPanel2 - - Try to locate missing files automatically - - - 168, 22 - - - Change extension - - - Replace extension for audio files with this: - - - Magenta - - - 39, 19 - - - flac + + 0 False @@ -2154,21 +1173,195 @@ 10 + + Fill + + + 329, 101 + + + 148, 194 + + + 2 + + + Audio Output + + + grpAudioOutput + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 1 + + + Fill + + + NoControl + + + 3, 237 + + + 164, 90 + + + Zoom + + + 15 + + + pictureBoxMotd + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 2 + + + 2 + + + Fill + + + NoControl + + + 0, 48 + + + 0, 0, 0, 0 + + + 97, 24 + + + 13 + + + Template: + + + MiddleLeft + + + labelOutputTemplate + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelPaths + + + 0 + + + Fill + + + 100, 51 + + + 365, 21 + + + 9 + + + Template for output files (foobar2000 format) + + + comboBoxOutputFormat + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelPaths + + + 1 + + + Fill + + + 100, 3 + + + 365, 21 + + + 0 + + + Input file + + + txtInputPath + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelPaths + + + 2 + + + Fill + + + 100, 27 + + + 365, 21 + + + 0 + + + Output file + + + txtOutputPath + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelPaths + + + 3 + + + 0, 0 + + + Fill + 38, 21 Input: - - Magenta - - - 32, 21 - - - Open/close input browser - 177, 22 @@ -2193,21 +1386,54 @@ Hide browser + + Magenta + + + 32, 21 + + + Open/close input browser + + + 0, 0 + + + 0, 0, 0, 0 + + + 97, 24 + + + 14 + + + toolStripInput + + + toolStripInput + + + System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelPaths + + + 4 + + + 0, 24 + + + Fill + 48, 24 Output: - - Magenta - - - 32, 21 - - - toolStripSplitButtonOutputBrowser - 143, 22 @@ -2226,6 +1452,102 @@ Use template + + Magenta + + + 32, 21 + + + toolStripSplitButtonOutputBrowser + + + 0, 24 + + + 0, 0, 0, 0 + + + 97, 24 + + + 15 + + + toolStripOutput + + + toolStripOutput + + + System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelPaths + + + 5 + + + Fill + + + 3, 17 + + + 0, 0, 0, 0 + + + 3 + + + 468, 72 + + + 14 + + + tableLayoutPanelPaths + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + grpOutputPathGeneration + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="labelOutputTemplate" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="comboBoxOutputFormat" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="txtInputPath" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="txtOutputPath" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="toolStripInput" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="toolStripOutput" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,20.94017,Percent,79.05983" /><Rows Styles="Percent,33.33333,Percent,33.33333,Percent,33.33333" /></TableLayoutSettings> + + + Fill + + + 3, 3 + + + 474, 92 + + + 1 + + + CUE Paths + + + grpOutputPathGeneration + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 3 + Top, Left, Right @@ -2385,113 +1707,35 @@ 4 - - 2 - - - labelPregap - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel4 - - - 0 - - - lblWriteOffset - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel4 - - - 1 - - - numericWriteOffset - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel4 - - - 2 - - - txtPreGapLength - - - System.Windows.Forms.MaskedTextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel4 - - - 3 - - - labelDataTrack - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel4 - - - 4 - - - txtDataTrackLength - - - System.Windows.Forms.MaskedTextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel4 - - - 5 - - + Fill - - 3, 17 + + 3, 101 - - 0, 0, 0, 0 + + 164, 130 - - 3 + + 4 - - 144, 70 + + Action - - 6 + + grpAction - - tableLayoutPanel4 + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + tableLayoutPanel2 - - grpExtra + + 4 - - 0 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="labelPregap" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="lblWriteOffset" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="numericWriteOffset" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="txtPreGapLength" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="labelDataTrack" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="txtDataTrackLength" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Percent,56.75676,Percent,43.24324" /><Rows Styles="Percent,33.33333,Percent,33.33333,Percent,33.33333" /></TableLayoutSettings> + + 2 True @@ -2697,6 +1941,66 @@ 5 + + Fill + + + 3, 17 + + + 0, 0, 0, 0 + + + 3 + + + 144, 70 + + + 6 + + + tableLayoutPanel4 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + grpExtra + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="labelPregap" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="lblWriteOffset" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="numericWriteOffset" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="txtPreGapLength" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="labelDataTrack" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="txtDataTrackLength" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Percent,56.75676,Percent,43.24324" /><Rows Styles="Percent,33.33333,Percent,33.33333,Percent,33.33333" /></TableLayoutSettings> + + + Fill + + + 173, 237 + + + 150, 90 + + + 6 + + + Extra + + + grpExtra + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 5 + Fill @@ -2835,17 +2139,161 @@ 3 - - Magenta + + Fill - - 73, 22 + + 338, 301 - - default + + 12, 3, 12, 3 - - Profile + + 130, 26 + + + 14 + + + panelGo + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 6 + + + Fill + + + 204, 0 + + + 0, 0, 0, 0 + + + 4 + + + 480, 330 + + + 1 + + + tableLayoutPanel2 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 2 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="groupBoxMode" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="grpAudioOutput" Row="1" RowSpan="2" Column="2" ColumnSpan="1" /><Control Name="pictureBoxMotd" Row="2" RowSpan="2" Column="0" ColumnSpan="1" /><Control Name="grpOutputPathGeneration" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="grpAction" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="grpExtra" Row="2" RowSpan="2" Column="1" ColumnSpan="1" /><Control Name="panelGo" Row="3" RowSpan="1" Column="2" ColumnSpan="1" /></Controls><Columns Styles="Percent,35.41667,Percent,32.70833,Percent,31.875" /><Rows Styles="Percent,29.69697,Percent,41.51515,Percent,19.39394,Percent,9.393939" /></TableLayoutSettings> + + + Fill + + + 0, 0 + + + 0, 0, 0, 0 + + + 2 + + + 684, 448 + + + 17 + + + tableLayoutPanel1 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripContainer1.ContentPanel + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="textBatchReport" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="grpInput" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutPanel2" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Percent,100,Absolute,480" /><Rows Styles="Absolute,330,Percent,100" /></TableLayoutSettings> + + + 0, 0, 0, 0 + + + 684, 448 + + + toolStripContainer1.ContentPanel + + + System.Windows.Forms.ToolStripContentPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripContainer1 + + + 0 + + + Fill + + + toolStripContainer1.LeftToolStripPanel + + + System.Windows.Forms.ToolStripPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripContainer1 + + + 1 + + + 0, 0 + + + toolStripContainer1.RightToolStripPanel + + + System.Windows.Forms.ToolStripPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripContainer1 + + + 2 + + + 684, 502 + + + 17 + + + toolStripContainer1 + + + 0, 0 + + + None 100, 23 @@ -2871,6 +2319,18 @@ default + + Magenta + + + 73, 22 + + + default + + + Profile + 6, 25 @@ -2913,6 +2373,51 @@ Batch log + + 0, 0 + + + 684, 25 + + + 0 + + + toolStripMenu + + + System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripContainer1.TopToolStripPanel + + + 0 + + + toolStripContainer1.TopToolStripPanel + + + System.Windows.Forms.ToolStripPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripContainer1 + + + 3 + + + toolStripContainer1 + + + System.Windows.Forms.ToolStripContainer, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 1 + 424, 8 @@ -2971,7 +2476,7 @@ Locate in explorer - 225, 208 + 225, 186 contextMenuStripFileTree @@ -3634,12 +3139,6 @@ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - backgroundWorkerAddToLocalDB - - - System.ComponentModel.BackgroundWorker, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - updateLocalDatabaseToolStripMenuItem @@ -3652,6 +3151,12 @@ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + backgroundWorkerAddToLocalDB + + + System.ComponentModel.BackgroundWorker, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + frmCUETools diff --git a/CUETools/frmChoice.cs b/CUETools/frmChoice.cs index e1cd724..d2858a5 100644 --- a/CUETools/frmChoice.cs +++ b/CUETools/frmChoice.cs @@ -214,11 +214,13 @@ namespace JDP 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); - } + dataGridViewMetadata.Rows.Add("Label#", r.metadata.LabelNo); + dataGridViewMetadata.Rows.Add("Country", r.metadata.Country); + dataGridViewMetadata.Rows.Add("Release Date", r.metadata.ReleaseDate); + dataGridViewMetadata.Rows.Add("Barcode", r.metadata.Barcode); + dataGridViewMetadata.Rows.Add("Comment", r.metadata.Comment); + } else { dataGridViewMetadata.Rows.Clear(); @@ -274,10 +276,12 @@ namespace JDP 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; + case 7: te.AutoCompleteCustomSource.Add(r.metadata.Label); break; + case 8: te.AutoCompleteCustomSource.Add(r.metadata.LabelNo); break; + case 9: te.AutoCompleteCustomSource.Add(r.metadata.Country); break; + case 10: te.AutoCompleteCustomSource.Add(r.metadata.ReleaseDate); break; + case 11: te.AutoCompleteCustomSource.Add(r.metadata.Barcode); break; + case 12: te.AutoCompleteCustomSource.Add(r.metadata.Comment); break; } } } @@ -304,11 +308,13 @@ namespace JDP 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; - } + case 7: r.metadata.Label = label; break; + case 8: r.metadata.LabelNo = label; break; + case 9: r.metadata.Country = label; break; + case 10: r.metadata.ReleaseDate = label; break; + case 11: r.metadata.Barcode = label; break; + case 12: r.metadata.Comment = label; break; + } item.Text = r.ToString(); } } diff --git a/ThirdParty/taglib-sharp.dll b/ThirdParty/taglib-sharp.dll deleted file mode 100644 index 58b1dbabbd1c4516e51c1b2614e21653a17457e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 299008 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

LKB*>{@#=yW;yqkrAtqQ8u9ArO>APZCr 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

    9xwg_X+n26e8_ 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
    <0WZx>%6%K|VD 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 L2#kinK!gAQUMZ%B