diff --git a/CUEControls/FileSystemTreeView.cs b/CUEControls/FileSystemTreeView.cs index 6de3925..08eea7b 100644 --- a/CUEControls/FileSystemTreeView.cs +++ b/CUEControls/FileSystemTreeView.cs @@ -27,6 +27,7 @@ using System.Drawing; using System.Data; using System.Text; using System.Windows.Forms; +using System.Windows.Forms.Design; using System.IO; namespace CUEControls @@ -402,4 +403,19 @@ namespace CUEControls public TreeNode node; public FileSystemInfo[] files; } + + [ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.ToolStrip | ToolStripItemDesignerAvailability.StatusStrip)] + public partial class ToolStripCheckedBox : ToolStripControlHost + { + public ToolStripCheckedBox() + : base(new CheckBox()) + { + } + + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] + public CheckBox MyCheckBox + { + get { return (CheckBox)this.Control; } + } + } } \ No newline at end of file diff --git a/CUERipper/frmCUERipper.cs b/CUERipper/frmCUERipper.cs index a3eb8f2..e773ccb 100644 --- a/CUERipper/frmCUERipper.cs +++ b/CUERipper/frmCUERipper.cs @@ -736,16 +736,16 @@ namespace CUERipper if (SelectedOutputAudioFmt == null) return; - foreach (KeyValuePair encoder in _config.encoders) - if (encoder.Value.extension == SelectedOutputAudioFmt.extension) + foreach (CUEToolsUDC encoder in _config.encoders) + if (encoder.extension == SelectedOutputAudioFmt.extension) { - if (SelectedOutputAudioFormat.StartsWith("lossy.") && !encoder.Value.lossless) + if (SelectedOutputAudioFormat.StartsWith("lossy.") && !encoder.lossless) continue; - else if (SelectedOutputAudioType == AudioEncoderType.Lossless && !encoder.Value.lossless) + else if (SelectedOutputAudioType == AudioEncoderType.Lossless && !encoder.lossless) continue; - else if (SelectedOutputAudioType == AudioEncoderType.Lossy && encoder.Value.lossless) + else if (SelectedOutputAudioType == AudioEncoderType.Lossy && encoder.lossless) continue; - comboBoxEncoder.Items.Add(encoder.Key); + comboBoxEncoder.Items.Add(encoder); } comboBoxEncoder.SelectedItem = SelectedOutputAudioFormat.StartsWith("lossy.") ? SelectedOutputAudioFmt.encoderLossless : SelectedOutputAudioType == AudioEncoderType.Lossless ? SelectedOutputAudioFmt.encoderLossless @@ -757,12 +757,13 @@ namespace CUERipper { if (SelectedOutputAudioFormat == null) return; + CUEToolsUDC encoder = comboBoxEncoder.SelectedItem as CUEToolsUDC; if (SelectedOutputAudioFormat.StartsWith("lossy.")) - SelectedOutputAudioFmt.encoderLossless = (string)comboBoxEncoder.SelectedItem; + SelectedOutputAudioFmt.encoderLossless = encoder; else if (SelectedOutputAudioType == AudioEncoderType.Lossless) - SelectedOutputAudioFmt.encoderLossless = (string)comboBoxEncoder.SelectedItem; + SelectedOutputAudioFmt.encoderLossless = encoder; else - SelectedOutputAudioFmt.encoderLossy = (string)comboBoxEncoder.SelectedItem; + SelectedOutputAudioFmt.encoderLossy = encoder; } } diff --git a/CUERipper/frmCUERipper.resx b/CUERipper/frmCUERipper.resx index a803d4a..bd68fbd 100644 --- a/CUERipper/frmCUERipper.resx +++ b/CUERipper/frmCUERipper.resx @@ -148,7 +148,7 @@ 0, 443 - 260, 17 + 229, 17 MiddleLeft @@ -230,27 +230,6 @@ Top, Left, Right - - 6, 60 - - - 487, 272 - - - 0 - - - listTracks - - - System.Windows.Forms.ListView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 4 - 1 @@ -281,6 +260,27 @@ 70 + + 6, 60 + + + 487, 272 + + + 0 + + + listTracks + + + System.Windows.Forms.ListView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 4 + Top, Left, Right @@ -446,6 +446,12 @@ 285, 58 + + 94, 22 + + + Edit + 95, 26 @@ -476,12 +482,6 @@ 2 - - 94, 22 - - - Edit - 181, 22 diff --git a/CUETools.AccurateRip/AccurateRip.cs b/CUETools.AccurateRip/AccurateRip.cs index 5c5eced..c53bf91 100644 --- a/CUETools.AccurateRip/AccurateRip.cs +++ b/CUETools.AccurateRip/AccurateRip.cs @@ -478,30 +478,18 @@ All the other CRC's in this offset range are calculated by consequently adding s uint count = 0; uint partials = 0; uint conf = 0; - string pressings = ""; - string partpressings = ""; for (int di = 0; di < (int)AccDisks.Count; di++) { count += AccDisks[di].tracks[iTrack].count; if (CRC(iTrack, oi) == AccDisks[di].tracks[iTrack].CRC) - { conf += AccDisks[di].tracks[iTrack].count; - if (pressings != "") - pressings = pressings + ","; - pressings = pressings + (di + 1).ToString(); - } if (CRC450(iTrack, oi) == AccDisks[di].tracks[iTrack].Frame450CRC) - { partials += AccDisks[di].tracks[iTrack].count; - if (partpressings != "") - partpressings = partpressings + ","; - partpressings = partpressings + (di + 1).ToString(); - } } if (conf > 0) - sw.WriteLine(String.Format(" {0:00}\t[{1:x8}] ({3:00}/{2:00}) Accurately ripped as in pressing(s) #{4}", iTrack + 1, CRC(iTrack, oi), count, conf, pressings)); + sw.WriteLine(String.Format(" {0:00}\t[{1:x8}] ({3:00}/{2:00}) Accurately ripped", iTrack + 1, CRC(iTrack, oi), count, conf)); else if (partials > 0) - sw.WriteLine(String.Format(" {0:00}\t[{1:x8}] ({3:00}/{2:00}) Partial match to pressing(s) #{4} ", iTrack + 1, CRC(iTrack, oi), count, partials, partpressings)); + sw.WriteLine(String.Format(" {0:00}\t[{1:x8}] ({3:00}/{2:00}) Partial match", iTrack + 1, CRC(iTrack, oi), count, partials)); else sw.WriteLine(String.Format(" {0:00}\t[{1:x8}] (00/{2:00}) No matches", iTrack + 1, CRC(iTrack, oi), count)); } @@ -533,14 +521,42 @@ All the other CRC's in this offset range are calculated by consequently adding s uint matches = 0; for (int iTrack = 0; iTrack < _toc.AudioTracks; iTrack++) for (int di = 0; di < (int)AccDisks.Count; di++) - if ((CRC(iTrack, oi) == AccDisks[di].tracks[iTrack].CRC && AccDisks[di].tracks[iTrack].CRC != 0) || - (CRC450(iTrack, oi) == AccDisks[di].tracks[iTrack].Frame450CRC && AccDisks[di].tracks[iTrack].Frame450CRC != 0)) + if ((CRC(iTrack, oi) == AccDisks[di].tracks[iTrack].CRC && AccDisks[di].tracks[iTrack].CRC != 0)) + { matches++; - if (matches != 0 && oi != 0) + break; + } + if (matches == _toc.AudioTracks && oi != 0) { - if (offsets_match++ > 10) + if (offsets_match++ > 16) { - sw.WriteLine("More than 10 offsets match!"); + sw.WriteLine("More than 16 offsets match!"); + break; + } + sw.WriteLine("Offsetted by {0}:", oi); + GenerateLog(sw, oi); + } + } + offsets_match = 0; + for (int oi = -_arOffsetRange; oi <= _arOffsetRange; oi++) + { + uint matches = 0, partials = 0; + for (int iTrack = 0; iTrack < _toc.AudioTracks; iTrack++) + for (int di = 0; di < (int)AccDisks.Count; di++) + { + if ((CRC(iTrack, oi) == AccDisks[di].tracks[iTrack].CRC && AccDisks[di].tracks[iTrack].CRC != 0)) + { + matches ++; + break; + } + if ((CRC450(iTrack, oi) == AccDisks[di].tracks[iTrack].Frame450CRC && AccDisks[di].tracks[iTrack].Frame450CRC != 0)) + partials++; + } + if (matches != _toc.AudioTracks && oi != 0 && matches + partials != 0) + { + if (offsets_match++ > 16) + { + sw.WriteLine("More than 16 offsets match!"); break; } sw.WriteLine("Offsetted by {0}:", oi); @@ -554,9 +570,8 @@ All the other CRC's in this offset range are calculated by consequently adding s for (int iTrack = 0; iTrack < _toc.AudioTracks; iTrack++) { uint total = Total(iTrack); - uint conf = 0, part = 0; + uint conf = 0; bool zeroOffset = false; - //string pressings = ""; StringBuilder pressings = new StringBuilder(); for (int oi = -_arOffsetRange; oi <= _arOffsetRange; oi++) for (int iDisk = 0; iDisk < AccDisks.Count; iDisk++) @@ -568,20 +583,15 @@ All the other CRC's in this offset range are calculated by consequently adding s zeroOffset = true; pressings.AppendFormat("{0}{1}({2})", pressings.Length > 0 ? "," : "", oi, AccDisks[iDisk].tracks[iTrack].count); } - else if (CRC450(iTrack, oi) == AccDisks[iDisk].tracks[iTrack].Frame450CRC && (AccDisks[iDisk].tracks[iTrack].Frame450CRC != 0 || oi == 0)) - { - part += AccDisks[iDisk].tracks[iTrack].count; - pressings.AppendFormat("{0}{1}({2})", pressings.Length > 0 ? "," : "", oi, AccDisks[iDisk].tracks[iTrack].count); - } } - if (conf > 0 && zeroOffset) + if (conf > 0 && zeroOffset && pressings.Length == 0) sw.WriteLine(String.Format(" {0:00}\t ({2:00}/{1:00}) Accurately ripped", iTrack + 1, total, conf)); + else if (conf > 0 && zeroOffset) + sw.WriteLine(String.Format(" {0:00}\t ({2:00}/{1:00}) Accurately ripped, all offset(s) {3}", iTrack + 1, total, conf, pressings)); else if (conf > 0) sw.WriteLine(String.Format(" {0:00}\t ({2:00}/{1:00}) Accurately ripped with offset(s) {3}", iTrack + 1, total, conf, pressings)); - else if (part > 0) - sw.WriteLine(String.Format(" {0:00}\t ({2:00}/{1:00}) NOT ACCURATE even with offset(s) {3}", iTrack + 1, total, part, pressings)); else if (total > 0) - sw.WriteLine(String.Format(" {0:00}\t (00/{1:00}) No matches", iTrack + 1, total)); + sw.WriteLine(String.Format(" {0:00}\t (00/{1:00}) NOT ACCURATE", iTrack + 1, total)); else sw.WriteLine(String.Format(" {0:00}\t (00/00) Track not present in database", iTrack + 1)); } diff --git a/CUETools.Processor/AudioReadWrite.cs b/CUETools.Processor/AudioReadWrite.cs index b896dd5..6822e70 100644 --- a/CUETools.Processor/AudioReadWrite.cs +++ b/CUETools.Processor/AudioReadWrite.cs @@ -81,11 +81,10 @@ namespace CUETools.Processor CUEToolsFormat fmt; if (!extension.StartsWith(".") || !config.formats.TryGetValue(extension.Substring(1), out fmt)) throw new Exception("Unsupported audio type: " + path); - string encoderName = audioEncoderType == AudioEncoderType.Lossless ? fmt.encoderLossless : + CUEToolsUDC encoder = audioEncoderType == AudioEncoderType.Lossless ? fmt.encoderLossless : audioEncoderType == AudioEncoderType.Lossy ? fmt.encoderLossy : null; - CUEToolsUDC encoder; - if (encoderName == null || !config.encoders.TryGetValue(encoderName, out encoder)) + if (encoder == null) throw new Exception("Unsupported audio type: " + path); switch (encoder.className) { diff --git a/CUETools.Processor/Processor.cs b/CUETools.Processor/Processor.cs index 164479a..4ed2446 100644 --- a/CUETools.Processor/Processor.cs +++ b/CUETools.Processor/Processor.cs @@ -20,6 +20,7 @@ // **************************************************************************** using System; +using System.ComponentModel; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; @@ -294,10 +295,114 @@ namespace CUETools.Processor return false; Returns(sb, Math.Max(GetIntArg(sb, 0), GetIntArg(sb, 1)).ToString()); return true; + case "directory": + if (positions.Count != 1 && positions.Count != 2 && positions.Count != 3) + return false; + try + { + int arg3 = positions.Count > 1 ? GetIntArg(sb, 1) : 1; + int arg2 = positions.Count > 2 ? GetIntArg(sb, 2) : arg3; + Returns(sb, General.GetDirectoryElements(Path.GetDirectoryName(GetArg(sb, 0)), -arg2, -arg3)); + } + catch { return false; } + return true; + case "directory_path": + if (positions.Count != 1) + return false; + try { Returns(sb, Path.GetDirectoryName(GetArg(sb, 0))); } + catch { return false; } + return true; + case "ext": + if (positions.Count != 1) + return false; + try { Returns(sb, Path.GetExtension(GetArg(sb, 0))); } + catch { return false; } + return true; + case "filename": + if (positions.Count != 1) + return false; + try { Returns(sb, Path.GetFileNameWithoutExtension(GetArg(sb, 0))); } + catch { return false; } + return true; } return false; } + } + public static string GetDirectoryElements(string dir, int first, int last) + { + if (dir == null) + return ""; + + string[] dirSplit = dir.Split(Path.DirectorySeparatorChar, + Path.AltDirectorySeparatorChar); + int count = dirSplit.Length; + + if ((first == 0) && (last == 0)) + { + first = 1; + last = count; + } + + if (first < 0) first = (count + 1) + first; + if (last < 0) last = (count + 1) + last; + + if ((first < 1) && (last < 1)) + { + return String.Empty; + } + else if ((first > count) && (last > count)) + { + return String.Empty; + } + else + { + int i; + StringBuilder sb = new StringBuilder(); + + if (first < 1) first = 1; + if (first > count) first = count; + if (last < 1) last = 1; + if (last > count) last = count; + + if (last >= first) + { + for (i = first; i <= last; i++) + { + sb.Append(dirSplit[i - 1]); + sb.Append(Path.DirectorySeparatorChar); + } + } + else + { + for (i = first; i >= last; i--) + { + sb.Append(dirSplit[i - 1]); + sb.Append(Path.DirectorySeparatorChar); + } + } + + return sb.ToString(0, sb.Length - 1); + } + } + + public static string ReplaceMultiple(string s, NameValueCollection tags) + { + List find = new List(); + List replace = new List(); + + foreach (string tag in tags.AllKeys) + { + string key = '%' + tag.ToLower() + '%'; + string val = tags[tag]; + if (!find.Contains(key) && val != null && val != "") + { + find.Add(key); + replace.Add(val); + } + } + + return ReplaceMultiple(s, find, replace); } public static string ReplaceMultiple(string s, List find, List replace) @@ -440,8 +545,8 @@ namespace CUETools.Processor bool _allowLossyWAV, bool _allowEmbed, bool _builtin, - string _encoderLossless, - string _encoderLossy, + CUEToolsUDC _encoderLossless, + CUEToolsUDC _encoderLossy, string _decoder) { extension = _extension; @@ -460,15 +565,17 @@ namespace CUETools.Processor return extension; } public string extension; - public string encoderLossless; - public string encoderLossy; + public CUEToolsUDC encoderLossless; + public CUEToolsUDC encoderLossy; public string decoder; public CUEToolsTagger tagger; public bool allowLossless, allowLossy, allowLossyWAV, allowEmbed, builtin; } - public class CUEToolsUDC + public class CUEToolsUDC : INotifyPropertyChanged { + public event PropertyChangedEventHandler PropertyChanged; + public CUEToolsUDC( string _name, string _extension, @@ -509,14 +616,49 @@ namespace CUETools.Processor { return name; } - public string name; - public string extension; - public string path; - public string parameters; - public string className; - public string supported_modes; - public string default_mode; - public bool lossless; + public string name = ""; + public string extension = "wav"; + public string path = ""; + public string parameters = ""; + public string className = ""; + public string supported_modes = ""; + public string default_mode = ""; + public bool lossless = false; + + public string Name + { + get { return name; } + set { name = value; if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("Name")); } + } + public string Path + { + get { return path; } + set { path = value; if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("Path")); } + } + public string Parameters + { + get { return parameters; } + set { parameters = value; if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("Parameters")); } + } + public bool Lossless + { + get { return lossless; } + set { lossless = value; if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("Lossless")); } + } + public string Extension + { + get { return extension; } + set { extension = value; if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("Extension")); } + } + public string DotExtension + { + get { return "." + extension; } + } + public string SupportedModesStr + { + get { return supported_modes; } + set { supported_modes = value; if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("SupportedModesStr")); } + } public string[] SupportedModes { get @@ -537,6 +679,13 @@ namespace CUETools.Processor return -1; } } + public bool CanBeDeleted + { + get + { + return path != null; + } + } } public class CUEToolsScript @@ -560,6 +709,46 @@ namespace CUETools.Processor public string code; } + public class CUEToolsUDCList : BindingList + { + public CUEToolsUDCList() : base() + { + AddingNew += OnAddingNew; + } + + private void OnAddingNew(object sender, AddingNewEventArgs e) + { + string name = "new"; + CUEToolsUDC temp; + while (TryGetValue(name, out temp)) + name += "(1)"; + e.NewObject = new CUEToolsUDC(name, "wav", true, "", "", "", ""); + } + + public bool TryGetValue(string name, out CUEToolsUDC result) + { + foreach(CUEToolsUDC udc in this) + if (udc.name == name) + { + result = udc; + return true; + } + result = null; + return false; + } + + public CUEToolsUDC this[string name] + { + get + { + CUEToolsUDC udc; + if (!TryGetValue(name, out udc)) + throw new Exception("CUEToolsUDCList: member not found"); + return udc; + } + } + } + public class CUEConfig { public uint fixOffsetMinimumConfidence; public uint fixOffsetMinimumTracksPercent; @@ -605,11 +794,10 @@ namespace CUETools.Processor public bool checkForUpdates; public string language; public Dictionary formats; - public Dictionary encoders; + public CUEToolsUDCList encoders; public Dictionary decoders; public Dictionary scripts; public string defaultVerifyScript; - public string defaultConvertScript; public string defaultVerifyAndConvertScript; public bool writeBasicTagsFromCUEData; public bool copyBasicTags; @@ -621,9 +809,17 @@ namespace CUETools.Processor public bool arLogVerbose; public bool fixOffsetToNearest; public int maxAlbumArtSize; - public string arLogExtension; + public string arLogFilenameFormat, alArtFilenameFormat; public CUEStyle gapsHandling; + public bool CopyAlbumArt { get { return copyAlbumArt; } set { copyAlbumArt = value; } } + public string ArLogFilenameFormat { get { return arLogFilenameFormat; } } + public string AlArtFilenameFormat { get { return alArtFilenameFormat; } } + public CUEToolsUDCList Encoders + { + get { return encoders; } + } + public CUEConfig() { fixOffsetMinimumConfidence = 2; @@ -682,38 +878,28 @@ namespace CUETools.Processor arLogToSourceFolder = false; arLogVerbose = true; fixOffsetToNearest = true; - arLogExtension = ".accurip"; + arLogFilenameFormat = "%F.accurip"; + alArtFilenameFormat = "folder.jpg"; gapsHandling = CUEStyle.GapsAppended; language = Thread.CurrentThread.CurrentUICulture.Name; - formats = new Dictionary(); - formats.Add("flac", new CUEToolsFormat("flac", CUEToolsTagger.TagLibSharp, true, false, true, true, true, "libFLAC", null, "libFLAC")); - formats.Add("wv", new CUEToolsFormat("wv", CUEToolsTagger.TagLibSharp, true, false, true, true, true, "libwavpack", null, "libwavpack")); - formats.Add("ape", new CUEToolsFormat("ape", CUEToolsTagger.TagLibSharp, true, false, false, true, true, "MAC_SDK", null, "MAC_SDK")); - formats.Add("tta", new CUEToolsFormat("tta", CUEToolsTagger.APEv2, true, false, false, false, true, "ttalib", null, "ttalib")); - formats.Add("wav", new CUEToolsFormat("wav", CUEToolsTagger.TagLibSharp, true, false, true, false, true, "builtin wav", null, "builtin wav")); - formats.Add("tak", new CUEToolsFormat("tak", CUEToolsTagger.APEv2, true, false, true, true, true, "takc", null, "takc")); - formats.Add("m4a", new CUEToolsFormat("m4a", CUEToolsTagger.TagLibSharp, true, true, false, false, true, "ffmpeg alac", "nero aac", "builtin alac")); - formats.Add("mp3", new CUEToolsFormat("mp3", CUEToolsTagger.TagLibSharp, false, true, false, false, true, null, "lame -V0", null)); - formats.Add("ogg", new CUEToolsFormat("ogg", CUEToolsTagger.TagLibSharp, false, true, false, false, true, null, "oggenc", null)); - - encoders = new Dictionary(); + encoders = new CUEToolsUDCList(); #if !MONO - encoders.Add("libFLAC", new CUEToolsUDC("libFLAC", "flac", true, "0 1 2 3 4 5 6 7 8", "5", "FLACWriter")); - encoders.Add("libwavpack", new CUEToolsUDC("libwavpack", "wv", true, "fast normal high high+", "normal", "WavPackWriter")); - encoders.Add("MAC_SDK", new CUEToolsUDC("MAC_SDK", "ape", true, "fast normal high extra insane", "high", "APEWriter")); - encoders.Add("ttalib", new CUEToolsUDC("ttalib", "tta", true, "", "", "TTAWriter")); + encoders.Add(new CUEToolsUDC("libFLAC", "flac", true, "0 1 2 3 4 5 6 7 8", "5", "FLACWriter")); + encoders.Add(new CUEToolsUDC("libwavpack", "wv", true, "fast normal high high+", "normal", "WavPackWriter")); + encoders.Add(new CUEToolsUDC("MAC_SDK", "ape", true, "fast normal high extra insane", "high", "APEWriter")); + encoders.Add(new CUEToolsUDC("ttalib", "tta", true, "", "", "TTAWriter")); #endif - encoders.Add("builtin wav", new CUEToolsUDC("builtin wav", "wav", true, "", "", "WAVWriter")); - encoders.Add("flake", new CUEToolsUDC("flake", "flac", true, "0 1 2 3 4 5 6 7 8 9 10 11 12", "10", "flake.exe", "-%M - -o %O")); - encoders.Add("takc", 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("ffmpeg alac", new CUEToolsUDC("ffmpeg alac", "m4a", true, "", "", "ffmpeg.exe", "-i - -f ipod -acodec alac -y %O")); - encoders.Add("lame vbr", new CUEToolsUDC("lame -V2", "mp3", false, "V9 V8 V7 V6 V5 V4 V3 V2 V1 V0", "V2", "lame.exe", "--vbr-new -%M - %O")); - encoders.Add("lame cbr", new CUEToolsUDC("lame 320", "mp3", false, "96 128 192 256 320", "256", "lame.exe", "-m s -q 0 -b %M --noreplaygain - %O")); - encoders.Add("oggenc", 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("nero aac", 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("builtin wav", "wav", true, "", "", "WAVWriter")); + encoders.Add(new CUEToolsUDC("flake", "flac", true, "0 1 2 3 4 5 6 7 8 9 10 11 12", "10", "flake.exe", "-%M - -o %O")); + 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("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")); decoders = new Dictionary(); #if !MONO @@ -727,6 +913,17 @@ namespace CUETools.Processor decoders.Add("takc", new CUEToolsUDC("takc", "tak", true, "", "", "takc.exe", "-d %I -")); decoders.Add("ffmpeg alac", new CUEToolsUDC("ffmpeg alac", "m4a", true, "", "", "ffmpeg.exe", "%I -f wav -")); + formats = new Dictionary(); + formats.Add("flac", new CUEToolsFormat("flac", CUEToolsTagger.TagLibSharp, true, false, true, true, true, encoders["libFLAC"], null, "libFLAC")); + formats.Add("wv", new CUEToolsFormat("wv", CUEToolsTagger.TagLibSharp, true, false, true, true, true, encoders["libwavpack"], null, "libwavpack")); + formats.Add("ape", new CUEToolsFormat("ape", CUEToolsTagger.TagLibSharp, true, false, false, true, true, encoders["MAC_SDK"], null, "MAC_SDK")); + formats.Add("tta", new CUEToolsFormat("tta", CUEToolsTagger.APEv2, true, false, false, false, true, encoders["ttalib"], null, "ttalib")); + formats.Add("wav", new CUEToolsFormat("wav", CUEToolsTagger.TagLibSharp, true, false, true, false, true, encoders["builtin wav"], null, "builtin wav")); + formats.Add("tak", new CUEToolsFormat("tak", CUEToolsTagger.APEv2, true, false, true, true, true, encoders["takc"], null, "takc")); + formats.Add("m4a", new CUEToolsFormat("m4a", CUEToolsTagger.TagLibSharp, true, true, false, false, true, encoders["ffmpeg alac"], encoders["nero aac"], "builtin alac")); + formats.Add("mp3", new CUEToolsFormat("mp3", CUEToolsTagger.TagLibSharp, false, true, false, false, true, null, encoders["lame vbr"], null)); + formats.Add("ogg", new CUEToolsFormat("ogg", CUEToolsTagger.TagLibSharp, false, true, false, false, true, null, encoders["oggenc"], null)); + scripts = new Dictionary(); scripts.Add("default", new CUEToolsScript("default", true, new CUEAction[] { CUEAction.VerifyAndConvert, CUEAction.Verify, CUEAction.Convert }, @@ -768,7 +965,6 @@ processor.Action = CUEAction.VerifyAndConvert; return processor.Go(); ")); defaultVerifyScript = "default"; - defaultConvertScript = "default"; defaultVerifyAndConvertScript = "default"; } @@ -831,21 +1027,25 @@ return processor.Go(); sw.Save("ArLogToSourceFolder", arLogToSourceFolder); sw.Save("ArLogVerbose", arLogVerbose); sw.Save("FixOffsetToNearest", fixOffsetToNearest); - sw.Save("ArLogExtension", arLogExtension); + + sw.Save("ArLogFilenameFormat", arLogFilenameFormat); + sw.Save("AlArtFilenameFormat", alArtFilenameFormat); int nEncoders = 0; - foreach (KeyValuePair encoder in encoders) - if (encoder.Value.path != null) + foreach (CUEToolsUDC encoder in encoders) + { + sw.Save(string.Format("ExternalEncoder{0}Name", nEncoders), encoder.name); + sw.Save(string.Format("ExternalEncoder{0}Modes", nEncoders), encoder.supported_modes); + sw.Save(string.Format("ExternalEncoder{0}Mode", nEncoders), encoder.default_mode); + if (encoder.path != null) { - sw.Save(string.Format("ExternalEncoder{0}Name", nEncoders), encoder.Key); - sw.Save(string.Format("ExternalEncoder{0}Extension", nEncoders), encoder.Value.extension); - sw.Save(string.Format("ExternalEncoder{0}Path", nEncoders), encoder.Value.path); - sw.Save(string.Format("ExternalEncoder{0}Parameters", nEncoders), encoder.Value.parameters); - sw.Save(string.Format("ExternalEncoder{0}Lossless", nEncoders), encoder.Value.lossless); - sw.Save(string.Format("ExternalEncoder{0}Modes", nEncoders), encoder.Value.supported_modes); - sw.Save(string.Format("ExternalEncoder{0}Mode", nEncoders), encoder.Value.default_mode); - nEncoders++; + sw.Save(string.Format("ExternalEncoder{0}Extension", nEncoders), encoder.extension); + sw.Save(string.Format("ExternalEncoder{0}Path", nEncoders), encoder.path); + sw.Save(string.Format("ExternalEncoder{0}Parameters", nEncoders), encoder.parameters); + sw.Save(string.Format("ExternalEncoder{0}Lossless", nEncoders), encoder.lossless); } + nEncoders++; + } sw.Save("ExternalEncoders", nEncoders); int nDecoders = 0; @@ -864,8 +1064,8 @@ return processor.Go(); foreach (KeyValuePair format in formats) { sw.Save(string.Format("CustomFormat{0}Name", nFormats), format.Key); - sw.Save(string.Format("CustomFormat{0}EncoderLossless", nFormats), format.Value.encoderLossless); - sw.Save(string.Format("CustomFormat{0}EncoderLossy", nFormats), format.Value.encoderLossy); + sw.Save(string.Format("CustomFormat{0}EncoderLossless", nFormats), format.Value.encoderLossless == null ? "" : format.Value.encoderLossless.Name); + sw.Save(string.Format("CustomFormat{0}EncoderLossy", nFormats), format.Value.encoderLossy == null ? "" : format.Value.encoderLossy.Name); sw.Save(string.Format("CustomFormat{0}Decoder", nFormats), format.Value.decoder); sw.Save(string.Format("CustomFormat{0}Tagger", nFormats), (int)format.Value.tagger); sw.Save(string.Format("CustomFormat{0}AllowLossless", nFormats), format.Value.allowLossless); @@ -889,7 +1089,6 @@ return processor.Go(); } sw.Save("CustomScripts", nScripts); sw.Save("DefaultVerifyScript", defaultVerifyScript); - sw.Save("DefaultConvertScript", defaultConvertScript); sw.Save("DefaultVerifyAndConvertScript", defaultVerifyAndConvertScript); sw.Save("GapsHandling", (int)gapsHandling); @@ -955,7 +1154,8 @@ return processor.Go(); arLogToSourceFolder = sr.LoadBoolean("ArLogToSourceFolder") ?? arLogToSourceFolder; arLogVerbose = sr.LoadBoolean("ArLogVerbose") ?? arLogVerbose; fixOffsetToNearest = sr.LoadBoolean("FixOffsetToNearest") ?? fixOffsetToNearest; - arLogExtension = sr.Load("ArLogExtension") ?? arLogExtension; + arLogFilenameFormat = sr.Load("ArLogFilenameFormat") ?? arLogFilenameFormat; + alArtFilenameFormat = sr.Load("AlArtFilenameFormat") ?? alArtFilenameFormat; int totalEncoders = sr.LoadInt32("ExternalEncoders", 0, null) ?? 0; for (int nEncoders = 0; nEncoders < totalEncoders; nEncoders++) @@ -968,12 +1168,17 @@ return processor.Go(); string supported_modes = sr.Load(string.Format("ExternalEncoder{0}Modes", nEncoders)) ?? ""; string default_mode = sr.Load(string.Format("ExternalEncoder{0}Mode", nEncoders)) ?? ""; CUEToolsUDC encoder; + if (name == null) continue; if (!encoders.TryGetValue(name, out encoder)) - encoders.Add(name, new CUEToolsUDC(name, extension, lossless, supported_modes, default_mode, path, parameters)); + { + if (path == null || parameters == null || extension == null) continue; + encoders.Add(new CUEToolsUDC(name, extension, lossless, supported_modes, default_mode, path, parameters)); + } else if (version == 203) { if (encoder.path != null) { + if (path == null || parameters == null || extension == null) continue; encoder.extension = extension; encoder.path = path; encoder.parameters = parameters; @@ -1006,8 +1211,8 @@ return processor.Go(); for (int nFormats = 0; nFormats < totalFormats; nFormats++) { string extension = sr.Load(string.Format("CustomFormat{0}Name", nFormats)); - string encoderLossless = sr.Load(string.Format("CustomFormat{0}EncoderLossless", nFormats)); - string encoderLossy = sr.Load(string.Format("CustomFormat{0}EncoderLossy", nFormats)); + string encoderLossless = sr.Load(string.Format("CustomFormat{0}EncoderLossless", nFormats)) ?? ""; + string encoderLossy = sr.Load(string.Format("CustomFormat{0}EncoderLossy", nFormats)) ?? ""; string decoder = sr.Load(string.Format("CustomFormat{0}Decoder", nFormats)); CUEToolsTagger tagger = (CUEToolsTagger) (sr.LoadInt32(string.Format("CustomFormat{0}Tagger", nFormats), 0, 2) ?? 0); bool allowLossless = sr.LoadBoolean(string.Format("CustomFormat{0}AllowLossless", nFormats)) ?? false; @@ -1015,12 +1220,17 @@ return processor.Go(); bool allowLossyWav = sr.LoadBoolean(string.Format("CustomFormat{0}AllowLossyWAV", nFormats)) ?? false; bool allowEmbed = sr.LoadBoolean(string.Format("CustomFormat{0}AllowEmbed", nFormats)) ?? false; CUEToolsFormat format; + CUEToolsUDC udcLossless, udcLossy; + if (encoderLossless == "" || !encoders.TryGetValue(encoderLossless, out udcLossless)) + udcLossless = null; + if (encoderLossy == "" || !encoders.TryGetValue(encoderLossy, out udcLossy)) + udcLossy = null; if (!formats.TryGetValue(extension, out format)) - formats.Add(extension, new CUEToolsFormat(extension, tagger, allowLossless, allowLossy, allowLossyWav, allowEmbed, false, encoderLossless, encoderLossy, decoder)); + formats.Add(extension, new CUEToolsFormat(extension, tagger, allowLossless, allowLossy, allowLossyWav, allowEmbed, false, udcLossless, udcLossy, decoder)); else { - format.encoderLossless = encoderLossless; - format.encoderLossy = encoderLossy; + format.encoderLossless = udcLossless; + format.encoderLossy = udcLossy; format.decoder = decoder; if (!format.builtin) { @@ -1056,7 +1266,6 @@ return processor.Go(); } defaultVerifyScript = sr.Load("DefaultVerifyScript") ?? "default"; - defaultConvertScript = sr.Load("DefaultConvertScript") ?? "default"; defaultVerifyAndConvertScript = sr.Load("DefaultVerifyAndConvertScript") ?? "default"; gapsHandling = (CUEStyle?)sr.LoadInt32("GapsHandling", null, null) ?? gapsHandling; @@ -1091,6 +1300,71 @@ return processor.Go(); } } + public class CUEToolsProfile + { + public CUEToolsProfile(string name) + { + _config = new CUEConfig(); + _name = name; + switch (name) + { + case "verify": + _action = CUEAction.Verify; + _script = "only if found"; + break; + case "convert": + _action = CUEAction.VerifyAndConvert; + break; + case "fix": + _action = CUEAction.VerifyAndConvert; + _script = "fix offset"; + break; + } + } + + public void Load(SettingsReader sr) + { + _config.Load(sr); + + _useFreeDb = sr.LoadBoolean("FreedbLookup") ?? _useFreeDb; + _useMusicBrainz = sr.LoadBoolean("MusicBrainzLookup") ?? _useMusicBrainz; + _useAccurateRip = sr.LoadBoolean("AccurateRipLookup") ?? _useAccurateRip; + _outputAudioType = (AudioEncoderType?)sr.LoadInt32("OutputAudioType", null, null) ?? _outputAudioType; + _outputAudioFormat = sr.Load("OutputAudioFmt") ?? _outputAudioFormat; + _action = (CUEAction?)sr.LoadInt32("AccurateRipMode", null, null) ?? _action; + _CUEStyle = (CUEStyle?)sr.LoadInt32("CUEStyle", null, null) ?? _CUEStyle; + _writeOffset = sr.LoadInt32("WriteOffset", null, null) ?? 0; + _outputTemplate = sr.Load("OutputPathTemplate") ?? _outputTemplate; + _script = sr.Load("Script") ?? _script; + } + + public void Save(SettingsWriter sw) + { + _config.Save(sw); + + sw.Save("FreedbLookup", _useFreeDb); + sw.Save("MusicBrainzLookup", _useMusicBrainz); + sw.Save("AccurateRipLookup", _useAccurateRip); + sw.Save("OutputAudioType", (int)_outputAudioType); + sw.Save("OutputAudioFmt", _outputAudioFormat); + sw.Save("AccurateRipMode", (int)_action); + sw.Save("CUEStyle", (int)_CUEStyle); + sw.Save("WriteOffset", (int)_writeOffset); + sw.Save("OutputPathTemplate", _outputTemplate); + sw.Save("Script", _script); + } + + public CUEConfig _config; + public AudioEncoderType _outputAudioType = AudioEncoderType.Lossless; + public string _outputAudioFormat = "flac", _outputTemplate = null, _script = "default"; + public CUEAction _action = CUEAction.VerifyAndConvert; + public CUEStyle _CUEStyle = CUEStyle.SingleFileWithCUE; + public int _writeOffset = 0; + public bool _useFreeDb = true, _useMusicBrainz = true, _useAccurateRip = true; + + public string _name; + } + public class CUEToolsProgressEventArgs { public string status = string.Empty; @@ -1168,6 +1442,8 @@ return processor.Go(); private CUEToolsProgressEventArgs _progress; private AccurateRipVerify _arVerify; private CDImageLayout _toc; + private string _arLogFileName, _alArtFileName; + private TagLib.IPicture[] _albumArt; public event ArchivePasswordRequiredHandler PasswordRequired; public event CUEToolsProgressHandler CUEToolsProgress; @@ -1196,6 +1472,7 @@ return processor.Go(); _hasEmbeddedCUESheet = false; _isArchive = false; _isCD = false; + _albumArt = null; } public void OpenCD(CDDriveReader ripper) @@ -1271,103 +1548,109 @@ return processor.Go(); } } - public List LookupAlbumInfo() + public List LookupAlbumInfo(bool useFreedb, bool useMusicBrainz) { List Releases = new List(); - ShowProgress("Looking up album via freedb...", 0.0, 0.0, null, null); - - FreedbHelper m_freedb = new FreedbHelper(); - - m_freedb.UserName = "gchudov"; - m_freedb.Hostname = "gmail.com"; - m_freedb.ClientName = "CUETools"; - m_freedb.Version = "1.9.5"; - m_freedb.SetDefaultSiteAddress("freedb.org"); - - QueryResult queryResult; - QueryResultCollection coll; - string code = string.Empty; - try + if (useFreedb) { - CDEntry cdEntry = null; - code = m_freedb.Query(AccurateRipVerify.CalculateCDDBQuery(_toc), out queryResult, out coll); - if (code == FreedbHelper.ResponseCodes.CODE_200) - { - code = m_freedb.Read(queryResult, out cdEntry); - if (code == FreedbHelper.ResponseCodes.CODE_210) - Releases.Add(cdEntry); - } - else - if (code == FreedbHelper.ResponseCodes.CODE_210 || - code == FreedbHelper.ResponseCodes.CODE_211) - { - int i = 0; - foreach (QueryResult qr in coll) - { - ShowProgress("Looking up album via freedb...", 0.0, (++i + 0.0) / coll.Count, null, null); - CheckStop(); - code = m_freedb.Read(qr, out cdEntry); - if (code == FreedbHelper.ResponseCodes.CODE_210) - Releases.Add(cdEntry); - } - } - } - catch (Exception ex) - { - if (ex is StopException) - throw ex; - } + ShowProgress("Looking up album via freedb...", 0.0, 0.0, null, null); - StringCollection DiscIds = new StringCollection(); - DiscIds.Add(_toc.MusicBrainzId); - //if (_tocFromLog != null && !DiscIds.Contains(_tocFromLog.MusicBrainzId)) - // DiscIds.Add(_tocFromLog.MusicBrainzId); - foreach (CDEntry cdEntry in Releases) - { - CDImageLayout toc = TocFromCDEntry(cdEntry); - if (!DiscIds.Contains(toc.MusicBrainzId)) - DiscIds.Add(toc.MusicBrainzId); - } + FreedbHelper m_freedb = new FreedbHelper(); - MusicBrainzService.XmlRequest += new EventHandler(MusicBrainz_LookupProgress); - _progress.percentDisk = 0; - foreach (string DiscId in DiscIds) - { - ReleaseQueryParameters p = new ReleaseQueryParameters(); - p.DiscId = DiscId; - Query results = Release.Query(p); + m_freedb.UserName = "gchudov"; + m_freedb.Hostname = "gmail.com"; + m_freedb.ClientName = "CUETools"; + m_freedb.Version = "1.9.5"; + m_freedb.SetDefaultSiteAddress("freedb.org"); + + QueryResult queryResult; + QueryResultCollection coll; + string code = string.Empty; try { - foreach (MusicBrainz.Release release in results) + CDEntry cdEntry = null; + code = m_freedb.Query(AccurateRipVerify.CalculateCDDBQuery(_toc), out queryResult, out coll); + if (code == FreedbHelper.ResponseCodes.CODE_200) { - release.GetEvents(); - release.GetTracks(); - try - { - foreach (MusicBrainz.Track track in release.GetTracks()) - ; - } - catch { } - try - { - foreach (MusicBrainz.Event ev in release.GetEvents()) - ; - } - catch { } - Releases.Add(release); + code = m_freedb.Read(queryResult, out cdEntry); + if (code == FreedbHelper.ResponseCodes.CODE_210) + Releases.Add(cdEntry); } + else + if (code == FreedbHelper.ResponseCodes.CODE_210 || + code == FreedbHelper.ResponseCodes.CODE_211) + { + int i = 0; + foreach (QueryResult qr in coll) + { + ShowProgress("Looking up album via freedb...", 0.0, (++i + 0.0) / coll.Count, null, null); + CheckStop(); + code = m_freedb.Read(qr, out cdEntry); + if (code == FreedbHelper.ResponseCodes.CODE_210) + Releases.Add(cdEntry); + } + } + } + catch (Exception ex) + { + if (ex is StopException) + throw ex; } - catch { } } - MusicBrainzService.XmlRequest -= new EventHandler(MusicBrainz_LookupProgress); - //if (release != null) - //{ - // FillFromMusicBrainz(release); - // return; - //} - //if (cdEntry != null) - // FillFromFreedb(cdEntry); + + if (useMusicBrainz) + { + StringCollection DiscIds = new StringCollection(); + DiscIds.Add(_toc.MusicBrainzId); + //if (_tocFromLog != null && !DiscIds.Contains(_tocFromLog.MusicBrainzId)) + // DiscIds.Add(_tocFromLog.MusicBrainzId); + foreach (CDEntry cdEntry in Releases) + { + CDImageLayout toc = TocFromCDEntry(cdEntry); + if (!DiscIds.Contains(toc.MusicBrainzId)) + DiscIds.Add(toc.MusicBrainzId); + } + + MusicBrainzService.XmlRequest += new EventHandler(MusicBrainz_LookupProgress); + _progress.percentDisk = 0; + foreach (string DiscId in DiscIds) + { + ReleaseQueryParameters p = new ReleaseQueryParameters(); + p.DiscId = DiscId; + Query results = Release.Query(p); + try + { + foreach (MusicBrainz.Release release in results) + { + release.GetEvents(); + release.GetTracks(); + try + { + foreach (MusicBrainz.Track track in release.GetTracks()) + ; + } + catch { } + try + { + foreach (MusicBrainz.Event ev in release.GetEvents()) + ; + } + catch { } + Releases.Add(release); + } + } + catch { } + } + MusicBrainzService.XmlRequest -= new EventHandler(MusicBrainz_LookupProgress); + //if (release != null) + //{ + // FillFromMusicBrainz(release); + // return; + //} + //if (cdEntry != null) + // FillFromFreedb(cdEntry); + } return Releases; } @@ -1512,7 +1795,7 @@ return processor.Go(); if (!AccurateRipVerify.FindDriveReadOffset(_ripper.ARName, out driveOffset)) throw new Exception("Failed to find drive read offset for drive" + _ripper.ARName); _ripper.DriveOffset = driveOffset; - LookupAlbumInfo(); + //LookupAlbumInfo(); return; } } @@ -2125,6 +2408,8 @@ return processor.Go(); _arVerify.CRCLOG(1, 0); } } + + LoadAlbumArt(_tracks[0]._fileInfo ?? _fileInfo); } public void Lookup() @@ -2396,6 +2681,94 @@ return processor.Go(); return null; } + private static bool IsCDROM(string pathIn) + { + return pathIn.Length == 3 && pathIn.Substring(1) == ":\\" && new DriveInfo(pathIn).DriveType == DriveType.CDRom; + } + + private static string GenerateOutputPath(CUEConfig _config, string format, NameValueCollection tags, string ext) + { + string pathOut = General.ReplaceMultiple(format, tags); + if (pathOut == null) + return String.Empty; + + try { pathOut = Path.ChangeExtension(pathOut, ext); } + catch { pathOut = ""; } + return pathOut; + } + + public static string GenerateUniqueOutputPath(CUEConfig _config, string format, string ext, CUEAction action, NameValueCollection vars, string pathIn, CUESheet cueSheet) + { + if (pathIn.Length == 0 || (!IsCDROM(pathIn) && !File.Exists(pathIn) && !Directory.Exists(pathIn))) + return String.Empty; + if (action == CUEAction.Verify && _config.arLogToSourceFolder) + return Path.ChangeExtension(pathIn, ".cue"); + if (action == CUEAction.CreateDummyCUE) + return Path.ChangeExtension(pathIn, ".cue"); + if (action == CUEAction.CorrectFilenames) + return pathIn; + + if (_config.detectHDCD && _config.decodeHDCD && (!ext.StartsWith(".lossy.") || !_config.decodeHDCDtoLW16)) + { + if (_config.decodeHDCDto24bit) + ext = ".24bit" + ext; + else + ext = ".20bit" + ext; + } + + vars.Add("path", pathIn); + try + { + vars.Add("filename", Path.GetFileNameWithoutExtension(pathIn)); + vars.Add("filename_ext", Path.GetFileName(pathIn)); + vars.Add("directoryname", General.EmptyStringToNull(Path.GetDirectoryName(pathIn))); + } + catch { } + vars.Add("music", Environment.GetFolderPath(Environment.SpecialFolder.MyMusic)); + bool rs = _config.replaceSpaces; + string artist = cueSheet == null ? "Artist" : cueSheet.Artist == "" ? "Unknown Artist" : cueSheet.Artist; + string album = cueSheet == null ? "Album" : cueSheet.Title == "" ? "Unknown Title" : cueSheet.Title; + vars.Add("artist", General.EmptyStringToNull(_config.CleanseString(rs ? artist.Replace(' ', '_') : artist))); + vars.Add("album", General.EmptyStringToNull(_config.CleanseString(rs ? album.Replace(' ', '_') : album))); + + if (cueSheet != null) + { + vars.Add("year", General.EmptyStringToNull(cueSheet.Year)); + vars.Add("catalog", General.EmptyStringToNull(cueSheet.Catalog)); + vars.Add("discnumber", General.EmptyStringToNull(cueSheet.DiscNumber)); + vars.Add("totaldiscs", General.EmptyStringToNull(cueSheet.TotalDiscs)); + NameValueCollection tags = cueSheet.Tags; + foreach (string tag in tags.AllKeys) + { + string key = tag.ToLower(); + string val = tags[tag]; + if (vars.Get(key) == null && val != null && val != "") + vars.Add(key, _config.CleanseString(rs ? val.Replace(' ', '_') : val)); + } + } + + vars.Add("unique", null); + string outputPath = GenerateOutputPath(_config, format, vars, ext); + if (outputPath == String.Empty) + return outputPath; + + int unique = 1; + try + { + while (File.Exists(outputPath)) + { + vars["unique"] = unique.ToString(); + string newPath = GenerateOutputPath(_config, format, vars, ext); + if (newPath == outputPath || newPath == String.Empty) + break; + outputPath = newPath; + unique++; + } + } + catch { } + return outputPath; + } + public void GenerateFilenames(AudioEncoderType audioEncoderType, string format, string outputPath) { _audioEncoderType = audioEncoderType; @@ -2435,6 +2808,9 @@ return processor.Go(); extension = ".20bit" + extension; } + ArLogFileName = General.ReplaceMultiple(_config.arLogFilenameFormat, find, replace) ?? Path.ChangeExtension(outputPath, ".accurip"); + AlArtFileName = General.ReplaceMultiple(_config.alArtFilenameFormat, find, replace) ?? "Folder.jpg"; + if (_config.keepOriginalFilenames && HasSingleFilename) { SingleFilename = Path.ChangeExtension(SingleFilename, extension); @@ -3112,10 +3488,14 @@ return processor.Go(); if (_config.writeBasicTagsFromCUEData) { uint temp; - if (fileInfo.Tag.Album == null && Title != "") fileInfo.Tag.Album = Title; - //if (fileInfo.Tag.Performers.Length == 0) fileInfo.Tag.Performers = new string[] { _tracks[iTrack].Artist != "" ? _tracks[iTrack].Artist : Artist }; - if (fileInfo.Tag.AlbumArtists.Length == 0 && Artist != "") fileInfo.Tag.AlbumArtists = new string[] { Artist }; - if (fileInfo.Tag.Genres.Length == 0 && Genre != "") fileInfo.Tag.Genres = new string[] { Genre }; + if (fileInfo.Tag.Album == null && Title != "") + fileInfo.Tag.Album = Title; + if (fileInfo.Tag.Performers.Length == 0 && Artist != "") + fileInfo.Tag.Performers = new string[] { Artist }; + //if (fileInfo.Tag.AlbumArtists.Length == 0 && Artist != "") + // fileInfo.Tag.AlbumArtists = new string[] { Artist }; + if (fileInfo.Tag.Genres.Length == 0 && Genre != "") + fileInfo.Tag.Genres = new string[] { Genre }; if (fileInfo.Tag.DiscCount == 0 && TotalDiscs != "" && uint.TryParse(TotalDiscs, out temp)) fileInfo.Tag.DiscCount = temp; if (fileInfo.Tag.Disc == 0 && DiscNumber != "" && uint.TryParse(DiscNumber, out temp)) @@ -3127,11 +3507,15 @@ return processor.Go(); // fill up missing information from tags if (_config.copyBasicTags && sourceFileInfo != null) { - fileInfo.Tag.DiscCount = sourceFileInfo.Tag.DiscCount; // TODO: GetCommonTag? - fileInfo.Tag.Disc = sourceFileInfo.Tag.Disc; + if (fileInfo.Tag.DiscCount == 0) + fileInfo.Tag.DiscCount = sourceFileInfo.Tag.DiscCount; // TODO: GetCommonTag? + if (fileInfo.Tag.Disc == 0) + fileInfo.Tag.Disc = sourceFileInfo.Tag.Disc; //fileInfo.Tag.Performers = sourceFileInfo.Tag.Performers; if (fileInfo.Tag.Album == null) fileInfo.Tag.Album = sourceFileInfo.Tag.Album; + if (fileInfo.Tag.Performers.Length == 0) + fileInfo.Tag.Performers = sourceFileInfo.Tag.Performers; if (fileInfo.Tag.AlbumArtists.Length == 0) fileInfo.Tag.AlbumArtists = sourceFileInfo.Tag.AlbumArtists; if (fileInfo.Tag.Genres.Length == 0) @@ -3140,16 +3524,7 @@ return processor.Go(); fileInfo.Tag.Year = sourceFileInfo.Tag.Year; } - if (_config.extractAlbumArt && sourceFileInfo != null && sourceFileInfo.Tag.Pictures.Length > 0) - ExtractCover(sourceFileInfo); - - // copy album art - if (_config.copyAlbumArt && sourceFileInfo != null) - fileInfo.Tag.Pictures = sourceFileInfo.Tag.Pictures; - - if (_config.embedAlbumArt && fileInfo.Tag.Pictures.Length == 0 && _inputDir != null) - EmbedCover(fileInfo); - + ProcessAlbumArt(fileInfo); fileInfo.Save(); } } @@ -3159,6 +3534,10 @@ return processor.Go(); WriteText(_outputPath, cueContents); if (_config.createM3U) WriteText(Path.ChangeExtension(_outputPath, ".m3u"), M3UContents(OutputStyle)); + bool fNeedAlbumArtist = false; + for (int iTrack = 1; iTrack < TrackCount; iTrack++) + if (_tracks[iTrack].Artist != _tracks[0].Artist) + fNeedAlbumArtist = true; if (_audioEncoderType != AudioEncoderType.NoAudio) for (int iTrack = 0; iTrack < TrackCount; iTrack++) { @@ -3175,13 +3554,18 @@ return processor.Go(); uint temp; fileInfo.Tag.TrackCount = (uint)TrackCount; fileInfo.Tag.Track = (uint)iTrack + 1; - //fileInfo.Tag.Title = _tracks[iTrack]._fileInfo != null ? _tracks[iTrack]._fileInfo.Tag.Title : _tracks[iTrack].Title; - fileInfo.Tag.Title = _tracks[iTrack].Title != "" ? _tracks[iTrack].Title : _tracks[iTrack]._fileInfo.Tag.Title; - if (fileInfo.Tag.Album == null && Title != "") fileInfo.Tag.Album = Title; - if (fileInfo.Tag.Performers.Length == 0 && _tracks[iTrack].Artist != "") fileInfo.Tag.Performers = new string[] { _tracks[iTrack].Artist }; - if (fileInfo.Tag.Performers.Length == 0 && Artist != "") fileInfo.Tag.Performers = new string[] { Artist }; - if (fileInfo.Tag.AlbumArtists.Length == 0 && Artist != "") fileInfo.Tag.AlbumArtists = new string[] { Artist }; - if (fileInfo.Tag.Genres.Length == 0 && Genre != "") fileInfo.Tag.Genres = new string[] { Genre }; + if (fileInfo.Tag.Title == null && _tracks[iTrack].Title != "") + fileInfo.Tag.Title = _tracks[iTrack].Title; + if (fileInfo.Tag.Album == null && Title != "") + fileInfo.Tag.Album = Title; + if (fileInfo.Tag.Performers.Length == 0 && _tracks[iTrack].Artist != "") + fileInfo.Tag.Performers = new string[] { _tracks[iTrack].Artist }; + if (fileInfo.Tag.Performers.Length == 0 && Artist != "") + fileInfo.Tag.Performers = new string[] { Artist }; + if (fNeedAlbumArtist && fileInfo.Tag.AlbumArtists.Length == 0 && Artist != "") + fileInfo.Tag.AlbumArtists = new string[] { Artist }; + if (fileInfo.Tag.Genres.Length == 0 && Genre != "") + fileInfo.Tag.Genres = new string[] { Genre }; if (fileInfo.Tag.DiscCount == 0 && TotalDiscs != "" && uint.TryParse(TotalDiscs, out temp)) fileInfo.Tag.DiscCount = temp; if (fileInfo.Tag.Disc == 0 && DiscNumber != "" && uint.TryParse(DiscNumber, out temp)) @@ -3192,8 +3576,12 @@ return processor.Go(); if (_config.copyBasicTags && sourceFileInfo != null) { - fileInfo.Tag.DiscCount = sourceFileInfo.Tag.DiscCount; - fileInfo.Tag.Disc = sourceFileInfo.Tag.Disc; + if (fileInfo.Tag.Title == null && _tracks[iTrack]._fileInfo != null) + fileInfo.Tag.Title = _tracks[iTrack]._fileInfo.Tag.Title; + if (fileInfo.Tag.DiscCount == 0) + fileInfo.Tag.DiscCount = sourceFileInfo.Tag.DiscCount; + if (fileInfo.Tag.Disc == 0) + fileInfo.Tag.Disc = sourceFileInfo.Tag.Disc; if (fileInfo.Tag.Performers.Length == 0) fileInfo.Tag.Performers = sourceFileInfo.Tag.Performers; if (fileInfo.Tag.AlbumArtists.Length == 0) @@ -3206,15 +3594,7 @@ return processor.Go(); fileInfo.Tag.Genres = sourceFileInfo.Tag.Genres; } - if (_config.extractAlbumArt && sourceFileInfo != null && sourceFileInfo.Tag.Pictures.Length > 0) - ExtractCover(sourceFileInfo); - - if (_config.copyAlbumArt && sourceFileInfo != null) - fileInfo.Tag.Pictures = sourceFileInfo.Tag.Pictures; - - if (_config.embedAlbumArt && fileInfo.Tag.Pictures.Length == 0 && _inputDir != null) - EmbedCover(fileInfo); - + ProcessAlbumArt(fileInfo); fileInfo.Save(); } } @@ -3254,50 +3634,92 @@ return processor.Go(); return b; } - public void ExtractCover(TagLib.File fileInfo) + public void ProcessAlbumArt(TagLib.File destFileInfo) { - string imgPath = Path.Combine(OutputDir, "Folder.jpg"); + ResizeAlbumArt(); + ExtractAlbumArt(); + if ((_config.embedAlbumArt || _config.copyAlbumArt) && _albumArt != null) + destFileInfo.Tag.Pictures = _albumArt; + } + + public void ExtractAlbumArt() + { + if (!_config.extractAlbumArt || _albumArt == null || _albumArt.Length == 0) + return; + + string imgPath = Path.Combine(OutputDir, AlArtFileName); if (File.Exists(imgPath)) return; - foreach (TagLib.IPicture picture in fileInfo.Tag.Pictures) - { - if (picture.Type == TagLib.PictureType.FrontCover) + foreach (TagLib.IPicture picture in _albumArt) + using (FileStream file = new FileStream(imgPath, FileMode.CreateNew, FileAccess.Write, FileShare.Read)) { - if (picture.MimeType == "image/jpeg") - { - using (FileStream file = new FileStream(imgPath, FileMode.CreateNew, FileAccess.Write, FileShare.Read)) - { - file.Write(picture.Data.Data, 0, picture.Data.Count); - return; - } - } + file.Write(picture.Data.Data, 0, picture.Data.Count); + return; } - } } - public void EmbedCover(TagLib.File fileInfo) + public void LoadAlbumArt(TagLib.File fileInfo) { - string imgPath = Path.Combine(_inputDir, "Folder.jpg"); - if (!File.Exists(imgPath)) - return; - using (Image img = Image.FromFile(imgPath)) + if ((_config.extractAlbumArt || _config.copyAlbumArt) && fileInfo != null) + foreach (TagLib.IPicture picture in fileInfo.Tag.Pictures) + if (picture.Type == TagLib.PictureType.FrontCover) + if (picture.MimeType == "image/jpeg") + { + _albumArt = new TagLib.IPicture[] { picture }; + return; + } + if ((_config.extractAlbumArt || _config.embedAlbumArt) && _inputDir != null) { - if (img.Width > _config.maxAlbumArtSize || img.Height > _config.maxAlbumArtSize) - { - using (Bitmap small = resizeImage(img, new Size(_config.maxAlbumArtSize, _config.maxAlbumArtSize))) + string imgPath = Path.Combine(_inputDir, "folder.jpg"); + if (!File.Exists(imgPath)) + imgPath = Path.Combine(_inputDir, "cover.jpg"); + if (!File.Exists(imgPath)) + return; + _albumArt = new TagLib.IPicture[] { new TagLib.Picture(imgPath) }; + } + } + + public void ResizeAlbumArt() + { + if (_albumArt == null) + return; + foreach (TagLib.IPicture picture in _albumArt) + using (MemoryStream imageStream = new MemoryStream(picture.Data.Data, 0, picture.Data.Count)) + using (Image img = Image.FromStream(imageStream)) + if (img.Width > _config.maxAlbumArtSize || img.Height > _config.maxAlbumArtSize) { + using (Bitmap small = resizeImage(img, new Size(_config.maxAlbumArtSize, _config.maxAlbumArtSize))) using (MemoryStream encoded = new MemoryStream()) { //System.Drawing.Imaging.EncoderParameters encoderParams = new EncoderParameters(1); //encoderParams.Param[0] = new System.Drawing.Imaging.EncoderParameter(Encoder.Quality, quality); small.Save(encoded, System.Drawing.Imaging.ImageFormat.Jpeg); - fileInfo.Tag.Pictures = new TagLib.Picture[] { new TagLib.Picture(new TagLib.ByteVector(encoded.ToArray())) }; + picture.Data = new TagLib.ByteVector(encoded.ToArray()); + picture.MimeType = "image/jpeg"; } } - } - else - fileInfo.Tag.Pictures = new TagLib.Picture[] { new TagLib.Picture(imgPath) }; + } + + public TagLib.IPicture[] AlbumArt + { + get + { + return _albumArt; + } + } + + public Image Cover + { + get + { + if (AlbumArt == null || AlbumArt.Length == 0) + return null; + TagLib.IPicture picture = AlbumArt[0]; + using (MemoryStream imageStream = new MemoryStream(picture.Data.Data, 0, picture.Data.Count)) + try { return Image.FromStream(imageStream); } + catch { } + return null; } } @@ -3342,7 +3764,7 @@ return processor.Go(); { if (!Directory.Exists(OutputDir)) Directory.CreateDirectory(OutputDir); - StreamWriter sw = new StreamWriter(Path.ChangeExtension(_outputPath, _config.arLogExtension), + StreamWriter sw = new StreamWriter(Path.Combine(OutputDir, ArLogFileName), false, CUESheet.Encoding); GenerateAccurateRipLog(sw); sw.Close(); @@ -4076,6 +4498,30 @@ return processor.Go(); } } + public string ArLogFileName + { + get + { + return _arLogFileName; + } + set + { + _arLogFileName = value; + } + } + + public string AlArtFileName + { + get + { + return _alArtFileName; + } + set + { + _alArtFileName = value; + } + } + public NameValueCollection Tags { get @@ -4462,6 +4908,61 @@ return processor.Go(); } } + public string ExecuteScript(CUEToolsScript script) + { + if (!script.builtin) + return ExecuteScript(script.code); + + switch (script.name) + { + case "default": + return Go(); + case "only if found": + return ArVerify.AccResult != HttpStatusCode.OK ? WriteReport() : Go(); + case "fix offset": + { + if (ArVerify.AccResult != HttpStatusCode.OK) + return WriteReport(); + + WriteOffset = 0; + Action = CUEAction.Verify; + string status = Go(); + + uint tracksMatch; + int bestOffset; + FindBestOffset(Config.fixOffsetMinimumConfidence, !Config.fixOffsetToNearest, out tracksMatch, out bestOffset); + if (tracksMatch * 100 >= Config.fixOffsetMinimumTracksPercent * TrackCount) + { + WriteOffset = bestOffset; + Action = CUEAction.VerifyAndConvert; + status = Go(); + } + return status; + } + + case "encode if verified": + { + if (ArVerify.AccResult != HttpStatusCode.OK) + return WriteReport(); + + Action = CUEAction.Verify; + string status = Go(); + + uint tracksMatch; + int bestOffset; + FindBestOffset(Config.encodeWhenConfidence, false, out tracksMatch, out bestOffset); + if (tracksMatch * 100 >= Config.encodeWhenPercent * TrackCount && (!_config.encodeWhenZeroOffset || bestOffset == 0)) + { + Action = CUEAction.VerifyAndConvert; + status = Go(); + } + return status; + } + } + + return "internal error"; + } + public string ExecuteScript(string script) { AsmHelper helper = CompileScript(script); diff --git a/CUETools.Processor/frmProperties.Designer.cs b/CUETools.Processor/frmProperties.Designer.cs index 70fc69e..1a1100d 100644 --- a/CUETools.Processor/frmProperties.Designer.cs +++ b/CUETools.Processor/frmProperties.Designer.cs @@ -41,6 +41,10 @@ namespace CUETools.Processor this.textCatalog = new System.Windows.Forms.TextBox(); this.label4 = new System.Windows.Forms.Label(); this.label5 = new System.Windows.Forms.Label(); + this.labelCD = new System.Windows.Forms.Label(); + this.textBoxDiscNumber = new System.Windows.Forms.TextBox(); + this.textBoxTotalDiscs = new System.Windows.Forms.TextBox(); + this.labelSlash = new System.Windows.Forms.Label(); this.SuspendLayout(); // // textArtist @@ -108,12 +112,36 @@ namespace CUETools.Processor resources.ApplyResources(this.label5, "label5"); this.label5.Name = "label5"; // + // labelCD + // + resources.ApplyResources(this.labelCD, "labelCD"); + this.labelCD.Name = "labelCD"; + // + // textBoxDiscNumber + // + resources.ApplyResources(this.textBoxDiscNumber, "textBoxDiscNumber"); + this.textBoxDiscNumber.Name = "textBoxDiscNumber"; + // + // textBoxTotalDiscs + // + resources.ApplyResources(this.textBoxTotalDiscs, "textBoxTotalDiscs"); + this.textBoxTotalDiscs.Name = "textBoxTotalDiscs"; + // + // labelSlash + // + resources.ApplyResources(this.labelSlash, "labelSlash"); + this.labelSlash.Name = "labelSlash"; + // // frmProperties // this.AcceptButton = this.button1; resources.ApplyResources(this, "$this"); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.CancelButton = this.button2; + this.Controls.Add(this.labelSlash); + this.Controls.Add(this.textBoxTotalDiscs); + this.Controls.Add(this.textBoxDiscNumber); + this.Controls.Add(this.labelCD); this.Controls.Add(this.label5); this.Controls.Add(this.label4); this.Controls.Add(this.textCatalog); @@ -148,5 +176,9 @@ namespace CUETools.Processor private System.Windows.Forms.TextBox textCatalog; private System.Windows.Forms.Label label4; private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label labelCD; + private System.Windows.Forms.TextBox textBoxDiscNumber; + private System.Windows.Forms.TextBox textBoxTotalDiscs; + private System.Windows.Forms.Label labelSlash; } } \ No newline at end of file diff --git a/CUETools.Processor/frmProperties.cs b/CUETools.Processor/frmProperties.cs index f6fca03..4ef5916 100644 --- a/CUETools.Processor/frmProperties.cs +++ b/CUETools.Processor/frmProperties.cs @@ -23,6 +23,8 @@ namespace CUETools.Processor textYear.Text = _cueSheet.Year; textGenre.Text = _cueSheet.Genre; textCatalog.Text = _cueSheet.Catalog; + textBoxDiscNumber.Text = _cueSheet.DiscNumber; + textBoxTotalDiscs.Text = _cueSheet.TotalDiscs; } public CUESheet CUE @@ -41,11 +43,16 @@ namespace CUETools.Processor private void button1_Click(object sender, EventArgs e) { + foreach (TrackInfo track in _cueSheet.Tracks) + if (track.Artist == _cueSheet.Artist) + track.Artist = textArtist.Text; _cueSheet.Artist = textArtist.Text; _cueSheet.Title = textTitle.Text; _cueSheet.Year = textYear.Text; _cueSheet.Genre = textGenre.Text; _cueSheet.Catalog = textCatalog.Text; + _cueSheet.DiscNumber = textBoxDiscNumber.Text; + _cueSheet.TotalDiscs = textBoxTotalDiscs.Text; } } } \ No newline at end of file diff --git a/CUETools.Processor/frmProperties.resx b/CUETools.Processor/frmProperties.resx index 5a623d2..3781f6e 100644 --- a/CUETools.Processor/frmProperties.resx +++ b/CUETools.Processor/frmProperties.resx @@ -126,7 +126,7 @@ 48, 12 - 374, 20 + 375, 20 @@ -142,7 +142,7 @@ $this - 11 + 15 True @@ -169,7 +169,7 @@ $this - 10 + 14 True @@ -199,7 +199,7 @@ $this - 8 + 12 Top, Left, Right @@ -208,7 +208,7 @@ 48, 38 - 374, 20 + 375, 20 2 @@ -223,7 +223,7 @@ $this - 9 + 13 347, 90 @@ -247,7 +247,7 @@ $this - 7 + 11 266, 90 @@ -271,7 +271,7 @@ $this - 6 + 10 True @@ -298,7 +298,7 @@ $this - 5 + 9 48, 64 @@ -319,7 +319,7 @@ $this - 4 + 8 163, 64 @@ -340,7 +340,7 @@ $this - 3 + 7 318, 64 @@ -361,7 +361,7 @@ $this - 2 + 6 True @@ -388,7 +388,7 @@ $this - 1 + 5 True @@ -415,6 +415,102 @@ $this + 4 + + + True + + + 12, 95 + + + 22, 13 + + + 16 + + + CD + + + labelCD + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 3 + + + 48, 92 + + + 50, 20 + + + 17 + + + textBoxDiscNumber + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 2 + + + 125, 92 + + + 50, 20 + + + 18 + + + textBoxTotalDiscs + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 1 + + + True + + + 107, 95 + + + 12, 13 + + + 19 + + + / + + + labelSlash + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + 0 @@ -424,7 +520,7 @@ 6, 13 - 434, 120 + 435, 127 CenterParent diff --git a/CUETools/CUETools.csproj b/CUETools/CUETools.csproj index e26b42b..64f6ffe 100644 --- a/CUETools/CUETools.csproj +++ b/CUETools/CUETools.csproj @@ -279,10 +279,21 @@ + + + + + + + + + + + diff --git a/CUETools/CUETools.sln b/CUETools/CUETools.sln index e693497..7744085 100644 --- a/CUETools/CUETools.sln +++ b/CUETools/CUETools.sln @@ -227,8 +227,8 @@ Global {4911BD82-49EF-4858-8B51-5394F86739A4}.Release|Any CPU.Build.0 = Release|Any CPU {4911BD82-49EF-4858-8B51-5394F86739A4}.Release|Mixed Platforms.ActiveCfg = Release|x64 {4911BD82-49EF-4858-8B51-5394F86739A4}.Release|Mixed Platforms.Build.0 = Release|x64 - {4911BD82-49EF-4858-8B51-5394F86739A4}.Release|x64.ActiveCfg = Release|x64 - {4911BD82-49EF-4858-8B51-5394F86739A4}.Release|x64.Build.0 = Release|x64 + {4911BD82-49EF-4858-8B51-5394F86739A4}.Release|x64.ActiveCfg = Release|Any CPU + {4911BD82-49EF-4858-8B51-5394F86739A4}.Release|x64.Build.0 = Release|Any CPU {4911BD82-49EF-4858-8B51-5394F86739A4}.Release|x86.ActiveCfg = Release|x86 {4911BD82-49EF-4858-8B51-5394F86739A4}.Release|x86.Build.0 = Release|x86 {32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU diff --git a/CUETools/Program.cs b/CUETools/Program.cs index a214828..3dce6aa 100644 --- a/CUETools/Program.cs +++ b/CUETools/Program.cs @@ -14,14 +14,12 @@ namespace JDP { [STAThread] static void Main(string[] args) { - if (args.Length > 1 && (args[0] == "/verify" || args[0] == "/convert")) + if (args.Length > 1 && args[0].Length > 1 && args[0][0] == '/') { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); frmBatch batch = new frmBatch(); - batch.AccurateRip = - args[0] == "/convert" ? CUEAction.VerifyAndConvert : - CUEAction.Verify; + batch.Profile = args[0].Substring(1); if (args.Length == 2 && args[1][0] != '@') batch.InputPath = args[1]; diff --git a/CUETools/Properties/Resources.Designer.cs b/CUETools/Properties/Resources.Designer.cs index b301aba..0a96f7b 100644 --- a/CUETools/Properties/Resources.Designer.cs +++ b/CUETools/Properties/Resources.Designer.cs @@ -60,13 +60,6 @@ namespace JDP.Properties { } } - internal static System.Drawing.Bitmap accuraterip { - get { - object obj = ResourceManager.GetObject("accuraterip", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - internal static System.Drawing.Bitmap accuraterip16 { get { object obj = ResourceManager.GetObject("accuraterip16", resourceCulture); @@ -88,6 +81,13 @@ namespace JDP.Properties { } } + internal static System.Drawing.Bitmap basket { + get { + object obj = ResourceManager.GetObject("basket", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + internal static System.Drawing.Bitmap cog { get { object obj = ResourceManager.GetObject("cog", resourceCulture); @@ -116,6 +116,27 @@ namespace JDP.Properties { } } + internal static System.Drawing.Bitmap delete { + get { + object obj = ResourceManager.GetObject("delete", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + internal static System.Drawing.Bitmap disk { + get { + object obj = ResourceManager.GetObject("disk", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + internal static System.Drawing.Bitmap find { + get { + object obj = ResourceManager.GetObject("find", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + internal static System.Drawing.Bitmap flac { get { object obj = ResourceManager.GetObject("flac", resourceCulture); @@ -179,6 +200,13 @@ namespace JDP.Properties { } } + internal static System.Drawing.Bitmap freedb16 { + get { + object obj = ResourceManager.GetObject("freedb16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized string similar to &Go. /// @@ -209,6 +237,13 @@ namespace JDP.Properties { } } + internal static System.Drawing.Bitmap link_go { + get { + object obj = ResourceManager.GetObject("link_go", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + internal static System.Drawing.Icon mp3 { get { object obj = ResourceManager.GetObject("mp3", resourceCulture); @@ -237,6 +272,13 @@ namespace JDP.Properties { } } + internal static System.Drawing.Bitmap report { + get { + object obj = ResourceManager.GetObject("report", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + internal static System.Drawing.Bitmap settings { get { object obj = ResourceManager.GetObject("settings", resourceCulture); @@ -283,6 +325,13 @@ namespace JDP.Properties { } } + internal static System.Drawing.Bitmap world_go { + get { + object obj = ResourceManager.GetObject("world_go", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + internal static System.Drawing.Bitmap wv { get { object obj = ResourceManager.GetObject("wv", resourceCulture); diff --git a/CUETools/Properties/Resources.resx b/CUETools/Properties/Resources.resx index 2ffebd6..1343c04 100644 --- a/CUETools/Properties/Resources.resx +++ b/CUETools/Properties/Resources.resx @@ -118,103 +118,124 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ..\resources\accuraterip_16.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\ipod_sound.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\wv.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - Stop - - - ..\Resources\musicbrainz.ico;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - &Go - - - Verify - - - ..\Resources\cog.ico;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\wav.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\settings.ico;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\wave.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\freedb.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\cue.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\AR.ico;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\freedb16.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\icon-wv.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\accuraterip.jpg;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\flac.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\AR.ico;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\info2.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\ape.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\find.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\musicbrainz.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\tta.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\cog.ico;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\flac.ico;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\flac.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\freedb.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\information.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\cue2.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\cue3.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\mp3.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\ogg.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\more\icons\folder.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + Verify ..\Resources\more\icons\folder_add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\more\icons\folder_delete.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\musicbrainz.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\more\icons\folder_feed.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\settings.ico;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + Stop + + + ..\Resources\world_go.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\freedb.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\more\icons\folder_delete.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\freedb.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + &Go + + + ..\Resources\wav.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\mp3.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\wv.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\cue.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ape.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\musicbrainz.ico;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\link_go.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\basket.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\information.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\tta.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ogg.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\cue2.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\wave.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ipod_sound.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\cue3.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\report.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\more\icons\folder_page.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\more\icons\folder.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\disk.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\resources\accuraterip_16.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\delete.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/CUETools/frmBatch.cs b/CUETools/frmBatch.cs index 10559b3..282f18c 100644 --- a/CUETools/frmBatch.cs +++ b/CUETools/frmBatch.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Collections.Specialized; using System.ComponentModel; using System.Drawing; using System.Text; @@ -17,9 +18,6 @@ namespace JDP { InitializeComponent(); _config = new CUEConfig(); - _cueStyle = CUEStyle.SingleFile; - _audioFormat = "wav"; - _accurateRip = CUEAction.Verify; _batchPaths = new List(); } @@ -34,20 +32,19 @@ namespace JDP set { pathIn = value; } } - public CUEAction AccurateRip + public string Profile { - get { return _accurateRip; } - set { _accurateRip = value; } + get { return _profileName; } + set { _profileName = value; } } + CUEConfig _config; + CUEToolsProfile _profile = null; + string _profileName = "verify"; Thread _workThread; CUESheet _workClass; - CUEConfig _config; - CUEStyle _cueStyle; - string _audioFormat; string pathIn; string pathOut; - CUEAction _accurateRip; bool _reducePriority; DateTime _startedAt; List _batchPaths; @@ -107,6 +104,7 @@ namespace JDP private void WriteAudioFilesThread(object o) { CUESheet cueSheet = (CUESheet)o; + CUEToolsScript script = _profile._script == null || !_config.scripts.ContainsKey(_profile._script) ? null : _config.scripts[_profile._script]; try { @@ -119,51 +117,34 @@ namespace JDP textBox1.Text += "Processing " + pathIn + ":\r\n"; textBox1.Select(0, 0); - string cueName; - if (!File.Exists(pathIn)) - { - if (!Directory.Exists(pathIn)) - throw new Exception("Input CUE Sheet not found."); - if (!pathIn.EndsWith(new string(Path.DirectorySeparatorChar, 1))) - pathIn = pathIn + Path.DirectorySeparatorChar; - cueName = Path.GetFileNameWithoutExtension(Path.GetDirectoryName(pathIn) ?? pathIn) + ".cue"; - } - else - cueName = Path.GetFileNameWithoutExtension(pathIn) + ".cue"; + if (!File.Exists(pathIn) && !Directory.Exists(pathIn)) + throw new Exception("Input CUE Sheet not found."); - bool outputAudio = _accurateRip != CUEAction.Verify; - cueSheet.Action = _accurateRip; - cueSheet.OutputStyle = _cueStyle; + cueSheet.Action = _profile._action; + cueSheet.OutputStyle = _profile._CUEStyle; + cueSheet.WriteOffset = _profile._writeOffset; cueSheet.Open(pathIn); cueSheet.Lookup(); - if (outputAudio) - { - bool pathFound = false; - for (int i = 0; i < 20; i++) - { - string outDir = Path.Combine(Path.GetDirectoryName(pathIn) ?? pathIn, "CUEToolsOutput" + (i > 0 ? String.Format("({0})", i) : "")); - if (!Directory.Exists(outDir)) - { - Directory.CreateDirectory(outDir); - pathOut = Path.Combine(outDir, cueName); - pathFound = true; - break; - } - } - if (!pathFound) - throw new Exception("Could not create a folder."); - } - else - pathOut = Path.Combine(Path.GetDirectoryName(pathIn) ?? pathIn, cueName); - cueSheet.GenerateFilenames(AudioEncoderType.Lossless, _audioFormat, pathOut); - if (outputAudio) - { - if (_cueStyle == CUEStyle.SingleFileWithCUE) - cueSheet.SingleFilename = Path.ChangeExtension(Path.GetFileName(pathOut), "." + _audioFormat); - } + + pathOut = CUESheet.GenerateUniqueOutputPath(_config, + _profile._outputTemplate, + _profile._CUEStyle == CUEStyle.SingleFileWithCUE ? "." + _profile._outputAudioFormat : ".cue", + _profile._action, + new NameValueCollection(), + pathIn, + cueSheet); + if (pathOut == "" || (_profile._action != CUEAction.Verify && File.Exists(pathOut))) + throw new Exception("Could not generate output path."); + + cueSheet.GenerateFilenames(_profile._outputAudioType, _profile._outputAudioFormat, pathOut); + if (_profile._action != CUEAction.Verify && _profile._CUEStyle == CUEStyle.SingleFileWithCUE) + cueSheet.SingleFilename = Path.ChangeExtension(Path.GetFileName(pathOut), "." + _profile._outputAudioFormat); cueSheet.UsePregapForFirstTrackInSingleFile = false; - cueSheet.Go(); + if (script == null) + cueSheet.Go(); + else + /* status = */ cueSheet.ExecuteScript(script); this.Invoke((MethodInvoker)delegate() { if (_batchPaths.Count == 0) @@ -261,17 +242,17 @@ namespace JDP { textBox1.Hide(); SettingsReader sr = new SettingsReader("CUE Tools", "settings.txt", Application.ExecutablePath); - _config.Load(sr); _reducePriority = sr.LoadBoolean("ReducePriority") ?? true; - _cueStyle = (CUEStyle?)sr.LoadInt32("CUEStyle", null, null) ?? CUEStyle.SingleFileWithCUE; - _audioFormat = sr.Load("OutputAudioFmt") ?? "flac"; - //_lossyWAV = sr.LoadBoolean("LossyWav") ?? false; + + _profile = new CUEToolsProfile(_profileName); + sr = new SettingsReader("CUE Tools", string.Format("profile-{0}.txt", _profileName), Application.ExecutablePath); + _profile.Load(sr); if (_reducePriority) Process.GetCurrentProcess().PriorityClass = System.Diagnostics.ProcessPriorityClass.Idle; - if (_accurateRip != CUEAction.Verify) + if (_profile._action != CUEAction.Verify) txtOutputFile.Show(); StartConvert(); diff --git a/CUETools/frmCUETools.Designer.cs b/CUETools/frmCUETools.Designer.cs index 4ff2611..c876517 100644 --- a/CUETools/frmCUETools.Designer.cs +++ b/CUETools/frmCUETools.Designer.cs @@ -26,11 +26,31 @@ namespace JDP { this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmCUETools)); this.toolStripContainer1 = new System.Windows.Forms.ToolStripContainer(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabelProcessed = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabelAR = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripProgressBar1 = new System.Windows.Forms.ToolStripProgressBar(); + this.toolStripProgressBar2 = new System.Windows.Forms.ToolStripProgressBar(); this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); - this.grpInput = new System.Windows.Forms.GroupBox(); this.textBatchReport = new System.Windows.Forms.TextBox(); + this.grpInput = new System.Windows.Forms.GroupBox(); this.fileSystemTreeView1 = new CUEControls.FileSystemTreeView(); this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); + this.groupBoxMode = new System.Windows.Forms.GroupBox(); + this.tableLayoutPanelCUEStyle = new System.Windows.Forms.TableLayoutPanel(); + this.checkBoxUseAccurateRip = new System.Windows.Forms.CheckBox(); + this.checkBoxUseFreeDb = new System.Windows.Forms.CheckBox(); + this.rbTracks = new System.Windows.Forms.RadioButton(); + this.rbEmbedCUE = new System.Windows.Forms.RadioButton(); + this.rbSingleFile = new System.Windows.Forms.RadioButton(); + this.checkBoxUseMusicBrainz = new System.Windows.Forms.CheckBox(); + this.toolStripCorrectorFormat = new System.Windows.Forms.ToolStrip(); + this.toolStripButtonCorrectorOverwrite = new System.Windows.Forms.ToolStripButton(); + this.toolStripDropDownButtonCorrectorMode = new System.Windows.Forms.ToolStripDropDownButton(); + this.toolStripMenuItemCorrectorModeLocateFiles = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItemCorrectorModeChangeExtension = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripDropDownButtonCorrectorFormat = new System.Windows.Forms.ToolStripDropDownButton(); this.grpAudioOutput = new System.Windows.Forms.GroupBox(); this.labelEncoderMaxMode = new System.Windows.Forms.Label(); this.labelEncoderMinMode = new System.Windows.Forms.Label(); @@ -43,94 +63,87 @@ namespace JDP { this.radioButtonAudioLossless = new System.Windows.Forms.RadioButton(); this.labelFormat = new System.Windows.Forms.Label(); this.comboBoxAudioFormat = new System.Windows.Forms.ComboBox(); + this.pictureBoxMotd = new System.Windows.Forms.PictureBox(); this.grpOutputPathGeneration = new System.Windows.Forms.GroupBox(); + this.tableLayoutPanelPaths = new System.Windows.Forms.TableLayoutPanel(); this.labelOutputTemplate = new System.Windows.Forms.Label(); - this.labelOutput = new System.Windows.Forms.Label(); - this.labelInput = new System.Windows.Forms.Label(); - this.checkBoxDontGenerate = new System.Windows.Forms.CheckBox(); this.comboBoxOutputFormat = new System.Windows.Forms.ComboBox(); this.txtInputPath = new System.Windows.Forms.TextBox(); - this.btnBrowseOutput = new System.Windows.Forms.Button(); this.txtOutputPath = new System.Windows.Forms.TextBox(); + this.toolStripInput = new System.Windows.Forms.ToolStrip(); + this.toolStripLabelInput = new System.Windows.Forms.ToolStripLabel(); + this.toolStripSplitButtonInputBrowser = new System.Windows.Forms.ToolStripSplitButton(); + this.toolStripMenuItemInputBrowserFiles = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItemInputBrowserMulti = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItemInputBrowserDrag = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItemInputBrowserHide = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripOutput = new System.Windows.Forms.ToolStrip(); + this.toolStripLabelOutput = new System.Windows.Forms.ToolStripLabel(); + this.toolStripSplitButtonOutputBrowser = new System.Windows.Forms.ToolStripSplitButton(); + this.toolStripMenuItemOutputBrowse = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItemOutputManual = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItemOutputTemplate = new System.Windows.Forms.ToolStripMenuItem(); this.grpAction = new System.Windows.Forms.GroupBox(); - this.checkBoxAdvancedMode = new System.Windows.Forms.CheckBox(); this.comboBoxScript = new System.Windows.Forms.ComboBox(); this.rbActionCorrectFilenames = new System.Windows.Forms.RadioButton(); this.rbActionCreateCUESheet = new System.Windows.Forms.RadioButton(); - this.rbActionVerifyAndEncode = new System.Windows.Forms.RadioButton(); this.rbActionVerify = new System.Windows.Forms.RadioButton(); this.rbActionEncode = new System.Windows.Forms.RadioButton(); - this.groupBoxCorrector = new System.Windows.Forms.GroupBox(); - this.rbCorrectorLocateFiles = new System.Windows.Forms.RadioButton(); - this.rbCorrectorChangeExtension = new System.Windows.Forms.RadioButton(); - this.checkBoxCorrectorOverwrite = new System.Windows.Forms.CheckBox(); - this.labelCorrectorFormat = new System.Windows.Forms.Label(); - this.comboBoxCorrectorFormat = new System.Windows.Forms.ComboBox(); this.grpExtra = new System.Windows.Forms.GroupBox(); + this.tableLayoutPanel4 = new System.Windows.Forms.TableLayoutPanel(); + this.labelPregap = new System.Windows.Forms.Label(); + this.lblWriteOffset = new System.Windows.Forms.Label(); this.numericWriteOffset = new System.Windows.Forms.NumericUpDown(); this.txtPreGapLength = new System.Windows.Forms.MaskedTextBox(); - this.lblWriteOffset = new System.Windows.Forms.Label(); - this.labelPregap = new System.Windows.Forms.Label(); - this.txtDataTrackLength = new System.Windows.Forms.MaskedTextBox(); this.labelDataTrack = new System.Windows.Forms.Label(); - this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel(); - this.labelMotd = new System.Windows.Forms.Label(); - this.grpOutputStyle = new System.Windows.Forms.GroupBox(); - this.rbTracks = new System.Windows.Forms.RadioButton(); - this.rbEmbedCUE = new System.Windows.Forms.RadioButton(); - this.rbSingleFile = new System.Windows.Forms.RadioButton(); - this.grpFreedb = new System.Windows.Forms.GroupBox(); - this.rbFreedbAlways = new System.Windows.Forms.RadioButton(); - this.rbFreedbIf = new System.Windows.Forms.RadioButton(); - this.rbFreedbNever = new System.Windows.Forms.RadioButton(); - this.panel1 = new System.Windows.Forms.Panel(); - this.btnAbout = new System.Windows.Forms.Button(); - this.btnSettings = new System.Windows.Forms.Button(); + this.txtDataTrackLength = new System.Windows.Forms.MaskedTextBox(); + this.panelGo = new System.Windows.Forms.Panel(); this.btnConvert = new System.Windows.Forms.Button(); this.btnStop = new System.Windows.Forms.Button(); this.btnResume = new System.Windows.Forms.Button(); this.btnPause = new System.Windows.Forms.Button(); - this.toolStrip1 = new System.Windows.Forms.ToolStrip(); - this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); - this.toolStripButton1 = new System.Windows.Forms.ToolStripButton(); - this.toolStripButton2 = new System.Windows.Forms.ToolStripButton(); - this.toolStripButton3 = new System.Windows.Forms.ToolStripButton(); - this.toolStripButton4 = new System.Windows.Forms.ToolStripButton(); - this.toolStripButton5 = new System.Windows.Forms.ToolStripButton(); + this.toolStripMenu = new System.Windows.Forms.ToolStrip(); + this.toolStripDropDownButtonProfile = new System.Windows.Forms.ToolStripDropDownButton(); + this.toolStripTextBoxAddProfile = new System.Windows.Forms.ToolStripTextBox(); + this.toolStripMenuItemDeleteProfile = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); + this.defaultToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripButtonAbout = new System.Windows.Forms.ToolStripButton(); + this.toolStripButtonHelp = new System.Windows.Forms.ToolStripButton(); + this.toolStripButtonSettings = new System.Windows.Forms.ToolStripButton(); + this.toolStripButtonShowLog = new System.Windows.Forms.ToolStripButton(); this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); this.contextMenuStripFileTree = new System.Windows.Forms.ContextMenuStrip(this.components); this.SelectedNodeName = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); this.setAsMyMusicFolderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.resetToOriginalLocationToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.statusStrip1 = new System.Windows.Forms.StatusStrip(); - this.toolStripProgressBar2 = new System.Windows.Forms.ToolStripProgressBar(); - this.toolStripProgressBar1 = new System.Windows.Forms.ToolStripProgressBar(); - this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel(); - this.toolStripStatusLabelAR = new System.Windows.Forms.ToolStripStatusLabel(); - this.toolStripStatusLabelProcessed = new System.Windows.Forms.ToolStripStatusLabel(); this.toolStripContainer1.BottomToolStripPanel.SuspendLayout(); this.toolStripContainer1.ContentPanel.SuspendLayout(); - this.toolStripContainer1.LeftToolStripPanel.SuspendLayout(); + this.toolStripContainer1.TopToolStripPanel.SuspendLayout(); this.toolStripContainer1.SuspendLayout(); + this.statusStrip1.SuspendLayout(); this.tableLayoutPanel1.SuspendLayout(); this.grpInput.SuspendLayout(); this.tableLayoutPanel2.SuspendLayout(); + this.groupBoxMode.SuspendLayout(); + this.tableLayoutPanelCUEStyle.SuspendLayout(); + this.toolStripCorrectorFormat.SuspendLayout(); this.grpAudioOutput.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.trackBarEncoderMode)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxMotd)).BeginInit(); this.grpOutputPathGeneration.SuspendLayout(); + this.tableLayoutPanelPaths.SuspendLayout(); + this.toolStripInput.SuspendLayout(); + this.toolStripOutput.SuspendLayout(); this.grpAction.SuspendLayout(); - this.groupBoxCorrector.SuspendLayout(); this.grpExtra.SuspendLayout(); + this.tableLayoutPanel4.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericWriteOffset)).BeginInit(); - this.tableLayoutPanel3.SuspendLayout(); - this.grpOutputStyle.SuspendLayout(); - this.grpFreedb.SuspendLayout(); - this.panel1.SuspendLayout(); - this.toolStrip1.SuspendLayout(); + this.panelGo.SuspendLayout(); + this.toolStripMenu.SuspendLayout(); this.contextMenuStripFileTree.SuspendLayout(); - this.statusStrip1.SuspendLayout(); this.SuspendLayout(); // // toolStripContainer1 @@ -148,35 +161,85 @@ namespace JDP { // // toolStripContainer1.LeftToolStripPanel // - this.toolStripContainer1.LeftToolStripPanel.Controls.Add(this.toolStrip1); this.toolStripContainer1.LeftToolStripPanel.MaximumSize = new System.Drawing.Size(32, 0); + this.toolStripContainer1.LeftToolStripPanelVisible = false; this.toolStripContainer1.Name = "toolStripContainer1"; this.toolStripContainer1.RightToolStripPanelVisible = false; - this.toolStripContainer1.TopToolStripPanelVisible = false; + // + // toolStripContainer1.TopToolStripPanel + // + this.toolStripContainer1.TopToolStripPanel.BackColor = System.Drawing.SystemColors.GradientInactiveCaption; + this.toolStripContainer1.TopToolStripPanel.Controls.Add(this.toolStripMenu); + this.toolStripContainer1.TopToolStripPanel.RenderMode = System.Windows.Forms.ToolStripRenderMode.System; + // + // statusStrip1 + // + resources.ApplyResources(this.statusStrip1, "statusStrip1"); + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripStatusLabel1, + this.toolStripStatusLabelProcessed, + this.toolStripStatusLabelAR, + this.toolStripProgressBar1, + this.toolStripProgressBar2}); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.ShowItemToolTips = true; + // + // toolStripStatusLabel1 + // + this.toolStripStatusLabel1.Name = "toolStripStatusLabel1"; + resources.ApplyResources(this.toolStripStatusLabel1, "toolStripStatusLabel1"); + this.toolStripStatusLabel1.Spring = true; + // + // toolStripStatusLabelProcessed + // + this.toolStripStatusLabelProcessed.Name = "toolStripStatusLabelProcessed"; + resources.ApplyResources(this.toolStripStatusLabelProcessed, "toolStripStatusLabelProcessed"); + // + // toolStripStatusLabelAR + // + resources.ApplyResources(this.toolStripStatusLabelAR, "toolStripStatusLabelAR"); + this.toolStripStatusLabelAR.Image = global::JDP.Properties.Resources.AR; + this.toolStripStatusLabelAR.Name = "toolStripStatusLabelAR"; + this.toolStripStatusLabelAR.Padding = new System.Windows.Forms.Padding(0, 0, 5, 0); + // + // toolStripProgressBar1 + // + this.toolStripProgressBar1.AutoToolTip = true; + this.toolStripProgressBar1.Name = "toolStripProgressBar1"; + resources.ApplyResources(this.toolStripProgressBar1, "toolStripProgressBar1"); + this.toolStripProgressBar1.Style = System.Windows.Forms.ProgressBarStyle.Continuous; + // + // toolStripProgressBar2 + // + this.toolStripProgressBar2.AutoToolTip = true; + this.toolStripProgressBar2.Name = "toolStripProgressBar2"; + resources.ApplyResources(this.toolStripProgressBar2, "toolStripProgressBar2"); + this.toolStripProgressBar2.Style = System.Windows.Forms.ProgressBarStyle.Continuous; // // tableLayoutPanel1 // resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1"); + this.tableLayoutPanel1.Controls.Add(this.textBatchReport, 0, 1); this.tableLayoutPanel1.Controls.Add(this.grpInput, 0, 0); this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel2, 1, 0); this.tableLayoutPanel1.GrowStyle = System.Windows.Forms.TableLayoutPanelGrowStyle.AddColumns; this.tableLayoutPanel1.Name = "tableLayoutPanel1"; // - // grpInput - // - this.grpInput.Controls.Add(this.textBatchReport); - this.grpInput.Controls.Add(this.fileSystemTreeView1); - resources.ApplyResources(this.grpInput, "grpInput"); - this.grpInput.Name = "grpInput"; - this.grpInput.TabStop = false; - // // textBatchReport // + this.tableLayoutPanel1.SetColumnSpan(this.textBatchReport, 2); resources.ApplyResources(this.textBatchReport, "textBatchReport"); this.textBatchReport.Name = "textBatchReport"; this.textBatchReport.ReadOnly = true; this.textBatchReport.TabStop = false; // + // grpInput + // + this.grpInput.Controls.Add(this.fileSystemTreeView1); + resources.ApplyResources(this.grpInput, "grpInput"); + this.grpInput.Name = "grpInput"; + this.grpInput.TabStop = false; + // // fileSystemTreeView1 // this.fileSystemTreeView1.AllowDrop = true; @@ -207,15 +270,141 @@ namespace JDP { // tableLayoutPanel2 // resources.ApplyResources(this.tableLayoutPanel2, "tableLayoutPanel2"); - this.tableLayoutPanel2.Controls.Add(this.grpAudioOutput, 1, 1); + this.tableLayoutPanel2.Controls.Add(this.groupBoxMode, 1, 1); + this.tableLayoutPanel2.Controls.Add(this.grpAudioOutput, 2, 1); + this.tableLayoutPanel2.Controls.Add(this.pictureBoxMotd, 0, 2); this.tableLayoutPanel2.Controls.Add(this.grpOutputPathGeneration, 0, 0); this.tableLayoutPanel2.Controls.Add(this.grpAction, 0, 1); - this.tableLayoutPanel2.Controls.Add(this.groupBoxCorrector, 1, 2); - this.tableLayoutPanel2.Controls.Add(this.grpExtra, 0, 2); - this.tableLayoutPanel2.Controls.Add(this.tableLayoutPanel3, 2, 1); - this.tableLayoutPanel2.Controls.Add(this.panel1, 2, 2); + this.tableLayoutPanel2.Controls.Add(this.grpExtra, 1, 2); + this.tableLayoutPanel2.Controls.Add(this.panelGo, 2, 3); this.tableLayoutPanel2.Name = "tableLayoutPanel2"; // + // groupBoxMode + // + this.groupBoxMode.Controls.Add(this.tableLayoutPanelCUEStyle); + this.groupBoxMode.Controls.Add(this.toolStripCorrectorFormat); + resources.ApplyResources(this.groupBoxMode, "groupBoxMode"); + this.groupBoxMode.Name = "groupBoxMode"; + this.groupBoxMode.TabStop = false; + // + // tableLayoutPanelCUEStyle + // + resources.ApplyResources(this.tableLayoutPanelCUEStyle, "tableLayoutPanelCUEStyle"); + this.tableLayoutPanelCUEStyle.Controls.Add(this.checkBoxUseAccurateRip, 2, 4); + this.tableLayoutPanelCUEStyle.Controls.Add(this.checkBoxUseFreeDb, 1, 4); + this.tableLayoutPanelCUEStyle.Controls.Add(this.rbTracks, 0, 2); + this.tableLayoutPanelCUEStyle.Controls.Add(this.rbEmbedCUE, 0, 0); + this.tableLayoutPanelCUEStyle.Controls.Add(this.rbSingleFile, 0, 1); + this.tableLayoutPanelCUEStyle.Controls.Add(this.checkBoxUseMusicBrainz, 0, 4); + this.tableLayoutPanelCUEStyle.Name = "tableLayoutPanelCUEStyle"; + // + // checkBoxUseAccurateRip + // + resources.ApplyResources(this.checkBoxUseAccurateRip, "checkBoxUseAccurateRip"); + this.checkBoxUseAccurateRip.Image = global::JDP.Properties.Resources.AR; + this.checkBoxUseAccurateRip.MinimumSize = new System.Drawing.Size(0, 16); + this.checkBoxUseAccurateRip.Name = "checkBoxUseAccurateRip"; + this.toolTip1.SetToolTip(this.checkBoxUseAccurateRip, resources.GetString("checkBoxUseAccurateRip.ToolTip")); + this.checkBoxUseAccurateRip.UseVisualStyleBackColor = true; + this.checkBoxUseAccurateRip.CheckedChanged += new System.EventHandler(this.checkBoxUseAccurateRip_CheckedChanged); + // + // checkBoxUseFreeDb + // + resources.ApplyResources(this.checkBoxUseFreeDb, "checkBoxUseFreeDb"); + this.checkBoxUseFreeDb.Image = global::JDP.Properties.Resources.freedb16; + this.checkBoxUseFreeDb.MinimumSize = new System.Drawing.Size(0, 16); + this.checkBoxUseFreeDb.Name = "checkBoxUseFreeDb"; + this.toolTip1.SetToolTip(this.checkBoxUseFreeDb, resources.GetString("checkBoxUseFreeDb.ToolTip")); + this.checkBoxUseFreeDb.UseVisualStyleBackColor = true; + // + // rbTracks + // + resources.ApplyResources(this.rbTracks, "rbTracks"); + this.tableLayoutPanelCUEStyle.SetColumnSpan(this.rbTracks, 3); + this.rbTracks.Name = "rbTracks"; + this.rbTracks.TabStop = true; + this.toolTip1.SetToolTip(this.rbTracks, resources.GetString("rbTracks.ToolTip")); + this.rbTracks.UseVisualStyleBackColor = true; + // + // rbEmbedCUE + // + resources.ApplyResources(this.rbEmbedCUE, "rbEmbedCUE"); + this.tableLayoutPanelCUEStyle.SetColumnSpan(this.rbEmbedCUE, 3); + this.rbEmbedCUE.Name = "rbEmbedCUE"; + this.rbEmbedCUE.TabStop = true; + this.toolTip1.SetToolTip(this.rbEmbedCUE, resources.GetString("rbEmbedCUE.ToolTip")); + this.rbEmbedCUE.UseVisualStyleBackColor = true; + this.rbEmbedCUE.CheckedChanged += new System.EventHandler(this.rbEmbedCUE_CheckedChanged); + // + // rbSingleFile + // + resources.ApplyResources(this.rbSingleFile, "rbSingleFile"); + this.rbSingleFile.Checked = true; + this.tableLayoutPanelCUEStyle.SetColumnSpan(this.rbSingleFile, 3); + this.rbSingleFile.Name = "rbSingleFile"; + this.rbSingleFile.TabStop = true; + this.toolTip1.SetToolTip(this.rbSingleFile, resources.GetString("rbSingleFile.ToolTip")); + this.rbSingleFile.UseVisualStyleBackColor = true; + // + // checkBoxUseMusicBrainz + // + resources.ApplyResources(this.checkBoxUseMusicBrainz, "checkBoxUseMusicBrainz"); + this.checkBoxUseMusicBrainz.Image = global::JDP.Properties.Resources.musicbrainz; + this.checkBoxUseMusicBrainz.MinimumSize = new System.Drawing.Size(0, 16); + this.checkBoxUseMusicBrainz.Name = "checkBoxUseMusicBrainz"; + this.toolTip1.SetToolTip(this.checkBoxUseMusicBrainz, resources.GetString("checkBoxUseMusicBrainz.ToolTip")); + this.checkBoxUseMusicBrainz.UseVisualStyleBackColor = true; + // + // toolStripCorrectorFormat + // + resources.ApplyResources(this.toolStripCorrectorFormat, "toolStripCorrectorFormat"); + this.toolStripCorrectorFormat.BackColor = System.Drawing.Color.Transparent; + this.toolStripCorrectorFormat.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripButtonCorrectorOverwrite, + this.toolStripDropDownButtonCorrectorMode, + this.toolStripDropDownButtonCorrectorFormat}); + this.toolStripCorrectorFormat.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.Flow; + this.toolStripCorrectorFormat.Name = "toolStripCorrectorFormat"; + this.toolStripCorrectorFormat.RenderMode = System.Windows.Forms.ToolStripRenderMode.System; + this.toolStripCorrectorFormat.TabStop = true; + // + // toolStripButtonCorrectorOverwrite + // + this.toolStripButtonCorrectorOverwrite.AutoToolTip = false; + this.toolStripButtonCorrectorOverwrite.CheckOnClick = true; + this.toolStripButtonCorrectorOverwrite.Image = global::JDP.Properties.Resources.disk; + resources.ApplyResources(this.toolStripButtonCorrectorOverwrite, "toolStripButtonCorrectorOverwrite"); + this.toolStripButtonCorrectorOverwrite.Name = "toolStripButtonCorrectorOverwrite"; + // + // toolStripDropDownButtonCorrectorMode + // + this.toolStripDropDownButtonCorrectorMode.AutoToolTip = false; + this.toolStripDropDownButtonCorrectorMode.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripMenuItemCorrectorModeLocateFiles, + this.toolStripMenuItemCorrectorModeChangeExtension}); + resources.ApplyResources(this.toolStripDropDownButtonCorrectorMode, "toolStripDropDownButtonCorrectorMode"); + this.toolStripDropDownButtonCorrectorMode.Name = "toolStripDropDownButtonCorrectorMode"; + this.toolStripDropDownButtonCorrectorMode.DropDownItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.toolStripDropDownButtonCorrectorMode_DropDownItemClicked); + // + // toolStripMenuItemCorrectorModeLocateFiles + // + this.toolStripMenuItemCorrectorModeLocateFiles.Image = global::JDP.Properties.Resources.find; + this.toolStripMenuItemCorrectorModeLocateFiles.Name = "toolStripMenuItemCorrectorModeLocateFiles"; + resources.ApplyResources(this.toolStripMenuItemCorrectorModeLocateFiles, "toolStripMenuItemCorrectorModeLocateFiles"); + // + // toolStripMenuItemCorrectorModeChangeExtension + // + this.toolStripMenuItemCorrectorModeChangeExtension.Image = global::JDP.Properties.Resources.link_go; + this.toolStripMenuItemCorrectorModeChangeExtension.Name = "toolStripMenuItemCorrectorModeChangeExtension"; + resources.ApplyResources(this.toolStripMenuItemCorrectorModeChangeExtension, "toolStripMenuItemCorrectorModeChangeExtension"); + // + // toolStripDropDownButtonCorrectorFormat + // + this.toolStripDropDownButtonCorrectorFormat.AutoToolTip = false; + resources.ApplyResources(this.toolStripDropDownButtonCorrectorFormat, "toolStripDropDownButtonCorrectorFormat"); + this.toolStripDropDownButtonCorrectorFormat.Name = "toolStripDropDownButtonCorrectorFormat"; + this.toolStripDropDownButtonCorrectorFormat.DropDownItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.toolStripDropDownButtonCorrectorFormat_DropDownItemClicked); + // // grpAudioOutput // this.grpAudioOutput.Controls.Add(this.labelEncoderMaxMode); @@ -231,6 +420,7 @@ namespace JDP { this.grpAudioOutput.Controls.Add(this.comboBoxAudioFormat); resources.ApplyResources(this.grpAudioOutput, "grpAudioOutput"); this.grpAudioOutput.Name = "grpAudioOutput"; + this.tableLayoutPanel2.SetRowSpan(this.grpAudioOutput, 2); this.grpAudioOutput.TabStop = false; // // labelEncoderMaxMode @@ -310,50 +500,45 @@ namespace JDP { // comboBoxAudioFormat // resources.ApplyResources(this.comboBoxAudioFormat, "comboBoxAudioFormat"); + this.comboBoxAudioFormat.BackColor = System.Drawing.SystemColors.Window; this.comboBoxAudioFormat.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.comboBoxAudioFormat.FormattingEnabled = true; this.comboBoxAudioFormat.Name = "comboBoxAudioFormat"; this.toolTip1.SetToolTip(this.comboBoxAudioFormat, resources.GetString("comboBoxAudioFormat.ToolTip")); this.comboBoxAudioFormat.SelectedIndexChanged += new System.EventHandler(this.comboBoxAudioFormat_SelectedIndexChanged); // + // pictureBoxMotd + // + resources.ApplyResources(this.pictureBoxMotd, "pictureBoxMotd"); + this.pictureBoxMotd.Name = "pictureBoxMotd"; + this.tableLayoutPanel2.SetRowSpan(this.pictureBoxMotd, 2); + this.pictureBoxMotd.TabStop = false; + this.pictureBoxMotd.Click += new System.EventHandler(this.pictureBoxMotd_Click); + // // grpOutputPathGeneration // this.tableLayoutPanel2.SetColumnSpan(this.grpOutputPathGeneration, 3); - this.grpOutputPathGeneration.Controls.Add(this.labelOutputTemplate); - this.grpOutputPathGeneration.Controls.Add(this.labelOutput); - this.grpOutputPathGeneration.Controls.Add(this.labelInput); - this.grpOutputPathGeneration.Controls.Add(this.checkBoxDontGenerate); - this.grpOutputPathGeneration.Controls.Add(this.comboBoxOutputFormat); - this.grpOutputPathGeneration.Controls.Add(this.txtInputPath); - this.grpOutputPathGeneration.Controls.Add(this.btnBrowseOutput); - this.grpOutputPathGeneration.Controls.Add(this.txtOutputPath); + this.grpOutputPathGeneration.Controls.Add(this.tableLayoutPanelPaths); resources.ApplyResources(this.grpOutputPathGeneration, "grpOutputPathGeneration"); this.grpOutputPathGeneration.Name = "grpOutputPathGeneration"; this.grpOutputPathGeneration.TabStop = false; // + // tableLayoutPanelPaths + // + resources.ApplyResources(this.tableLayoutPanelPaths, "tableLayoutPanelPaths"); + this.tableLayoutPanelPaths.Controls.Add(this.labelOutputTemplate, 0, 2); + this.tableLayoutPanelPaths.Controls.Add(this.comboBoxOutputFormat, 1, 2); + this.tableLayoutPanelPaths.Controls.Add(this.txtInputPath, 1, 0); + this.tableLayoutPanelPaths.Controls.Add(this.txtOutputPath, 1, 1); + this.tableLayoutPanelPaths.Controls.Add(this.toolStripInput, 0, 0); + this.tableLayoutPanelPaths.Controls.Add(this.toolStripOutput, 0, 1); + this.tableLayoutPanelPaths.Name = "tableLayoutPanelPaths"; + // // labelOutputTemplate // resources.ApplyResources(this.labelOutputTemplate, "labelOutputTemplate"); this.labelOutputTemplate.Name = "labelOutputTemplate"; // - // labelOutput - // - resources.ApplyResources(this.labelOutput, "labelOutput"); - this.labelOutput.Name = "labelOutput"; - // - // labelInput - // - resources.ApplyResources(this.labelInput, "labelInput"); - this.labelInput.Name = "labelInput"; - // - // checkBoxDontGenerate - // - resources.ApplyResources(this.checkBoxDontGenerate, "checkBoxDontGenerate"); - this.checkBoxDontGenerate.Name = "checkBoxDontGenerate"; - this.toolTip1.SetToolTip(this.checkBoxDontGenerate, resources.GetString("checkBoxDontGenerate.ToolTip")); - this.checkBoxDontGenerate.UseVisualStyleBackColor = true; - this.checkBoxDontGenerate.CheckedChanged += new System.EventHandler(this.checkBoxDontGenerate_CheckedChanged); - // // comboBoxOutputFormat // resources.ApplyResources(this.comboBoxOutputFormat, "comboBoxOutputFormat"); @@ -366,55 +551,138 @@ namespace JDP { // txtInputPath // this.txtInputPath.AllowDrop = true; - resources.ApplyResources(this.txtInputPath, "txtInputPath"); this.txtInputPath.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend; this.txtInputPath.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.FileSystem; this.txtInputPath.BackColor = System.Drawing.SystemColors.Window; + resources.ApplyResources(this.txtInputPath, "txtInputPath"); this.txtInputPath.Name = "txtInputPath"; this.toolTip1.SetToolTip(this.txtInputPath, resources.GetString("txtInputPath.ToolTip")); this.txtInputPath.TextChanged += new System.EventHandler(this.txtInputPath_TextChanged); this.txtInputPath.DragDrop += new System.Windows.Forms.DragEventHandler(this.PathTextBox_DragDrop); this.txtInputPath.DragEnter += new System.Windows.Forms.DragEventHandler(this.PathTextBox_DragEnter); // - // btnBrowseOutput - // - resources.ApplyResources(this.btnBrowseOutput, "btnBrowseOutput"); - this.btnBrowseOutput.Name = "btnBrowseOutput"; - this.toolTip1.SetToolTip(this.btnBrowseOutput, resources.GetString("btnBrowseOutput.ToolTip")); - this.btnBrowseOutput.UseVisualStyleBackColor = true; - this.btnBrowseOutput.Click += new System.EventHandler(this.btnBrowseOutput_Click); - // // txtOutputPath // this.txtOutputPath.AllowDrop = true; - resources.ApplyResources(this.txtOutputPath, "txtOutputPath"); this.txtOutputPath.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend; this.txtOutputPath.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.FileSystem; + resources.ApplyResources(this.txtOutputPath, "txtOutputPath"); this.txtOutputPath.Name = "txtOutputPath"; this.toolTip1.SetToolTip(this.txtOutputPath, resources.GetString("txtOutputPath.ToolTip")); this.txtOutputPath.DragDrop += new System.Windows.Forms.DragEventHandler(this.PathTextBox_DragDrop); this.txtOutputPath.DragEnter += new System.Windows.Forms.DragEventHandler(this.PathTextBox_DragEnter); // + // toolStripInput + // + resources.ApplyResources(this.toolStripInput, "toolStripInput"); + this.toolStripInput.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; + this.toolStripInput.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripLabelInput, + this.toolStripSplitButtonInputBrowser}); + this.toolStripInput.Name = "toolStripInput"; + this.toolStripInput.RenderMode = System.Windows.Forms.ToolStripRenderMode.System; + // + // toolStripLabelInput + // + this.toolStripLabelInput.Name = "toolStripLabelInput"; + resources.ApplyResources(this.toolStripLabelInput, "toolStripLabelInput"); + // + // toolStripSplitButtonInputBrowser + // + this.toolStripSplitButtonInputBrowser.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripSplitButtonInputBrowser.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolStripSplitButtonInputBrowser.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripMenuItemInputBrowserFiles, + this.toolStripMenuItemInputBrowserMulti, + this.toolStripMenuItemInputBrowserDrag, + this.toolStripMenuItemInputBrowserHide}); + this.toolStripSplitButtonInputBrowser.Image = global::JDP.Properties.Resources.folder; + resources.ApplyResources(this.toolStripSplitButtonInputBrowser, "toolStripSplitButtonInputBrowser"); + this.toolStripSplitButtonInputBrowser.Name = "toolStripSplitButtonInputBrowser"; + this.toolStripSplitButtonInputBrowser.ButtonClick += new System.EventHandler(this.toolStripSplitButtonInputBrowser_ButtonClick); + this.toolStripSplitButtonInputBrowser.DropDownItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.toolStripSplitButtonInputBrowser_DropDownItemClicked); + // + // toolStripMenuItemInputBrowserFiles + // + this.toolStripMenuItemInputBrowserFiles.Image = global::JDP.Properties.Resources.folder; + this.toolStripMenuItemInputBrowserFiles.Name = "toolStripMenuItemInputBrowserFiles"; + resources.ApplyResources(this.toolStripMenuItemInputBrowserFiles, "toolStripMenuItemInputBrowserFiles"); + // + // toolStripMenuItemInputBrowserMulti + // + this.toolStripMenuItemInputBrowserMulti.Image = global::JDP.Properties.Resources.folder_add; + this.toolStripMenuItemInputBrowserMulti.Name = "toolStripMenuItemInputBrowserMulti"; + resources.ApplyResources(this.toolStripMenuItemInputBrowserMulti, "toolStripMenuItemInputBrowserMulti"); + // + // toolStripMenuItemInputBrowserDrag + // + this.toolStripMenuItemInputBrowserDrag.Image = global::JDP.Properties.Resources.folder_feed; + this.toolStripMenuItemInputBrowserDrag.Name = "toolStripMenuItemInputBrowserDrag"; + resources.ApplyResources(this.toolStripMenuItemInputBrowserDrag, "toolStripMenuItemInputBrowserDrag"); + // + // toolStripMenuItemInputBrowserHide + // + this.toolStripMenuItemInputBrowserHide.Image = global::JDP.Properties.Resources.folder_delete; + this.toolStripMenuItemInputBrowserHide.Name = "toolStripMenuItemInputBrowserHide"; + resources.ApplyResources(this.toolStripMenuItemInputBrowserHide, "toolStripMenuItemInputBrowserHide"); + // + // toolStripOutput + // + resources.ApplyResources(this.toolStripOutput, "toolStripOutput"); + this.toolStripOutput.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; + this.toolStripOutput.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripLabelOutput, + this.toolStripSplitButtonOutputBrowser}); + this.toolStripOutput.Name = "toolStripOutput"; + this.toolStripOutput.RenderMode = System.Windows.Forms.ToolStripRenderMode.System; + // + // toolStripLabelOutput + // + this.toolStripLabelOutput.Name = "toolStripLabelOutput"; + resources.ApplyResources(this.toolStripLabelOutput, "toolStripLabelOutput"); + // + // toolStripSplitButtonOutputBrowser + // + this.toolStripSplitButtonOutputBrowser.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripSplitButtonOutputBrowser.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolStripSplitButtonOutputBrowser.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripMenuItemOutputBrowse, + this.toolStripMenuItemOutputManual, + this.toolStripMenuItemOutputTemplate}); + this.toolStripSplitButtonOutputBrowser.Image = global::JDP.Properties.Resources.folder; + resources.ApplyResources(this.toolStripSplitButtonOutputBrowser, "toolStripSplitButtonOutputBrowser"); + this.toolStripSplitButtonOutputBrowser.Name = "toolStripSplitButtonOutputBrowser"; + this.toolStripSplitButtonOutputBrowser.DropDownItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.toolStripSplitButtonOutputBrowser_DropDownItemClicked); + // + // toolStripMenuItemOutputBrowse + // + this.toolStripMenuItemOutputBrowse.Image = global::JDP.Properties.Resources.folder; + this.toolStripMenuItemOutputBrowse.Name = "toolStripMenuItemOutputBrowse"; + resources.ApplyResources(this.toolStripMenuItemOutputBrowse, "toolStripMenuItemOutputBrowse"); + // + // toolStripMenuItemOutputManual + // + this.toolStripMenuItemOutputManual.Image = global::JDP.Properties.Resources.cog; + this.toolStripMenuItemOutputManual.Name = "toolStripMenuItemOutputManual"; + resources.ApplyResources(this.toolStripMenuItemOutputManual, "toolStripMenuItemOutputManual"); + // + // toolStripMenuItemOutputTemplate + // + this.toolStripMenuItemOutputTemplate.Image = global::JDP.Properties.Resources.folder_page; + this.toolStripMenuItemOutputTemplate.Name = "toolStripMenuItemOutputTemplate"; + resources.ApplyResources(this.toolStripMenuItemOutputTemplate, "toolStripMenuItemOutputTemplate"); + // // grpAction // - this.grpAction.Controls.Add(this.checkBoxAdvancedMode); this.grpAction.Controls.Add(this.comboBoxScript); this.grpAction.Controls.Add(this.rbActionCorrectFilenames); this.grpAction.Controls.Add(this.rbActionCreateCUESheet); - this.grpAction.Controls.Add(this.rbActionVerifyAndEncode); this.grpAction.Controls.Add(this.rbActionVerify); this.grpAction.Controls.Add(this.rbActionEncode); resources.ApplyResources(this.grpAction, "grpAction"); this.grpAction.Name = "grpAction"; this.grpAction.TabStop = false; // - // checkBoxAdvancedMode - // - resources.ApplyResources(this.checkBoxAdvancedMode, "checkBoxAdvancedMode"); - this.checkBoxAdvancedMode.Name = "checkBoxAdvancedMode"; - this.checkBoxAdvancedMode.UseVisualStyleBackColor = true; - this.checkBoxAdvancedMode.CheckedChanged += new System.EventHandler(this.checkBoxAdvancedMode_CheckedChanged); - // // comboBoxScript // resources.ApplyResources(this.comboBoxScript, "comboBoxScript"); @@ -441,15 +709,6 @@ namespace JDP { this.rbActionCreateCUESheet.UseVisualStyleBackColor = true; this.rbActionCreateCUESheet.CheckedChanged += new System.EventHandler(this.rbAction_CheckedChanged); // - // rbActionVerifyAndEncode - // - resources.ApplyResources(this.rbActionVerifyAndEncode, "rbActionVerifyAndEncode"); - this.rbActionVerifyAndEncode.Name = "rbActionVerifyAndEncode"; - this.rbActionVerifyAndEncode.TabStop = true; - this.toolTip1.SetToolTip(this.rbActionVerifyAndEncode, resources.GetString("rbActionVerifyAndEncode.ToolTip")); - this.rbActionVerifyAndEncode.UseVisualStyleBackColor = true; - this.rbActionVerifyAndEncode.CheckedChanged += new System.EventHandler(this.rbAction_CheckedChanged); - // // rbActionVerify // resources.ApplyResources(this.rbActionVerify, "rbActionVerify"); @@ -461,74 +720,40 @@ namespace JDP { // rbActionEncode // resources.ApplyResources(this.rbActionEncode, "rbActionEncode"); - this.rbActionEncode.Checked = true; this.rbActionEncode.Name = "rbActionEncode"; - this.rbActionEncode.TabStop = true; this.toolTip1.SetToolTip(this.rbActionEncode, resources.GetString("rbActionEncode.ToolTip")); this.rbActionEncode.UseVisualStyleBackColor = true; this.rbActionEncode.CheckedChanged += new System.EventHandler(this.rbAction_CheckedChanged); // - // groupBoxCorrector - // - this.groupBoxCorrector.Controls.Add(this.rbCorrectorLocateFiles); - this.groupBoxCorrector.Controls.Add(this.rbCorrectorChangeExtension); - this.groupBoxCorrector.Controls.Add(this.checkBoxCorrectorOverwrite); - this.groupBoxCorrector.Controls.Add(this.labelCorrectorFormat); - this.groupBoxCorrector.Controls.Add(this.comboBoxCorrectorFormat); - resources.ApplyResources(this.groupBoxCorrector, "groupBoxCorrector"); - this.groupBoxCorrector.Name = "groupBoxCorrector"; - this.groupBoxCorrector.TabStop = false; - // - // rbCorrectorLocateFiles - // - resources.ApplyResources(this.rbCorrectorLocateFiles, "rbCorrectorLocateFiles"); - this.rbCorrectorLocateFiles.Name = "rbCorrectorLocateFiles"; - this.rbCorrectorLocateFiles.TabStop = true; - this.toolTip1.SetToolTip(this.rbCorrectorLocateFiles, resources.GetString("rbCorrectorLocateFiles.ToolTip")); - this.rbCorrectorLocateFiles.UseVisualStyleBackColor = true; - // - // rbCorrectorChangeExtension - // - resources.ApplyResources(this.rbCorrectorChangeExtension, "rbCorrectorChangeExtension"); - this.rbCorrectorChangeExtension.Name = "rbCorrectorChangeExtension"; - this.rbCorrectorChangeExtension.TabStop = true; - this.toolTip1.SetToolTip(this.rbCorrectorChangeExtension, resources.GetString("rbCorrectorChangeExtension.ToolTip")); - this.rbCorrectorChangeExtension.UseVisualStyleBackColor = true; - this.rbCorrectorChangeExtension.CheckedChanged += new System.EventHandler(this.rbCorrectorChangeExtension_CheckedChanged); - // - // checkBoxCorrectorOverwrite - // - resources.ApplyResources(this.checkBoxCorrectorOverwrite, "checkBoxCorrectorOverwrite"); - this.checkBoxCorrectorOverwrite.Name = "checkBoxCorrectorOverwrite"; - this.toolTip1.SetToolTip(this.checkBoxCorrectorOverwrite, resources.GetString("checkBoxCorrectorOverwrite.ToolTip")); - this.checkBoxCorrectorOverwrite.UseVisualStyleBackColor = true; - // - // labelCorrectorFormat - // - resources.ApplyResources(this.labelCorrectorFormat, "labelCorrectorFormat"); - this.labelCorrectorFormat.MinimumSize = new System.Drawing.Size(16, 16); - this.labelCorrectorFormat.Name = "labelCorrectorFormat"; - // - // comboBoxCorrectorFormat - // - this.comboBoxCorrectorFormat.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.comboBoxCorrectorFormat.FormattingEnabled = true; - resources.ApplyResources(this.comboBoxCorrectorFormat, "comboBoxCorrectorFormat"); - this.comboBoxCorrectorFormat.Name = "comboBoxCorrectorFormat"; - this.comboBoxCorrectorFormat.SelectedIndexChanged += new System.EventHandler(this.comboBoxCorrectorFormat_SelectedIndexChanged); - // // grpExtra // - this.grpExtra.Controls.Add(this.numericWriteOffset); - this.grpExtra.Controls.Add(this.txtPreGapLength); - this.grpExtra.Controls.Add(this.lblWriteOffset); - this.grpExtra.Controls.Add(this.labelPregap); - this.grpExtra.Controls.Add(this.txtDataTrackLength); - this.grpExtra.Controls.Add(this.labelDataTrack); + this.grpExtra.Controls.Add(this.tableLayoutPanel4); resources.ApplyResources(this.grpExtra, "grpExtra"); this.grpExtra.Name = "grpExtra"; + this.tableLayoutPanel2.SetRowSpan(this.grpExtra, 2); this.grpExtra.TabStop = false; // + // tableLayoutPanel4 + // + resources.ApplyResources(this.tableLayoutPanel4, "tableLayoutPanel4"); + this.tableLayoutPanel4.Controls.Add(this.labelPregap, 0, 0); + this.tableLayoutPanel4.Controls.Add(this.lblWriteOffset, 0, 2); + this.tableLayoutPanel4.Controls.Add(this.numericWriteOffset, 1, 2); + this.tableLayoutPanel4.Controls.Add(this.txtPreGapLength, 1, 0); + this.tableLayoutPanel4.Controls.Add(this.labelDataTrack, 0, 1); + this.tableLayoutPanel4.Controls.Add(this.txtDataTrackLength, 1, 1); + this.tableLayoutPanel4.Name = "tableLayoutPanel4"; + // + // labelPregap + // + resources.ApplyResources(this.labelPregap, "labelPregap"); + this.labelPregap.Name = "labelPregap"; + // + // lblWriteOffset + // + resources.ApplyResources(this.lblWriteOffset, "lblWriteOffset"); + this.lblWriteOffset.Name = "lblWriteOffset"; + // // numericWriteOffset // resources.ApplyResources(this.numericWriteOffset, "numericWriteOffset"); @@ -547,144 +772,37 @@ namespace JDP { // // txtPreGapLength // - resources.ApplyResources(this.txtPreGapLength, "txtPreGapLength"); this.txtPreGapLength.Culture = new System.Globalization.CultureInfo(""); this.txtPreGapLength.CutCopyMaskFormat = System.Windows.Forms.MaskFormat.IncludePromptAndLiterals; + resources.ApplyResources(this.txtPreGapLength, "txtPreGapLength"); this.txtPreGapLength.InsertKeyMode = System.Windows.Forms.InsertKeyMode.Overwrite; this.txtPreGapLength.Name = "txtPreGapLength"; this.txtPreGapLength.TextMaskFormat = System.Windows.Forms.MaskFormat.IncludePromptAndLiterals; this.toolTip1.SetToolTip(this.txtPreGapLength, resources.GetString("txtPreGapLength.ToolTip")); // - // lblWriteOffset - // - resources.ApplyResources(this.lblWriteOffset, "lblWriteOffset"); - this.lblWriteOffset.Name = "lblWriteOffset"; - // - // labelPregap - // - resources.ApplyResources(this.labelPregap, "labelPregap"); - this.labelPregap.Name = "labelPregap"; - // - // txtDataTrackLength - // - resources.ApplyResources(this.txtDataTrackLength, "txtDataTrackLength"); - this.txtDataTrackLength.Culture = new System.Globalization.CultureInfo(""); - this.txtDataTrackLength.CutCopyMaskFormat = System.Windows.Forms.MaskFormat.IncludePromptAndLiterals; - this.txtDataTrackLength.InsertKeyMode = System.Windows.Forms.InsertKeyMode.Overwrite; - this.txtDataTrackLength.Name = "txtDataTrackLength"; - this.txtDataTrackLength.TextMaskFormat = System.Windows.Forms.MaskFormat.IncludePromptAndLiterals; - this.toolTip1.SetToolTip(this.txtDataTrackLength, resources.GetString("txtDataTrackLength.ToolTip")); - // // labelDataTrack // resources.ApplyResources(this.labelDataTrack, "labelDataTrack"); this.labelDataTrack.Name = "labelDataTrack"; // - // tableLayoutPanel3 + // txtDataTrackLength // - resources.ApplyResources(this.tableLayoutPanel3, "tableLayoutPanel3"); - this.tableLayoutPanel3.Controls.Add(this.labelMotd, 0, 2); - this.tableLayoutPanel3.Controls.Add(this.grpOutputStyle, 0, 0); - this.tableLayoutPanel3.Controls.Add(this.grpFreedb, 0, 1); - this.tableLayoutPanel3.Name = "tableLayoutPanel3"; + this.txtDataTrackLength.Culture = new System.Globalization.CultureInfo(""); + this.txtDataTrackLength.CutCopyMaskFormat = System.Windows.Forms.MaskFormat.IncludePromptAndLiterals; + resources.ApplyResources(this.txtDataTrackLength, "txtDataTrackLength"); + this.txtDataTrackLength.InsertKeyMode = System.Windows.Forms.InsertKeyMode.Overwrite; + this.txtDataTrackLength.Name = "txtDataTrackLength"; + this.txtDataTrackLength.TextMaskFormat = System.Windows.Forms.MaskFormat.IncludePromptAndLiterals; + this.toolTip1.SetToolTip(this.txtDataTrackLength, resources.GetString("txtDataTrackLength.ToolTip")); // - // labelMotd + // panelGo // - resources.ApplyResources(this.labelMotd, "labelMotd"); - this.labelMotd.MinimumSize = new System.Drawing.Size(112, 38); - this.labelMotd.Name = "labelMotd"; - // - // grpOutputStyle - // - this.grpOutputStyle.Controls.Add(this.rbTracks); - this.grpOutputStyle.Controls.Add(this.rbEmbedCUE); - this.grpOutputStyle.Controls.Add(this.rbSingleFile); - resources.ApplyResources(this.grpOutputStyle, "grpOutputStyle"); - this.grpOutputStyle.Name = "grpOutputStyle"; - this.grpOutputStyle.TabStop = false; - // - // rbTracks - // - resources.ApplyResources(this.rbTracks, "rbTracks"); - this.rbTracks.Name = "rbTracks"; - this.rbTracks.TabStop = true; - this.toolTip1.SetToolTip(this.rbTracks, resources.GetString("rbTracks.ToolTip")); - this.rbTracks.UseVisualStyleBackColor = true; - // - // rbEmbedCUE - // - resources.ApplyResources(this.rbEmbedCUE, "rbEmbedCUE"); - this.rbEmbedCUE.Name = "rbEmbedCUE"; - this.rbEmbedCUE.TabStop = true; - this.toolTip1.SetToolTip(this.rbEmbedCUE, resources.GetString("rbEmbedCUE.ToolTip")); - this.rbEmbedCUE.UseVisualStyleBackColor = true; - this.rbEmbedCUE.CheckedChanged += new System.EventHandler(this.rbEmbedCUE_CheckedChanged); - // - // rbSingleFile - // - resources.ApplyResources(this.rbSingleFile, "rbSingleFile"); - this.rbSingleFile.Checked = true; - this.rbSingleFile.Name = "rbSingleFile"; - this.rbSingleFile.TabStop = true; - this.toolTip1.SetToolTip(this.rbSingleFile, resources.GetString("rbSingleFile.ToolTip")); - this.rbSingleFile.UseVisualStyleBackColor = true; - // - // grpFreedb - // - this.grpFreedb.Controls.Add(this.rbFreedbAlways); - this.grpFreedb.Controls.Add(this.rbFreedbIf); - this.grpFreedb.Controls.Add(this.rbFreedbNever); - resources.ApplyResources(this.grpFreedb, "grpFreedb"); - this.grpFreedb.Name = "grpFreedb"; - this.grpFreedb.TabStop = false; - // - // rbFreedbAlways - // - resources.ApplyResources(this.rbFreedbAlways, "rbFreedbAlways"); - this.rbFreedbAlways.Name = "rbFreedbAlways"; - this.rbFreedbAlways.TabStop = true; - this.rbFreedbAlways.UseVisualStyleBackColor = true; - // - // rbFreedbIf - // - resources.ApplyResources(this.rbFreedbIf, "rbFreedbIf"); - this.rbFreedbIf.Name = "rbFreedbIf"; - this.rbFreedbIf.TabStop = true; - this.rbFreedbIf.UseVisualStyleBackColor = true; - // - // rbFreedbNever - // - resources.ApplyResources(this.rbFreedbNever, "rbFreedbNever"); - this.rbFreedbNever.Name = "rbFreedbNever"; - this.rbFreedbNever.TabStop = true; - this.rbFreedbNever.UseVisualStyleBackColor = true; - // - // panel1 - // - this.panel1.Controls.Add(this.btnAbout); - this.panel1.Controls.Add(this.btnSettings); - this.panel1.Controls.Add(this.btnConvert); - this.panel1.Controls.Add(this.btnStop); - this.panel1.Controls.Add(this.btnResume); - this.panel1.Controls.Add(this.btnPause); - resources.ApplyResources(this.panel1, "panel1"); - this.panel1.Name = "panel1"; - // - // btnAbout - // - this.btnAbout.Image = global::JDP.Properties.Resources.information; - resources.ApplyResources(this.btnAbout, "btnAbout"); - this.btnAbout.Name = "btnAbout"; - this.btnAbout.UseVisualStyleBackColor = true; - this.btnAbout.Click += new System.EventHandler(this.btnAbout_Click); - // - // btnSettings - // - this.btnSettings.Image = global::JDP.Properties.Resources.cog; - resources.ApplyResources(this.btnSettings, "btnSettings"); - this.btnSettings.Name = "btnSettings"; - this.btnSettings.UseVisualStyleBackColor = true; - this.btnSettings.Click += new System.EventHandler(this.btnSettings_Click); + this.panelGo.Controls.Add(this.btnConvert); + this.panelGo.Controls.Add(this.btnStop); + this.panelGo.Controls.Add(this.btnResume); + this.panelGo.Controls.Add(this.btnPause); + resources.ApplyResources(this.panelGo, "panelGo"); + this.panelGo.Name = "panelGo"; // // btnConvert // @@ -714,79 +832,104 @@ namespace JDP { this.btnPause.UseVisualStyleBackColor = true; this.btnPause.Click += new System.EventHandler(this.btnPause_Click); // - // toolStrip1 + // toolStripMenu // - resources.ApplyResources(this.toolStrip1, "toolStrip1"); - this.toolStrip1.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; - this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.toolStripSeparator1, - this.toolStripButton1, - this.toolStripButton2, - this.toolStripButton3, - this.toolStripButton4, - this.toolStripButton5, - this.toolStripSeparator3}); - this.toolStrip1.MaximumSize = new System.Drawing.Size(32, 0); - this.toolStrip1.Name = "toolStrip1"; - this.toolStrip1.TextDirection = System.Windows.Forms.ToolStripTextDirection.Vertical90; + this.toolStripMenu.BackColor = System.Drawing.SystemColors.GradientInactiveCaption; + resources.ApplyResources(this.toolStripMenu, "toolStripMenu"); + this.toolStripMenu.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; + this.toolStripMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripDropDownButtonProfile, + this.toolStripSeparator3, + this.toolStripButtonAbout, + this.toolStripButtonHelp, + this.toolStripButtonSettings, + this.toolStripButtonShowLog}); + this.toolStripMenu.Name = "toolStripMenu"; + this.toolStripMenu.RenderMode = System.Windows.Forms.ToolStripRenderMode.System; + this.toolStripMenu.Stretch = true; // - // toolStripSeparator1 + // toolStripDropDownButtonProfile // - resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1"); - this.toolStripSeparator1.Name = "toolStripSeparator1"; - this.toolStripSeparator1.TextDirection = System.Windows.Forms.ToolStripTextDirection.Vertical90; + this.toolStripDropDownButtonProfile.AutoToolTip = false; + this.toolStripDropDownButtonProfile.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripTextBoxAddProfile, + this.toolStripMenuItemDeleteProfile, + this.toolStripSeparator5, + this.defaultToolStripMenuItem}); + this.toolStripDropDownButtonProfile.Image = global::JDP.Properties.Resources.basket; + resources.ApplyResources(this.toolStripDropDownButtonProfile, "toolStripDropDownButtonProfile"); + this.toolStripDropDownButtonProfile.Name = "toolStripDropDownButtonProfile"; + this.toolStripDropDownButtonProfile.DropDownItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.toolStripDropDownButtonProfile_DropDownItemClicked); // - // toolStripButton1 + // toolStripTextBoxAddProfile // - resources.ApplyResources(this.toolStripButton1, "toolStripButton1"); - this.toolStripButton1.BackColor = System.Drawing.SystemColors.Control; - this.toolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.toolStripButton1.Image = global::JDP.Properties.Resources.folder; - this.toolStripButton1.Name = "toolStripButton1"; - this.toolStripButton1.Click += new System.EventHandler(this.toolStripButton1_Click); + this.toolStripTextBoxAddProfile.Name = "toolStripTextBoxAddProfile"; + resources.ApplyResources(this.toolStripTextBoxAddProfile, "toolStripTextBoxAddProfile"); + this.toolStripTextBoxAddProfile.KeyDown += new System.Windows.Forms.KeyEventHandler(this.toolStripTextBoxAddProfile_KeyDown); // - // toolStripButton2 + // toolStripMenuItemDeleteProfile // - resources.ApplyResources(this.toolStripButton2, "toolStripButton2"); - this.toolStripButton2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.toolStripButton2.Image = global::JDP.Properties.Resources.folder_add; - this.toolStripButton2.Name = "toolStripButton2"; - this.toolStripButton2.Click += new System.EventHandler(this.toolStripButton2_Click); + this.toolStripMenuItemDeleteProfile.Image = global::JDP.Properties.Resources.delete; + this.toolStripMenuItemDeleteProfile.Name = "toolStripMenuItemDeleteProfile"; + resources.ApplyResources(this.toolStripMenuItemDeleteProfile, "toolStripMenuItemDeleteProfile"); // - // toolStripButton3 + // toolStripSeparator5 // - resources.ApplyResources(this.toolStripButton3, "toolStripButton3"); - this.toolStripButton3.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.toolStripButton3.Image = global::JDP.Properties.Resources.folder_feed; - this.toolStripButton3.Name = "toolStripButton3"; - this.toolStripButton3.Click += new System.EventHandler(this.toolStripButton3_Click); + this.toolStripSeparator5.Name = "toolStripSeparator5"; + resources.ApplyResources(this.toolStripSeparator5, "toolStripSeparator5"); // - // toolStripButton4 + // defaultToolStripMenuItem // - resources.ApplyResources(this.toolStripButton4, "toolStripButton4"); - this.toolStripButton4.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.toolStripButton4.Image = global::JDP.Properties.Resources.folder_page; - this.toolStripButton4.Name = "toolStripButton4"; - this.toolStripButton4.Click += new System.EventHandler(this.toolStripButton4_Click); - // - // toolStripButton5 - // - resources.ApplyResources(this.toolStripButton5, "toolStripButton5"); - this.toolStripButton5.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.toolStripButton5.Image = global::JDP.Properties.Resources.folder_delete; - this.toolStripButton5.Name = "toolStripButton5"; - this.toolStripButton5.Click += new System.EventHandler(this.toolStripButton5_Click); + this.defaultToolStripMenuItem.Image = global::JDP.Properties.Resources.basket; + this.defaultToolStripMenuItem.Name = "defaultToolStripMenuItem"; + resources.ApplyResources(this.defaultToolStripMenuItem, "defaultToolStripMenuItem"); // // toolStripSeparator3 // - resources.ApplyResources(this.toolStripSeparator3, "toolStripSeparator3"); this.toolStripSeparator3.Name = "toolStripSeparator3"; - this.toolStripSeparator3.TextDirection = System.Windows.Forms.ToolStripTextDirection.Vertical90; + resources.ApplyResources(this.toolStripSeparator3, "toolStripSeparator3"); + // + // toolStripButtonAbout + // + this.toolStripButtonAbout.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripButtonAbout.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolStripButtonAbout.Image = global::JDP.Properties.Resources.information; + resources.ApplyResources(this.toolStripButtonAbout, "toolStripButtonAbout"); + this.toolStripButtonAbout.Name = "toolStripButtonAbout"; + this.toolStripButtonAbout.Click += new System.EventHandler(this.toolStripButtonAbout_Click); + // + // toolStripButtonHelp + // + this.toolStripButtonHelp.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripButtonHelp.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolStripButtonHelp.Image = global::JDP.Properties.Resources.world_go; + resources.ApplyResources(this.toolStripButtonHelp, "toolStripButtonHelp"); + this.toolStripButtonHelp.Name = "toolStripButtonHelp"; + this.toolStripButtonHelp.Click += new System.EventHandler(this.toolStripButtonHelp_Click); + // + // toolStripButtonSettings + // + this.toolStripButtonSettings.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripButtonSettings.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolStripButtonSettings.Image = global::JDP.Properties.Resources.cog; + resources.ApplyResources(this.toolStripButtonSettings, "toolStripButtonSettings"); + this.toolStripButtonSettings.Name = "toolStripButtonSettings"; + this.toolStripButtonSettings.Click += new System.EventHandler(this.toolStripButtonSettings_Click); + // + // toolStripButtonShowLog + // + this.toolStripButtonShowLog.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripButtonShowLog.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolStripButtonShowLog.Image = global::JDP.Properties.Resources.report; + resources.ApplyResources(this.toolStripButtonShowLog, "toolStripButtonShowLog"); + this.toolStripButtonShowLog.Name = "toolStripButtonShowLog"; + this.toolStripButtonShowLog.Click += new System.EventHandler(this.toolStripButton4_Click); // // toolTip1 // this.toolTip1.AutoPopDelay = 15000; this.toolTip1.InitialDelay = 500; + this.toolTip1.IsBalloon = true; this.toolTip1.ReshowDelay = 100; // // contextMenuStripFileTree @@ -821,93 +964,53 @@ namespace JDP { resources.ApplyResources(this.resetToOriginalLocationToolStripMenuItem, "resetToOriginalLocationToolStripMenuItem"); this.resetToOriginalLocationToolStripMenuItem.Click += new System.EventHandler(this.resetToOriginalLocationToolStripMenuItem_Click); // - // statusStrip1 - // - resources.ApplyResources(this.statusStrip1, "statusStrip1"); - this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.toolStripStatusLabel1, - this.toolStripStatusLabelProcessed, - this.toolStripStatusLabelAR, - this.toolStripProgressBar1, - this.toolStripProgressBar2}); - this.statusStrip1.Name = "statusStrip1"; - // - // toolStripProgressBar2 - // - this.toolStripProgressBar2.AutoToolTip = true; - this.toolStripProgressBar2.Name = "toolStripProgressBar2"; - resources.ApplyResources(this.toolStripProgressBar2, "toolStripProgressBar2"); - this.toolStripProgressBar2.Style = System.Windows.Forms.ProgressBarStyle.Continuous; - // - // toolStripProgressBar1 - // - this.toolStripProgressBar1.AutoToolTip = true; - this.toolStripProgressBar1.Name = "toolStripProgressBar1"; - resources.ApplyResources(this.toolStripProgressBar1, "toolStripProgressBar1"); - this.toolStripProgressBar1.Style = System.Windows.Forms.ProgressBarStyle.Continuous; - // - // toolStripStatusLabel1 - // - this.toolStripStatusLabel1.Name = "toolStripStatusLabel1"; - resources.ApplyResources(this.toolStripStatusLabel1, "toolStripStatusLabel1"); - this.toolStripStatusLabel1.Spring = true; - // - // toolStripStatusLabelAR - // - this.toolStripStatusLabelAR.AutoToolTip = true; - resources.ApplyResources(this.toolStripStatusLabelAR, "toolStripStatusLabelAR"); - this.toolStripStatusLabelAR.Image = global::JDP.Properties.Resources.AR; - this.toolStripStatusLabelAR.Name = "toolStripStatusLabelAR"; - this.toolStripStatusLabelAR.Padding = new System.Windows.Forms.Padding(0, 0, 5, 0); - // - // toolStripStatusLabelProcessed - // - this.toolStripStatusLabelProcessed.Name = "toolStripStatusLabelProcessed"; - resources.ApplyResources(this.toolStripStatusLabelProcessed, "toolStripStatusLabelProcessed"); - // // frmCUETools // resources.ApplyResources(this, "$this"); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.Controls.Add(this.toolStripContainer1); - this.MaximizeBox = false; this.Name = "frmCUETools"; this.Load += new System.EventHandler(this.frmCUETools_Load); this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.frmCUETools_FormClosed); this.toolStripContainer1.BottomToolStripPanel.ResumeLayout(false); this.toolStripContainer1.BottomToolStripPanel.PerformLayout(); this.toolStripContainer1.ContentPanel.ResumeLayout(false); - this.toolStripContainer1.LeftToolStripPanel.ResumeLayout(false); - this.toolStripContainer1.LeftToolStripPanel.PerformLayout(); + this.toolStripContainer1.TopToolStripPanel.ResumeLayout(false); + this.toolStripContainer1.TopToolStripPanel.PerformLayout(); this.toolStripContainer1.ResumeLayout(false); this.toolStripContainer1.PerformLayout(); + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); this.tableLayoutPanel1.ResumeLayout(false); + this.tableLayoutPanel1.PerformLayout(); this.grpInput.ResumeLayout(false); - this.grpInput.PerformLayout(); this.tableLayoutPanel2.ResumeLayout(false); + this.groupBoxMode.ResumeLayout(false); + this.tableLayoutPanelCUEStyle.ResumeLayout(false); + this.tableLayoutPanelCUEStyle.PerformLayout(); + this.toolStripCorrectorFormat.ResumeLayout(false); + this.toolStripCorrectorFormat.PerformLayout(); this.grpAudioOutput.ResumeLayout(false); this.grpAudioOutput.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.trackBarEncoderMode)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxMotd)).EndInit(); this.grpOutputPathGeneration.ResumeLayout(false); - this.grpOutputPathGeneration.PerformLayout(); + this.tableLayoutPanelPaths.ResumeLayout(false); + this.tableLayoutPanelPaths.PerformLayout(); + this.toolStripInput.ResumeLayout(false); + this.toolStripInput.PerformLayout(); + this.toolStripOutput.ResumeLayout(false); + this.toolStripOutput.PerformLayout(); this.grpAction.ResumeLayout(false); this.grpAction.PerformLayout(); - this.groupBoxCorrector.ResumeLayout(false); - this.groupBoxCorrector.PerformLayout(); this.grpExtra.ResumeLayout(false); - this.grpExtra.PerformLayout(); + this.tableLayoutPanel4.ResumeLayout(false); + this.tableLayoutPanel4.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericWriteOffset)).EndInit(); - this.tableLayoutPanel3.ResumeLayout(false); - this.grpOutputStyle.ResumeLayout(false); - this.grpOutputStyle.PerformLayout(); - this.grpFreedb.ResumeLayout(false); - this.grpFreedb.PerformLayout(); - this.panel1.ResumeLayout(false); - this.toolStrip1.ResumeLayout(false); - this.toolStrip1.PerformLayout(); + this.panelGo.ResumeLayout(false); + this.toolStripMenu.ResumeLayout(false); + this.toolStripMenu.PerformLayout(); this.contextMenuStripFileTree.ResumeLayout(false); - this.statusStrip1.ResumeLayout(false); - this.statusStrip1.PerformLayout(); this.ResumeLayout(false); } @@ -915,14 +1018,10 @@ namespace JDP { #endregion private System.Windows.Forms.Button btnConvert; - private System.Windows.Forms.Button btnBrowseOutput; private System.Windows.Forms.TextBox txtOutputPath; - private System.Windows.Forms.GroupBox grpOutputStyle; - private System.Windows.Forms.Button btnAbout; private System.Windows.Forms.RadioButton rbSingleFile; private System.Windows.Forms.GroupBox grpOutputPathGeneration; private System.Windows.Forms.GroupBox grpAudioOutput; - private System.Windows.Forms.Button btnSettings; private System.Windows.Forms.GroupBox grpAction; private System.Windows.Forms.RadioButton rbActionVerify; private System.Windows.Forms.RadioButton rbActionEncode; @@ -933,11 +1032,6 @@ namespace JDP { private System.Windows.Forms.Button btnStop; private System.Windows.Forms.Button btnPause; private System.Windows.Forms.Button btnResume; - private System.Windows.Forms.RadioButton rbActionVerifyAndEncode; - private System.Windows.Forms.GroupBox grpFreedb; - private System.Windows.Forms.RadioButton rbFreedbAlways; - private System.Windows.Forms.RadioButton rbFreedbIf; - private System.Windows.Forms.RadioButton rbFreedbNever; private System.Windows.Forms.MaskedTextBox txtPreGapLength; private System.Windows.Forms.Label labelPregap; private CUEControls.FileSystemTreeView fileSystemTreeView1; @@ -956,49 +1050,67 @@ namespace JDP { private System.Windows.Forms.TextBox textBatchReport; private System.Windows.Forms.ComboBox comboBoxAudioFormat; private System.Windows.Forms.Label labelFormat; - private System.Windows.Forms.GroupBox groupBoxCorrector; - private System.Windows.Forms.Label labelCorrectorFormat; - private System.Windows.Forms.ComboBox comboBoxCorrectorFormat; - private System.Windows.Forms.CheckBox checkBoxCorrectorOverwrite; - private System.Windows.Forms.RadioButton rbCorrectorLocateFiles; - private System.Windows.Forms.RadioButton rbCorrectorChangeExtension; + private System.Windows.Forms.GroupBox groupBoxMode; private System.Windows.Forms.ComboBox comboBoxScript; private System.Windows.Forms.RadioButton radioButtonAudioNone; private System.Windows.Forms.RadioButton radioButtonAudioLossy; private System.Windows.Forms.RadioButton radioButtonAudioHybrid; private System.Windows.Forms.RadioButton radioButtonAudioLossless; private System.Windows.Forms.ComboBox comboBoxEncoder; - private System.Windows.Forms.CheckBox checkBoxAdvancedMode; private System.Windows.Forms.ToolStripContainer toolStripContainer1; - private System.Windows.Forms.ToolStrip toolStrip1; - private System.Windows.Forms.ToolStripButton toolStripButton1; - private System.Windows.Forms.ToolStripButton toolStripButton2; - private System.Windows.Forms.ToolStripButton toolStripButton3; - private System.Windows.Forms.ToolStripButton toolStripButton4; - private System.Windows.Forms.ToolStripButton toolStripButton5; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator3; + private System.Windows.Forms.ToolStrip toolStripMenu; + private System.Windows.Forms.ToolStripButton toolStripButtonShowLog; private System.Windows.Forms.ComboBox comboBoxOutputFormat; - private System.Windows.Forms.CheckBox checkBoxDontGenerate; - private System.Windows.Forms.Label labelOutput; - private System.Windows.Forms.Label labelInput; private System.Windows.Forms.Label labelOutputTemplate; private System.Windows.Forms.TrackBar trackBarEncoderMode; private System.Windows.Forms.Label labelEncoderMode; private System.Windows.Forms.Label labelEncoderMaxMode; private System.Windows.Forms.Label labelEncoderMinMode; private System.Windows.Forms.RadioButton rbTracks; - private System.Windows.Forms.Label labelMotd; private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2; - private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3; - private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Panel panelGo; private System.Windows.Forms.StatusStrip statusStrip1; private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1; private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelProcessed; private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelAR; private System.Windows.Forms.ToolStripProgressBar toolStripProgressBar1; private System.Windows.Forms.ToolStripProgressBar toolStripProgressBar2; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel4; + private System.Windows.Forms.ToolStripDropDownButton toolStripDropDownButtonProfile; + private System.Windows.Forms.ToolStripMenuItem defaultToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator3; + private System.Windows.Forms.ToolStripButton toolStripButtonAbout; + private System.Windows.Forms.ToolStripButton toolStripButtonSettings; + private System.Windows.Forms.ToolStripTextBox toolStripTextBoxAddProfile; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemDeleteProfile; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator5; + private System.Windows.Forms.ToolStripButton toolStripButtonHelp; + private System.Windows.Forms.PictureBox pictureBoxMotd; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanelPaths; + private System.Windows.Forms.ToolStrip toolStripInput; + private System.Windows.Forms.ToolStripSplitButton toolStripSplitButtonInputBrowser; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemInputBrowserFiles; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemInputBrowserMulti; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemInputBrowserDrag; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemInputBrowserHide; + private System.Windows.Forms.ToolStrip toolStripOutput; + private System.Windows.Forms.ToolStripSplitButton toolStripSplitButtonOutputBrowser; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemOutputBrowse; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemOutputTemplate; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemOutputManual; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanelCUEStyle; + private System.Windows.Forms.ToolStripLabel toolStripLabelInput; + private System.Windows.Forms.ToolStripLabel toolStripLabelOutput; + private System.Windows.Forms.ToolStrip toolStripCorrectorFormat; + private System.Windows.Forms.ToolStripDropDownButton toolStripDropDownButtonCorrectorFormat; + private System.Windows.Forms.ToolStripDropDownButton toolStripDropDownButtonCorrectorMode; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemCorrectorModeLocateFiles; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemCorrectorModeChangeExtension; + private System.Windows.Forms.ToolStripButton toolStripButtonCorrectorOverwrite; + private System.Windows.Forms.CheckBox checkBoxUseMusicBrainz; + private System.Windows.Forms.CheckBox checkBoxUseAccurateRip; + private System.Windows.Forms.CheckBox checkBoxUseFreeDb; } } diff --git a/CUETools/frmCUETools.cs b/CUETools/frmCUETools.cs index 6f18870..8f8e662 100644 --- a/CUETools/frmCUETools.cs +++ b/CUETools/frmCUETools.cs @@ -42,7 +42,7 @@ using CUETools.CDImage; namespace JDP { public partial class frmCUETools : Form { public frmCUETools() { - _config = new CUEConfig(); + _profile = _defaultProfile = new CUEToolsProfile("default"); InitializeComponent(); //splitContainer1.AutoScaleMode = AutoScaleMode.Font; if (Type.GetType("Mono.Runtime", false) == null) @@ -60,19 +60,6 @@ namespace JDP { m_icon_mgr.SetExtensionIcon(".cue", global::JDP.Properties.Resources.cue3); } - private void btnBrowseOutput_Click(object sender, EventArgs e) { - SaveFileDialog fileDlg = new SaveFileDialog(); - DialogResult dlgRes; - - fileDlg.Title = "Output CUE Sheet"; - fileDlg.Filter = "CUE Sheets (*.cue)|*.cue"; - - dlgRes = fileDlg.ShowDialog(); - if (dlgRes == DialogResult.OK) { - txtOutputPath.Text = fileDlg.FileName; - } - } - private void AddCheckedNodesToBatch(TreeNodeCollection nodes) { foreach (TreeNode node in nodes) @@ -101,9 +88,9 @@ namespace JDP { if (!comboBoxOutputFormat.Items.Contains(comboBoxOutputFormat.Text) && comboBoxOutputFormat.Text.Contains("%")) { - comboBoxOutputFormat.Items.Insert(OutputPathTemplates.Length, comboBoxOutputFormat.Text); - if (comboBoxOutputFormat.Items.Count > OutputPathTemplates.Length + 10) - comboBoxOutputFormat.Items.RemoveAt(OutputPathTemplates.Length + 10); + comboBoxOutputFormat.Items.Insert(OutputPathUseTemplates.Length, comboBoxOutputFormat.Text); + if (comboBoxOutputFormat.Items.Count > OutputPathUseTemplates.Length + 10) + comboBoxOutputFormat.Items.RemoveAt(OutputPathUseTemplates.Length + 10); } if (!CheckWriteOffset()) return; @@ -114,7 +101,7 @@ namespace JDP { // TODO!!! //if (SelectedOutputAudioFmt != null) //{ - // CUEToolsUDC encoder = _config.encoders[SelectedOutputAudioFmt.encoder]; + // CUEToolsUDC encoder = _profile._config.encoders[SelectedOutputAudioFmt.encoder]; // if (encoder.path != null) // { // if (Path.GetDirectoryName(encoder.path) == "" && Directory.Exists(Application.StartupPath)) @@ -142,7 +129,7 @@ namespace JDP { StartConvert(); return; } - if (checkBoxDontGenerate.Checked) + if (!OutputPathUseTemplate) { MessageBox.Show(this, "Batch mode cannot be used with the output path set manually.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); @@ -175,17 +162,22 @@ namespace JDP { ChangeCulture(c, resources); } - private void btnSettings_Click(object sender, EventArgs e) { - using (frmSettings settingsForm = new frmSettings()) { + private void toolStripButtonSettings_Click(object sender, EventArgs e) + { + using (frmSettings settingsForm = new frmSettings()) + { settingsForm.IconMgr = m_icon_mgr; settingsForm.ReducePriority = _reducePriority; - settingsForm.Config = _config; + settingsForm.Config = _profile._config; - settingsForm.ShowDialog(); + DialogResult res = settingsForm.ShowDialog(this); - if (Thread.CurrentThread.CurrentUICulture != CultureInfo.GetCultureInfo(_config.language)) + if (res == DialogResult.Cancel) + return; + + if (Thread.CurrentThread.CurrentUICulture != CultureInfo.GetCultureInfo(_profile._config.language)) { - Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(_config.language); + Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(_profile._config.language); ComponentResourceManager resources = new ComponentResourceManager(typeof(frmCUETools)); int savedWidth = Width; Width = MinimumSize.Width; @@ -195,15 +187,14 @@ namespace JDP { } _reducePriority = settingsForm.ReducePriority; - _config = settingsForm.Config; - updateOutputStyles(); - UpdateOutputPath(); + SelectedOutputAudioType = SelectedOutputAudioType; SetupScripts(); SaveSettings(); } } - private void btnAbout_Click(object sender, EventArgs e) { + private void toolStripButtonAbout_Click(object sender, EventArgs e) + { using (frmAbout aboutForm = new frmAbout()) { aboutForm.ShowDialog(this); @@ -242,11 +233,6 @@ namespace JDP { UpdateActions(); } - private void checkBoxDontGenerate_CheckedChanged(object sender, EventArgs e) - { - UpdateOutputPath(); - } - private void comboBoxOutputFormat_TextUpdate(object sender, EventArgs e) { UpdateOutputPath(); @@ -260,8 +246,11 @@ namespace JDP { private void frmCUETools_Load(object sender, EventArgs e) { _batchPaths = new List(); labelFormat.ImageList = m_icon_mgr.ImageList; - labelCorrectorFormat.ImageList = m_icon_mgr.ImageList; - MinimumWidth = MinimumSize.Width; + toolStripCorrectorFormat.ImageList = m_icon_mgr.ImageList; + toolStripDropDownButtonCorrectorFormat.DropDown.ImageList = m_icon_mgr.ImageList; + OpenMinimumSize = MinimumSize; + ClosedMinimumSize = new Size(Width - grpInput.Width, Height - textBatchReport.Height); + SizeIncrement = Size - OpenMinimumSize; LoadSettings(); if (_reducePriority) @@ -287,9 +276,11 @@ namespace JDP { // } //} + motdImage = null; if (File.Exists(MOTDImagePath)) - try { labelMotd.Image = Image.FromFile(MOTDImagePath); } - catch { } + using (FileStream imageStream = new FileStream(MOTDImagePath, FileMode.Open, FileAccess.Read)) + try { motdImage = Image.FromStream(imageStream); } + catch { } if (File.Exists(MOTDTextPath)) try @@ -302,7 +293,7 @@ namespace JDP { string motd = sr.ReadToEnd(); _batchReport = new StringBuilder(); _batchReport.Append(motd); - FileBrowserState = FileBrowserStateEnum.BatchLog; + ReportState = true; } } } @@ -311,7 +302,6 @@ namespace JDP { SetupControls(false); UpdateOutputPath(); updateOutputStyles(); - SetupScripts(); } private void frmCUETools_FormClosed(object sender, FormClosedEventArgs e) { @@ -324,9 +314,14 @@ namespace JDP { Tree = 0, Checkboxes = 1, DragDrop = 2, - BatchLog = 3, Hidden = 4 } + + private enum CorrectorModeEnum { + Locate = 0, + Extension = 1 + } + // ******************************************************************************** private CUEControls.IIconManager m_icon_mgr; @@ -339,14 +334,17 @@ namespace JDP { string _defaultLosslessFormat, _defaultLossyFormat, _defaultHybridFormat, _defaultNoAudioFormat; Thread _workThread; CUESheet _workClass; - CUEConfig _config; - int MinimumWidth; - int WidthIncrement; - FileBrowserStateEnum _fileBrowserState = FileBrowserStateEnum.BatchLog; - FileBrowserStateEnum _fileBrowserControlState = FileBrowserStateEnum.BatchLog; + CUEToolsProfile _profile, _defaultProfile; + Size OpenMinimumSize, ClosedMinimumSize, SizeIncrement; + FileBrowserStateEnum _fileBrowserState = FileBrowserStateEnum.DragDrop; + FileBrowserStateEnum _fileBrowserControlState = FileBrowserStateEnum.Hidden; + bool _outputPathUseTemplate = true; + bool _reportState = true; + CorrectorModeEnum _correctorMode; DateTime lastMOTD; + Image motdImage = null; string profilePath; - string [] OutputPathTemplates = { + string [] OutputPathUseTemplates = { "%music%\\Converted\\%artist%\\[%year% - ]%album%[ - %edition%]$ifgreater($max(%discnumber%,%totaldiscs%),1, - cd %discnumber%,)[' ('%unique%')']\\%artist% - %album%[ - %edition%].cue", "[%directoryname%\\]%filename%-new[%unique%].cue", "[%directoryname%\\]new[%unique%]\\%filename%.cue" @@ -376,7 +374,7 @@ namespace JDP { // InputPath = pathIn; //} - CUESheet cueSheet = new CUESheet(_config); + CUESheet cueSheet = new CUESheet(_profile._config); cueSheet.PasswordRequired += new ArchivePasswordRequiredHandler(PasswordRequired); cueSheet.CUEToolsProgress += new CUEToolsProgressHandler(SetStatus); cueSheet.CUEToolsSelection += new CUEToolsSelectionHandler(MakeSelection); @@ -481,7 +479,7 @@ namespace JDP { { get { - return "CUETools 2.0.3"; + return "CUETools 2.0.4"; } } @@ -500,7 +498,7 @@ namespace JDP { try { - if (_config.checkForUpdates && DateTime.UtcNow - lastMOTD > TimeSpan.FromDays(1) && _batchReport.Length == 0) + if (_profile._config.checkForUpdates && DateTime.UtcNow - lastMOTD > TimeSpan.FromDays(1) && _batchReport.Length == 0) { this.Invoke((MethodInvoker)delegate() { @@ -511,36 +509,44 @@ namespace JDP { try { using (HttpWebResponse resp = (HttpWebResponse)req.GetResponse()) - if (resp.StatusCode == HttpStatusCode.OK) - { - using (Stream respStream = resp.GetResponseStream()) - using (FileStream motd = new FileStream(MOTDImagePath, FileMode.Create, FileAccess.Write)) + if (resp.StatusCode == HttpStatusCode.OK) { - byte[] buff = new byte[0x8000]; - do + using (Stream respStream = resp.GetResponseStream()) + using (FileStream motd = new FileStream(MOTDImagePath, FileMode.Create, FileAccess.Write)) { - int count = respStream.Read(buff, 0, buff.Length); - if (count == 0) break; - motd.Write(buff, 0, count); - } while (true); + byte[] buff = new byte[0x8000]; + do + { + int count = respStream.Read(buff, 0, buff.Length); + if (count == 0) break; + motd.Write(buff, 0, count); + } while (true); + } + } + else + { + File.Delete(MOTDImagePath); } - } - else - { - File.Delete(MOTDImagePath); - } lastMOTD = DateTime.UtcNow; } - catch { } - - this.Invoke((MethodInvoker)delegate() - { - if (File.Exists(MOTDImagePath)) - try { labelMotd.Image = Image.FromFile(MOTDImagePath); } + catch (WebException ex) + { + if (ex.Status == WebExceptionStatus.ProtocolError && ex.Response != null && ex.Response is HttpWebResponse) + { + HttpWebResponse resp = (HttpWebResponse)ex.Response; + if (resp.StatusCode == HttpStatusCode.NotFound) + { + File.Delete(MOTDImagePath); + lastMOTD = DateTime.UtcNow; + } + } + } + + motdImage = null; + if (File.Exists(MOTDImagePath)) + using (FileStream imageStream = new FileStream(MOTDImagePath, FileMode.Open, FileAccess.Read)) + try { motdImage = Image.FromStream(imageStream); } catch { } - else - labelMotd.Image = null; - }); req = (HttpWebRequest)WebRequest.Create("http://cuetools.net/motd/motd.txt"); req.Method = "GET"; @@ -568,7 +574,7 @@ namespace JDP { } catch { } if (File.Exists(MOTDTextPath)) - try + try { using (StreamReader sr = new StreamReader(MOTDTextPath, Encoding.UTF8)) { @@ -588,7 +594,7 @@ namespace JDP { { if (_batchPaths.Count == 0) throw new Exception("is a directory"); - List fileGroups = CUESheet.ScanFolder(_config, pathIn); + List fileGroups = CUESheet.ScanFolder(_profile._config, pathIn); int directoriesFound = 0, cueSheetsFound = 0; foreach (FileGroupInfo fileGroup in fileGroups) if (fileGroup.type == FileGroupInfoType.Folder) @@ -603,7 +609,7 @@ namespace JDP { else if (File.Exists(pathIn)) { pathIn = Path.GetFullPath(pathIn); - List fileGroups = CUESheet.ScanFolder(_config, Path.GetDirectoryName(pathIn)); + List fileGroups = CUESheet.ScanFolder(_profile._config, Path.GetDirectoryName(pathIn)); FileGroupInfo fileGroup = FileGroupInfo.WhichContains(fileGroups, pathIn, FileGroupInfoType.TrackFiles) ?? FileGroupInfo.WhichContains(fileGroups, pathIn, FileGroupInfoType.FileWithCUE); if (fileGroup == null) @@ -616,7 +622,7 @@ namespace JDP { cueSheet.Close(); } else - cueSheetContents = CUESheet.CreateDummyCUESheet(_config, fileGroup); + cueSheetContents = CUESheet.CreateDummyCUESheet(_profile._config, fileGroup); string fullCueName; if (fileGroup.type == FileGroupInfoType.FileWithCUE) fullCueName = Path.ChangeExtension(fileGroup.main.FullName, ".cue"); @@ -661,11 +667,11 @@ namespace JDP { cue = sr.ReadToEnd(); string extension; string fixedCue; - if (rbCorrectorLocateFiles.Checked) - fixedCue = CUESheet.CorrectAudioFilenames(_config, Path.GetDirectoryName(pathIn), cue, true, null, out extension); + if (CorrectorMode == CorrectorModeEnum.Locate) + fixedCue = CUESheet.CorrectAudioFilenames(_profile._config, Path.GetDirectoryName(pathIn), cue, true, null, out extension); else { - extension = (string)comboBoxCorrectorFormat.SelectedItem; + extension = toolStripDropDownButtonCorrectorFormat.Text; using (StringReader sr = new StringReader(cue)) { using (StringWriter sw = new StringWriter()) @@ -687,7 +693,7 @@ namespace JDP { } if (fixedCue != cue) { - if (checkBoxCorrectorOverwrite.Checked) + if (toolStripButtonCorrectorOverwrite.Checked) { using (StreamWriter sw = new StreamWriter(pathIn, false, CUESheet.Encoding)) sw.Write(fixedCue); @@ -718,7 +724,7 @@ namespace JDP { { if (_batchPaths.Count == 0) throw new Exception("is a directory"); - List fileGroups = CUESheet.ScanFolder(_config, pathIn); + List fileGroups = CUESheet.ScanFolder(_profile._config, pathIn); int directoriesFound = 0, cueSheetsFound = 0; foreach (FileGroupInfo fileGroup in fileGroups) if (fileGroup.type == FileGroupInfoType.Folder) @@ -754,9 +760,8 @@ namespace JDP { if (_batchPaths.Count == 0 && convertAction) { - if (rbFreedbAlways.Checked || (rbFreedbIf.Checked && - (cueSheet.Artist == "" || cueSheet.Title == "" || cueSheet.Year == ""))) - releases = cueSheet.LookupAlbumInfo(); + if (checkBoxUseFreeDb.Checked || checkBoxUseMusicBrainz.Checked) + releases = cueSheet.LookupAlbumInfo(checkBoxUseFreeDb.Checked, checkBoxUseMusicBrainz.Checked); } this.Invoke((MethodInvoker)delegate() @@ -776,23 +781,19 @@ namespace JDP { SetupControls(false); } } - UpdateOutputPath( - cueSheet.Tags, - pathIn, - General.EmptyStringToNull(cueSheet.Year), - cueSheet.Artist != "" ? cueSheet.Artist : "Unknown Artist", - cueSheet.Title != "" ? cueSheet.Title : "Unknown Title", - General.EmptyStringToNull(cueSheet.DiscNumber), - General.EmptyStringToNull(cueSheet.TotalDiscs) - ); + UpdateOutputPath(pathIn, cueSheet); pathOut = txtOutputPath.Text; + if (dlgRes != DialogResult.Cancel && cueSheet.AlbumArt != null && cueSheet.AlbumArt.Length != 0) + pictureBoxMotd.Image = cueSheet.Cover; + else + pictureBoxMotd.Image = motdImage; }); if (dlgRes == DialogResult.Cancel) return; bool outputAudio = convertAction && audioEncoderType != AudioEncoderType.NoAudio; - bool outputCUE = convertAction && (cueStyle != CUEStyle.SingleFileWithCUE || _config.createCUEFileWhenEmbedded); + bool outputCUE = convertAction && (cueStyle != CUEStyle.SingleFileWithCUE || _profile._config.createCUEFileWhenEmbedded); cueSheet.GenerateFilenames(audioEncoderType, outputFormat, pathOut); string outDir = Path.GetDirectoryName(pathOut); @@ -810,7 +811,7 @@ namespace JDP { outputExists |= File.Exists(Path.Combine(outDir, cueSheet.SingleFilename)); else { - if (cueStyle == CUEStyle.GapsAppended && _config.preserveHTOA) + if (cueStyle == CUEStyle.GapsAppended && _profile._config.preserveHTOA) outputExists |= File.Exists(Path.Combine(outDir, cueSheet.HTOAFilename)); for (int i = 0; i < cueSheet.TrackCount; i++) outputExists |= File.Exists(Path.Combine(outDir, cueSheet.TrackFilenames[i])); @@ -840,58 +841,8 @@ namespace JDP { cueSheet.UsePregapForFirstTrackInSingleFile = _usePregapForFirstTrackInSingleFile && !outputAudio; if (script == null) status = cueSheet.Go(); - else if (script.builtin) - { - CUESheet processor = cueSheet; - if (script.name == "default") - status = processor.Go(); - if (script.name == "only if found") - status = processor.ArVerify.AccResult != HttpStatusCode.OK ? - processor.WriteReport() : - processor.Go(); - if (script.name == "fix offset") - { - if (processor.ArVerify.AccResult != HttpStatusCode.OK) - status = processor.WriteReport(); - else - { - processor.WriteOffset = 0; - processor.Action = CUEAction.Verify; - status = processor.Go(); - - uint tracksMatch; - int bestOffset; - processor.FindBestOffset(processor.Config.fixOffsetMinimumConfidence, !processor.Config.fixOffsetToNearest, out tracksMatch, out bestOffset); - if (tracksMatch * 100 >= processor.Config.fixOffsetMinimumTracksPercent * processor.TrackCount) - { - processor.WriteOffset = bestOffset; - processor.Action = CUEAction.VerifyAndConvert; - status = processor.Go(); - } - } - } - if (script.name == "encode if verified") - { - if (processor.ArVerify.AccResult != HttpStatusCode.OK) - status = processor.WriteReport(); - else - { - processor.Action = CUEAction.Verify; - status = processor.Go(); - - uint tracksMatch; - int bestOffset; - processor.FindBestOffset(processor.Config.encodeWhenConfidence, false, out tracksMatch, out bestOffset); - if (tracksMatch * 100 >= processor.Config.encodeWhenPercent * processor.TrackCount && (!_config.encodeWhenZeroOffset || bestOffset == 0)) - { - processor.Action = CUEAction.VerifyAndConvert; - status = processor.Go(); - } - } - } - } else - status = cueSheet.ExecuteScript(script.code); + status = cueSheet.ExecuteScript(script); //if (_batchPaths.Count > 0) { @@ -916,7 +867,7 @@ namespace JDP { } else if (action == CUEAction.CreateDummyCUE || action == CUEAction.CorrectFilenames) { - FileBrowserState = FileBrowserStateEnum.BatchLog; + ReportState = true; //frmReport reportForm = new frmReport(); //reportForm.Message = _batchReport.ToString(); //reportForm.ShowDialog(this); @@ -929,7 +880,7 @@ namespace JDP { cueSheet.GenerateAccurateRipLog(sw); _batchReport.Append(sw.ToString()); } - FileBrowserState = FileBrowserStateEnum.BatchLog; + ReportState = true; //frmReport reportForm = new frmReport(); //StringWriter sw = new StringWriter(); @@ -989,7 +940,7 @@ namespace JDP { this.BeginInvoke((MethodInvoker)delegate() { if (_batchPaths.Count == 0) { SetupControls(false); - FileBrowserState = FileBrowserStateEnum.BatchLog; + ReportState = true; //frmReport reportForm = new frmReport(); //reportForm.Message = _batchReport.ToString(); //reportForm.ShowDialog(this); @@ -1015,21 +966,25 @@ namespace JDP { bool converting = (SelectedAction == CUEAction.Convert || SelectedAction == CUEAction.VerifyAndConvert); bool verifying = (SelectedAction == CUEAction.Verify || SelectedAction == CUEAction.VerifyAndConvert); //grpInput.Enabled = !running; - toolStrip1.Enabled = !running; + toolStripMenu.Enabled = !running; fileSystemTreeView1.Enabled = !running; txtInputPath.Enabled = !running; txtInputPath.ReadOnly = FileBrowserState == FileBrowserStateEnum.DragDrop || FileBrowserState == FileBrowserStateEnum.Checkboxes; grpExtra.Enabled = !running && (converting || verifying); - groupBoxCorrector.Enabled = !running && SelectedAction == CUEAction.CorrectFilenames; + //groupBoxCorrector.Enabled = !running && SelectedAction == CUEAction.CorrectFilenames; + //grpOutputStyle.Enabled = !running && converting; + groupBoxMode.Enabled = !running; + toolStripCorrectorFormat.Visible = SelectedAction == CUEAction.CorrectFilenames; + tableLayoutPanelCUEStyle.Visible = converting; grpOutputPathGeneration.Enabled = !running; grpAudioOutput.Enabled = !running && converting; grpAction.Enabled = !running; - grpOutputStyle.Enabled = !running && converting; - grpFreedb.Enabled = !running && !(FileBrowserState == FileBrowserStateEnum.DragDrop || FileBrowserState == FileBrowserStateEnum.Checkboxes) && converting; + checkBoxUseFreeDb.Enabled = + checkBoxUseMusicBrainz.Enabled = + checkBoxUseAccurateRip.Enabled = + !running && !(FileBrowserState == FileBrowserStateEnum.DragDrop || FileBrowserState == FileBrowserStateEnum.Checkboxes) && converting; txtDataTrackLength.Enabled = !running && verifying; txtPreGapLength.Enabled = !running; - btnAbout.Enabled = !running; - btnSettings.Enabled = !running; btnConvert.Visible = !running; btnStop.Enabled = btnPause.Enabled = btnResume.Enabled = running; btnStop.Visible = btnPause.Visible = running; @@ -1037,43 +992,22 @@ namespace JDP { toolStripStatusLabel1.Text = String.Empty; toolStripProgressBar1.Value = 0; toolStripProgressBar2.Value = 0; - toolStripStatusLabelAR.Visible = false; - if (_batchPaths.Count > 0 || FileBrowserState == FileBrowserStateEnum.BatchLog) + toolStripStatusLabelAR.Visible = false; + if (ReportState) { - fileSystemTreeView1.Visible = false; - textBatchReport.Visible = true; - textBatchReport.ReadOnly = true; if (_batchReport != null) textBatchReport.Text = _batchReport.ToString(); else textBatchReport.Text = ""; - textBatchReport.SelectAll(); - textBatchReport.ScrollToCaret(); - //toolStripStatusLabelProcessed.Visible = true; - //toolStripStatusLabelProcessed.Text = "Processed: " + _batchProcessed.ToString(); - //toolStripStatusLabelProcessed.ToolTipText = _batchReport.ToString(); - } - //else if (FileBrowserState == FileBrowserStateEnum.DragDrop) - //{ - // fileSystemTreeView1.Visible = false; - // textBatchReport.Visible = true; - // textBatchReport.ReadOnly = false; - //} - else - { - //bool wasHidden = !fileSystemTreeView1.Visible; - fileSystemTreeView1.Visible = true; - toolStripStatusLabelProcessed.Visible = false; - textBatchReport.Visible = false; - //if (wasHidden && fileSystemTreeView1.SelectedPath != null) - //{ - // InputPath = fileSystemTreeView1.SelectedPath; - // txtInputPath.SelectAll(); - //} + //textBatchReport.SelectAll(); + //textBatchReport.ScrollToCaret(); } if (!running) + { UpdateActions(); + pictureBoxMotd.Image = motdImage; + } //rbGapsLeftOut.Visible = // rbGapsPrepended.Visible = @@ -1128,55 +1062,128 @@ namespace JDP { return (dlgRes == DialogResult.Yes); } + private void ActivateProfile() + { + SelectedOutputAudioType = _profile._outputAudioType; + SelectedOutputAudioFormat = _profile._outputAudioFormat; + SelectedAction = _profile._action; + SelectedCUEStyle = _profile._CUEStyle; + numericWriteOffset.Value = _profile._writeOffset; + comboBoxOutputFormat.Text = _profile._outputTemplate ?? comboBoxOutputFormat.Items[0].ToString(); + toolStripDropDownButtonProfile.Text = _profile._name; + SelectedScript = _profile._script; + checkBoxUseFreeDb.Checked = _profile._useFreeDb; + checkBoxUseMusicBrainz.Checked = _profile._useMusicBrainz; + checkBoxUseAccurateRip.Checked = _profile._useAccurateRip; + } + + private void ActivateProfile(string profileName) + { + if (profileName == _defaultProfile._name) + return; + _profile = new CUEToolsProfile(profileName); + SettingsReader sr = new SettingsReader("CUE Tools", string.Format("profile-{0}.txt", _profile._name), Application.ExecutablePath); + _profile.Load(sr); + _profile._config.encoders = _defaultProfile._config.encoders; + _profile._config.decoders = _defaultProfile._config.decoders; + _profile._config.formats = _defaultProfile._config.formats; + _profile._config.scripts = _defaultProfile._config.scripts; + ActivateProfile(); + } + + private void DeactivateProfile() + { + SaveProfile(); + + if (_profile != _defaultProfile) + { + _defaultProfile._config.encoders = _profile._config.encoders; + _defaultProfile._config.decoders = _profile._config.decoders; + _defaultProfile._config.formats = _profile._config.formats; + _defaultProfile._config.scripts = _profile._config.scripts; + _profile = _defaultProfile; + ActivateProfile(); + } + } + + private void SaveProfile() + { + _profile._outputAudioType = SelectedOutputAudioType; + _profile._outputAudioFormat = SelectedOutputAudioFormat; + _profile._action = SelectedAction; + _profile._CUEStyle = SelectedCUEStyle; + _profile._writeOffset = (int) numericWriteOffset.Value; + _profile._outputTemplate = comboBoxOutputFormat.Text; + _profile._script = SelectedScript; + _profile._useFreeDb = checkBoxUseFreeDb.Checked; + _profile._useMusicBrainz = checkBoxUseMusicBrainz.Checked; + _profile._useAccurateRip = checkBoxUseAccurateRip.Checked; + + if (_profile != _defaultProfile) + { + SettingsWriter sw = new SettingsWriter("CUE Tools", string.Format("profile-{0}.txt", _profile._name), Application.ExecutablePath); + _profile.Save(sw); + sw.Close(); + } + } + private void LoadSettings() { SettingsReader sr = new SettingsReader("CUE Tools", "settings.txt", Application.ExecutablePath); profilePath = sr.ProfilePath; - _config.Load(sr); + _profile.Load(sr); lastMOTD = sr.LoadDate("LastMOTD") ?? DateTime.FromBinary(0); _defaultLosslessFormat = sr.Load("DefaultLosslessFormat") ?? "flac"; _defaultLossyFormat = sr.Load("DefaultLossyFormat") ?? "mp3"; _defaultHybridFormat = sr.Load("DefaultHybridFormat") ?? "lossy.flac"; _defaultNoAudioFormat = sr.Load("DefaultNoAudioFormat") ?? "wav"; - int iFormat, nFormats = sr.LoadInt32("OutputPathTemplates", 0, 10) ?? 0; - for (iFormat = 0; iFormat < OutputPathTemplates.Length; iFormat++) - comboBoxOutputFormat.Items.Add(OutputPathTemplates[iFormat]); + int iFormat, nFormats = sr.LoadInt32("OutputPathUseTemplates", 0, 10) ?? 0; + for (iFormat = 0; iFormat < OutputPathUseTemplates.Length; iFormat++) + comboBoxOutputFormat.Items.Add(OutputPathUseTemplates[iFormat]); for (iFormat = nFormats - 1; iFormat >= 0; iFormat --) - comboBoxOutputFormat.Items.Add(sr.Load(string.Format("OutputPathTemplate{0}", iFormat)) ?? ""); - comboBoxOutputFormat.Text = sr.Load("OutputPathTemplate") ?? comboBoxOutputFormat.Items[0].ToString(); - checkBoxDontGenerate.Checked = sr.LoadBoolean("DontGenerate") ?? false; - SelectedOutputAudioType = (AudioEncoderType?)sr.LoadInt32("OutputAudioType", null, null) ?? AudioEncoderType.Lossless; - SelectedOutputAudioFormat = sr.Load("OutputAudioFmt") ?? "flac"; - SelectedAction = (CUEAction?)sr.LoadInt32("AccurateRipMode", null, null) ?? CUEAction.VerifyAndConvert; - SelectedCUEStyle = (CUEStyle?)sr.LoadInt32("CUEStyle", null, null) ?? CUEStyle.SingleFileWithCUE; - numericWriteOffset.Value = sr.LoadInt32("WriteOffset", null, null) ?? 0; + comboBoxOutputFormat.Items.Add(sr.Load(string.Format("OutputPathUseTemplate{0}", iFormat)) ?? ""); + OutputPathUseTemplate = !(sr.LoadBoolean("DontGenerate") ?? false); + + ActivateProfile(); + _usePregapForFirstTrackInSingleFile = sr.LoadBoolean("UsePregapForFirstTrackInSingleFile") ?? false; _reducePriority = sr.LoadBoolean("ReducePriority") ?? true; - switch (sr.LoadInt32("FreedbLookup", null, null) ?? 2) + CorrectorMode = (CorrectorModeEnum)(sr.LoadInt32("CorrectorLookup", null, null) ?? (int) CorrectorModeEnum.Locate); + toolStripButtonCorrectorOverwrite.Checked = sr.LoadBoolean("CorrectorOverwrite") ?? true; + string correctorFormat = sr.Load("CorrectorFormat") ?? "flac"; + foreach (KeyValuePair format in _profile._config.formats) { - case 0: rbFreedbNever.Checked = true; break; - case 1: rbFreedbIf.Checked = true; break; - case 2: rbFreedbAlways.Checked = true; break; + ToolStripItem item = new ToolStripMenuItem(format.Key); + item.ImageKey = "." + format.Value.extension; + toolStripDropDownButtonCorrectorFormat.DropDownItems.Add(item); + if (correctorFormat == format.Key) + { + toolStripDropDownButtonCorrectorFormat.Text = item.Text; + toolStripDropDownButtonCorrectorFormat.ImageKey = item.ImageKey; + } } - rbCorrectorChangeExtension.Checked = true; - switch (sr.LoadInt32("CorrectorLookup", null, null) ?? 0) - { - case 0: rbCorrectorLocateFiles.Checked = true; break; - case 1: rbCorrectorChangeExtension.Checked = true; break; - } - checkBoxCorrectorOverwrite.Checked = sr.LoadBoolean("CorrectorOverwrite") ?? true; - foreach (KeyValuePair format in _config.formats) - comboBoxCorrectorFormat.Items.Add(format.Key); - comboBoxCorrectorFormat.SelectedItem = sr.Load("CorrectorFormat") ?? "flac"; - Width = MinimumWidth + sr.LoadInt32("WidthIncrement", 0, null) ?? 0; - FileBrowserState = (FileBrowserStateEnum)(sr.LoadInt32("FileBrowserState", (int)FileBrowserStateEnum.Tree, (int)FileBrowserStateEnum.Hidden) ?? (int)FileBrowserStateEnum.Tree); + SizeIncrement.Width = sr.LoadInt32("WidthIncrement", 0, null) ?? 0; + SizeIncrement.Height = sr.LoadInt32("HeightIncrement", 0, null) ?? 0; + Size = OpenMinimumSize + SizeIncrement; Top = sr.LoadInt32("Top", 0, null) ?? Top; Left = sr.LoadInt32("Left", 0, null) ?? Left; - PerformLayout(); if (InputPath == "") + { InputPath = sr.Load("InputPath") ?? ""; + FileBrowserState = (FileBrowserStateEnum)(sr.LoadInt32("FileBrowserState", (int)FileBrowserStateEnum.Tree, (int)FileBrowserStateEnum.Hidden) ?? (int)FileBrowserStateEnum.Hidden); + } + else + FileBrowserState = FileBrowserStateEnum.Hidden; + ReportState = sr.LoadBoolean("ReportState") ?? false; + PerformLayout(); + string profiles = sr.Load("Profiles") ?? "verify convert fix"; + foreach (string prof in profiles.Split(' ')) + toolStripDropDownButtonProfile.DropDownItems.Add(prof); } - private void SaveSettings() { + private void SaveSettings() + { + SaveProfile(); + SettingsWriter sw = new SettingsWriter("CUE Tools", "settings.txt", Application.ExecutablePath); SaveScripts(SelectedAction); sw.Save("LastMOTD", lastMOTD); @@ -1185,144 +1192,46 @@ namespace JDP { sw.Save("DefaultLossyFormat", _defaultLossyFormat); sw.Save("DefaultHybridFormat", _defaultHybridFormat); sw.Save("DefaultNoAudioFormat", _defaultNoAudioFormat); - sw.Save("DontGenerate", checkBoxDontGenerate.Checked); - sw.Save("OutputPathTemplates", comboBoxOutputFormat.Items.Count - OutputPathTemplates.Length); - for (int iFormat = comboBoxOutputFormat.Items.Count - 1; iFormat >= OutputPathTemplates.Length; iFormat--) - sw.Save(string.Format("OutputPathTemplate{0}", iFormat - OutputPathTemplates.Length), comboBoxOutputFormat.Items[iFormat].ToString()); - sw.Save("OutputPathTemplate", comboBoxOutputFormat.Text); - sw.Save("OutputAudioFmt", SelectedOutputAudioFormat); - sw.Save("OutputAudioType", (int)SelectedOutputAudioType); - sw.Save("AccurateRipMode", (int)SelectedAction); - sw.Save("CUEStyle", (int)SelectedCUEStyle); - sw.Save("WriteOffset", (int)numericWriteOffset.Value); + sw.Save("DontGenerate", !_outputPathUseTemplate); + sw.Save("OutputPathUseTemplates", comboBoxOutputFormat.Items.Count - OutputPathUseTemplates.Length); + for (int iFormat = comboBoxOutputFormat.Items.Count - 1; iFormat >= OutputPathUseTemplates.Length; iFormat--) + sw.Save(string.Format("OutputPathUseTemplate{0}", iFormat - OutputPathUseTemplates.Length), comboBoxOutputFormat.Items[iFormat].ToString()); + sw.Save("UsePregapForFirstTrackInSingleFile", _usePregapForFirstTrackInSingleFile); sw.Save("ReducePriority", _reducePriority); sw.Save("FileBrowserState", (int)FileBrowserState); - sw.Save("FreedbLookup", rbFreedbNever.Checked ? 0 : rbFreedbIf.Checked ? 1 : 2); - sw.Save("CorrectorLookup", rbCorrectorLocateFiles.Checked ? 0 : 1); - sw.Save("CorrectorOverwrite", checkBoxCorrectorOverwrite.Checked); - sw.Save("CorrectorFormat", (string) (comboBoxCorrectorFormat.SelectedItem ?? "flac")); - sw.Save("WidthIncrement", FileBrowserState == FileBrowserStateEnum.Hidden ? WidthIncrement : Width - MinimumWidth); + sw.Save("ReportState", ReportState); + sw.Save("CorrectorLookup", (int) CorrectorMode); + sw.Save("CorrectorOverwrite", toolStripButtonCorrectorOverwrite.Checked); + sw.Save("CorrectorFormat", toolStripDropDownButtonCorrectorFormat.Text); + sw.Save("WidthIncrement", FileBrowserState == FileBrowserStateEnum.Hidden ? SizeIncrement.Width : Width - OpenMinimumSize.Width); + sw.Save("HeightIncrement", !ReportState ? SizeIncrement.Height : Height - OpenMinimumSize.Height); sw.Save("Top", Top); sw.Save("Left", Left); - _config.Save(sw); + + StringBuilder profiles = new StringBuilder(); + foreach(ToolStripItem item in toolStripDropDownButtonProfile.DropDownItems) + if (item != toolStripTextBoxAddProfile + && item != toolStripMenuItemDeleteProfile + && item != defaultToolStripMenuItem + && item != toolStripSeparator5 + ) + { + if (profiles.Length > 0) + profiles.Append(' '); + profiles.Append(item.Text); + } + sw.Save("Profiles", profiles.ToString()); + + _defaultProfile.Save(sw); sw.Close(); } - private void BuildOutputPathFindReplace(string inputPath, string format, List find, List replace) { - int i, j, first, last, maxFindLen; - string range; - string[] rangeSplit; - List tmpFind = new List(); - List tmpReplace = new List(); - - i = 0; - last = 0; - while (i < format.Length) { - if (format[i++] == '%') { - j = i; - while (j < format.Length) { - char c = format[j]; - if (((c < '0') || (c > '9')) && (c != '-') && (c != ':')) { - break; - } - j++; - } - range = format.Substring(i, j - i); - if (range.Length != 0) { - rangeSplit = range.Split(new char[] { ':' }, 2); - if (Int32.TryParse(rangeSplit[0], out first)) { - if (rangeSplit.Length == 1) { - last = first; - } - if ((rangeSplit.Length == 1) || Int32.TryParse(rangeSplit[1], out last)) { - tmpFind.Add("%" + range); - tmpReplace.Add(General.EmptyStringToNull(GetDirectoryElements(Path.GetDirectoryName(inputPath), first, last))); - } - } - } - i = j; - } - } - - // Sort so that longest find strings are first, so when the replacing is done the - // longer strings are checked first. This avoids problems with overlapping find - // strings, for example if one of the strings is "%1" and another is "%1:3". - maxFindLen = 0; - for (i = 0; i < tmpFind.Count; i++) { - if (tmpFind[i].Length > maxFindLen) { - maxFindLen = tmpFind[i].Length; - } - } - for (j = maxFindLen; j >= 1; j--) { - for (i = 0; i < tmpFind.Count; i++) { - if (tmpFind[i].Length == j) { - find.Add(tmpFind[i]); - replace.Add(tmpReplace[i]); - } - } - } - - find.Add("%F"); - find.Add("%filename%"); - find.Add("%directoryname%"); - replace.Add(Path.GetFileNameWithoutExtension(inputPath)); - replace.Add(Path.GetFileNameWithoutExtension(inputPath)); - replace.Add(General.EmptyStringToNull(Path.GetDirectoryName(inputPath))); - } - - private string GetDirectoryElements(string dir, int first, int last) { - if (dir == null) - return ""; - string[] dirSplit = dir.Split(Path.DirectorySeparatorChar, - Path.AltDirectorySeparatorChar); - int count = dirSplit.Length; - - if ((first == 0) && (last == 0)) { - first = 1; - last = count; - } - - if (first < 0) first = (count + 1) + first; - if (last < 0) last = (count + 1) + last; - - if ((first < 1) && (last < 1)) { - return String.Empty; - } - else if ((first > count) && (last > count)) { - return String.Empty; - } - else { - int i; - StringBuilder sb = new StringBuilder(); - - if (first < 1) first = 1; - if (first > count) first = count; - if (last < 1) last = 1; - if (last > count) last = count; - - if (last >= first) { - for (i = first; i <= last; i++) { - sb.Append(dirSplit[i - 1]); - sb.Append(Path.DirectorySeparatorChar); - } - } - else { - for (i = first; i >= last; i--) { - sb.Append(dirSplit[i - 1]); - sb.Append(Path.DirectorySeparatorChar); - } - } - - return sb.ToString(0, sb.Length - 1); - } - } - private CUEStyle SelectedCUEStyle { get { if (rbEmbedCUE.Checked) return CUEStyle.SingleFileWithCUE; if (rbSingleFile.Checked) return CUEStyle.SingleFile; - return _config.gapsHandling; + return _profile._config.gapsHandling; } set { switch (value) { @@ -1343,7 +1252,7 @@ namespace JDP { string formatName = (string)comboBoxAudioFormat.SelectedItem; if (formatName.StartsWith("lossy.")) formatName = formatName.Substring(6); - return _config.formats.TryGetValue(formatName, out fmt) ? fmt : null; + return _profile._config.formats.TryGetValue(formatName, out fmt) ? fmt : null; } } @@ -1362,15 +1271,19 @@ namespace JDP { switch (value) { case AudioEncoderType.NoAudio: + radioButtonAudioNone.Checked = false; radioButtonAudioNone.Checked = true; break; case AudioEncoderType.Hybrid: + radioButtonAudioHybrid.Checked = false; radioButtonAudioHybrid.Checked = true; break; case AudioEncoderType.Lossy: + radioButtonAudioLossy.Checked = false; radioButtonAudioLossy.Checked = true; break; default: + radioButtonAudioLossless.Checked = false; radioButtonAudioLossless.Checked = true; break; } @@ -1388,6 +1301,71 @@ namespace JDP { } } + private void ResetSize() + { + MinimumSize = new Size( + _fileBrowserState == FileBrowserStateEnum.Hidden ? ClosedMinimumSize.Width : OpenMinimumSize.Width, + !_reportState ? ClosedMinimumSize.Height : OpenMinimumSize.Height); + MaximumSize = new Size( + _fileBrowserState == FileBrowserStateEnum.Hidden ? ClosedMinimumSize.Width : 4 * OpenMinimumSize.Width, + !_reportState ? ClosedMinimumSize.Height : 4 * OpenMinimumSize.Height); + Width = _fileBrowserState == FileBrowserStateEnum.Hidden ? ClosedMinimumSize.Width : OpenMinimumSize.Width + SizeIncrement.Width; + Height = !_reportState ? ClosedMinimumSize.Height : OpenMinimumSize.Height + SizeIncrement.Height; + PerformLayout(); + } + + private void SaveSize() + { + if (_fileBrowserState != FileBrowserStateEnum.Hidden) + SizeIncrement.Width = Width - OpenMinimumSize.Width; + if (_reportState) + SizeIncrement.Height = Height - OpenMinimumSize.Height; + } + + private bool ReportState + { + get + { + return _reportState; + } + set + { + toolStripButtonShowLog.Checked = value; + SaveSize(); + _reportState = value; + ResetSize(); + } + } + + bool OutputPathUseTemplate + { + get + { + return _outputPathUseTemplate; + } + set + { + _outputPathUseTemplate = value; + toolStripSplitButtonOutputBrowser.DefaultItem = _outputPathUseTemplate + ? toolStripMenuItemOutputManual : toolStripMenuItemOutputBrowse; + toolStripSplitButtonOutputBrowser.Text = toolStripSplitButtonOutputBrowser.DefaultItem.Text; + toolStripSplitButtonOutputBrowser.Image = toolStripSplitButtonOutputBrowser.DefaultItem.Image; + UpdateOutputPath(); + } + } + + private ToolStripMenuItem FileBrowserStateButton(FileBrowserStateEnum state) + { + switch (state) + { + case FileBrowserStateEnum.Tree: return toolStripMenuItemInputBrowserFiles; + case FileBrowserStateEnum.Checkboxes: return toolStripMenuItemInputBrowserMulti; + case FileBrowserStateEnum.DragDrop: return toolStripMenuItemInputBrowserDrag; + case FileBrowserStateEnum.Hidden: return toolStripMenuItemInputBrowserHide; + } + return null; + } + private FileBrowserStateEnum FileBrowserState { get @@ -1396,50 +1374,30 @@ namespace JDP { } set { - toolStripButton1.BackColor = SystemColors.Control; - toolStripButton2.BackColor = SystemColors.Control; - toolStripButton3.BackColor = SystemColors.Control; - toolStripButton4.BackColor = SystemColors.Control; - toolStripButton5.BackColor = SystemColors.Control; - ToolStripButton btn; - switch (value) - { - case FileBrowserStateEnum.Tree: btn = toolStripButton1; break; - case FileBrowserStateEnum.Checkboxes: btn = toolStripButton2; break; - case FileBrowserStateEnum.DragDrop: btn = toolStripButton3; break; - case FileBrowserStateEnum.BatchLog: btn = toolStripButton4; break; - case FileBrowserStateEnum.Hidden: btn = toolStripButton5; break; - default: return; - } - btn.BackColor = SystemColors.ButtonShadow; - grpInput.Text = btn.Text; + ToolStripMenuItem inputBtn = FileBrowserStateButton(value); + ToolStripMenuItem defaultBtn = FileBrowserStateButton(value != FileBrowserStateEnum.Hidden + ? FileBrowserStateEnum.Hidden : _fileBrowserControlState == FileBrowserStateEnum.Hidden + ? FileBrowserStateEnum.Tree : _fileBrowserControlState); + toolStripSplitButtonInputBrowser.Text = defaultBtn.Text; + toolStripSplitButtonInputBrowser.Image = defaultBtn.Image; + toolStripSplitButtonInputBrowser.DefaultItem = defaultBtn; + grpInput.Text = inputBtn.Text; - if (value == _fileBrowserState) + if (value == _fileBrowserState && _fileBrowserControlState != FileBrowserStateEnum.Hidden) return; UseWaitCursor = true; - if (value != FileBrowserStateEnum.Hidden && _fileBrowserState == FileBrowserStateEnum.Hidden) - { - MinimumSize = new Size(MinimumWidth, MinimumSize.Height); - MaximumSize = new Size(MinimumWidth * 2, MinimumSize.Height); - Width = MinimumWidth + WidthIncrement; - PerformLayout(); - } - - if (value == FileBrowserStateEnum.Hidden && _fileBrowserState != FileBrowserStateEnum.Hidden) - { - WidthIncrement = Width - MinimumWidth; - MinimumSize = new Size(Width - grpInput.Width, MinimumSize.Height); - MaximumSize = MinimumSize; - Width = MinimumSize.Width; - PerformLayout(); - } + SaveSize(); + _fileBrowserState = value; + ResetSize(); switch (value) { case FileBrowserStateEnum.Tree: case FileBrowserStateEnum.Checkboxes: + if (value == FileBrowserStateEnum.Checkboxes) + OutputPathUseTemplate = true; if (_fileBrowserControlState != value) { fileSystemTreeView1.CheckBoxes = value == FileBrowserStateEnum.Checkboxes; @@ -1480,6 +1438,7 @@ namespace JDP { fileSystemTreeView1.Select(); break; case FileBrowserStateEnum.DragDrop: + OutputPathUseTemplate = true; if (_fileBrowserControlState != value) { fileSystemTreeView1.CheckBoxes = false; @@ -1491,12 +1450,10 @@ namespace JDP { } fileSystemTreeView1.Select(); break; - case FileBrowserStateEnum.BatchLog: case FileBrowserStateEnum.Hidden: break; } UseWaitCursor = false; - _fileBrowserState = value; } } @@ -1506,9 +1463,9 @@ namespace JDP { { return rbActionVerify.Checked ? CUEAction.Verify : - rbActionVerifyAndEncode.Checked ? CUEAction.VerifyAndConvert : rbActionCorrectFilenames.Checked ? CUEAction.CorrectFilenames : rbActionCreateCUESheet.Checked ? CUEAction.CreateDummyCUE : + checkBoxUseAccurateRip.Checked ? CUEAction.VerifyAndConvert : CUEAction.Convert; } set @@ -1518,9 +1475,6 @@ namespace JDP { case CUEAction.Verify: rbActionVerify.Checked = true; break; - case CUEAction.VerifyAndConvert: - rbActionVerifyAndEncode.Checked = true; - break; case CUEAction.CorrectFilenames: rbActionCorrectFilenames.Checked = true; break; @@ -1534,24 +1488,17 @@ namespace JDP { } } - private void UpdateOutputPath() { - UpdateOutputPath(new NameValueCollection(), InputPath, null, "Artist", "Album", null, null); + private void UpdateOutputPath() + { + UpdateOutputPath(InputPath, null); } - private void UpdateOutputPath(NameValueCollection tags, string pathIn, string year, string artist, string album, string disc, string totaldiscs) + private void UpdateOutputPath(string pathIn, CUESheet cueSheet) { - /* if (rbArVerify.Checked) - { - txtOutputPath.Text = InputPath; - txtOutputPath.ReadOnly = true; - btnBrowseOutput.Enabled = false; - } - else */ - if (checkBoxDontGenerate.Checked) + if (!OutputPathUseTemplate) { txtOutputPath.ReadOnly = false; comboBoxOutputFormat.Enabled = false; - btnBrowseOutput.Enabled = true; } else { @@ -1559,112 +1506,19 @@ namespace JDP { comboBoxOutputFormat.Enabled = SelectedAction != CUEAction.CorrectFilenames && SelectedAction != CUEAction.CreateDummyCUE && - (SelectedAction != CUEAction.Verify || !_config.arLogToSourceFolder); + (SelectedAction != CUEAction.Verify || !_profile._config.arLogToSourceFolder); - btnBrowseOutput.Enabled = false; - txtOutputPath.Text = GenerateOutputPath(tags, pathIn, year, artist, album, disc, totaldiscs, null); - int unique = 1; - try - { - while (File.Exists(txtOutputPath.Text)) - { - string newPath = GenerateOutputPath(tags, pathIn, year, artist, album, disc, totaldiscs, unique.ToString()); - if (newPath == txtOutputPath.Text) - break; - txtOutputPath.Text = newPath; - unique++; - } - } - catch { } + txtOutputPath.Text = CUESheet.GenerateUniqueOutputPath( + _profile._config, + comboBoxOutputFormat.Text, + SelectedCUEStyle == CUEStyle.SingleFileWithCUE ? "." + SelectedOutputAudioFormat : ".cue", + SelectedAction, + new NameValueCollection(), + pathIn, + cueSheet); } } - private string GenerateOutputPath(NameValueCollection tags, string pathIn, string year, string artist, string album, string disc, string totaldiscs, string unique) - { - if (!IsCDROM(pathIn) && !File.Exists(pathIn) && !Directory.Exists(pathIn)) - return ""; - if (SelectedAction == CUEAction.Verify && _config.arLogToSourceFolder) - return Path.ChangeExtension(pathIn, ".cue"); - if (SelectedAction == CUEAction.CreateDummyCUE) - return Path.ChangeExtension(pathIn, ".cue"); - if (SelectedAction == CUEAction.CorrectFilenames) - return pathIn; - - string pathOut, dir, file, ext; - - pathOut = String.Empty; - - if ((pathIn.Length != 0) && (File.Exists(pathIn) || Directory.Exists(pathIn))) - { - if (Directory.Exists(pathIn)) - { - if (!pathIn.EndsWith(new string(Path.DirectorySeparatorChar, 1))) - pathIn = pathIn + Path.DirectorySeparatorChar; - dir = Path.GetDirectoryName(pathIn) ?? pathIn; - file = Path.GetFileNameWithoutExtension(dir); - } - else - { - dir = Path.GetDirectoryName(pathIn); - file = Path.GetFileNameWithoutExtension(pathIn); - } - ext = ".cue"; - if (rbEmbedCUE.Checked) - ext = "." + SelectedOutputAudioFormat; - if (_config.detectHDCD && _config.decodeHDCD && (!ext.StartsWith(".lossy.") || !_config.decodeHDCDtoLW16)) - { - if (_config.decodeHDCDto24bit) - ext = ".24bit" + ext; - else - ext = ".20bit" + ext; - } - - string format = comboBoxOutputFormat.Text; - List find = new List(); - List replace = new List(); - bool rs = _config.replaceSpaces; - - find.Add("%music%"); - find.Add("%artist%"); - find.Add("%D"); - find.Add("%album%"); - find.Add("%C"); - find.Add("%year%"); - find.Add("%Y"); - find.Add("%discnumber%"); - find.Add("%totaldiscs%"); - find.Add("%unique%"); - replace.Add(m_icon_mgr.GetFolderPath(CUEControls.ExtraSpecialFolder.MyMusic)); - replace.Add(General.EmptyStringToNull(_config.CleanseString(rs ? artist.Replace(' ', '_') : artist))); - replace.Add(General.EmptyStringToNull(_config.CleanseString(rs ? artist.Replace(' ', '_') : artist))); - replace.Add(General.EmptyStringToNull(_config.CleanseString(rs ? album.Replace(' ', '_') : album))); - replace.Add(General.EmptyStringToNull(_config.CleanseString(rs ? album.Replace(' ', '_') : album))); - replace.Add(year); - replace.Add(year); - replace.Add(disc); - replace.Add(totaldiscs); - replace.Add(unique); - BuildOutputPathFindReplace(pathIn, format, find, replace); - string[] keys = tags.AllKeys; - for (int i = 0; i < keys.Length; i++) - { - string key = '%' + keys[i].ToLower() + '%'; - string val = tags.Get(keys[i]); - if (!find.Contains(key) && val != null && val != "") - { - find.Add(key); - replace.Add(General.EmptyStringToNull(_config.CleanseString(rs ? val.Replace(' ', '_') : val))); - } - } - - pathOut = General.ReplaceMultiple(format, find, replace); - if (pathOut == null) pathOut = String.Empty; - pathOut = Path.ChangeExtension(pathOut, ext); - } - - return pathOut; - } - private void updateOutputStyles() { rbEmbedCUE.Enabled = SelectedOutputAudioType != AudioEncoderType.NoAudio && SelectedOutputAudioFmt != null && SelectedOutputAudioFmt.allowEmbed; @@ -1717,7 +1571,7 @@ namespace JDP { private void fileSystemTreeView1_NodeExpand(object sender, CUEControls.FileSystemTreeViewNodeExpandEventArgs e) { - List fileGroups = CUESheet.ScanFolder(_config, e.files); + List fileGroups = CUESheet.ScanFolder(_profile._config, e.files); foreach (FileGroupInfo fileGroup in fileGroups) { TreeNode node = fileSystemTreeView1.NewNode(fileGroup.main, fileGroup.type == FileGroupInfoType.Folder); @@ -1736,8 +1590,9 @@ namespace JDP { rbActionCreateCUESheet.Enabled = true; rbActionEncode.Enabled = true; rbActionVerify.Enabled = true; - rbActionVerifyAndEncode.Enabled = true; - checkBoxDontGenerate.Enabled = false; + //toolStripSplitButtonOutputBrowser.Enabled = false; + toolStripMenuItemOutputManual.Enabled = + toolStripMenuItemOutputBrowse.Enabled = false; } else { @@ -1746,14 +1601,15 @@ namespace JDP { && ((File.Exists(pathIn) && Path.GetExtension(pathIn).ToLower() == ".cue") || Directory.Exists(pathIn)); rbActionCreateCUESheet.Enabled = pathIn.Length != 0 - && ((File.Exists(pathIn) && CUESheet.CreateDummyCUESheet(_config, pathIn) != null) + && ((File.Exists(pathIn) && CUESheet.CreateDummyCUESheet(_profile._config, pathIn) != null) || Directory.Exists(pathIn)); - rbActionVerifyAndEncode.Enabled = - rbActionVerify.Enabled = + rbActionVerify.Enabled = rbActionEncode.Enabled = pathIn.Length != 0 && (File.Exists(pathIn) || Directory.Exists(pathIn) || IsCDROM(pathIn)); - checkBoxDontGenerate.Enabled = pathIn.Length != 0 - && (IsCDROM(pathIn) || File.Exists(pathIn)); + toolStripMenuItemOutputManual.Enabled = + toolStripMenuItemOutputBrowse.Enabled = + pathIn.Length != 0 + && (IsCDROM(pathIn) || File.Exists(pathIn)); } btnConvert.Enabled = btnConvert.Visible && @@ -1761,7 +1617,7 @@ namespace JDP { || (rbActionCreateCUESheet.Enabled && rbActionCreateCUESheet.Checked) || (rbActionEncode.Enabled && rbActionEncode.Checked) || (rbActionVerify.Enabled && rbActionVerify.Checked) - || (rbActionVerifyAndEncode.Enabled && rbActionVerifyAndEncode.Checked)); + ); comboBoxScript.Enabled = btnConvert.Enabled && comboBoxScript.Items.Count > 1; } @@ -1843,31 +1699,39 @@ namespace JDP { } } + private string SelectedScript + { + get + { + return comboBoxScript.SelectedItem != null ? ((CUEToolsScript)comboBoxScript.SelectedItem).name : "default"; + } + set + { + comboBoxScript.Items.Clear(); + foreach (KeyValuePair script in _profile._config.scripts) + if (script.Value.conditions.Contains(SelectedAction)) + comboBoxScript.Items.Add(script.Value); + comboBoxScript.Enabled = btnConvert.Enabled && comboBoxScript.Items.Count > 1; + comboBoxScript.SelectedItem = + (value != null && _profile._config.scripts.ContainsKey(value)) ? _profile._config.scripts[value] : + (comboBoxScript.Items.Count > 0 ? comboBoxScript.Items[0] : null); + } + } + private void SetupScripts() { - comboBoxScript.Items.Clear(); - foreach (KeyValuePair script in _config.scripts) - if (script.Value.conditions.Contains(SelectedAction)) - comboBoxScript.Items.Add(script.Value); - comboBoxScript.Enabled = btnConvert.Enabled && comboBoxScript.Items.Count > 1; - comboBoxScript.SelectedItem = comboBoxScript.Items.Count > 0 ? comboBoxScript.Items[0] : null; - try - { - switch (SelectedAction) - { - case CUEAction.Verify: - comboBoxScript.SelectedItem = _config.scripts[_config.defaultVerifyScript]; - break; - case CUEAction.Convert: - comboBoxScript.SelectedItem = _config.scripts[_config.defaultConvertScript]; - break; - case CUEAction.VerifyAndConvert: - comboBoxScript.SelectedItem = _config.scripts[_config.defaultVerifyAndConvertScript]; - break; - } - } - catch + switch (SelectedAction) { + case CUEAction.Verify: + SelectedScript = _profile._config.defaultVerifyScript; + break; + case CUEAction.Convert: + case CUEAction.VerifyAndConvert: + SelectedScript = _profile._config.defaultVerifyAndConvertScript; + break; + default: + SelectedScript = null; + break; } } @@ -1876,13 +1740,11 @@ namespace JDP { switch (action) { case CUEAction.Verify: - _config.defaultVerifyScript = ((CUEToolsScript)comboBoxScript.SelectedItem).name; + _profile._config.defaultVerifyScript = SelectedScript; break; case CUEAction.Convert: - _config.defaultConvertScript = ((CUEToolsScript)comboBoxScript.SelectedItem).name; - break; case CUEAction.VerifyAndConvert: - _config.defaultVerifyAndConvertScript = ((CUEToolsScript)comboBoxScript.SelectedItem).name; + _profile._config.defaultVerifyAndConvertScript = SelectedScript; break; } } @@ -1894,8 +1756,6 @@ namespace JDP { if (sender == rbActionVerify && comboBoxScript.SelectedItem != null) SaveScripts(CUEAction.Verify); if (sender == rbActionEncode && comboBoxScript.SelectedItem != null) - SaveScripts(CUEAction.Convert); - if (sender == rbActionVerifyAndEncode && comboBoxScript.SelectedItem != null) SaveScripts(CUEAction.VerifyAndConvert); return; } @@ -2029,18 +1889,18 @@ namespace JDP { } else { - foreach (KeyValuePair encoder in _config.encoders) - if (encoder.Value.extension == SelectedOutputAudioFmt.extension) + foreach (CUEToolsUDC encoder in _profile._config.encoders) + if (encoder.extension == SelectedOutputAudioFmt.extension) { if (SelectedOutputAudioFormat.StartsWith("lossy.")) { - if (!encoder.Value.lossless) + if (!encoder.lossless) continue; - } else if (SelectedOutputAudioType == AudioEncoderType.Lossless && !encoder.Value.lossless) + } else if (SelectedOutputAudioType == AudioEncoderType.Lossless && !encoder.lossless) continue; - else if (SelectedOutputAudioType == AudioEncoderType.Lossy && encoder.Value.lossless) + else if (SelectedOutputAudioType == AudioEncoderType.Lossy && encoder.lossless) continue; - comboBoxEncoder.Items.Add(encoder.Key); + comboBoxEncoder.Items.Add(encoder); } comboBoxEncoder.SelectedItem = SelectedOutputAudioFormat.StartsWith("lossy.") ? SelectedOutputAudioFmt.encoderLossless : SelectedOutputAudioType == AudioEncoderType.Lossless ? SelectedOutputAudioFmt.encoderLossless @@ -2065,26 +1925,13 @@ namespace JDP { } } - private void comboBoxCorrectorFormat_SelectedIndexChanged(object sender, EventArgs e) - { - CUEToolsFormat fmt; - if (comboBoxCorrectorFormat.SelectedItem == null || !_config.formats.TryGetValue((string)comboBoxCorrectorFormat.SelectedItem, out fmt)) - return; - labelCorrectorFormat.ImageKey = "." + fmt.extension; - } - - private void rbCorrectorChangeExtension_CheckedChanged(object sender, EventArgs e) - { - labelCorrectorFormat.Visible = comboBoxCorrectorFormat.Enabled = rbCorrectorChangeExtension.Checked; - } - private void radioButtonAudioLossless_CheckedChanged(object sender, EventArgs e) { if (sender is RadioButton && !((RadioButton)sender).Checked) return; labelFormat.ImageKey = null; comboBoxAudioFormat.Items.Clear(); - foreach (KeyValuePair format in _config.formats) + foreach (KeyValuePair format in _profile._config.formats) { if (SelectedOutputAudioType == AudioEncoderType.Lossless && !format.Value.allowLossless) continue; @@ -2096,7 +1943,7 @@ namespace JDP { //continue; comboBoxAudioFormat.Items.Add(format.Key); } - foreach (KeyValuePair format in _config.formats) + foreach (KeyValuePair format in _profile._config.formats) { if (!format.Value.allowLossyWAV) continue; @@ -2134,14 +1981,13 @@ namespace JDP { return; if (SelectedOutputAudioFormat == null) return; - string encoder_name = (string)comboBoxEncoder.SelectedItem; + CUEToolsUDC encoder = comboBoxEncoder.SelectedItem as CUEToolsUDC; if (SelectedOutputAudioFormat.StartsWith("lossy.")) - SelectedOutputAudioFmt.encoderLossless = encoder_name; + SelectedOutputAudioFmt.encoderLossless = encoder; else if (SelectedOutputAudioType == AudioEncoderType.Lossless) - SelectedOutputAudioFmt.encoderLossless = encoder_name; + SelectedOutputAudioFmt.encoderLossless = encoder; else - SelectedOutputAudioFmt.encoderLossy = encoder_name; - CUEToolsUDC encoder = _config.encoders[encoder_name]; + SelectedOutputAudioFmt.encoderLossy = encoder; string [] modes = encoder.SupportedModes; if (modes == null || modes.Length < 2) { @@ -2166,18 +2012,12 @@ namespace JDP { private void trackBarEncoderMode_Scroll(object sender, EventArgs e) { - string encoder_name = (string)comboBoxEncoder.SelectedItem; - CUEToolsUDC encoder = _config.encoders[encoder_name]; + CUEToolsUDC encoder = comboBoxEncoder.SelectedItem as CUEToolsUDC; string[] modes = encoder.SupportedModes; encoder.default_mode = modes[trackBarEncoderMode.Value]; labelEncoderMode.Text = encoder.default_mode; } - private void checkBoxAdvancedMode_CheckedChanged(object sender, EventArgs e) - { - SetupControls(false); - } - private void toolStripButton1_Click(object sender, EventArgs e) { FileBrowserState = FileBrowserStateEnum.Tree; @@ -2198,7 +2038,7 @@ namespace JDP { private void toolStripButton4_Click(object sender, EventArgs e) { - FileBrowserState = FileBrowserStateEnum.BatchLog; + ReportState = !ReportState; SetupControls(false); } @@ -2207,5 +2047,168 @@ namespace JDP { FileBrowserState = FileBrowserStateEnum.Hidden; SetupControls(false); } + + private void toolStripButtonHelp_Click(object sender, EventArgs e) + { + System.Diagnostics.Process.Start("http://www.cuetools.net"); + } + + private void toolStripDropDownButtonProfile_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e) + { + if (e.ClickedItem == toolStripTextBoxAddProfile + || e.ClickedItem == toolStripSeparator5) + return; + if (e.ClickedItem == toolStripMenuItemDeleteProfile) + { + foreach(ToolStripItem item in toolStripDropDownButtonProfile.DropDownItems) + if (item.Text == toolStripDropDownButtonProfile.Text + && item != toolStripTextBoxAddProfile + && item != toolStripMenuItemDeleteProfile + && item != defaultToolStripMenuItem + ) + { + toolStripDropDownButtonProfile.DropDownItems.Remove(item); + _profile = _defaultProfile; + ActivateProfile(); + return; + } + return; + } + string profileName = e.ClickedItem.Text; + if (profileName == _profile._name) + return; + DeactivateProfile(); + ActivateProfile(profileName); + } + + private void toolStripTextBoxAddProfile_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode != Keys.Enter) return; + if (toolStripTextBoxAddProfile.Text.IndexOfAny(Path.GetInvalidFileNameChars()) >= 0 + || toolStripTextBoxAddProfile.Text.IndexOf(' ') >= 0 + || toolStripTextBoxAddProfile.Text.Length <= 0) + { + //System.Media.SystemSounds.Beep.Play(); + return; + } + ToolStripItem item = toolStripDropDownButtonProfile.DropDownItems.Add(toolStripTextBoxAddProfile.Text); + toolStripDropDownButtonProfile.DropDown.Close(); + e.Handled = true; + e.SuppressKeyPress = true; + + string profileName = item.Text; + DeactivateProfile(); + _profile = new CUEToolsProfile(profileName); + ActivateProfile(); + } + + private void toolStripSplitButtonInputBrowser_ButtonClick(object sender, EventArgs e) + { + //FileBrowserState = _fileBrowserState != FileBrowserStateEnum.Hidden + // ? FileBrowserStateEnum.Hidden + // : _fileBrowserControlState == FileBrowserStateEnum.Hidden + // ? FileBrowserStateEnum.Tree + // : _fileBrowserControlState; + //SetupControls(false); + } + + private void toolStripSplitButtonInputBrowser_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e) + { + toolStripSplitButtonInputBrowser.DropDown.Close(ToolStripDropDownCloseReason.ItemClicked); + if (e.ClickedItem == toolStripMenuItemInputBrowserFiles) + FileBrowserState = FileBrowserStateEnum.Tree; + if (e.ClickedItem == toolStripMenuItemInputBrowserMulti) + FileBrowserState = FileBrowserStateEnum.Checkboxes; + if (e.ClickedItem == toolStripMenuItemInputBrowserDrag) + FileBrowserState = FileBrowserStateEnum.DragDrop; + if (e.ClickedItem == toolStripMenuItemInputBrowserHide) + FileBrowserState = FileBrowserStateEnum.Hidden; + SetupControls(false); + } + + private void toolStripSplitButtonOutputBrowser_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e) + { + toolStripSplitButtonOutputBrowser.DropDown.Close(ToolStripDropDownCloseReason.ItemClicked); + if (e.ClickedItem == toolStripMenuItemOutputBrowse) + { + OutputPathUseTemplate = false; + SaveFileDialog fileDlg = new SaveFileDialog(); + DialogResult dlgRes; + + fileDlg.Title = "Output CUE Sheet"; + fileDlg.Filter = "CUE Sheets (*.cue)|*.cue"; + + dlgRes = fileDlg.ShowDialog(); + if (dlgRes == DialogResult.OK) + txtOutputPath.Text = fileDlg.FileName; + UpdateOutputPath(); + return; + } + if (e.ClickedItem == toolStripMenuItemOutputManual) + { + OutputPathUseTemplate = false; + UpdateOutputPath(); + return; + } + if (e.ClickedItem == toolStripMenuItemOutputTemplate) + { + OutputPathUseTemplate = true; + UpdateOutputPath(); + return; + } + } + + private void toolStripDropDownButtonCorrectorFormat_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e) + { + CUEToolsFormat fmt; + if (!_profile._config.formats.TryGetValue(e.ClickedItem.Text, out fmt)) + return; + toolStripDropDownButtonCorrectorFormat.DropDown.Close(ToolStripDropDownCloseReason.ItemClicked); + toolStripDropDownButtonCorrectorFormat.ImageKey = e.ClickedItem.ImageKey; + toolStripDropDownButtonCorrectorFormat.Text = e.ClickedItem.Text; + } + + private CorrectorModeEnum CorrectorMode + { + get + { + return _correctorMode; + } + set + { + ToolStripMenuItem item = null; + switch (value) + { + case CorrectorModeEnum.Extension: + item = toolStripMenuItemCorrectorModeChangeExtension; + break; + case CorrectorModeEnum.Locate: + item = toolStripMenuItemCorrectorModeLocateFiles; + break; + } + toolStripDropDownButtonCorrectorMode.Text = item.Text; + toolStripDropDownButtonCorrectorMode.Image = item.Image; + toolStripDropDownButtonCorrectorMode.ToolTipText = item.ToolTipText; + toolStripDropDownButtonCorrectorFormat.Visible = value == CorrectorModeEnum.Extension; + _correctorMode = value; + } + } + + private void toolStripDropDownButtonCorrectorMode_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e) + { + CorrectorMode = e.ClickedItem == toolStripMenuItemCorrectorModeChangeExtension ? + CorrectorModeEnum.Extension : CorrectorModeEnum.Locate; + } + + private void pictureBoxMotd_Click(object sender, EventArgs e) + { + if (motdImage != null && pictureBoxMotd.Image == motdImage) + System.Diagnostics.Process.Start("http://www.cuetools.net/doku.php/cuetools:download"); + } + + private void checkBoxUseAccurateRip_CheckedChanged(object sender, EventArgs e) + { + SetupControls(false); + } } } diff --git a/CUETools/frmCUETools.de-DE.resx b/CUETools/frmCUETools.de-DE.resx index f21fdc7..4ba749a 100644 --- a/CUETools/frmCUETools.de-DE.resx +++ b/CUETools/frmCUETools.de-DE.resx @@ -117,40 +117,19 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Eingabe - 49, 13 - - E&ingabe: - 62, 17 - - &Manuell - - - ... - - - - - - Output: - - - Vorlage: - 51, 17 @@ -196,21 +175,12 @@ 99, 17 - - Dateien suchen - 111, 17 - - Neue Erweiterung - 95, 17 - - CUE überschr. - Korrektur @@ -235,12 +205,6 @@ 116, 17 - - Verif. und kodieren - - - - 95, 17 @@ -254,17 +218,14 @@ 126, 17 - &Nicht verif., kodieren + &Kodieren - Kodiert, ohne die AccurateRip-Datenbank zu kontaktieren. + Verif. und kodieren Eigenes Script ausführen - - Über - &Los @@ -283,24 +244,12 @@ 55, 17 - - Immer - 80, 17 - - Wenn nötig - 40, 17 - - Nie - - - FreeDB-Abfrage - &Fortsetzen @@ -331,27 +280,9 @@ CUE-Stil - - Einstellungen - &Stopp - - Dateiauswahl - - - Mehrfache Dateiauswahl - - - Drag'n'drop-Modus - - - Logdatei - - - Ausblenden - Ausgewählte Datei @@ -383,4 +314,70 @@ AAAAAAAAAAAAAIABAADAAwAA4AcAAPAPAAA= + + AccurateRip-Abfrage + + + FreeDB-Abfrage + + + MusicBrainz-Abfrage + + + CUE-Path + + + Über + + + CUE überschr. + + + + + + Einstellungen + + + Logdatei + + + E&ingabe: + + + Output: + + + Neue Erweiterung + + + + + + Dateien suchen + + + + + + Drag'n'drop-Modus + + + Dateiauswahl + + + Ausblenden + + + Mehrfache Dateiauswahl + + + Ausblenden + + + Manuell + + + Vorlage + \ No newline at end of file diff --git a/CUETools/frmCUETools.resx b/CUETools/frmCUETools.resx index 1a39641..a5887c6 100644 --- a/CUETools/frmCUETools.resx +++ b/CUETools/frmCUETools.resx @@ -118,7 +118,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - 615, 8 + 0, 0 @@ -126,13 +126,13 @@ - 257, 20 + 404, 21 MiddleLeft - 72, 20 + 72, 21 Processed: 0 @@ -148,7 +148,7 @@ White - 21, 20 + 21, 21 Overlay @@ -157,13 +157,13 @@ Album found in AccurateRip database. - 140, 19 + 120, 20 Track progress - 140, 19 + 120, 20 Disk progress @@ -172,7 +172,7 @@ 0, 0 - 680, 25 + 684, 26 1 @@ -214,7 +214,10 @@ Courier New, 8.25pt - 3, 17 + 0, 330 + + + 0, 0, 0, 0 True @@ -223,7 +226,7 @@ Both - 163, 427 + 684, 121 2 @@ -238,7 +241,7 @@ System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - grpInput + tableLayoutPanel1 0 @@ -250,10 +253,10 @@ 19 - 6, 20 + 3, 17 - 157, 421 + 192, 304 1 @@ -262,25 +265,25 @@ fileSystemTreeView1 - CUEControls.FileSystemTreeView, CUEControls, Version=1.0.3461.42876, Culture=neutral, PublicKeyToken=null + CUEControls.FileSystemTreeView, CUEControls, Version=1.0.3469.35476, Culture=neutral, PublicKeyToken=null grpInput - 1 + 0 Fill - 0, 0 + 3, 3 - + 0, 0, 0, 0 - 169, 447 + 198, 324 0 @@ -298,11 +301,377 @@ tableLayoutPanel1 - 0 + 1 3 + + 3 + + + True + + + Fill + + + NoControl + + + 95, 80 + + + 0, 0, 0, 0 + + + 49, 30 + + + 5 + + + 153, 8 + + + Use AccurateRip + + + checkBoxUseAccurateRip + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelCUEStyle + + + 0 + + + True + + + Fill + + + NoControl + + + 47, 80 + + + 0, 0, 0, 0 + + + 48, 30 + + + 4 + + + Use FreeDb + + + checkBoxUseFreeDb + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelCUEStyle + + + 1 + + + True + + + Fill + + + NoControl + + + 3, 36 + + + 3, 0, 3, 0 + + + 138, 18 + + + 2 + + + &Tracks + + + File per track. Gap handling can be selected in advanced settings. + + + rbTracks + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelCUEStyle + + + 2 + + + True + + + Fill + + + NoControl + + + 3, 0 + + + 3, 0, 3, 0 + + + 138, 18 + + + 0 + + + &Embedded + + + Create single file with embedded CUE sheet. + + + rbEmbedCUE + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelCUEStyle + + + 3 + + + True + + + Fill + + + NoControl + + + 3, 18 + + + 3, 0, 3, 0 + + + 138, 18 + + + 1 + + + Image + CUE + + + Create single file + CUE sheet + + + rbSingleFile + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelCUEStyle + + + 4 + + + True + + + Fill + + + 0, 80 + + + 0, 0, 0, 0 + + + 47, 30 + + + 3 + + + Use MusicBrainz + + + 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 + + + 5 + + + 144, 110 + + + 11 + + + tableLayoutPanelCUEStyle + + + 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="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,33333,Percent,33,33334,Percent,33,33334" /><Rows Styles="Percent,16,41941,Percent,16,41942,Percent,16,42196,Percent,24,54545,Percent,26,36364" /></TableLayoutSettings> + + + 3, 17 + + + False + + + Fill + + + Magenta + + + 78, 20 + + + Overwrite + + + 168, 22 + + + Locate files + + + Try to locate missing files automaticly + + + 168, 22 + + + Change extension + + + Replace extension for audio files with this: + + + Magenta + + + 79, 19 + + + Locate files + + + Magenta + + + 39, 19 + + + flac + + + 3, 17 + + + 3, 0, 1, 0 + + + 144, 110 + + + 20 + + + toolStripCorrectorFormat + + + System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxMode + + + 1 + + + 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 + False @@ -313,7 +682,7 @@ NoControl - 76, 174 + 100, 174 0, 0, 0, 0 @@ -388,13 +757,13 @@ NoControl - 6, 174 + 3, 174 0, 0, 0, 0 - 109, 15 + 139, 15 18 @@ -405,9 +774,6 @@ TopCenter - - 153, 8 - For lossless formats, the level of compression. For lossy formats, target quality @@ -436,7 +802,7 @@ 0, 0, 0, 0 - 118, 45 + 142, 45 17 @@ -460,7 +826,7 @@ 10, 116 - 105, 21 + 129, 21 16 @@ -646,7 +1012,7 @@ 38, 88 - 77, 21 + 101, 21 9 @@ -670,10 +1036,10 @@ Fill - 187, 138 + 329, 101 - 124, 194 + 148, 194 2 @@ -691,19 +1057,55 @@ tableLayoutPanel2 - 0 + 1 - - True + + 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 - 6, 77 + 0, 48 + + + 0, 0, 0, 0 - 55, 13 + 86, 24 13 @@ -711,6 +1113,9 @@ Template: + + MiddleLeft + labelOutputTemplate @@ -718,112 +1123,19 @@ System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - grpOutputPathGeneration + tableLayoutPanelPaths 0 - - True - - - NoControl - - - 6, 50 - - - 45, 13 - - - 12 - - - Output: - - - labelOutput - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpOutputPathGeneration - - - 1 - - - True - - - NoControl - - - 6, 23 - - - 37, 13 - - - 11 - - - Input: - - - labelInput - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpOutputPathGeneration - - - 2 - - - True - - - NoControl - - - 6, 105 - - - 60, 17 - - - 10 - - - Manual - - - Choose output path manualy - - - checkBoxDontGenerate - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpOutputPathGeneration - - - 3 - - - Top, Left, Right + + Fill - 64, 74 + 89, 51 - 408, 21 + 376, 21 9 @@ -838,19 +1150,19 @@ System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - grpOutputPathGeneration + tableLayoutPanelPaths - 4 + 1 - - Top, Left, Right + + Fill - 64, 20 + 89, 3 - 408, 21 + 376, 21 0 @@ -865,52 +1177,19 @@ System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - grpOutputPathGeneration + tableLayoutPanelPaths - 5 + 2 - - Top, Right - - - NoControl - - - 401, 100 - - - 71, 23 - - - 8 - - - Browse... - - - Browse for output location - - - btnBrowseOutput - - - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpOutputPathGeneration - - - 6 - - - Top, Left, Right + + Fill - 64, 47 + 89, 27 - 408, 21 + 376, 21 0 @@ -925,22 +1204,190 @@ System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - grpOutputPathGeneration + tableLayoutPanelPaths - 7 + 3 + + + 0, 0 + + + Fill + + + 38, 21 + + + Input: + + + 177, 22 + + + Folder browser + + + 177, 22 + + + Multiselect Browser + + + 177, 22 + + + Drag'n'drop mode + + + 177, 22 + + + Hide browser + + + Magenta + + + 32, 21 + + + Open/close input browser + + + 0, 0 + + + 0, 0, 0, 0 + + + 86, 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, 21 + + + Output: + + + 143, 22 + + + Browse + + + 143, 22 + + + Manual + + + 143, 22 + + + Use template + + + Magenta + + + 32, 21 + + + toolStripSplitButtonOutputBrowser + + + 0, 24 + + + 0, 0, 0, 0 + + + 86, 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,18,41004,Percent,81,58996" /><Rows Styles="Percent,33,33333,Percent,33,33333,Percent,33,33333" /></TableLayoutSettings> Fill - 4, 0 - - - 4, 0, 4, 0 + 3, 3 - 478, 135 + 474, 92 1 @@ -958,49 +1405,16 @@ tableLayoutPanel2 - 1 - - - True - - - NoControl - - - 10, 161 - - - 103, 17 - - - 6 - - - Advanced mode - - - False - - - checkBoxAdvancedMode - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpAction - - - 0 + 3 Top, Left, Right - 10, 134 + 6, 94 - 158, 21 + 150, 21 10 @@ -1018,7 +1432,7 @@ grpAction - 1 + 0 True @@ -1027,7 +1441,7 @@ NoControl - 9, 88 + 6, 71 109, 17 @@ -1051,7 +1465,7 @@ grpAction - 2 + 1 True @@ -1060,7 +1474,7 @@ NoControl - 9, 71 + 6, 54 112, 17 @@ -1084,40 +1498,7 @@ grpAction - 3 - - - True - - - NoControl - - - 9, 20 - - - 112, 17 - - - 1 - - - Encode and verify - - - Convert to another format, and verify using AccurateRip database - - - rbActionVerifyAndEncode - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpAction - - - 4 + 2 True @@ -1126,7 +1507,7 @@ NoControl - 9, 54 + 6, 37 53, 17 @@ -1150,7 +1531,7 @@ grpAction - 5 + 3 True @@ -1159,7 +1540,7 @@ NoControl - 9, 37 + 6, 20 60, 17 @@ -1183,16 +1564,16 @@ grpAction - 6 + 4 Fill - 3, 138 + 3, 101 - 178, 194 + 164, 130 4 @@ -1210,190 +1591,91 @@ tableLayoutPanel2 - 2 - - - True - - - NoControl - - - 6, 37 - - - 79, 17 - - - 19 - - - Locate files - - - Try to locate missing files automaticly - - - rbCorrectorLocateFiles - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBoxCorrector - - - 0 - - - True - - - NoControl - - - 6, 54 - - - 96, 17 - - - 18 - - - New extension - - - Replace extension for audio files with this: - - - rbCorrectorChangeExtension - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBoxCorrector - - - 1 - - - True - - - NoControl - - - 6, 20 - - - 97, 17 - - - 17 - - - Overwrite CUE - - - Overwrite CUE with corrected one - - - checkBoxCorrectorOverwrite - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBoxCorrector - - - 2 - - - True - - - NoControl - - - 5, 74 - - - 16, 16 - - - 13 - - - labelCorrectorFormat - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBoxCorrector - - - 3 - - - 27, 71 - - - 71, 21 - - - 16 - - - comboBoxCorrectorFormat - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBoxCorrector - - 4 - + + 2 + + + True + + Fill - - 187, 338 + + NoControl - - 124, 102 + + 3, 0 - - 12 + + 75, 23 - - Corrector - - - groupBoxCorrector - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel2 - - + 3 - - Top, Right + + Pregap + + + MiddleLeft + + + labelPregap + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel4 + + + 0 + + + True + + + Fill + + + NoControl + + + 3, 46 + + + 75, 24 + + + 5 + + + Offset + + + MiddleLeft + + + lblWriteOffset + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel4 + + + 1 + + + Fill - 114, 56 + 84, 49 - 54, 21 + 57, 21 2 @@ -1411,16 +1693,16 @@ System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - grpExtra + tableLayoutPanel4 - 0 + 2 - - Top, Right + + Fill - 114, 14 + 84, 3 00:00:00 @@ -1429,7 +1711,7 @@ 0 - 54, 21 + 57, 21 0 @@ -1444,73 +1726,52 @@ System.Windows.Forms.MaskedTextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - grpExtra + tableLayoutPanel4 - 1 + 3 - + True - + + Fill + + NoControl - - 6, 58 + + 3, 23 - - 38, 13 + + 75, 23 - - 5 + + 4 - - Offset + + Data track - - lblWriteOffset + + MiddleLeft - + + labelDataTrack + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - grpExtra + + tableLayoutPanel4 - - 2 + + 4 - - True - - - 6, 17 - - - 41, 13 - - - 3 - - - Pregap - - - labelPregap - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpExtra - - - 3 - - - Top, Right + + Fill - 114, 35 + 84, 26 00:00:00 @@ -1519,7 +1780,7 @@ 0 - 54, 21 + 57, 21 1 @@ -1534,49 +1795,52 @@ System.Windows.Forms.MaskedTextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - grpExtra + tableLayoutPanel4 - 4 + 5 - - True + + Fill - - NoControl + + 3, 17 - - 6, 38 + + 0, 0, 0, 0 - - 57, 13 + + 3 - - 4 + + 144, 70 - - Data track + + 6 - - labelDataTrack + + tableLayoutPanel4 - - System.Windows.Forms.Label, 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 - + grpExtra - - 5 + + 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 - 3, 338 + 173, 237 - 178, 102 + 150, 90 6 @@ -1594,388 +1858,22 @@ tableLayoutPanel2 - 4 - - - 1 - - - Fill - - - MiddleRight - - - 4, 151 - - - 4, 4, 4, 4 - - - 160, 41 - - - 14 - - - labelMotd - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel3 - - - 0 - - - True - - - 11, 53 - - - 56, 17 - - - 2 - - - &Tracks - - - File per track. Gap handling can be selected in advanced settings. - - - rbTracks - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpOutputStyle - - - 0 - - - True - - - NoControl - - - 11, 19 - - - 75, 17 - - - 0 - - - &Embedded - - - Create single file with embedded CUE sheet. - - - rbEmbedCUE - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpOutputStyle - - - 1 - - - True - - - NoControl - - - 11, 36 - - - 106, 17 - - - 1 - - - &Single File + CUE - - - Create single file + CUE sheet - - - rbSingleFile - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpOutputStyle - - - 2 - - - Fill - - - 4, 0 - - - 4, 0, 4, 0 - - - 160, 76 - - - 3 - - - CUE Style - - - grpOutputStyle - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel3 - - - 1 - - - True - - - NoControl - - - 11, 50 - - - 59, 17 - - - 2 - - - Always - - - rbFreedbAlways - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpFreedb - - - 0 - - - True - - - NoControl - - - 11, 33 - - - 72, 17 - - - 1 - - - If needed - - - rbFreedbIf - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpFreedb - - - 1 - - - True - - - NoControl - - - 11, 16 - - - 54, 17 - - - 0 - - - Never - - - rbFreedbNever - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpFreedb - - - 2 - - - Fill - - - 4, 76 - - - 4, 0, 4, 0 - - - 160, 71 - - 5 - - Freedb lookup - - - grpFreedb - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel3 - - - 2 - - + Fill - - 316, 137 - - - 2, 2, 2, 2 - - - 3 - - - 168, 196 - - - 13 - - - tableLayoutPanel3 - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel2 - - - 5 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="labelMotd" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="grpOutputStyle" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="grpFreedb" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0" /></TableLayoutSettings> - - - MiddleLeft - - - NoControl - - - 3, 33 - - - 152, 24 - - - 8 - - - About - - - btnAbout - - - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel1 - - - 0 - - - MiddleLeft - - - NoControl - - - 3, 3 - - - 152, 24 - - - 7 - - - Advanced Settings... - - - btnSettings - - - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel1 - - - 1 - NoControl - 4, 61 + 0, 0 + + + 0, 0, 0, 0 - 151, 23 + 130, 26 9 @@ -1990,19 +1888,22 @@ System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - panel1 + panelGo - 2 + 0 NoControl - 3, 61 + 0, 0 + + + 0, 0, 0, 0 - 75, 23 + 65, 25 10 @@ -2020,19 +1921,25 @@ System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - panel1 + panelGo - 3 + 1 + + + Top, Right NoControl - 84, 61 + 65, 0 + + + 0, 0, 0, 0 - 71, 23 + 65, 25 11 @@ -2050,19 +1957,25 @@ System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - panel1 + panelGo - 4 + 2 + + + Top, Right NoControl - 84, 61 + 65, 0 + + + 0, 0, 0, 0 - 71, 23 + 65, 25 11 @@ -2080,52 +1993,52 @@ System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - panel1 + panelGo - 5 + 3 - + Fill - - 318, 335 + + 338, 301 - - 4, 0, 4, 0 + + 12, 3, 12, 3 - - 164, 108 + + 130, 26 - + 14 - - panel1 + + panelGo - + System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + tableLayoutPanel2 - + 6 Fill - 171, 2 + 204, 0 - 2, 2, 2, 2 + 0, 0, 0, 0 - 3 + 4 - 486, 443 + 480, 330 1 @@ -2140,10 +2053,10 @@ tableLayoutPanel1 - 1 + 2 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="grpAudioOutput" Row="1" RowSpan="1" Column="1" 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="groupBoxCorrector" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="grpExtra" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutPanel3" Row="1" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="panel1" Row="2" RowSpan="1" Column="2" ColumnSpan="1" /></Controls><Columns Styles="Percent,37,99266,Percent,26,79313,Percent,35,21421" /><Rows Styles="Percent,30,63063,Percent,45,27027,Percent,24,0991" /></TableLayoutSettings> + <?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 @@ -2152,13 +2065,13 @@ 0, 0 - 2, 2, 2, 2 + 0, 0, 0, 0 - 1 + 2 - 659, 447 + 684, 451 17 @@ -2176,13 +2089,13 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><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,490" /><Rows Styles="AutoSize,0" /></TableLayoutSettings> + <?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 - 659, 447 + 684, 451 toolStripContainer1.ContentPanel @@ -2199,120 +2112,6 @@ Fill - - 0, 0 - - - None - - - False - - - 20, 6 - - - False - - - None - - - Magenta - - - 20, 20 - - - File browser - - - False - - - None - - - Magenta - - - 20, 20 - - - Multiselect File Browser - - - False - - - None - - - Magenta - - - 20, 20 - - - Drag'n'drop mode - - - False - - - None - - - Magenta - - - 20, 20 - - - Batch log - - - False - - - None - - - Magenta - - - 20, 20 - - - Hide - - - False - - - 20, 6 - - - 0, 3 - - - 21, 129 - - - 0 - - - toolStrip1 - - - System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripContainer1.LeftToolStripPanel - - - 0 - toolStripContainer1.LeftToolStripPanel @@ -2341,7 +2140,7 @@ 2 - 680, 472 + 684, 502 17 @@ -2349,6 +2148,111 @@ toolStripContainer1 + + 0, 0 + + + None + + + 100, 23 + + + Create a new profile + + + 160, 22 + + + delete + + + Delete current profile + + + 157, 6 + + + 160, 22 + + + default + + + Magenta + + + 73, 22 + + + default + + + Profile + + + 6, 25 + + + Magenta + + + 23, 22 + + + About + + + Magenta + + + 23, 22 + + + CUETools website + + + Magenta + + + 23, 22 + + + Settings + + + None + + + Magenta + + + 23, 22 + + + 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 @@ -2413,13 +2317,13 @@ True - 79 + 29 6, 13 - 680, 472 + 684, 502 Tahoma, 8.25pt @@ -2821,50 +2725,167 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAQAAwAMAAPAPAAA= - - 1446, 508 - - 696, 508 + 700, 538 - CUETools 2.0.3a + CUETools 2.0.4 - - toolStripSeparator1 + + toolStripStatusLabel1 - + + System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripStatusLabelProcessed + + + System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripStatusLabelAR + + + System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripProgressBar1 + + + System.Windows.Forms.ToolStripProgressBar, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripProgressBar2 + + + System.Windows.Forms.ToolStripProgressBar, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripButtonCorrectorOverwrite + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripDropDownButtonCorrectorMode + + + System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripMenuItemCorrectorModeLocateFiles + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripMenuItemCorrectorModeChangeExtension + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripDropDownButtonCorrectorFormat + + + System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripLabelInput + + + System.Windows.Forms.ToolStripLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSplitButtonInputBrowser + + + System.Windows.Forms.ToolStripSplitButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripMenuItemInputBrowserFiles + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripMenuItemInputBrowserMulti + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripMenuItemInputBrowserDrag + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripMenuItemInputBrowserHide + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripLabelOutput + + + System.Windows.Forms.ToolStripLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSplitButtonOutputBrowser + + + System.Windows.Forms.ToolStripSplitButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripMenuItemOutputBrowse + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripMenuItemOutputManual + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripMenuItemOutputTemplate + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripDropDownButtonProfile + + + System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripTextBoxAddProfile + + + System.Windows.Forms.ToolStripTextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripMenuItemDeleteProfile + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator5 + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - toolStripButton1 + + defaultToolStripMenuItem - - System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripButton2 - - - System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripButton3 - - - System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripButton4 - - - System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripButton5 - - - System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 toolStripSeparator3 @@ -2872,6 +2893,30 @@ System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + toolStripButtonAbout + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripButtonHelp + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripButtonSettings + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripButtonShowLog + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + toolTip1 @@ -2902,36 +2947,6 @@ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - toolStripProgressBar2 - - - System.Windows.Forms.ToolStripProgressBar, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripProgressBar1 - - - System.Windows.Forms.ToolStripProgressBar, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripStatusLabel1 - - - System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripStatusLabelAR - - - System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripStatusLabelProcessed - - - System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - frmCUETools diff --git a/CUETools/frmCUETools.ru-RU.resx b/CUETools/frmCUETools.ru-RU.resx index c85cbeb..ff7c040 100644 --- a/CUETools/frmCUETools.ru-RU.resx +++ b/CUETools/frmCUETools.ru-RU.resx @@ -151,39 +151,18 @@ 44, 13 - - Выход: - - - - 36, 13 - - Вход: - - - - 71, 17 - - Вручную - - - - - - Выбор... - @@ -250,21 +229,9 @@ 96, 17 - - Поиск файлов - - - Автоматический поиск переименованных файлов - 86, 17 - - Расширение - - - Заменить расширение аудио-файлов - Заменить CUE @@ -340,12 +307,6 @@ - - О программе - - - - Поехали @@ -470,12 +431,6 @@ - - Настройки... - - - - Стоп @@ -491,21 +446,6 @@ - - Проводник - - - Проводник (пакетный режим) - - - Режим drag'n'drop - - - Журнал работы - - - Скрыть - @@ -924,4 +864,67 @@ + + Использовать AccurateRip + + + Использовать FreeDb + + + Использовать MusicBrainz + + + О программе + + + Сайт + + + Настройки... + + + Журнал работы + + + Режим drag'n'drop + + + Проводник + + + Скрыть проводник + + + Проводник (пакетный режим) + + + Проводник + + + Вручную + + + По шаблону + + + Заменить CUE + + + Вход: + + + Выход: + + + Расширение + + + Заменить расширение аудио-файлов + + + Поиск файлов + + + Автоматический поиск переименованных файлов + \ No newline at end of file diff --git a/CUETools/frmSettings.Designer.cs b/CUETools/frmSettings.Designer.cs index 898f2e9..fb2363f 100644 --- a/CUETools/frmSettings.Designer.cs +++ b/CUETools/frmSettings.Designer.cs @@ -27,6 +27,7 @@ namespace JDP { System.Windows.Forms.Button btnCancel; System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmSettings)); this.grpGeneral = new System.Windows.Forms.GroupBox(); + this.checkBoxCheckForUpdates = new System.Windows.Forms.CheckBox(); this.chkAllowMultipleInstances = new System.Windows.Forms.CheckBox(); this.chkReducePriority = new System.Windows.Forms.CheckBox(); this.chkTruncateExtra4206Samples = new System.Windows.Forms.CheckBox(); @@ -58,6 +59,8 @@ namespace JDP { this.txtTrackFilenameFormat = new System.Windows.Forms.TextBox(); this.txtSingleFilenameFormat = new System.Windows.Forms.TextBox(); this.textBoxEncoderModes = new System.Windows.Forms.TextBox(); + this.encodersBindingSource = new System.Windows.Forms.BindingSource(this.components); + this.cUEConfigBindingSource = new System.Windows.Forms.BindingSource(this.components); this.checkBoxEncoderLossless = new System.Windows.Forms.CheckBox(); this.textBoxEncoderPath = new System.Windows.Forms.TextBox(); this.textBoxEncoderParameters = new System.Windows.Forms.TextBox(); @@ -65,6 +68,7 @@ namespace JDP { this.rbGapsPrepended = new System.Windows.Forms.RadioButton(); this.rbGapsAppended = new System.Windows.Forms.RadioButton(); this.rbGapsPlusHTOA = new System.Windows.Forms.RadioButton(); + this.textBoxEncoderName = new System.Windows.Forms.TextBox(); this.grpAudioFilenames = new System.Windows.Forms.GroupBox(); this.txtSpecialExceptions = new System.Windows.Forms.TextBox(); this.chkRemoveSpecial = new System.Windows.Forms.CheckBox(); @@ -76,11 +80,13 @@ namespace JDP { this.groupBoxGaps = new System.Windows.Forms.GroupBox(); this.tabPage6 = new System.Windows.Forms.TabPage(); this.groupBoxAlbumArt = new System.Windows.Forms.GroupBox(); + this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel(); + this.checkBoxCopyAlbumArt = new System.Windows.Forms.CheckBox(); this.checkBoxExtractAlbumArt = new System.Windows.Forms.CheckBox(); + this.checkBoxEmbedAlbumArt = new System.Windows.Forms.CheckBox(); this.labelAlbumArtMaximumResolution = new System.Windows.Forms.Label(); this.numericUpDownMaxResolution = new System.Windows.Forms.NumericUpDown(); - this.checkBoxEmbedAlbumArt = new System.Windows.Forms.CheckBox(); - this.checkBoxCopyAlbumArt = new System.Windows.Forms.CheckBox(); + this.textBoxAlArtFilenameFormat = new System.Windows.Forms.TextBox(); this.groupBoxTagging = new System.Windows.Forms.GroupBox(); this.chkExtractLog = new System.Windows.Forms.CheckBox(); this.checkBoxCopyBasicTags = new System.Windows.Forms.CheckBox(); @@ -94,8 +100,10 @@ namespace JDP { this.labelLogFileExtension = new System.Windows.Forms.Label(); this.checkBoxARLogVerbose = new System.Windows.Forms.CheckBox(); this.groupBox5 = new System.Windows.Forms.GroupBox(); + this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); this.label2 = new System.Windows.Forms.Label(); this.groupBox4 = new System.Windows.Forms.GroupBox(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); this.checkBoxFixToNearest = new System.Windows.Forms.CheckBox(); this.label3 = new System.Windows.Forms.Label(); this.groupBoxVerify = new System.Windows.Forms.GroupBox(); @@ -118,13 +126,15 @@ namespace JDP { this.listViewFormats = new System.Windows.Forms.ListView(); this.columnHeader1 = new System.Windows.Forms.ColumnHeader(); this.tabPage10 = new System.Windows.Forms.TabPage(); + this.buttonEncoderDelete = new System.Windows.Forms.Button(); + this.buttonEncoderAdd = new System.Windows.Forms.Button(); + this.listBoxEncoders = new System.Windows.Forms.ListBox(); this.groupBoxExternalEncoder = new System.Windows.Forms.GroupBox(); + this.labelEncoderName = new System.Windows.Forms.Label(); this.labelEncoderModes = new System.Windows.Forms.Label(); this.labelEncoderPath = new System.Windows.Forms.Label(); this.labelEncoderParameters = new System.Windows.Forms.Label(); this.comboBoxEncoderExtension = new System.Windows.Forms.ComboBox(); - this.listViewEncoders = new System.Windows.Forms.ListView(); - this.columnHeader3 = new System.Windows.Forms.ColumnHeader(); this.groupBoxLibMAC_SDK = new System.Windows.Forms.GroupBox(); this.groupBoxLibWavpack = new System.Windows.Forms.GroupBox(); this.chkWVStoreMD5 = new System.Windows.Forms.CheckBox(); @@ -160,7 +170,6 @@ namespace JDP { this.labelFormatDecoder = new System.Windows.Forms.Label(); this.labelFormatEncoder = new System.Windows.Forms.Label(); this.columnHeader2 = new System.Windows.Forms.ColumnHeader(); - this.checkBoxCheckForUpdates = new System.Windows.Forms.CheckBox(); btnCancel = new System.Windows.Forms.Button(); this.grpGeneral.SuspendLayout(); this.groupBox1.SuspendLayout(); @@ -168,18 +177,23 @@ namespace JDP { ((System.ComponentModel.ISupportInitialize)(this.numEncodeWhenConfidence)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.numFixWhenConfidence)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.numFixWhenPercent)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.encodersBindingSource)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.cUEConfigBindingSource)).BeginInit(); this.grpAudioFilenames.SuspendLayout(); this.tabControl1.SuspendLayout(); this.tabPage1.SuspendLayout(); this.groupBoxGaps.SuspendLayout(); this.tabPage6.SuspendLayout(); this.groupBoxAlbumArt.SuspendLayout(); + this.tableLayoutPanel3.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownMaxResolution)).BeginInit(); this.groupBoxTagging.SuspendLayout(); this.tabPage2.SuspendLayout(); this.groupBoxARLog.SuspendLayout(); this.groupBox5.SuspendLayout(); + this.tableLayoutPanel2.SuspendLayout(); this.groupBox4.SuspendLayout(); + this.tableLayoutPanel1.SuspendLayout(); this.groupBoxVerify.SuspendLayout(); this.tabPage3.SuspendLayout(); this.groupBoxFormat.SuspendLayout(); @@ -218,6 +232,13 @@ namespace JDP { this.grpGeneral.Name = "grpGeneral"; this.grpGeneral.TabStop = false; // + // checkBoxCheckForUpdates + // + resources.ApplyResources(this.checkBoxCheckForUpdates, "checkBoxCheckForUpdates"); + this.checkBoxCheckForUpdates.Name = "checkBoxCheckForUpdates"; + this.toolTip1.SetToolTip(this.checkBoxCheckForUpdates, resources.GetString("checkBoxCheckForUpdates.ToolTip")); + this.checkBoxCheckForUpdates.UseVisualStyleBackColor = true; + // // chkAllowMultipleInstances // resources.ApplyResources(this.chkAllowMultipleInstances, "chkAllowMultipleInstances"); @@ -309,9 +330,9 @@ namespace JDP { // // chkEncodeWhenZeroOffset // + this.tableLayoutPanel2.SetColumnSpan(this.chkEncodeWhenZeroOffset, 2); resources.ApplyResources(this.chkEncodeWhenZeroOffset, "chkEncodeWhenZeroOffset"); this.chkEncodeWhenZeroOffset.Name = "chkEncodeWhenZeroOffset"; - this.chkEncodeWhenZeroOffset.UseVisualStyleBackColor = true; // // numEncodeWhenPercent // @@ -463,6 +484,13 @@ namespace JDP { // // txtTrackFilenameFormat // + this.txtTrackFilenameFormat.AutoCompleteCustomSource.AddRange(new string[] { + resources.GetString("txtTrackFilenameFormat.AutoCompleteCustomSource"), + resources.GetString("txtTrackFilenameFormat.AutoCompleteCustomSource1"), + resources.GetString("txtTrackFilenameFormat.AutoCompleteCustomSource2"), + resources.GetString("txtTrackFilenameFormat.AutoCompleteCustomSource3")}); + this.txtTrackFilenameFormat.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend; + this.txtTrackFilenameFormat.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.CustomSource; resources.ApplyResources(this.txtTrackFilenameFormat, "txtTrackFilenameFormat"); this.txtTrackFilenameFormat.Name = "txtTrackFilenameFormat"; this.toolTip1.SetToolTip(this.txtTrackFilenameFormat, resources.GetString("txtTrackFilenameFormat.ToolTip")); @@ -475,25 +503,40 @@ namespace JDP { // // textBoxEncoderModes // + this.textBoxEncoderModes.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.encodersBindingSource, "SupportedModesStr", true)); resources.ApplyResources(this.textBoxEncoderModes, "textBoxEncoderModes"); this.textBoxEncoderModes.Name = "textBoxEncoderModes"; this.toolTip1.SetToolTip(this.textBoxEncoderModes, resources.GetString("textBoxEncoderModes.ToolTip")); // + // encodersBindingSource + // + this.encodersBindingSource.AllowNew = true; + this.encodersBindingSource.DataMember = "Encoders"; + this.encodersBindingSource.DataSource = this.cUEConfigBindingSource; + this.encodersBindingSource.CurrentItemChanged += new System.EventHandler(this.encodersBindingSource_CurrentItemChanged); + // + // cUEConfigBindingSource + // + this.cUEConfigBindingSource.DataSource = typeof(CUETools.Processor.CUEConfig); + // // checkBoxEncoderLossless // resources.ApplyResources(this.checkBoxEncoderLossless, "checkBoxEncoderLossless"); + this.checkBoxEncoderLossless.DataBindings.Add(new System.Windows.Forms.Binding("CheckState", this.encodersBindingSource, "Lossless", true)); this.checkBoxEncoderLossless.Name = "checkBoxEncoderLossless"; this.toolTip1.SetToolTip(this.checkBoxEncoderLossless, resources.GetString("checkBoxEncoderLossless.ToolTip")); this.checkBoxEncoderLossless.UseVisualStyleBackColor = true; // // textBoxEncoderPath // + this.textBoxEncoderPath.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.encodersBindingSource, "Path", true)); resources.ApplyResources(this.textBoxEncoderPath, "textBoxEncoderPath"); this.textBoxEncoderPath.Name = "textBoxEncoderPath"; this.toolTip1.SetToolTip(this.textBoxEncoderPath, resources.GetString("textBoxEncoderPath.ToolTip")); // // textBoxEncoderParameters // + this.textBoxEncoderParameters.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.encodersBindingSource, "Parameters", true)); resources.ApplyResources(this.textBoxEncoderParameters, "textBoxEncoderParameters"); this.textBoxEncoderParameters.Name = "textBoxEncoderParameters"; this.toolTip1.SetToolTip(this.textBoxEncoderParameters, resources.GetString("textBoxEncoderParameters.ToolTip")); @@ -527,6 +570,13 @@ namespace JDP { this.toolTip1.SetToolTip(this.rbGapsPlusHTOA, resources.GetString("rbGapsPlusHTOA.ToolTip")); this.rbGapsPlusHTOA.UseVisualStyleBackColor = true; // + // textBoxEncoderName + // + this.textBoxEncoderName.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.encodersBindingSource, "Name", true)); + resources.ApplyResources(this.textBoxEncoderName, "textBoxEncoderName"); + this.textBoxEncoderName.Name = "textBoxEncoderName"; + this.toolTip1.SetToolTip(this.textBoxEncoderName, resources.GetString("textBoxEncoderName.ToolTip")); + // // grpAudioFilenames // this.grpAudioFilenames.Controls.Add(this.chkFilenamesANSISafe); @@ -622,34 +672,55 @@ namespace JDP { // // groupBoxAlbumArt // - this.groupBoxAlbumArt.Controls.Add(this.checkBoxExtractAlbumArt); - this.groupBoxAlbumArt.Controls.Add(this.labelAlbumArtMaximumResolution); - this.groupBoxAlbumArt.Controls.Add(this.numericUpDownMaxResolution); - this.groupBoxAlbumArt.Controls.Add(this.checkBoxEmbedAlbumArt); - this.groupBoxAlbumArt.Controls.Add(this.checkBoxCopyAlbumArt); + this.groupBoxAlbumArt.Controls.Add(this.tableLayoutPanel3); resources.ApplyResources(this.groupBoxAlbumArt, "groupBoxAlbumArt"); this.groupBoxAlbumArt.Name = "groupBoxAlbumArt"; this.groupBoxAlbumArt.TabStop = false; // + // tableLayoutPanel3 + // + resources.ApplyResources(this.tableLayoutPanel3, "tableLayoutPanel3"); + this.tableLayoutPanel3.Controls.Add(this.checkBoxCopyAlbumArt, 0, 0); + this.tableLayoutPanel3.Controls.Add(this.checkBoxExtractAlbumArt, 0, 2); + this.tableLayoutPanel3.Controls.Add(this.checkBoxEmbedAlbumArt, 0, 1); + this.tableLayoutPanel3.Controls.Add(this.labelAlbumArtMaximumResolution, 0, 3); + this.tableLayoutPanel3.Controls.Add(this.numericUpDownMaxResolution, 2, 3); + this.tableLayoutPanel3.Controls.Add(this.textBoxAlArtFilenameFormat, 1, 2); + this.tableLayoutPanel3.Name = "tableLayoutPanel3"; + // + // checkBoxCopyAlbumArt + // + resources.ApplyResources(this.checkBoxCopyAlbumArt, "checkBoxCopyAlbumArt"); + this.checkBoxCopyAlbumArt.DataBindings.Add(new System.Windows.Forms.Binding("CheckState", this.cUEConfigBindingSource, "CopyAlbumArt", true)); + this.checkBoxCopyAlbumArt.Name = "checkBoxCopyAlbumArt"; + this.checkBoxCopyAlbumArt.UseVisualStyleBackColor = true; + // // checkBoxExtractAlbumArt // resources.ApplyResources(this.checkBoxExtractAlbumArt, "checkBoxExtractAlbumArt"); this.checkBoxExtractAlbumArt.Name = "checkBoxExtractAlbumArt"; this.checkBoxExtractAlbumArt.UseVisualStyleBackColor = true; // + // checkBoxEmbedAlbumArt + // + resources.ApplyResources(this.checkBoxEmbedAlbumArt, "checkBoxEmbedAlbumArt"); + this.checkBoxEmbedAlbumArt.Name = "checkBoxEmbedAlbumArt"; + this.checkBoxEmbedAlbumArt.UseVisualStyleBackColor = true; + // // labelAlbumArtMaximumResolution // + this.tableLayoutPanel3.SetColumnSpan(this.labelAlbumArtMaximumResolution, 2); resources.ApplyResources(this.labelAlbumArtMaximumResolution, "labelAlbumArtMaximumResolution"); this.labelAlbumArtMaximumResolution.Name = "labelAlbumArtMaximumResolution"; // // numericUpDownMaxResolution // + resources.ApplyResources(this.numericUpDownMaxResolution, "numericUpDownMaxResolution"); this.numericUpDownMaxResolution.Increment = new decimal(new int[] { 100, 0, 0, 0}); - resources.ApplyResources(this.numericUpDownMaxResolution, "numericUpDownMaxResolution"); this.numericUpDownMaxResolution.Maximum = new decimal(new int[] { 10000, 0, @@ -667,17 +738,19 @@ namespace JDP { 0, 0}); // - // checkBoxEmbedAlbumArt + // textBoxAlArtFilenameFormat // - resources.ApplyResources(this.checkBoxEmbedAlbumArt, "checkBoxEmbedAlbumArt"); - this.checkBoxEmbedAlbumArt.Name = "checkBoxEmbedAlbumArt"; - this.checkBoxEmbedAlbumArt.UseVisualStyleBackColor = true; - // - // checkBoxCopyAlbumArt - // - resources.ApplyResources(this.checkBoxCopyAlbumArt, "checkBoxCopyAlbumArt"); - this.checkBoxCopyAlbumArt.Name = "checkBoxCopyAlbumArt"; - this.checkBoxCopyAlbumArt.UseVisualStyleBackColor = true; + this.textBoxAlArtFilenameFormat.AutoCompleteCustomSource.AddRange(new string[] { + resources.GetString("textBoxAlArtFilenameFormat.AutoCompleteCustomSource"), + resources.GetString("textBoxAlArtFilenameFormat.AutoCompleteCustomSource1"), + resources.GetString("textBoxAlArtFilenameFormat.AutoCompleteCustomSource2"), + resources.GetString("textBoxAlArtFilenameFormat.AutoCompleteCustomSource3")}); + this.textBoxAlArtFilenameFormat.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend; + this.textBoxAlArtFilenameFormat.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.CustomSource; + this.tableLayoutPanel3.SetColumnSpan(this.textBoxAlArtFilenameFormat, 2); + this.textBoxAlArtFilenameFormat.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.cUEConfigBindingSource, "AlArtFilenameFormat", true)); + resources.ApplyResources(this.textBoxAlArtFilenameFormat, "textBoxAlArtFilenameFormat"); + this.textBoxAlArtFilenameFormat.Name = "textBoxAlArtFilenameFormat"; // // groupBoxTagging // @@ -750,6 +823,13 @@ namespace JDP { // // textBoxARLogExtension // + this.textBoxARLogExtension.AutoCompleteCustomSource.AddRange(new string[] { + resources.GetString("textBoxARLogExtension.AutoCompleteCustomSource"), + resources.GetString("textBoxARLogExtension.AutoCompleteCustomSource1"), + resources.GetString("textBoxARLogExtension.AutoCompleteCustomSource2")}); + this.textBoxARLogExtension.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend; + this.textBoxARLogExtension.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.CustomSource; + this.textBoxARLogExtension.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.cUEConfigBindingSource, "ArLogFilenameFormat", true)); resources.ApplyResources(this.textBoxARLogExtension, "textBoxARLogExtension"); this.textBoxARLogExtension.Name = "textBoxARLogExtension"; // @@ -766,15 +846,21 @@ namespace JDP { // // groupBox5 // - this.groupBox5.Controls.Add(this.label2); - this.groupBox5.Controls.Add(this.chkEncodeWhenZeroOffset); - this.groupBox5.Controls.Add(this.numEncodeWhenConfidence); - this.groupBox5.Controls.Add(this.labelEncodeWhenConfidence); - this.groupBox5.Controls.Add(this.numEncodeWhenPercent); + this.groupBox5.Controls.Add(this.tableLayoutPanel2); resources.ApplyResources(this.groupBox5, "groupBox5"); this.groupBox5.Name = "groupBox5"; this.groupBox5.TabStop = false; // + // tableLayoutPanel2 + // + resources.ApplyResources(this.tableLayoutPanel2, "tableLayoutPanel2"); + this.tableLayoutPanel2.Controls.Add(this.label2, 0, 0); + this.tableLayoutPanel2.Controls.Add(this.chkEncodeWhenZeroOffset, 0, 2); + this.tableLayoutPanel2.Controls.Add(this.numEncodeWhenPercent, 1, 0); + this.tableLayoutPanel2.Controls.Add(this.labelEncodeWhenConfidence, 0, 1); + this.tableLayoutPanel2.Controls.Add(this.numEncodeWhenConfidence, 1, 1); + this.tableLayoutPanel2.Name = "tableLayoutPanel2"; + // // label2 // resources.ApplyResources(this.label2, "label2"); @@ -782,18 +868,25 @@ namespace JDP { // // groupBox4 // - this.groupBox4.Controls.Add(this.checkBoxFixToNearest); - this.groupBox4.Controls.Add(this.label3); - this.groupBox4.Controls.Add(this.labelFixWhenConfidence); - this.groupBox4.Controls.Add(this.numFixWhenConfidence); - this.groupBox4.Controls.Add(this.numFixWhenPercent); + this.groupBox4.Controls.Add(this.tableLayoutPanel1); resources.ApplyResources(this.groupBox4, "groupBox4"); this.groupBox4.Name = "groupBox4"; this.groupBox4.TabStop = false; // + // tableLayoutPanel1 + // + resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1"); + this.tableLayoutPanel1.Controls.Add(this.checkBoxFixToNearest, 0, 2); + this.tableLayoutPanel1.Controls.Add(this.label3, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.numFixWhenConfidence, 1, 1); + this.tableLayoutPanel1.Controls.Add(this.labelFixWhenConfidence, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.numFixWhenPercent, 1, 0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + // // checkBoxFixToNearest // resources.ApplyResources(this.checkBoxFixToNearest, "checkBoxFixToNearest"); + this.tableLayoutPanel1.SetColumnSpan(this.checkBoxFixToNearest, 2); this.checkBoxFixToNearest.Name = "checkBoxFixToNearest"; this.checkBoxFixToNearest.UseVisualStyleBackColor = true; // @@ -949,30 +1042,65 @@ namespace JDP { // // tabPage10 // + resources.ApplyResources(this.tabPage10, "tabPage10"); this.tabPage10.BackColor = System.Drawing.SystemColors.Control; + this.tabPage10.Controls.Add(this.buttonEncoderDelete); + this.tabPage10.Controls.Add(this.buttonEncoderAdd); + this.tabPage10.Controls.Add(this.listBoxEncoders); this.tabPage10.Controls.Add(this.groupBoxExternalEncoder); this.tabPage10.Controls.Add(this.comboBoxEncoderExtension); - this.tabPage10.Controls.Add(this.listViewEncoders); this.tabPage10.Controls.Add(this.groupBoxLibMAC_SDK); this.tabPage10.Controls.Add(this.groupBoxLibWavpack); this.tabPage10.Controls.Add(this.groupBoxLibFLAC); this.tabPage10.Controls.Add(this.labelEncoderExtension); - resources.ApplyResources(this.tabPage10, "tabPage10"); this.tabPage10.Name = "tabPage10"; // + // buttonEncoderDelete + // + this.buttonEncoderDelete.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", this.encodersBindingSource, "CanBeDeleted", true)); + resources.ApplyResources(this.buttonEncoderDelete, "buttonEncoderDelete"); + this.buttonEncoderDelete.Name = "buttonEncoderDelete"; + this.buttonEncoderDelete.UseVisualStyleBackColor = true; + this.buttonEncoderDelete.Click += new System.EventHandler(this.buttonEncoderDelete_Click); + // + // buttonEncoderAdd + // + resources.ApplyResources(this.buttonEncoderAdd, "buttonEncoderAdd"); + this.buttonEncoderAdd.Name = "buttonEncoderAdd"; + this.buttonEncoderAdd.UseVisualStyleBackColor = true; + this.buttonEncoderAdd.Click += new System.EventHandler(this.buttonEncoderAdd_Click); + // + // listBoxEncoders + // + this.listBoxEncoders.BackColor = System.Drawing.SystemColors.Control; + this.listBoxEncoders.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.listBoxEncoders.DataSource = this.encodersBindingSource; + this.listBoxEncoders.DisplayMember = "Name"; + this.listBoxEncoders.FormattingEnabled = true; + resources.ApplyResources(this.listBoxEncoders, "listBoxEncoders"); + this.listBoxEncoders.Name = "listBoxEncoders"; + this.listBoxEncoders.KeyDown += new System.Windows.Forms.KeyEventHandler(this.listBoxEncoders_KeyDown); + // // groupBoxExternalEncoder // resources.ApplyResources(this.groupBoxExternalEncoder, "groupBoxExternalEncoder"); + this.groupBoxExternalEncoder.Controls.Add(this.labelEncoderName); + this.groupBoxExternalEncoder.Controls.Add(this.textBoxEncoderName); + this.groupBoxExternalEncoder.Controls.Add(this.textBoxEncoderPath); this.groupBoxExternalEncoder.Controls.Add(this.labelEncoderModes); this.groupBoxExternalEncoder.Controls.Add(this.textBoxEncoderModes); this.groupBoxExternalEncoder.Controls.Add(this.checkBoxEncoderLossless); - this.groupBoxExternalEncoder.Controls.Add(this.textBoxEncoderPath); this.groupBoxExternalEncoder.Controls.Add(this.textBoxEncoderParameters); this.groupBoxExternalEncoder.Controls.Add(this.labelEncoderPath); this.groupBoxExternalEncoder.Controls.Add(this.labelEncoderParameters); this.groupBoxExternalEncoder.Name = "groupBoxExternalEncoder"; this.groupBoxExternalEncoder.TabStop = false; // + // labelEncoderName + // + resources.ApplyResources(this.labelEncoderName, "labelEncoderName"); + this.labelEncoderName.Name = "labelEncoderName"; + // // labelEncoderModes // resources.ApplyResources(this.labelEncoderModes, "labelEncoderModes"); @@ -990,36 +1118,13 @@ namespace JDP { // // comboBoxEncoderExtension // + this.comboBoxEncoderExtension.DataBindings.Add(new System.Windows.Forms.Binding("SelectedItem", this.encodersBindingSource, "Extension", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); this.comboBoxEncoderExtension.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.comboBoxEncoderExtension.FormattingEnabled = true; resources.ApplyResources(this.comboBoxEncoderExtension, "comboBoxEncoderExtension"); this.comboBoxEncoderExtension.Name = "comboBoxEncoderExtension"; this.comboBoxEncoderExtension.SelectedIndexChanged += new System.EventHandler(this.comboBoxEncoderExtension_SelectedIndexChanged); // - // listViewEncoders - // - this.listViewEncoders.BackColor = System.Drawing.SystemColors.Control; - this.listViewEncoders.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.listViewEncoders.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { - this.columnHeader3}); - this.listViewEncoders.FullRowSelect = true; - this.listViewEncoders.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; - this.listViewEncoders.HideSelection = false; - this.listViewEncoders.LabelEdit = true; - resources.ApplyResources(this.listViewEncoders, "listViewEncoders"); - this.listViewEncoders.MultiSelect = false; - this.listViewEncoders.Name = "listViewEncoders"; - this.listViewEncoders.UseCompatibleStateImageBehavior = false; - this.listViewEncoders.View = System.Windows.Forms.View.Details; - this.listViewEncoders.AfterLabelEdit += new System.Windows.Forms.LabelEditEventHandler(this.listViewEncoders_AfterLabelEdit); - this.listViewEncoders.ItemSelectionChanged += new System.Windows.Forms.ListViewItemSelectionChangedEventHandler(this.listViewEncoders_ItemSelectionChanged); - this.listViewEncoders.BeforeLabelEdit += new System.Windows.Forms.LabelEditEventHandler(this.listViewEncoders_BeforeLabelEdit); - this.listViewEncoders.KeyDown += new System.Windows.Forms.KeyEventHandler(this.listViewEncoders_KeyDown); - // - // columnHeader3 - // - resources.ApplyResources(this.columnHeader3, "columnHeader3"); - // // groupBoxLibMAC_SDK // resources.ApplyResources(this.groupBoxLibMAC_SDK, "groupBoxLibMAC_SDK"); @@ -1083,6 +1188,7 @@ namespace JDP { // labelEncoderExtension // resources.ApplyResources(this.labelEncoderExtension, "labelEncoderExtension"); + this.labelEncoderExtension.DataBindings.Add(new System.Windows.Forms.Binding("ImageKey", this.encodersBindingSource, "DotExtension", true, System.Windows.Forms.DataSourceUpdateMode.Never)); this.labelEncoderExtension.MinimumSize = new System.Drawing.Size(100, 16); this.labelEncoderExtension.Name = "labelEncoderExtension"; // @@ -1306,13 +1412,6 @@ namespace JDP { // resources.ApplyResources(this.columnHeader2, "columnHeader2"); // - // checkBoxCheckForUpdates - // - resources.ApplyResources(this.checkBoxCheckForUpdates, "checkBoxCheckForUpdates"); - this.checkBoxCheckForUpdates.Name = "checkBoxCheckForUpdates"; - this.toolTip1.SetToolTip(this.checkBoxCheckForUpdates, resources.GetString("checkBoxCheckForUpdates.ToolTip")); - this.checkBoxCheckForUpdates.UseVisualStyleBackColor = true; - // // frmSettings // this.AcceptButton = this.btnOK; @@ -1338,6 +1437,8 @@ namespace JDP { ((System.ComponentModel.ISupportInitialize)(this.numEncodeWhenConfidence)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.numFixWhenConfidence)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.numFixWhenPercent)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.encodersBindingSource)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.cUEConfigBindingSource)).EndInit(); this.grpAudioFilenames.ResumeLayout(false); this.grpAudioFilenames.PerformLayout(); this.tabControl1.ResumeLayout(false); @@ -1347,7 +1448,8 @@ namespace JDP { this.groupBoxGaps.PerformLayout(); this.tabPage6.ResumeLayout(false); this.groupBoxAlbumArt.ResumeLayout(false); - this.groupBoxAlbumArt.PerformLayout(); + this.tableLayoutPanel3.ResumeLayout(false); + this.tableLayoutPanel3.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownMaxResolution)).EndInit(); this.groupBoxTagging.ResumeLayout(false); this.groupBoxTagging.PerformLayout(); @@ -1355,9 +1457,10 @@ namespace JDP { this.groupBoxARLog.ResumeLayout(false); this.groupBoxARLog.PerformLayout(); this.groupBox5.ResumeLayout(false); - this.groupBox5.PerformLayout(); + this.tableLayoutPanel2.ResumeLayout(false); this.groupBox4.ResumeLayout(false); - this.groupBox4.PerformLayout(); + this.tableLayoutPanel1.ResumeLayout(false); + this.tableLayoutPanel1.PerformLayout(); this.groupBoxVerify.ResumeLayout(false); this.groupBoxVerify.PerformLayout(); this.tabPage3.ResumeLayout(false); @@ -1468,8 +1571,6 @@ namespace JDP { private System.Windows.Forms.Label labelFormatDecoder; private System.Windows.Forms.ComboBox comboFormatLosslessEncoder; private System.Windows.Forms.Label labelFormatEncoder; - private System.Windows.Forms.ListView listViewEncoders; - private System.Windows.Forms.ColumnHeader columnHeader3; private System.Windows.Forms.ListView listViewDecoders; private System.Windows.Forms.ColumnHeader columnHeader4; private System.Windows.Forms.ComboBox comboBoxEncoderExtension; @@ -1526,6 +1627,17 @@ namespace JDP { private System.Windows.Forms.RadioButton rbGapsLeftOut; private System.Windows.Forms.RadioButton rbGapsPrepended; private System.Windows.Forms.CheckBox checkBoxCheckForUpdates; + private System.Windows.Forms.BindingSource cUEConfigBindingSource; + private System.Windows.Forms.BindingSource encodersBindingSource; + private System.Windows.Forms.ListBox listBoxEncoders; + private System.Windows.Forms.TextBox textBoxEncoderName; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2; + private System.Windows.Forms.Button buttonEncoderDelete; + private System.Windows.Forms.Button buttonEncoderAdd; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3; + private System.Windows.Forms.TextBox textBoxAlArtFilenameFormat; + private System.Windows.Forms.Label labelEncoderName; } } \ No newline at end of file diff --git a/CUETools/frmSettings.cs b/CUETools/frmSettings.cs index 84663d1..d29d0d2 100644 --- a/CUETools/frmSettings.cs +++ b/CUETools/frmSettings.cs @@ -32,7 +32,10 @@ namespace JDP { } } - private void frmSettings_Load(object sender, EventArgs e) { + private void frmSettings_Load(object sender, EventArgs e) + { + cUEConfigBindingSource.DataSource = _config; + chkReducePriority.Checked = _reducePriority; checkBoxCheckForUpdates.Checked = _config.checkForUpdates; chkAutoCorrectFilenames.Checked = _config.autoCorrectFilenames; @@ -73,13 +76,13 @@ namespace JDP { checkBoxWriteCUETags.Checked = _config.writeBasicTagsFromCUEData; checkBoxCopyBasicTags.Checked = _config.copyBasicTags; checkBoxCopyUnknownTags.Checked = _config.copyUnknownTags; - checkBoxCopyAlbumArt.Checked = _config.copyAlbumArt; + //checkBoxCopyAlbumArt.Checked = _config.copyAlbumArt; checkBoxExtractAlbumArt.Checked = _config.extractAlbumArt; checkBoxEmbedAlbumArt.Checked = _config.embedAlbumArt; checkBoxARVerifyUseSourceFolder.Checked = _config.arLogToSourceFolder; checkBoxARLogVerbose.Checked = _config.arLogVerbose; checkBoxFixToNearest.Checked = _config.fixOffsetToNearest; - textBoxARLogExtension.Text = _config.arLogExtension; + //textBoxARLogExtension.Text = _config.arLogFilenameFormat; numericUpDownMaxResolution.Value = _config.maxAlbumArtSize; switch (_config.gapsHandling) @@ -115,13 +118,6 @@ namespace JDP { if (comboLanguage.SelectedItem == null) comboLanguage.SelectedItem = comboLanguage.Items[0]; - foreach (KeyValuePair encoder in _config.encoders) - { - ListViewItem item = new ListViewItem(encoder.Key); - item.Tag = encoder.Value; - listViewEncoders.Items.Add(item); - } - //listViewEncoders.Items[0].Selected = true; foreach (KeyValuePair decoder in _config.decoders) if (decoder.Value.path != null) { @@ -153,11 +149,9 @@ namespace JDP { } ComponentResourceManager resources = new ComponentResourceManager(typeof(frmCUETools)); listViewScriptConditions.Items.Add(resources.GetString("rbActionVerify.Text").Replace("&", "")); - listViewScriptConditions.Items.Add(resources.GetString("rbActionVerifyAndEncode.Text").Replace("&", "")); listViewScriptConditions.Items.Add(resources.GetString("rbActionEncode.Text").Replace("&", "")); listViewScriptConditions.Items[0].Tag = CUEAction.Verify; listViewScriptConditions.Items[1].Tag = CUEAction.VerifyAndConvert; - listViewScriptConditions.Items[2].Tag = CUEAction.Convert; EnableDisable(); } @@ -194,8 +188,6 @@ namespace JDP { { if (listViewFormats.SelectedIndices.Count > 0) listViewFormats.Items[listViewFormats.SelectedIndices[0]].Selected = false; - if (listViewEncoders.SelectedIndices.Count > 0) - listViewEncoders.Items[listViewEncoders.SelectedIndices[0]].Selected = false; if (listViewDecoders.SelectedIndices.Count > 0) listViewDecoders.Items[listViewDecoders.SelectedIndices[0]].Selected = false; if (listViewScripts.SelectedItems.Count > 0) @@ -245,14 +237,14 @@ namespace JDP { _config.writeBasicTagsFromCUEData = checkBoxWriteCUETags.Checked ; _config.copyBasicTags = checkBoxCopyBasicTags.Checked; _config.copyUnknownTags = checkBoxCopyUnknownTags.Checked; - _config.copyAlbumArt = checkBoxCopyAlbumArt.Checked; + //_config.copyAlbumArt = checkBoxCopyAlbumArt.Checked; _config.extractAlbumArt = checkBoxExtractAlbumArt.Checked; _config.embedAlbumArt = checkBoxEmbedAlbumArt.Checked; _config.arLogToSourceFolder = checkBoxARVerifyUseSourceFolder.Checked; _config.arLogVerbose = checkBoxARLogVerbose.Checked; _config.fixOffsetToNearest = checkBoxFixToNearest.Checked; - _config.arLogExtension = textBoxARLogExtension.Text; + //_config.arLogFilenameFormat = textBoxARLogExtension.Text; _config.maxAlbumArtSize = (int) numericUpDownMaxResolution.Value; _config.language = ((CultureInfo)comboLanguage.SelectedItem).Name; @@ -313,8 +305,6 @@ namespace JDP { { if (listViewFormats.SelectedItems.Count > 0) listViewFormats.SelectedItems[0].Selected = false; - if (listViewEncoders.SelectedItems.Count > 0) - listViewEncoders.SelectedItems[0].Selected = false; if (listViewDecoders.SelectedItems.Count > 0) listViewDecoders.SelectedItems[0].Selected = false; if (listViewScripts.SelectedItems.Count > 0) @@ -343,9 +333,9 @@ namespace JDP { return; } - foreach (KeyValuePair encoder in _config.encoders) - if (encoder.Value.extension == format.extension) - encoder.Value.extension = e.Label; + foreach (CUEToolsUDC encoder in _config.encoders) + if (encoder.extension == format.extension) + encoder.extension = e.Label; foreach (KeyValuePair decoder in _config.decoders) if (decoder.Value.extension == format.extension) @@ -402,19 +392,13 @@ namespace JDP { } } List encodersToRemove = new List(); - foreach (KeyValuePair encoder in _config.encoders) - if (encoder.Value.extension == format.extension) - encodersToRemove.Add(encoder.Key); + foreach (CUEToolsUDC encoder in _config.encoders) + if (encoder.extension == format.extension) + encodersToRemove.Add(encoder.name); foreach (string encoder in encodersToRemove) - { - _config.encoders.Remove(encoder); - foreach (ListViewItem item in listViewEncoders.Items) - if (item.Text == encoder) - { - item.Remove(); - break; - } - } + _config.encoders.Remove(_config.encoders[encoder]); + comboBoxEncoderExtension.Items.Remove(format.extension); + comboBoxDecoderExtension.Items.Remove(format.extension); _config.formats.Remove(format.extension); listViewFormats.SelectedItems[0].Remove(); break; @@ -431,16 +415,16 @@ namespace JDP { return; comboFormatLosslessEncoder.Items.Clear(); - foreach (KeyValuePair encoder in _config.encoders) - if (encoder.Value.extension == format.extension && encoder.Value.lossless) - comboFormatLosslessEncoder.Items.Add(encoder.Key); + foreach (CUEToolsUDC encoder in _config.encoders) + if (encoder.extension == format.extension && encoder.lossless) + comboFormatLosslessEncoder.Items.Add(encoder); comboFormatLosslessEncoder.SelectedItem = format.encoderLossless; comboFormatLosslessEncoder.Enabled = format.allowLossless; comboFormatLossyEncoder.Items.Clear(); - foreach (KeyValuePair encoder in _config.encoders) - if (encoder.Value.extension == format.extension && !encoder.Value.lossless) - comboFormatLossyEncoder.Items.Add(encoder.Key); + foreach (CUEToolsUDC encoder in _config.encoders) + if (encoder.extension == format.extension && !encoder.lossless) + comboFormatLossyEncoder.Items.Add(encoder); comboFormatLossyEncoder.SelectedItem = format.encoderLossy; comboFormatLossyEncoder.Enabled = format.allowLossy; @@ -475,8 +459,8 @@ namespace JDP { if (format == null) return; - format.encoderLossless = (string)comboFormatLosslessEncoder.SelectedItem; - format.encoderLossy = (string)comboFormatLossyEncoder.SelectedItem; + format.encoderLossless = (CUEToolsUDC)comboFormatLosslessEncoder.SelectedItem; + format.encoderLossy = (CUEToolsUDC)comboFormatLossyEncoder.SelectedItem; format.decoder = (string)comboFormatDecoder.SelectedItem; if (!format.builtin) { @@ -491,149 +475,47 @@ namespace JDP { private void comboBoxEncoderExtension_SelectedIndexChanged(object sender, EventArgs e) { - labelEncoderExtension.ImageKey = "." + (string)comboBoxEncoderExtension.SelectedItem; - CUEToolsFormat format; - if (_config.formats.TryGetValue((string)comboBoxEncoderExtension.SelectedItem, out format)) - { - checkBoxEncoderLossless.Enabled = format.allowLossless && format.allowLossy; - if (!checkBoxEncoderLossless.Enabled) - checkBoxEncoderLossless.Checked = format.allowLossless; - } + // Setting DataSourceUpdateMode to OnPropertyChanged doesn't seem + // to do the trick, so updating manually + comboBoxEncoderExtension.DataBindings["SelectedItem"].WriteValue(); } - private void listViewEncoders_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) + private void encodersBindingSource_CurrentItemChanged(object sender, EventArgs e) { - if (e.IsSelected) + CUEToolsUDC encoder = encodersBindingSource.Current as CUEToolsUDC; + CUEToolsFormat format = _config.formats[encoder.extension]; // _config.formats.TryGetValue(encoder.extension, out format) + + labelEncoderExtension.Visible = encoder != null; + comboBoxEncoderExtension.Visible = encoder != null; + comboBoxEncoderExtension.Enabled = encoder != null && encoder.path != null; + groupBoxExternalEncoder.Visible = encoder != null && encoder.path != null; + groupBoxLibFLAC.Visible = encoder != null && encoder.path == null && encoder.className == "FLACWriter"; + groupBoxLibWavpack.Visible = encoder != null && encoder.path == null && encoder.className == "WavPackWriter"; + groupBoxLibMAC_SDK.Visible = encoder != null && encoder.path == null && encoder.className == "APEWriter"; + checkBoxEncoderLossless.Enabled = encoder != null && format != null && format.allowLossless && format.allowLossy; + if (!checkBoxEncoderLossless.Enabled && encoder != null && format != null && encoder.Lossless != format.allowLossless) + encoder.Lossless = format.allowLossless; + + foreach (KeyValuePair fmtEntry in _config.formats) { - CUEToolsUDC encoder = (CUEToolsUDC)e.Item.Tag; - if (encoder == null) return; - - comboBoxEncoderExtension.Visible = true; - comboBoxEncoderExtension.SelectedItem = encoder.extension; - labelEncoderExtension.Visible = true; - if (encoder.path != null) - { - CUEToolsFormat format; - comboBoxEncoderExtension.Enabled = true; - groupBoxExternalEncoder.Visible = true; - textBoxEncoderPath.Text = encoder.path; - textBoxEncoderParameters.Text = encoder.parameters; - textBoxEncoderModes.Text = encoder.supported_modes; - checkBoxEncoderLossless.Checked = encoder.lossless; - checkBoxEncoderLossless.Enabled = _config.formats.TryGetValue(encoder.extension, out format) && format.allowLossless && format.allowLossy; - } - else - { - comboBoxEncoderExtension.Enabled = false; - switch (encoder.className) - { - case "FLACWriter": - groupBoxLibFLAC.Visible = true; - break; - case "WavPackWriter": - groupBoxLibWavpack.Visible = true; - break; - case "APEWriter": - groupBoxLibMAC_SDK.Visible = true; - break; - } - } - } - else - { - CUEToolsUDC encoder = (CUEToolsUDC)e.Item.Tag; - if (encoder == null) return; - - if (encoder.path != null) - { - if (encoder.extension != (string)comboBoxEncoderExtension.SelectedItem || encoder.lossless != checkBoxEncoderLossless.Checked) - { - if (listViewFormats.SelectedItems.Count > 0) - listViewFormats.SelectedItems[0].Selected = false; - CUEToolsFormat format; - if (_config.formats.TryGetValue(encoder.extension, out format)) - { - if (format.encoderLossless == encoder.name) - format.encoderLossless = null; - if (format.encoderLossy == encoder.name) - format.encoderLossy = null; - } - encoder.extension = (string)comboBoxEncoderExtension.SelectedItem; - } - encoder.path = textBoxEncoderPath.Text; - encoder.parameters = textBoxEncoderParameters.Text; - encoder.supported_modes = textBoxEncoderModes.Text; - encoder.lossless = checkBoxEncoderLossless.Checked; - } - - comboBoxEncoderExtension.Visible = false; - labelEncoderExtension.Visible = false; - groupBoxExternalEncoder.Visible = false; - groupBoxLibFLAC.Visible = false; - groupBoxLibWavpack.Visible = false; - groupBoxLibMAC_SDK.Visible = false; + CUEToolsFormat fmt = fmtEntry.Value; + if (fmt.encoderLossless == encoder && (fmt.extension != encoder.extension || !encoder.Lossless)) + fmt.encoderLossless = null; + if (fmt.encoderLossy == encoder && (fmt.extension != encoder.extension || encoder.Lossless)) + fmt.encoderLossy = null; } } - private void listViewEncoders_BeforeLabelEdit(object sender, LabelEditEventArgs e) - { - CUEToolsUDC encoder = (CUEToolsUDC)listViewEncoders.Items[e.Item].Tag; - if (encoder.path == null) - e.CancelEdit = true; - } - - private void listViewEncoders_AfterLabelEdit(object sender, LabelEditEventArgs e) - { - CUEToolsUDC encoder; - if (e.Label == null || _config.encoders.TryGetValue(e.Label, out encoder)) - { - e.CancelEdit = true; - return; - } - encoder = (CUEToolsUDC) listViewEncoders.Items[e.Item].Tag; - if (listViewFormats.SelectedItems.Count > 0) - listViewFormats.SelectedItems[0].Selected = false; - if (_config.formats[encoder.extension].encoderLossless == encoder.name) - _config.formats[encoder.extension].encoderLossless = e.Label; - if (_config.formats[encoder.extension].encoderLossy == encoder.name) - _config.formats[encoder.extension].encoderLossy = e.Label; - _config.encoders.Remove(encoder.name); - encoder.name = e.Label; - _config.encoders.Add(encoder.name, encoder); - } - - private void listViewEncoders_KeyDown(object sender, KeyEventArgs e) + private void listBoxEncoders_KeyDown(object sender, KeyEventArgs e) { switch (e.KeyCode) { case Keys.Insert: - { - CUEToolsUDC encoder; - if (_config.encoders.TryGetValue("new", out encoder)) - return; - encoder = new CUEToolsUDC("new", "wav", true, "", "", "", ""); - _config.encoders.Add("new", encoder); - ListViewItem item = new ListViewItem(encoder.name); - item.Tag = encoder; - listViewEncoders.Items.Add(item); - item.BeginEdit(); - break; - } + buttonEncoderAdd_Click(sender, e); + break; case Keys.Delete: - { - if (listViewEncoders.SelectedItems.Count <= 0) - return; - CUEToolsUDC encoder = (CUEToolsUDC)listViewEncoders.SelectedItems[0].Tag; - if (encoder.path == null) - return; - if (_config.formats[encoder.extension].encoderLossless == encoder.name) - _config.formats[encoder.extension].encoderLossless = null; - if (_config.formats[encoder.extension].encoderLossy == encoder.name) - _config.formats[encoder.extension].encoderLossy = null; - _config.encoders.Remove(encoder.name); - listViewEncoders.Items.Remove(listViewEncoders.SelectedItems[0]); - break; - } + buttonEncoderDelete_Click(sender, e); + break; } } @@ -912,5 +794,22 @@ namespace JDP { } MessageBox.Show(this, "Script compiled successfully.", "Ok", MessageBoxButtons.OK, MessageBoxIcon.Information); } + + private void buttonEncoderAdd_Click(object sender, EventArgs e) + { + encodersBindingSource.AddNew(); + } + + private void buttonEncoderDelete_Click(object sender, EventArgs e) + { + CUEToolsUDC encoder = encodersBindingSource.Current as CUEToolsUDC; + if (encoder == null || !encoder.CanBeDeleted) + return; + if (_config.formats[encoder.extension].encoderLossless == encoder) + _config.formats[encoder.extension].encoderLossless = null; + if (_config.formats[encoder.extension].encoderLossy == encoder) + _config.formats[encoder.extension].encoderLossy = null; + encodersBindingSource.RemoveCurrent(); + } } } \ No newline at end of file diff --git a/CUETools/frmSettings.resx b/CUETools/frmSettings.resx index b57e92a..70adbee 100644 --- a/CUETools/frmSettings.resx +++ b/CUETools/frmSettings.resx @@ -120,6 +120,10 @@ False + + + NoControl + 273, 290 @@ -146,10 +150,120 @@ 1 + + checkBoxCheckForUpdates + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + grpGeneral + + + 0 + + + chkAllowMultipleInstances + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + grpGeneral + + + 1 + + + chkReducePriority + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + grpGeneral + + + 2 + + + chkTruncateExtra4206Samples + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + grpGeneral + + + 3 + + + chkCreateCUEFileWhenEmbedded + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + grpGeneral + + + 4 + + + chkCreateM3U + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + grpGeneral + + + 5 + + + chkAutoCorrectFilenames + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + grpGeneral + + + 6 + + + 6, 6 + + + 252, 144 + + + 0 + + + General + + + grpGeneral + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage1 + + + 3 + + + 17, 17 + True - NoControl @@ -165,9 +279,6 @@ Check for updates - - 17, 17 - Check for updates @@ -186,6 +297,9 @@ True + + NoControl + 12, 21 @@ -249,6 +363,9 @@ True + + NoControl + 12, 72 @@ -279,6 +396,9 @@ True + + NoControl + 12, 106 @@ -309,6 +429,9 @@ True + + NoControl + 12, 89 @@ -339,6 +462,9 @@ True + + NoControl + 12, 123 @@ -366,33 +492,12 @@ 6 - - 6, 6 - - - 252, 144 - - - 0 - - - General - - - grpGeneral - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage1 - - - 3 - True + + NoControl + 273, 225 @@ -441,6 +546,9 @@ 1 + + NoControl + 194, 290 @@ -465,21 +573,6 @@ 2 - - True - - - 6, 37 - - - 130, 17 - - - 10 - - - Write AccurateRip log - chkWriteArLogOnConvert @@ -492,24 +585,6 @@ 0 - - True - - - 6, 20 - - - 137, 17 - - - 9 - - - Write AccurateRip tags - - - Add ACCURATERIPCOUNT/ACCURATERIPCOUNTALLOFFSETS/ACCURATERIPTOTAL tags to output files. You can set up foobar2000 to show those values, and see if your music was ripped correctly or how popular it is. - chkWriteArTagsOnConvert @@ -546,47 +621,113 @@ 4 - - Top, Right - - + True - - 138, 63 + + NoControl - - Yes + + 6, 37 - - 100, 17 + + 130, 17 - - 4 + + 10 - - and zero offset + + Write AccurateRip log - - chkEncodeWhenZeroOffset + + chkWriteArLogOnConvert - + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - groupBox5 + + groupBox1 - + + 0 + + + True + + + NoControl + + + 6, 20 + + + 137, 17 + + + 9 + + + Write AccurateRip tags + + + Add ACCURATERIPCOUNT/ACCURATERIPCOUNTALLOFFSETS/ACCURATERIPTOTAL tags to output files. You can set up foobar2000 to show those values, and see if your music was ripped correctly or how popular it is. + + + chkWriteArTagsOnConvert + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + 1 - - Top, Right + + 2 + + + Fill + + + NoControl + + + 3, 0 + + + 185, 23 + + + 5 + + + % of verified tracks >= + + + MiddleRight + + + label2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 0 + + + Fill - 200, 15 + 194, 3 - 38, 21 + 45, 21 1 @@ -598,16 +739,22 @@ System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - groupBox5 + tableLayoutPanel2 - 4 + 2 + + + Fill + + + NoControl - 9, 36 + 3, 23 - 185, 21 + 185, 23 2 @@ -625,19 +772,19 @@ System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - groupBox5 + tableLayoutPanel2 3 - - Top, Right + + Fill - 200, 36 + 194, 26 - 38, 21 + 45, 21 3 @@ -649,19 +796,82 @@ System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - groupBox5 + tableLayoutPanel2 - 2 + 4 + + + Fill + + + 3, 17 + + + 3 + + + 242, 71 + + + 6 + + + tableLayoutPanel2 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox5 + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label2" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="chkEncodeWhenZeroOffset" Row="2" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="numEncodeWhenPercent" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="labelEncodeWhenConfidence" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="numEncodeWhenConfidence" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Percent,79,33884,Percent,20,66116" /><Rows Styles="Percent,33,33333,Percent,33,33333,Percent,33,33333" /></TableLayoutSettings> + + + Fill + + + 3, 49 + + + Yes + + + 236, 19 + + + 6 + + + and zero offset + + + chkEncodeWhenZeroOffset + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 1 + + + Fill NoControl - 6, 36 + 3, 23 - 192, 21 + 187, 23 7 @@ -679,19 +889,19 @@ System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - groupBox4 + tableLayoutPanel1 - 2 + 3 - - Top, Right + + Fill - 205, 36 + 196, 26 - 37, 21 + 43, 21 8 @@ -703,19 +913,19 @@ System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - groupBox4 + tableLayoutPanel1 - 3 + 2 - - Top, Right + + Fill - 204, 15 + 196, 3 - 38, 21 + 43, 21 6 @@ -727,14 +937,20 @@ System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - groupBox4 + tableLayoutPanel1 4 + + 17, 17 + True + + NoControl + 12, 98 @@ -798,6 +1014,9 @@ True + + NoControl + 6, 43 @@ -828,6 +1047,9 @@ True + + NoControl + 6, 20 @@ -891,6 +1113,9 @@ True + + NoControl + 23, 66 @@ -984,6 +1209,18 @@ 1 + + %N. %T + + + %N - %T + + + %N. %A - %T + + + %N. %D - %T + 97, 68 @@ -1038,6 +1275,9 @@ 8 + + 575, 17 + 96, 80 @@ -1060,8 +1300,17 @@ groupBoxExternalEncoder - 1 + 4 + + 575, 17 + + + 251, 17 + + + 251, 17 + Top, Right @@ -1071,6 +1320,9 @@ MiddleRight + + NoControl + 293, 115 @@ -1096,7 +1348,7 @@ groupBoxExternalEncoder - 2 + 5 96, 20 @@ -1120,7 +1372,7 @@ groupBoxExternalEncoder - 3 + 2 96, 49 @@ -1144,7 +1396,7 @@ groupBoxExternalEncoder - 4 + 6 True @@ -1248,6 +1500,9 @@ True + + NoControl + 10, 20 @@ -1275,6 +1530,114 @@ 0 + + 96, 111 + + + 191, 21 + + + 28 + + + Name of the encoder + + + textBoxEncoderName + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxExternalEncoder + + + 1 + + + txtSpecialExceptions + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + grpAudioFilenames + + + 2 + + + chkRemoveSpecial + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + grpAudioFilenames + + + 3 + + + chkReplaceSpaces + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + grpAudioFilenames + + + 4 + + + lblTrackFilenameFormat + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + grpAudioFilenames + + + 6 + + + lblSingleFilenameFormat + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + grpAudioFilenames + + + 7 + + + 264, 6 + + + 252, 195 + + + 1 + + + Audio Filenames + + + grpAudioFilenames + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage1 + + + 4 + 97, 132 @@ -1419,45 +1782,9 @@ 7 - - 264, 6 - - - 252, 195 - - - 1 - - - Audio Filenames - - - grpAudioFilenames - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage1 - - - 4 - Top, Left, Right - - 8, 156 - - - 250, 99 - - - 16 - - - Gaps handling - groupBoxGaps @@ -1497,140 +1824,800 @@ 0 - - True - - - 6, 30 - - - 174, 17 - - - 21 - - - Extract album art to Folder.jpg - - - checkBoxExtractAlbumArt - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + groupBoxAlbumArt - + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + 0 - - True + + groupBoxTagging - - NoControl + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 6, 83 + + tabPage6 - - 108, 13 - - - 20 - - - Resize if resolution > - - - labelAlbumArtMaximumResolution - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBoxAlbumArt - - + 1 - - 161, 81 + + 4, 22 - - 58, 21 + + 535, 261 - - 19 + + 9 - - Right + + Tagging - - numericUpDownMaxResolution + + tabPage6 - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - groupBoxAlbumArt + + tabControl1 - + + 1 + + + textBoxARLogExtension + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxARLog + + + 0 + + + labelLogFileExtension + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxARLog + + + 1 + + + checkBoxARLogVerbose + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxARLog + + 2 - - True + + 6, 170 - - 6, 64 + + 250, 85 - - 110, 17 + + 4 - - 18 + + Log file - - Embed Folder.jpg + + groupBoxARLog - - checkBoxEmbedAlbumArt + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + tabPage2 - - groupBoxAlbumArt + + 0 - + + 278, 6 + + + 248, 91 + + 3 - + + Encode if verified + + + groupBox5 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage2 + + + 1 + + + 2 + + True - - 6, 47 + + Fill - - 123, 17 + + NoControl - - 16 + + 3, 49 - - Copy album art tags + + Yes - - checkBoxCopyAlbumArt + + 236, 19 - + + 6 + + + to nearest + + + checkBoxFixToNearest + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + + tableLayoutPanel1 + + + 0 + + + Fill + + + NoControl + + + 3, 0 + + + 187, 23 + + + 9 + + + % of verified tracks >= + + + MiddleRight + + + label3 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 1 + + + Fill + + + 3, 17 + + + 3 + + + 242, 71 + + + 10 + + + tableLayoutPanel1 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="checkBoxFixToNearest" Row="2" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="label3" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="numFixWhenConfidence" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="labelFixWhenConfidence" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="numFixWhenPercent" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Percent,79,75207,Percent,20,24793" /><Rows Styles="Percent,33,33333,Percent,33,33333,Percent,33,33333" /></TableLayoutSettings> + + + 278, 103 + + + 248, 91 + + + 2 + + + Fix offset + + + groupBox4 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage2 + + + 2 + + + checkBoxARVerifyUseSourceFolder + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxVerify + + + 0 + + + chkWriteARLogOnVerify + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxVerify + + + 1 + + + 8, 6 + + + 248, 91 + + + 0 + + + Verify + + + groupBoxVerify + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage2 + + + 3 + + + 4, 22 + + + 3, 3, 3, 3 + + + 535, 261 + + + 1 + + + AccurateRip + + + tabPage2 + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabControl1 + + + 2 + + + groupBoxFormat + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage3 + + + 0 + + + listViewFormats + + + System.Windows.Forms.ListView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage3 + + + 1 + + + 4, 22 + + + 3, 3, 3, 3 + + + 535, 261 + + + 2 + + + Formats + + + tabPage3 + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabControl1 + + + 3 + + + True + + + buttonEncoderDelete + + + System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage10 + + + 0 + + + buttonEncoderAdd + + + System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage10 + + + 1 + + + listBoxEncoders + + + System.Windows.Forms.ListBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage10 + + + 2 + + + groupBoxExternalEncoder + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage10 + + + 3 + + + comboBoxEncoderExtension + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage10 + + + 4 + + + groupBoxLibMAC_SDK + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage10 + + + 5 + + + groupBoxLibWavpack + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage10 + + + 6 + + + groupBoxLibFLAC + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage10 + + + 7 + + + labelEncoderExtension + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage10 + + + 8 + + + 4, 22 + + + 3, 3, 3, 3 + + + 535, 261 + + + 6 + + + Encoders + + + tabPage10 + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabControl1 + + + 4 + + + comboBoxDecoderExtension + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage11 + + + 0 + + + groupBoxExternalDecoder + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage11 + + + 1 + + + listViewDecoders + + + System.Windows.Forms.ListView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage11 + + + 2 + + + labelDecoderExtension + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage11 + + + 3 + + + 4, 22 + + + 3, 3, 3, 3 + + + 535, 261 + + + 7 + + + Decoders + + + tabPage11 + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabControl1 + + + 5 + + + groupBox2 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage4 + + + 0 + + + grpHDCD + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage4 + + + 1 + + + chkHDCDDetect + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage4 + + + 2 + + + 4, 22 + + + 3, 3, 3, 3 + + + 535, 261 + + + 3 + + + HDCD + + + tabPage4 + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabControl1 + + + 6 + + + richTextBoxScript + + + System.Windows.Forms.RichTextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage5 + + + 0 + + + buttonScriptCompile + + + System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage5 + + + 1 + + + groupBoxScriptConditions + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage5 + + + 2 + + + listViewScripts + + + System.Windows.Forms.ListView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage5 + + + 3 + + + 4, 22 + + + 535, 261 + + + 8 + + + Scripts + + + tabPage5 + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabControl1 + + + 7 + + + 0, 0 + + + 0, 0, 0, 0 + + + 543, 287 + + + 0 + + + tabControl1 + + + System.Windows.Forms.TabControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + 8, 156 + + + 250, 99 + + + 16 + + + Gaps handling + + + groupBoxGaps + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage1 + + + 2 + + + tableLayoutPanel3 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + groupBoxAlbumArt - - 4 + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="checkBoxCopyAlbumArt" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkBoxExtractAlbumArt" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkBoxEmbedAlbumArt" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="labelAlbumArtMaximumResolution" Row="3" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="numericUpDownMaxResolution" Row="3" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="textBoxAlArtFilenameFormat" Row="2" RowSpan="1" Column="1" ColumnSpan="2" /></Controls><Columns Styles="Percent,54,41177,Percent,22,42647,Percent,22,79412" /><Rows Styles="Percent,25,Percent,25,Percent,25,Percent,25" /></TableLayoutSettings> 242, 3 @@ -1656,6 +2643,396 @@ 0 + + 3 + + + checkBoxCopyAlbumArt + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel3 + + + 0 + + + checkBoxExtractAlbumArt + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel3 + + + 1 + + + checkBoxEmbedAlbumArt + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel3 + + + 2 + + + labelAlbumArtMaximumResolution + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel3 + + + 3 + + + numericUpDownMaxResolution + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel3 + + + 4 + + + textBoxAlArtFilenameFormat + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel3 + + + 5 + + + 6, 20 + + + 4 + + + 272, 95 + + + 22 + + + tableLayoutPanel3 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxAlbumArt + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="checkBoxCopyAlbumArt" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkBoxExtractAlbumArt" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkBoxEmbedAlbumArt" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="labelAlbumArtMaximumResolution" Row="3" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="numericUpDownMaxResolution" Row="3" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="textBoxAlArtFilenameFormat" Row="2" RowSpan="1" Column="1" ColumnSpan="2" /></Controls><Columns Styles="Percent,54,41177,Percent,22,42647,Percent,22,79412" /><Rows Styles="Percent,25,Percent,25,Percent,25,Percent,25" /></TableLayoutSettings> + + + True + + + Fill + + + NoControl + + + 3, 3 + + + 142, 17 + + + 16 + + + Copy album art tags + + + checkBoxCopyAlbumArt + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel3 + + + 0 + + + True + + + Fill + + + NoControl + + + 3, 49 + + + 142, 17 + + + 21 + + + Extract album art to Folder.jpg + + + checkBoxExtractAlbumArt + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel3 + + + 1 + + + True + + + Fill + + + NoControl + + + 3, 26 + + + 142, 17 + + + 18 + + + Embed Folder.jpg + + + checkBoxEmbedAlbumArt + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel3 + + + 2 + + + Fill + + + NoControl + + + 3, 69 + + + 203, 26 + + + 20 + + + Resize if resolution > + + + MiddleLeft + + + labelAlbumArtMaximumResolution + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel3 + + + 3 + + + Fill + + + 212, 72 + + + 57, 21 + + + 19 + + + Right + + + numericUpDownMaxResolution + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel3 + + + 4 + + + folder.jpg + + + cover.jpg + + + front.jpg + + + %F.jpg + + + Fill + + + 151, 49 + + + 118, 21 + + + 22 + + + textBoxAlArtFilenameFormat + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel3 + + + 5 + + + chkExtractLog + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxTagging + + + 0 + + + checkBoxCopyBasicTags + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxTagging + + + 1 + + + checkBoxWriteCUETags + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxTagging + + + 2 + + + checkBoxCopyUnknownTags + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxTagging + + + 3 + + + chkOverwriteTags + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxTagging + + + 4 + + + chkFillUpCUE + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxTagging + + + 5 + + + 8, 3 + + + 226, 255 + + + 0 + + + groupBoxTagging + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 1 + True @@ -1719,6 +3096,9 @@ True + + NoControl + 6, 64 @@ -1746,6 +3126,9 @@ True + + NoControl + 6, 132 @@ -1830,56 +3213,20 @@ 5 - - 8, 3 + + %F.accurip - - 226, 255 + + %F.cuetools.log - - 0 - - - groupBoxTagging - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage6 - - - 1 - - - 4, 22 - - - 535, 261 - - - 9 - - - Tagging - - - tabPage6 - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabControl1 - - - 1 + + cuetools.log - 110, 20 + 90, 20 - 134, 21 + 154, 21 2 @@ -1899,17 +3246,20 @@ True + + NoControl + 6, 23 - 54, 13 + 73, 13 1 - Extension + Name format: labelLogFileExtension @@ -1926,6 +3276,9 @@ True + + NoControl + 6, 53 @@ -1950,174 +3303,12 @@ 2 - - 6, 170 - - - 250, 85 - - - 4 - - - Log file - - - groupBoxARLog - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage2 - - - 0 - - - 6, 15 - - - 188, 21 - - - 5 - - - % of verified tracks >= - - - MiddleRight - - - label2 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox5 - - - 0 - - - 278, 6 - - - 248, 91 - - - 3 - - - Encode if verified - - - groupBox5 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage2 - - - 1 - - - Top, Right - - - True - - - NoControl - - - 166, 63 - - - Yes - - - 76, 17 - - - 6 - - - to nearest - - - checkBoxFixToNearest - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 0 - - - NoControl - - - 9, 15 - - - 189, 21 - - - 9 - - - % of verified tracks >= - - - MiddleRight - - - label3 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 1 - - - 278, 103 - - - 248, 91 - - - 2 - - - Fix offset - - - groupBox4 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage2 - - - 2 - True + + NoControl + 26, 54 @@ -2172,57 +3363,174 @@ 1 - - 8, 6 + + comboFormatLossyEncoder - - 248, 91 + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + + groupBoxFormat + + 0 - - Verify + + labelFormatLossyEncoder - - groupBoxVerify + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + groupBoxFormat - - tabPage2 - - - 3 - - - 4, 22 - - - 3, 3, 3, 3 - - - 535, 261 - - + 1 - - AccurateRip + + checkBoxFormatAllowLossy - - tabPage2 + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + groupBoxFormat - - tabControl1 - - + 2 + + comboFormatLosslessEncoder + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxFormat + + + 3 + + + checkBoxFormatSupportsLossyWAV + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxFormat + + + 4 + + + labelFormatLosslessEncoder + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxFormat + + + 5 + + + checkBoxFormatEmbedCUESheet + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxFormat + + + 6 + + + comboFormatDecoder + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxFormat + + + 7 + + + checkBoxFormatAllowLossless + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxFormat + + + 8 + + + labelFormatDefaultDecoder + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxFormat + + + 9 + + + labelFormatTagger + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxFormat + + + 10 + + + comboBoxFormatTagger + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxFormat + + + 11 + + + 136, 6 + + + 390, 249 + + + 17 + + + False + + + groupBoxFormat + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage3 + + + 0 + 155, 74 @@ -2328,6 +3636,9 @@ True + + NoControl + 6, 194 @@ -2385,6 +3696,9 @@ True + + NoControl + 6, 219 @@ -2433,6 +3747,9 @@ True + + NoControl + 6, 144 @@ -2538,33 +3855,6 @@ 11 - - 136, 6 - - - 390, 249 - - - 17 - - - False - - - groupBoxFormat - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage3 - - - 0 - - - 120 - 6, 6 @@ -2586,36 +3876,214 @@ 1 - - 4, 22 + + 120 - - 3, 3, 3, 3 + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAnBJREFUOE+lk+1L + U1Ecx+tf0RdRgkRPhIRRUJjbdHrX2tzm012m1xmLWJqyO0wzKFmo4YtQS+1Rq73JtGFSahmpPQ4tr5XO + dmuj1ua9e0z5tjtomyYSdOB74Rzu53M4v/M7GwFs+K8hCBJjr6hInqfKjR+pUmZWS3Iz2iLuA6lhpkiV + 0VasSF79/wp4QVdBfKYo9keLGcGRIYTeTSA0Pgr+fg/s+hK8ySfYlxopkSiJCQR4roziF+/2YHn2PcLW + ewh3NyHcfgG/brdhacwKZ40eEyox/0KREZNEBfM6XVIEdnA3u7HM2BC+fA6eJhO85moEL5kQaqYRbDyF + 4INbWDhOYuzIAcdT+b6kaP2ETwSmXXVGLNkmozsGWmi4zxvgr9etCHeaRNByDa+z0zEsS6djgk/UMcZn + uY5wbzs8jZX4XiBbM4uVJHhzLZymKjwm0piYgCnT+kMPLQi3mOA5q4+srz2cSgncVD687a0Yyt7ljwlm + yAJ/oLcTwQY9/GdK1xW4StTwtrViULotLpguVjPuxloEmmhwJzUQdlozqmx46mpgrzHAKkqNH8FWqKAZ + uQj+3i54tHK4S3L/ErAKMdi8XPi6r2BUugMDmVviRXxbIEt6VUQ4FsqL4LvTGS2gSy2NSlhlFlh5BJZL + wXd1YKpQJsCOPtHm+DUKxZjMkxDjykP83FE1fDc68bOBhpNU4atGCXe9EfzVDkxrctCfmcJH4JWN9Kc1 + nysOEs8O72cncvfgW7UB7uaL0XypOoEnku0CzCbCsVtI7O0R2d7kYWmacYjYzTzK2ckNirZyA1mpTL84 + xdiXsWn9x7T6pf3L/DfyWaHnHqmNrQAAAABJRU5ErkJggg== + - - 535, 261 + + NoControl - + + 37, 232 + + + 25, 23 + + + 29 + + + buttonEncoderDelete + + + System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage10 + + + 0 + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAoVJREFUOE+lk/tL + U2EYx+tfcb8UCEmJWSioKSVYKCubTVHx1lzOrSk629lcOnfzQqZz4qWiNnQbjXQX52V4wUw2Xeki9TiU + aKMIgtrw12/nGJ6t/SBBDzyH8/Kez+c97/M+71kAZ/4raEF86uaaWGq3iOh0Csj26fqI9E1dpOV1FSm2 + VBCCiVJW4vcJsJitmhGFX20OwBteQeC7H5vf1jETtEHubgDPyAnXvLjNjpcwAt0cDQujc/s2HP7ax8IX + J4zkCJ7v6mE7MGL16yK0yxKUjxdGuSMFjORYoJ0VJ1FwyLVnxv7PHYzt9OPphhq9vk7oAzoMBrTo3eqA + 69AGws1HseFGqGggN+m4fvSDgmVDa0p8+rFFrTiIgW0tNO/k1NSfUG5IIF3hQ7bWCMeBFXfH81DwJEvG + CDocDaQzaKV+1YRurwJd61JIFgSMoN7KRct8BcSzpRj+oEP/ajuu92aQjEA2xTvyfHZi6KOOgtsYMPFF + OFMC2RIP5sAYcnTpR4ygzVZzNB2chNZPQOFrPlVAeOpgCYwiU50aEzRbK0mDTwv9tgZtb/kQLlWhxnKH + EdEr0/nQzcWQT4kezyNcUabEtiCcLJPdt7BhD5ohWaqGyFN+vOeToGGBg4MmVynseyZc60tH6uPkWBH5 + ppKk2pfFIcJdjylygikYDTY66KRhLqZ3jXhgvkfDoRT5+dgx0sWofFbELhu9GW21V8NBSQw+FYj5Wkhn + q2HwdsFOwXwzB6mK5CgF/91IJ63JGc5ns/V54cLhbPQtEzC918Pk10PjaUVOTxoNh+Nh5hTie/tWfzYr + vy+TyO2+SmZp0iIZqouRy50XyEuKZCJFfu70y5R40/5l/BsV3J5Ng8nYFAAAAABJRU5ErkJggg== + + + + 6, 232 + + + 25, 23 + + + 28 + + + buttonEncoderAdd + + + System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage10 + + + 1 + + + 6, 7 + + + 124, 221 + + + 27 + + + listBoxEncoders + + + System.Windows.Forms.ListBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage10 + + 2 - - Formats - - - tabPage3 - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabControl1 - - - 3 - None + + labelEncoderName + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxExternalEncoder + + + 0 + + + labelEncoderModes + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxExternalEncoder + + + 3 + + + labelEncoderPath + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxExternalEncoder + + + 7 + + + labelEncoderParameters + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxExternalEncoder + + + 8 + + + 136, 39 + + + 390, 149 + + + 22 + + + External encoder options + + + False + + + groupBoxExternalEncoder + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage10 + + + 3 + + + True + + + 6, 114 + + + 34, 13 + + + 29 + + + Name + + + labelEncoderName + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxExternalEncoder + + + 0 + True @@ -2644,7 +4112,7 @@ groupBoxExternalEncoder - 0 + 3 True @@ -2656,13 +4124,13 @@ 6, 23 - 46, 13 + 29, 13 13 - Encoder + Path labelEncoderPath @@ -2674,7 +4142,7 @@ groupBoxExternalEncoder - 5 + 7 True @@ -2704,34 +4172,7 @@ groupBoxExternalEncoder - 6 - - - 136, 39 - - - 390, 149 - - - 22 - - - External encoder options - - - False - - - groupBoxExternalEncoder - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage10 - - - 0 + 8 459, 12 @@ -2755,31 +4196,7 @@ tabPage10 - 1 - - - 120 - - - 3, 6 - - - 124, 249 - - - 25 - - - listViewEncoders - - - System.Windows.Forms.ListView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage10 - - - 2 + 4 136, 39 @@ -2806,7 +4223,70 @@ tabPage10 - 3 + 5 + + + chkWVStoreMD5 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxLibWavpack + + + 0 + + + numWVExtraMode + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxLibWavpack + + + 1 + + + chkWVExtraMode + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxLibWavpack + + + 2 + + + 136, 39 + + + 390, 100 + + + 23 + + + wavpack options + + + False + + + groupBoxLibWavpack + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage10 + + + 6 True @@ -2892,51 +4372,6 @@ 2 - - 136, 39 - - - 390, 100 - - - 23 - - - wavpack options - - - False - - - groupBoxLibWavpack - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage10 - - - 4 - - - True - - - NoControl - - - 9, 46 - - - 54, 17 - - - 20 - - - Verify - chkFLACVerify @@ -2974,7 +4409,37 @@ tabPage10 - 5 + 7 + + + True + + + NoControl + + + 9, 46 + + + 54, 17 + + + 20 + + + Verify + + + chkFLACVerify + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxLibFLAC + + + 0 True @@ -2982,9 +4447,6 @@ MiddleRight - - (none) - NoControl @@ -3013,34 +4475,7 @@ tabPage10 - 6 - - - 4, 22 - - - 3, 3, 3, 3 - - - 535, 261 - - - 6 - - - Encoders - - - tabPage10 - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabControl1 - - - 4 + 8 459, 12 @@ -3066,6 +4501,81 @@ 0 + + textBoxDecoderPath + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxExternalDecoder + + + 0 + + + labelDecoderPath + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxExternalDecoder + + + 1 + + + labelDecoderParameters + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxExternalDecoder + + + 2 + + + textBoxDecoderParameters + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxExternalDecoder + + + 3 + + + 136, 39 + + + 390, 87 + + + 27 + + + External decoder options + + + False + + + groupBoxExternalDecoder + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage11 + + + 1 + 96, 20 @@ -3097,13 +4607,13 @@ 6, 23 - 47, 13 + 29, 13 20 - Decoder + Path labelDecoderPath @@ -3168,36 +4678,6 @@ 3 - - 136, 39 - - - 390, 87 - - - 27 - - - External decoder options - - - False - - - groupBoxExternalDecoder - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage11 - - - 1 - - - 120 - 3, 6 @@ -3219,6 +4699,9 @@ 2 + + 120 + True @@ -3255,32 +4738,53 @@ 3 - - 4, 22 + + label1 - - 3, 3, 3, 3 + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 535, 261 + + groupBox2 - + + 0 + + + numericLossyWAVQuality + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 1 + + + 228, 42 + + + 298, 100 + + 7 - - Decoders + + LossyWAV - - tabPage11 + + groupBox2 - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - tabControl1 + + tabPage4 - - 5 + + 0 True @@ -3336,30 +4840,6 @@ 1 - - 228, 42 - - - 298, 100 - - - 7 - - - LossyWAV - - - groupBox2 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage4 - - - 0 - 19, 42 @@ -3387,6 +4867,9 @@ True + + NoControl + 19, 19 @@ -3411,33 +4894,6 @@ 2 - - 4, 22 - - - 3, 3, 3, 3 - - - 535, 261 - - - 3 - - - HDCD - - - tabPage4 - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabControl1 - - - 6 - Courier New, 8pt @@ -3471,6 +4927,9 @@ 0 + + NoControl + 422, 19 @@ -3498,18 +4957,6 @@ 1 - - 200 - - - 6, 20 - - - 249, 77 - - - 2 - listViewScriptConditions @@ -3549,8 +4996,29 @@ 2 - - 120 + + 6, 20 + + + 249, 77 + + + 2 + + + listViewScriptConditions + + + System.Windows.Forms.ListView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxScriptConditions + + + 0 + + + 200 6, 6 @@ -3573,53 +5041,8 @@ 3 - - 4, 22 - - - 535, 261 - - - 8 - - - Scripts - - - tabPage5 - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabControl1 - - - 7 - - - 0, 0 - - - 0, 0, 0, 0 - - - 543, 287 - - - 0 - - - tabControl1 - - - System.Windows.Forms.TabControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 + + 120 True @@ -3696,18 +5119,24 @@ System.Windows.Forms.ToolTip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + encodersBindingSource + + + System.Windows.Forms.BindingSource, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + cUEConfigBindingSource + + + System.Windows.Forms.BindingSource, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + columnHeader1 System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - columnHeader3 - - - System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - columnHeader4 diff --git a/MAC_SDK/Source/MACLib/Assembly/Assembly.obj b/MAC_SDK/Source/MACLib/Assembly/Assembly.obj index dc277f0..c7fac09 100644 Binary files a/MAC_SDK/Source/MACLib/Assembly/Assembly.obj and b/MAC_SDK/Source/MACLib/Assembly/Assembly.obj differ diff --git a/MAC_SDK/Source/MACLib/Assembly/Assembly64.obj b/MAC_SDK/Source/MACLib/Assembly/Assembly64.obj index b4695d2..ef8a4e3 100644 Binary files a/MAC_SDK/Source/MACLib/Assembly/Assembly64.obj and b/MAC_SDK/Source/MACLib/Assembly/Assembly64.obj differ