1) Better log file/freedb entry selection dialog interface

2) 'Stop' button works when analyzing archive
3) application icon added
4) two verification modes: AR only/AR+CRCs
This commit is contained in:
chudov
2009-02-22 07:47:56 +00:00
parent c57ed75f88
commit c2fc51b6b9
16 changed files with 3292 additions and 2570 deletions

View File

@@ -98,6 +98,7 @@
</Compile> </Compile>
<Compile Include="Processor.cs" /> <Compile Include="Processor.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SeekableZipStream.cs" />
<Compile Include="Settings.cs" /> <Compile Include="Settings.cs" />
<Compile Include="Tagging.cs" /> <Compile Include="Tagging.cs" />
<Compile Include="UserDefined.cs" /> <Compile Include="UserDefined.cs" />

View File

@@ -61,6 +61,7 @@ namespace CUETools.Processor
{ {
None, None,
Verify, Verify,
VerifyPlusCRCs,
VerifyThenConvert, VerifyThenConvert,
VerifyAndConvert VerifyAndConvert
} }
@@ -479,9 +480,23 @@ namespace CUETools.Processor
public bool ContinueOperation = true; public bool ContinueOperation = true;
} }
public class CUEToolsSourceFile
{
public string path;
public string contents;
public bool isEAC;
public CUEToolsSourceFile(string _path, StreamReader reader)
{
path = _path;
contents = reader.ReadToEnd();
reader.Close();
}
}
public class CUEToolsSelectionEventArgs public class CUEToolsSelectionEventArgs
{ {
public string[] choices; public object[] choices;
public int selection = -1; public int selection = -1;
} }
@@ -740,22 +755,13 @@ namespace CUETools.Processor
cueSheet = CUESheet.CreateDummyCUESheet(pathIn, "*." + _config.udc1Extension); cueSheet = CUESheet.CreateDummyCUESheet(pathIn, "*." + _config.udc1Extension);
if (cueSheet == null) if (cueSheet == null)
throw new Exception("Input directory doesn't contain supported audio files."); throw new Exception("Input directory doesn't contain supported audio files.");
sr = new StringReader(cueSheet); sr = new StringReader(cueSheet);
if (CUEToolsSelection != null)
{ List<CUEToolsSourceFile> logFiles = new List<CUEToolsSourceFile>();
CUEToolsSelectionEventArgs e = new CUEToolsSelectionEventArgs(); foreach (string logPath in Directory.GetFiles(pathIn, "*.log"))
e.choices = Directory.GetFiles(pathIn, "*.log"); logFiles.Add(new CUEToolsSourceFile(logPath, new StreamReader(logPath, CUESheet.Encoding)));
if (e.choices.Length > 0) CUEToolsSourceFile selectedLogFile = ChooseFile(logFiles, null, false);
{ _eacLog = selectedLogFile != null ? selectedLogFile.contents : null;
CUEToolsSelection(this, e);
if (e.selection != -1)
{
StreamReader logReader = new StreamReader(e.choices[e.selection], CUESheet.Encoding);
_eacLog = logReader.ReadToEnd();
logReader.Close();
}
}
}
} }
else if (Path.GetExtension(pathIn).ToLower() == ".zip" || Path.GetExtension(pathIn).ToLower() == ".rar") else if (Path.GetExtension(pathIn).ToLower() == ".zip" || Path.GetExtension(pathIn).ToLower() == ".rar")
{ {
@@ -795,64 +801,28 @@ namespace CUETools.Processor
} }
} }
string cueName = null, cueText = null, logName = null; List<CUEToolsSourceFile> logFiles = new List<CUEToolsSourceFile>();
List<string> cueNames = new List<string>(); List<CUEToolsSourceFile> cueFiles = new List<CUEToolsSourceFile>();
List<string> logNames = new List<string>();
foreach (string s in _archiveContents) foreach (string s in _archiveContents)
{ {
if (Path.GetExtension(s).ToLower() == ".cue") if (Path.GetExtension(s).ToLower() == ".cue" || Path.GetExtension(s).ToLower() == ".log")
cueNames.Add(s); {
if (Path.GetExtension(s).ToLower() == ".log") Stream archiveStream = OpenArchive(s, false);
logNames.Add(s); CUEToolsSourceFile sourceFile = new CUEToolsSourceFile(s, new StreamReader(archiveStream, CUESheet.Encoding));
archiveStream.Close();
if (Path.GetExtension(s).ToLower() == ".cue")
cueFiles.Add(sourceFile);
else
logFiles.Add(sourceFile);
}
} }
if (cueNames.Count == 0) CUEToolsSourceFile selectedCUEFile = ChooseFile(cueFiles, null, true);
throw new Exception("Input archive doesn't contain a cue sheet."); if (selectedCUEFile == null || selectedCUEFile.contents == "")
if (cueNames.Count == 1) throw new Exception("Input archive doesn't contain a usable cue sheet.");
cueName = cueNames[0]; CUEToolsSourceFile selectedLogFile = ChooseFile(logFiles, Path.GetFileNameWithoutExtension(selectedCUEFile.path), true);
if (cueName == null && CUEToolsSelection != null) _eacLog = selectedLogFile != null ? selectedLogFile.contents : null;
{ _archiveCUEpath = Path.GetDirectoryName(selectedCUEFile.path);
CUEToolsSelectionEventArgs e = new CUEToolsSelectionEventArgs(); string cueText = selectedCUEFile.contents;
e.choices = cueNames.ToArray();
CUEToolsSelection(this, e);
if (e.selection != -1)
cueName = e.choices[e.selection];
}
if (cueName == null)
throw new Exception("Input archive contains several cue sheets.");
if (logNames.Contains(Path.ChangeExtension(cueName, ".log")))
logName = Path.ChangeExtension(cueName, ".log");
if (logName == null && CUEToolsSelection != null && logNames.Count > 0)
{
CUEToolsSelectionEventArgs e = new CUEToolsSelectionEventArgs();
e.choices = logNames.ToArray();
CUEToolsSelection(this, e);
if (e.selection != -1)
logName = e.choices[e.selection];
}
if (cueName != null)
{
Stream archiveStream = OpenArchive(cueName, false);
StreamReader cueReader = new StreamReader(archiveStream, CUESheet.Encoding);
cueText = cueReader.ReadToEnd();
cueReader.Close();
archiveStream.Close();
if (cueText == "")
throw new Exception("Empty cue sheet.");
}
if (cueText == null)
throw new Exception("Input archive doesn't contain a cue sheet.");
if (logName != null)
{
Stream archiveStream = OpenArchive(logName, false);
StreamReader logReader = new StreamReader(archiveStream, CUESheet.Encoding);
_eacLog = logReader.ReadToEnd();
logReader.Close();
archiveStream.Close();
}
_archiveCUEpath = Path.GetDirectoryName(cueName);
if (_config.autoCorrectFilenames) if (_config.autoCorrectFilenames)
cueText = CorrectAudioFilenames(_archiveCUEpath, cueText, false, _archiveContents); cueText = CorrectAudioFilenames(_archiveCUEpath, cueText, false, _archiveContents);
sr = new StringReader(cueText); sr = new StringReader(cueText);
@@ -864,29 +834,13 @@ namespace CUETools.Processor
else else
sr = new StreamReader (pathIn, CUESheet.Encoding); sr = new StreamReader (pathIn, CUESheet.Encoding);
string logPath = Path.ChangeExtension(pathIn, ".log"); List<CUEToolsSourceFile> logFiles = new List<CUEToolsSourceFile>();
if (System.IO.File.Exists(logPath)) foreach (string logPath in Directory.GetFiles(cueDir == "" ? "." : cueDir, "*.log"))
{ logFiles.Add(new CUEToolsSourceFile(logPath, new StreamReader(logPath, CUESheet.Encoding)));
StreamReader logReader = new StreamReader(logPath, CUESheet.Encoding); CUEToolsSourceFile selectedLogFile = ChooseFile(logFiles, Path.GetFileNameWithoutExtension(pathIn), false);
_eacLog = logReader.ReadToEnd(); _eacLog = selectedLogFile != null ? selectedLogFile.contents : null;
logReader.Close(); }
} else
else if (CUEToolsSelection != null)
{
CUEToolsSelectionEventArgs e = new CUEToolsSelectionEventArgs();
e.choices = Directory.GetFiles(cueDir == "" ? "." : cueDir, "*.log");
if (e.choices.Length > 0)
{
CUEToolsSelection(this, e);
if (e.selection != -1)
{
StreamReader logReader = new StreamReader(e.choices[e.selection], CUESheet.Encoding);
_eacLog = logReader.ReadToEnd();
logReader.Close();
}
}
}
} else
{ {
string cuesheetTag = null; string cuesheetTag = null;
TagLib.File fileInfo; TagLib.File fileInfo;
@@ -1332,6 +1286,43 @@ namespace CUETools.Processor
} }
} }
internal CUEToolsSourceFile ChooseFile(List<CUEToolsSourceFile> sourceFiles, string defaultFileName, bool quietIfSingle)
{
if (sourceFiles.Count <= 0)
return null;
if (defaultFileName != null)
{
CUEToolsSourceFile defaultFile = null;
foreach (CUEToolsSourceFile file in sourceFiles)
if (Path.GetFileNameWithoutExtension(file.path).ToLower() == defaultFileName.ToLower())
{
if (defaultFile != null)
{
defaultFile = null;
break;
}
defaultFile = file;
}
if (defaultFile != null)
return defaultFile;
}
if (quietIfSingle && sourceFiles.Count == 1)
return sourceFiles[0];
if (CUEToolsSelection == null)
return null;
CUEToolsSelectionEventArgs e = new CUEToolsSelectionEventArgs();
e.choices = sourceFiles.ToArray();
CUEToolsSelection(this, e);
if (e.selection == -1)
return null;
return sourceFiles[e.selection];
}
internal Stream OpenArchive(string fileName, bool showProgress) internal Stream OpenArchive(string fileName, bool showProgress)
{ {
#if !MONO #if !MONO
@@ -1347,9 +1338,9 @@ namespace CUETools.Processor
if (Path.GetExtension(_archivePath).ToLower() == ".zip") if (Path.GetExtension(_archivePath).ToLower() == ".zip")
{ {
SeekableZipStream zipStream = new SeekableZipStream(_archivePath, fileName); SeekableZipStream zipStream = new SeekableZipStream(_archivePath, fileName);
zipStream.PasswordRequired += new PasswordRequiredHandler(unrar_PasswordRequired); zipStream.PasswordRequired += new ZipPasswordRequiredHandler(unzip_PasswordRequired);
if (showProgress) if (showProgress)
zipStream.ExtractionProgress += new ExtractionProgressHandler(unrar_ExtractionProgress); zipStream.ExtractionProgress += new ZipExtractionProgressHandler(unzip_ExtractionProgress);
return zipStream; return zipStream;
} }
throw new Exception("Unknown archive type."); throw new Exception("Unknown archive type.");
@@ -1370,16 +1361,7 @@ namespace CUETools.Processor
#if !MONO #if !MONO
private void CDReadProgress(object sender, ReadProgressArgs e) private void CDReadProgress(object sender, ReadProgressArgs e)
{ {
lock (this) CheckStop();
{
if (_stop)
throw new StopException();
if (_pause)
{
ShowProgress("Paused...", 0, 0, null, null);
Monitor.Wait(this);
}
}
if (this.CUEToolsProgress == null) if (this.CUEToolsProgress == null)
return; return;
CDDriveReader audioSource = (CDDriveReader)sender; CDDriveReader audioSource = (CDDriveReader)sender;
@@ -1406,6 +1388,7 @@ namespace CUETools.Processor
private void unrar_ExtractionProgress(object sender, ExtractionProgressEventArgs e) private void unrar_ExtractionProgress(object sender, ExtractionProgressEventArgs e)
{ {
CheckStop();
if (this.CUEToolsProgress == null) if (this.CUEToolsProgress == null)
return; return;
_progress.percentTrck = e.PercentComplete/100; _progress.percentTrck = e.PercentComplete/100;
@@ -1436,6 +1419,38 @@ namespace CUETools.Processor
} }
#endif #endif
private void unzip_ExtractionProgress(object sender, ZipExtractionProgressEventArgs e)
{
CheckStop();
if (this.CUEToolsProgress == null)
return;
_progress.percentTrck = e.PercentComplete / 100;
this.CUEToolsProgress(this, _progress);
}
private void unzip_PasswordRequired(object sender, ZipPasswordRequiredEventArgs e)
{
if (_archivePassword != null)
{
e.ContinueOperation = true;
e.Password = _archivePassword;
return;
}
if (this.PasswordRequired != null)
{
ArchivePasswordRequiredEventArgs e1 = new ArchivePasswordRequiredEventArgs();
this.PasswordRequired(this, e1);
if (e1.ContinueOperation && e1.Password != "")
{
_archivePassword = e1.Password;
e.ContinueOperation = true;
e.Password = e1.Password;
return;
}
}
throw new IOException("Password is required for extraction.");
}
public delegate string GetStringTagProvider(TagLib.File file); public delegate string GetStringTagProvider(TagLib.File file);
public string GetCommonTag(GetStringTagProvider provider) public string GetCommonTag(GetStringTagProvider provider)
@@ -1943,7 +1958,7 @@ namespace CUETools.Processor
} }
} }
if (_accurateRipMode != AccurateRipMode.Verify) if (_accurateRipMode != AccurateRipMode.Verify && _accurateRipMode != AccurateRipMode.VerifyPlusCRCs)
for (int i = 0; i < destPaths.Length; i++) for (int i = 0; i < destPaths.Length; i++)
for (int j = 0; j < _sourcePaths.Count; j++) for (int j = 0; j < _sourcePaths.Count; j++)
if (destPaths[i].ToLower() == _sourcePaths[j].ToLower()) if (destPaths[i].ToLower() == _sourcePaths[j].ToLower())
@@ -1972,17 +1987,10 @@ namespace CUETools.Processor
break; break;
} }
ShowProgress((string)"Contacting AccurateRip database...", 0, (dtl - minDTL) / 75.0, null, null); ShowProgress((string)"Contacting AccurateRip database...", 0, (dtl - minDTL) / 75.0, null, null);
CheckStop();
lock (this) lock (this)
{ {
if (_stop) Monitor.Wait(this, 1000);
throw new StopException();
if (_pause)
{
ShowProgress("Paused...", 0, 0, null, null);
Monitor.Wait(this);
}
else
Monitor.Wait(this, 1000);
} }
} }
if (_arVerify.AccResult != HttpStatusCode.OK) if (_arVerify.AccResult != HttpStatusCode.OK)
@@ -1993,6 +2001,23 @@ namespace CUETools.Processor
else else
_arVerify.ContactAccurateRip(_accurateRipId); _arVerify.ContactAccurateRip(_accurateRipId);
if (_accurateRipMode == AccurateRipMode.Verify)
{
if (_arVerify.AccResult != HttpStatusCode.OK)
{
if (_config.writeArLogOnVerify)
{
if (!Directory.Exists(dir))
Directory.CreateDirectory(dir);
StreamWriter sw = new StreamWriter(Path.ChangeExtension(_cuePath, ".accurip"),
false, CUESheet.Encoding);
GenerateAccurateRipLog(sw);
sw.Close();
}
return;
}
}
if (_accurateRipMode == AccurateRipMode.VerifyThenConvert) if (_accurateRipMode == AccurateRipMode.VerifyThenConvert)
{ {
if (_arVerify.AccResult != HttpStatusCode.OK && !_isCD) if (_arVerify.AccResult != HttpStatusCode.OK && !_isCD)
@@ -2047,16 +2072,16 @@ namespace CUETools.Processor
if (!SkipOutput) if (!SkipOutput)
{ {
if (_accurateRipMode != AccurateRipMode.Verify) if (_accurateRipMode != AccurateRipMode.Verify && _accurateRipMode != AccurateRipMode.VerifyPlusCRCs)
{ {
if (!Directory.Exists(dir)) if (!Directory.Exists(dir))
Directory.CreateDirectory(dir); Directory.CreateDirectory(dir);
} }
if (_isCD) if (_isCD)
destLengths = CalculateAudioFileLengths(style); // need to recalc, might have changed after scanning the CD destLengths = CalculateAudioFileLengths(style); // need to recalc, might have changed after scanning the CD
if (_outputFormat != OutputAudioFormat.NoAudio || _accurateRipMode == AccurateRipMode.Verify) if (_outputFormat != OutputAudioFormat.NoAudio || _accurateRipMode == AccurateRipMode.Verify || _accurateRipMode == AccurateRipMode.VerifyPlusCRCs)
WriteAudioFilesPass(dir, style, destPaths, destLengths, htoaToFile, _accurateRipMode == AccurateRipMode.Verify); WriteAudioFilesPass(dir, style, destPaths, destLengths, htoaToFile, _accurateRipMode == AccurateRipMode.Verify || _accurateRipMode == AccurateRipMode.VerifyPlusCRCs);
if (_accurateRipMode != AccurateRipMode.Verify) if (_accurateRipMode != AccurateRipMode.Verify && _accurateRipMode != AccurateRipMode.VerifyPlusCRCs)
{ {
string logContents = LOGContents(); string logContents = LOGContents();
string cueContents = CUESheetContents(style); string cueContents = CUESheetContents(style);
@@ -2140,11 +2165,12 @@ namespace CUETools.Processor
} }
} }
if (_accurateRipMode == AccurateRipMode.Verify || if (_accurateRipMode == AccurateRipMode.Verify ||
_accurateRipMode == AccurateRipMode.VerifyPlusCRCs ||
(_accurateRipMode != AccurateRipMode.None && _outputFormat != OutputAudioFormat.NoAudio)) (_accurateRipMode != AccurateRipMode.None && _outputFormat != OutputAudioFormat.NoAudio))
{ {
ShowProgress((string)"Generating AccurateRip report...", 0, 0, null, null); ShowProgress((string)"Generating AccurateRip report...", 0, 0, null, null);
if (_accurateRipMode == AccurateRipMode.Verify && _config.writeArTagsOnVerify && _writeOffset == 0 && !_isArchive && !_isCD) if ((_accurateRipMode == AccurateRipMode.Verify || _accurateRipMode == AccurateRipMode.VerifyPlusCRCs) && _config.writeArTagsOnVerify && _writeOffset == 0 && !_isArchive && !_isCD)
{ {
uint tracksMatch; uint tracksMatch;
int bestOffset; int bestOffset;
@@ -2174,8 +2200,8 @@ namespace CUETools.Processor
} }
} }
if ((_accurateRipMode != AccurateRipMode.Verify && _config.writeArLogOnConvert) || if ((_accurateRipMode != AccurateRipMode.Verify && _accurateRipMode != AccurateRipMode.VerifyPlusCRCs && _config.writeArLogOnConvert) ||
(_accurateRipMode == AccurateRipMode.Verify && _config.writeArLogOnVerify)) ((_accurateRipMode == AccurateRipMode.Verify || _accurateRipMode == AccurateRipMode.VerifyPlusCRCs) && _config.writeArLogOnVerify))
{ {
if (!Directory.Exists(dir)) if (!Directory.Exists(dir))
Directory.CreateDirectory(dir); Directory.CreateDirectory(dir);
@@ -2525,16 +2551,7 @@ namespace CUETools.Processor
samplesRemIndex -= copyCount; samplesRemIndex -= copyCount;
samplesRemSource -= copyCount; samplesRemSource -= copyCount;
lock (this) CheckStop();
{
if (_stop)
throw new StopException();
if (_pause)
{
ShowProgress("Paused...", 0, 0, null, null);
Monitor.Wait(this);
}
}
} }
} }
} }
@@ -2734,6 +2751,20 @@ namespace CUETools.Processor
return fileLengths; return fileLengths;
} }
private void CheckStop()
{
lock (this)
{
if (_stop)
throw new StopException();
if (_pause)
{
ShowProgress("Paused...", 0, 0, null, null);
Monitor.Wait(this);
}
}
}
public void Stop() { public void Stop() {
lock (this) { lock (this) {
if (_pause) if (_pause)
@@ -2766,6 +2797,14 @@ namespace CUETools.Processor
} }
} }
public CDImageLayout TOC
{
get
{
return _toc;
}
}
private IAudioDest GetAudioDest(string path, int finalSampleCount, int bps, bool noOutput) private IAudioDest GetAudioDest(string path, int finalSampleCount, int bps, bool noOutput)
{ {
if (noOutput) if (noOutput)
@@ -3007,123 +3046,6 @@ namespace CUETools.Processor
} }
} }
public class SeekableZipStream : Stream
{
ZipFile zipFile;
ZipEntry zipEntry;
Stream zipStream;
long position;
byte[] temp;
public SeekableZipStream(string path, string fileName)
{
zipFile = new ZipFile(path);
zipEntry = zipFile.GetEntry(fileName);
if (zipEntry == null)
throw new Exception("Archive entry not found.");
zipStream = zipFile.GetInputStream(zipEntry);
temp = new byte[65536];
position = 0;
}
public override bool CanRead
{
get { return true; }
}
public override bool CanSeek
{
get { return true; }
}
public override bool CanWrite
{
get { return false; }
}
public override long Length
{
get
{
return zipEntry.Size;
}
}
public override long Position
{
get { return position; }
set { Seek(value, SeekOrigin.Begin); }
}
public override void Close()
{
zipStream.Close();
zipEntry = null;
zipFile.Close();
}
public override void Flush()
{
throw new NotSupportedException();
}
public override void SetLength(long value)
{
throw new NotSupportedException();
}
public override int Read(byte[] buffer, int offset, int count)
{
if (position == 0 && zipEntry.IsCrypted && ((ZipInputStream)zipStream).Password == null && PasswordRequired != null)
{
PasswordRequiredEventArgs e = new PasswordRequiredEventArgs();
PasswordRequired(this, e);
if (e.ContinueOperation && e.Password.Length > 0)
((ZipInputStream)zipStream).Password = e.Password;
}
// TODO: always save to a local temp circular buffer for optimization of the backwards seek.
int total = zipStream.Read(buffer, offset, count);
position += total;
if (ExtractionProgress != null)
{
ExtractionProgressEventArgs e = new ExtractionProgressEventArgs();
e.BytesExtracted = position;
e.FileName = zipEntry.Name;
e.FileSize = zipEntry.Size;
e.PercentComplete = 100.0 * position / zipEntry.Size;
ExtractionProgress(this, e);
}
return total;
}
public override long Seek(long offset, SeekOrigin origin)
{
long seek_to;
switch (origin)
{
case SeekOrigin.Begin:
seek_to = offset;
break;
case SeekOrigin.Current:
seek_to = Position + offset;
break;
case SeekOrigin.End:
seek_to = Length + offset;
break;
default:
throw new NotSupportedException();
}
if (seek_to < 0 || seek_to > Length)
throw new IOException("Invalid seek");
if (seek_to < position)
{
zipStream.Close();
zipStream = zipFile.GetInputStream(zipEntry);
position = 0;
}
while (seek_to > position)
if (Read(temp, 0, (int) Math.Min(seek_to - position, (long) temp.Length)) <= 0)
throw new IOException("Invalid seek");
return position;
}
public override void Write(byte[] array, int offset, int count)
{
throw new NotSupportedException();
}
public event PasswordRequiredHandler PasswordRequired;
public event ExtractionProgressHandler ExtractionProgress;
}
public class ArchiveFileAbstraction : TagLib.File.IFileAbstraction public class ArchiveFileAbstraction : TagLib.File.IFileAbstraction
{ {
private string name; private string name;

View File

@@ -0,0 +1,167 @@
using System;
using System.IO;
using ICSharpCode.SharpZipLib.Zip;
namespace CUETools.Processor
{
#region Event Delegate Definitions
/// <summary>
/// Represents the method that will handle extraction progress events
/// </summary>
public delegate void ZipExtractionProgressHandler(object sender, ZipExtractionProgressEventArgs e);
/// <summary>
/// Represents the method that will handle password required events
/// </summary>
public delegate void ZipPasswordRequiredHandler(object sender, ZipPasswordRequiredEventArgs e);
#endregion
public class SeekableZipStream : Stream
{
ZipFile zipFile;
ZipEntry zipEntry;
Stream zipStream;
long position;
byte[] temp;
public SeekableZipStream(string path, string fileName)
{
zipFile = new ZipFile(path);
zipEntry = zipFile.GetEntry(fileName);
if (zipEntry == null)
throw new Exception("Archive entry not found.");
zipStream = zipFile.GetInputStream(zipEntry);
temp = new byte[65536];
position = 0;
}
public override bool CanRead
{
get { return true; }
}
public override bool CanSeek
{
get { return true; }
}
public override bool CanWrite
{
get { return false; }
}
public override long Length
{
get
{
return zipEntry.Size;
}
}
public override long Position
{
get { return position; }
set { Seek(value, SeekOrigin.Begin); }
}
public override void Close()
{
zipStream.Close();
zipEntry = null;
zipFile.Close();
}
public override void Flush()
{
throw new NotSupportedException();
}
public override void SetLength(long value)
{
throw new NotSupportedException();
}
public override int Read(byte[] buffer, int offset, int count)
{
if (position == 0 && zipEntry.IsCrypted && ((ZipInputStream)zipStream).Password == null && PasswordRequired != null)
{
ZipPasswordRequiredEventArgs e = new ZipPasswordRequiredEventArgs();
PasswordRequired(this, e);
if (e.ContinueOperation && e.Password.Length > 0)
((ZipInputStream)zipStream).Password = e.Password;
}
// TODO: always save to a local temp circular buffer for optimization of the backwards seek.
int total = zipStream.Read(buffer, offset, count);
position += total;
if (ExtractionProgress != null)
{
ZipExtractionProgressEventArgs e = new ZipExtractionProgressEventArgs();
e.BytesExtracted = position;
e.FileName = zipEntry.Name;
e.FileSize = zipEntry.Size;
e.PercentComplete = 100.0 * position / zipEntry.Size;
ExtractionProgress(this, e);
}
return total;
}
public override long Seek(long offset, SeekOrigin origin)
{
long seek_to;
switch (origin)
{
case SeekOrigin.Begin:
seek_to = offset;
break;
case SeekOrigin.Current:
seek_to = Position + offset;
break;
case SeekOrigin.End:
seek_to = Length + offset;
break;
default:
throw new NotSupportedException();
}
if (seek_to < 0 || seek_to > Length)
throw new IOException("Invalid seek");
if (seek_to < position)
{
zipStream.Close();
zipStream = zipFile.GetInputStream(zipEntry);
position = 0;
}
while (seek_to > position)
if (Read(temp, 0, (int)Math.Min(seek_to - position, (long)temp.Length)) <= 0)
throw new IOException("Invalid seek");
return position;
}
public override void Write(byte[] array, int offset, int count)
{
throw new NotSupportedException();
}
public event ZipPasswordRequiredHandler PasswordRequired;
public event ZipExtractionProgressHandler ExtractionProgress;
}
#region Event Argument Classes
public class ZipPasswordRequiredEventArgs
{
public string Password = string.Empty;
public bool ContinueOperation = true;
}
public class ZipExtractionProgressEventArgs
{
public string FileName;
public long FileSize;
public long BytesExtracted;
public double PercentComplete;
public bool ContinueOperation = true;
}
#endregion
}

View File

@@ -18,6 +18,8 @@ namespace CUETools.Processor
xiph.SetField(tag, tags.GetValues(tag)); xiph.SetField(tag, tags.GetValues(tag));
return true; return true;
} }
if (fileInfo is TagLib.Mpeg4.File)
return true;
if (fileInfo is TagLib.UserDefined.File && !(fileInfo as TagLib.UserDefined.File).SupportsAPEv2) if (fileInfo is TagLib.UserDefined.File && !(fileInfo as TagLib.UserDefined.File).SupportsAPEv2)
{ {
if (!(fileInfo as TagLib.UserDefined.File).SupportsID3v2) if (!(fileInfo as TagLib.UserDefined.File).SupportsID3v2)

View File

@@ -1,80 +1,80 @@
// //
// File.cs: Provides tagging and properties support for WavPack files. // File.cs: Provides tagging and properties support for WavPack files.
// //
// Author: // Author:
// Brian Nickel (brian.nickel@gmail.com) // Brian Nickel (brian.nickel@gmail.com)
// //
// Original Source: // Original Source:
// wvfile.cpp from libtunepimp // wvfile.cpp from libtunepimp
// //
// Copyright (C) 2006-2007 Brian Nickel // Copyright (C) 2006-2007 Brian Nickel
// Copyright (C) 2006 by Lukáš Lalinský (Original Implementation) // Copyright (C) 2006 by Lukáš Lalinský (Original Implementation)
// Copyright (C) 2004 by Allan Sandfeld Jensen (Original Implementation) // Copyright (C) 2004 by Allan Sandfeld Jensen (Original Implementation)
// //
// This library is free software; you can redistribute it and/or modify // This library is free software; you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License version // it under the terms of the GNU Lesser General Public License version
// 2.1 as published by the Free Software Foundation. // 2.1 as published by the Free Software Foundation.
// //
// This library is distributed in the hope that it will be useful, but // This library is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of // WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details. // Lesser General Public License for more details.
// //
// You should have received a copy of the GNU Lesser General Public // You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software // License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA // USA
// //
using System; using System;
using TagLib; using TagLib;
namespace TagLib.UserDefined { namespace TagLib.UserDefined {
/// <summary> /// <summary>
/// This class extends <see cref="TagLib.NonContainer.File" /> to /// This class extends <see cref="TagLib.NonContainer.File" /> to
/// provide tagging and properties support for user defined format files. /// provide tagging and properties support for user defined format files.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// A <see cref="TagLib.Ape.Tag" /> will be added automatically to /// A <see cref="TagLib.Ape.Tag" /> will be added automatically to
/// any file that doesn't contain one. This change does not effect /// any file that doesn't contain one. This change does not effect
/// the file and can be reversed using the following method: /// the file and can be reversed using the following method:
/// <code>file.RemoveTags (file.TagTypes &amp; ~file.TagTypesOnDisk);</code> /// <code>file.RemoveTags (file.TagTypes &amp; ~file.TagTypesOnDisk);</code>
/// </remarks> /// </remarks>
[SupportedMimeType("taglib/misc", "misc")] [SupportedMimeType("taglib/misc", "misc")]
public class File : TagLib.NonContainer.File public class File : TagLib.NonContainer.File
{ {
#region Private Fields #region Private Fields
private bool _supportsAPEv2 = true; private bool _supportsAPEv2 = true;
private bool _supportsID3v2 = true; private bool _supportsID3v2 = true;
#endregion #endregion
#region Constructors #region Constructors
/// <summary> /// <summary>
/// Constructs and initializes a new instance of <see /// Constructs and initializes a new instance of <see
/// cref="File" /> for a specified path in the local file /// cref="File" /> for a specified path in the local file
/// system and specified read style. /// system and specified read style.
/// </summary> /// </summary>
/// <param name="path"> /// <param name="path">
/// A <see cref="string" /> object containing the path of the /// A <see cref="string" /> object containing the path of the
/// file to use in the new instance. /// file to use in the new instance.
/// </param> /// </param>
/// <param name="propertiesStyle"> /// <param name="propertiesStyle">
/// A <see cref="ReadStyle" /> value specifying at what level /// A <see cref="ReadStyle" /> value specifying at what level
/// of accuracy to read the media properties, or <see /// of accuracy to read the media properties, or <see
/// cref="ReadStyle.None" /> to ignore the properties. /// cref="ReadStyle.None" /> to ignore the properties.
/// </param> /// </param>
/// <exception cref="ArgumentNullException"> /// <exception cref="ArgumentNullException">
/// <paramref name="path" /> is <see langword="null" />. /// <paramref name="path" /> is <see langword="null" />.
/// </exception> /// </exception>
public File (string path, ReadStyle propertiesStyle, bool supportsAPEv2, bool supportsID3v2) public File (string path, ReadStyle propertiesStyle, bool supportsAPEv2, bool supportsID3v2)
: base (path, propertiesStyle) : base (path, propertiesStyle)
{ {
_supportsAPEv2 = supportsAPEv2; _supportsAPEv2 = supportsAPEv2;
_supportsID3v2 = supportsID3v2; _supportsID3v2 = supportsID3v2;
// Make sure we have an APE tag. // Make sure we have an APE tag.
@@ -83,23 +83,23 @@ namespace TagLib.UserDefined {
else else
if (_supportsID3v2) if (_supportsID3v2)
GetTag(TagTypes.Id3v2, true); GetTag(TagTypes.Id3v2, true);
} }
/// <summary> /// <summary>
/// Constructs and initializes a new instance of <see /// Constructs and initializes a new instance of <see
/// cref="File" /> for a specified path in the local file /// cref="File" /> for a specified path in the local file
/// system with an average read style. /// system with an average read style.
/// </summary> /// </summary>
/// <param name="path"> /// <param name="path">
/// A <see cref="string" /> object containing the path of the /// A <see cref="string" /> object containing the path of the
/// file to use in the new instance. /// file to use in the new instance.
/// </param> /// </param>
/// <exception cref="ArgumentNullException"> /// <exception cref="ArgumentNullException">
/// <paramref name="path" /> is <see langword="null" />. /// <paramref name="path" /> is <see langword="null" />.
/// </exception> /// </exception>
public File(string path, bool supportsAPEv2, bool supportsID3v2) public File(string path, bool supportsAPEv2, bool supportsID3v2)
: base(path) : base(path)
{ {
_supportsAPEv2 = supportsAPEv2; _supportsAPEv2 = supportsAPEv2;
_supportsID3v2 = supportsID3v2; _supportsID3v2 = supportsID3v2;
// Make sure we have an APE tag. // Make sure we have an APE tag.
@@ -108,56 +108,30 @@ namespace TagLib.UserDefined {
else else
if (_supportsID3v2) if (_supportsID3v2)
GetTag(TagTypes.Id3v2, true); GetTag(TagTypes.Id3v2, true);
} }
/// <summary> /// <summary>
/// Constructs and initializes a new instance of <see /// Constructs and initializes a new instance of <see
/// cref="File" /> for a specified file abstraction and /// cref="File" /> for a specified file abstraction and
/// specified read style. /// specified read style.
/// </summary> /// </summary>
/// <param name="abstraction"> /// <param name="abstraction">
/// A <see cref="IFileAbstraction" /> object to use when /// A <see cref="IFileAbstraction" /> object to use when
/// reading from and writing to the file. /// reading from and writing to the file.
/// </param> /// </param>
/// <param name="propertiesStyle"> /// <param name="propertiesStyle">
/// A <see cref="ReadStyle" /> value specifying at what level /// A <see cref="ReadStyle" /> value specifying at what level
/// of accuracy to read the media properties, or <see /// of accuracy to read the media properties, or <see
/// cref="ReadStyle.None" /> to ignore the properties. /// cref="ReadStyle.None" /> to ignore the properties.
/// </param> /// </param>
/// <exception cref="ArgumentNullException"> /// <exception cref="ArgumentNullException">
/// <paramref name="abstraction" /> is <see langword="null" /// <paramref name="abstraction" /> is <see langword="null"
/// />. /// />.
/// </exception>
public File (File.IFileAbstraction abstraction,
ReadStyle propertiesStyle, bool supportsAPEv2, bool supportsID3v2)
: base (abstraction, propertiesStyle)
{
_supportsAPEv2 = supportsAPEv2;
_supportsID3v2 = supportsID3v2;
// Make sure we have an APE tag.
if (_supportsAPEv2)
GetTag(TagTypes.Ape, true);
else
if (_supportsID3v2)
GetTag(TagTypes.Id3v2, true);
}
/// <summary>
/// Constructs and initializes a new instance of <see
/// cref="File" /> for a specified file abstraction with an
/// average read style.
/// </summary>
/// <param name="abstraction">
/// A <see cref="IFileAbstraction" /> object to use when
/// reading from and writing to the file.
/// </param>
/// <exception cref="ArgumentNullException">
/// <paramref name="abstraction" /> is <see langword="null"
/// />.
/// </exception> /// </exception>
public File(File.IFileAbstraction abstraction, bool supportsAPEv2, bool supportsID3v2) public File (File.IFileAbstraction abstraction,
: base (abstraction) ReadStyle propertiesStyle, bool supportsAPEv2, bool supportsID3v2)
{ : base (abstraction, propertiesStyle)
{
_supportsAPEv2 = supportsAPEv2; _supportsAPEv2 = supportsAPEv2;
_supportsID3v2 = supportsID3v2; _supportsID3v2 = supportsID3v2;
// Make sure we have an APE tag. // Make sure we have an APE tag.
@@ -166,20 +140,46 @@ namespace TagLib.UserDefined {
else else
if (_supportsID3v2) if (_supportsID3v2)
GetTag(TagTypes.Id3v2, true); GetTag(TagTypes.Id3v2, true);
} }
#endregion /// <summary>
/// Constructs and initializes a new instance of <see
/// cref="File" /> for a specified file abstraction with an
/// average read style.
#region Public Methods /// </summary>
/// <param name="abstraction">
public bool SupportsAPEv2 /// A <see cref="IFileAbstraction" /> object to use when
{ /// reading from and writing to the file.
get /// </param>
{ /// <exception cref="ArgumentNullException">
return _supportsAPEv2; /// <paramref name="abstraction" /> is <see langword="null"
} /// />.
/// </exception>
public File(File.IFileAbstraction abstraction, bool supportsAPEv2, bool supportsID3v2)
: base (abstraction)
{
_supportsAPEv2 = supportsAPEv2;
_supportsID3v2 = supportsID3v2;
// Make sure we have an APE tag.
if (_supportsAPEv2)
GetTag(TagTypes.Ape, true);
else
if (_supportsID3v2)
GetTag(TagTypes.Id3v2, true);
}
#endregion
#region Public Methods
public bool SupportsAPEv2
{
get
{
return _supportsAPEv2;
}
} }
public bool SupportsID3v2 public bool SupportsID3v2
@@ -188,133 +188,133 @@ namespace TagLib.UserDefined {
{ {
return _supportsID3v2; return _supportsID3v2;
} }
} }
/// <summary> /// <summary>
/// Gets a tag of a specified type from the current instance, /// Gets a tag of a specified type from the current instance,
/// optionally creating a new tag if possible. /// optionally creating a new tag if possible.
/// </summary> /// </summary>
/// <param name="type"> /// <param name="type">
/// A <see cref="TagLib.TagTypes" /> value indicating the /// A <see cref="TagLib.TagTypes" /> value indicating the
/// type of tag to read. /// type of tag to read.
/// </param> /// </param>
/// <param name="create"> /// <param name="create">
/// A <see cref="bool" /> value specifying whether or not to /// A <see cref="bool" /> value specifying whether or not to
/// try and create the tag if one is not found. /// try and create the tag if one is not found.
/// </param> /// </param>
/// <returns> /// <returns>
/// A <see cref="Tag" /> object containing the tag that was /// A <see cref="Tag" /> object containing the tag that was
/// found in or added to the current instance. If no /// found in or added to the current instance. If no
/// matching tag was found and none was created, <see /// matching tag was found and none was created, <see
/// langword="null" /> is returned. /// langword="null" /> is returned.
/// </returns> /// </returns>
/// <remarks> /// <remarks>
/// If a <see cref="TagLib.Id3v2.Tag" /> is added to the /// If a <see cref="TagLib.Id3v2.Tag" /> is added to the
/// current instance, it will be placed at the start of the /// current instance, it will be placed at the start of the
/// file. On the other hand, <see cref="TagLib.Id3v1.Tag" /> /// file. On the other hand, <see cref="TagLib.Id3v1.Tag" />
/// <see cref="TagLib.Ape.Tag" /> will be added to the end of /// <see cref="TagLib.Ape.Tag" /> will be added to the end of
/// the file. All other tag types will be ignored. /// the file. All other tag types will be ignored.
/// </remarks> /// </remarks>
public override TagLib.Tag GetTag (TagTypes type, bool create) public override TagLib.Tag GetTag (TagTypes type, bool create)
{ {
Tag t = (Tag as TagLib.NonContainer.Tag).GetTag (type); Tag t = (Tag as TagLib.NonContainer.Tag).GetTag (type);
if (t != null || !create) if (t != null || !create)
return t; return t;
switch (type) switch (type)
{ {
case TagTypes.Id3v1: case TagTypes.Id3v1:
return EndTag.AddTag (type, Tag); return EndTag.AddTag (type, Tag);
case TagTypes.Id3v2: case TagTypes.Id3v2:
return StartTag.AddTag (type, Tag); return StartTag.AddTag (type, Tag);
case TagTypes.Ape: case TagTypes.Ape:
return EndTag.AddTag (type, Tag); return EndTag.AddTag (type, Tag);
default: default:
return null; return null;
} }
} }
#endregion #endregion
#region Protected Methods #region Protected Methods
/// <summary> /// <summary>
/// Reads format specific information at the start of the /// Reads format specific information at the start of the
/// file. /// file.
/// </summary> /// </summary>
/// <param name="start"> /// <param name="start">
/// A <see cref="long" /> value containing the seek position /// A <see cref="long" /> value containing the seek position
/// at which the tags end and the media data begins. /// at which the tags end and the media data begins.
/// </param> /// </param>
/// <param name="propertiesStyle"> /// <param name="propertiesStyle">
/// A <see cref="ReadStyle" /> value specifying at what level /// A <see cref="ReadStyle" /> value specifying at what level
/// of accuracy to read the media properties, or <see /// of accuracy to read the media properties, or <see
/// cref="ReadStyle.None" /> to ignore the properties. /// cref="ReadStyle.None" /> to ignore the properties.
/// </param> /// </param>
protected override void ReadStart (long start, protected override void ReadStart (long start,
ReadStyle propertiesStyle) ReadStyle propertiesStyle)
{ {
} }
/// <summary> /// <summary>
/// Reads format specific information at the end of the /// Reads format specific information at the end of the
/// file. /// file.
/// </summary> /// </summary>
/// <param name="end"> /// <param name="end">
/// A <see cref="long" /> value containing the seek position /// A <see cref="long" /> value containing the seek position
/// at which the media data ends and the tags begin. /// at which the media data ends and the tags begin.
/// </param> /// </param>
/// <param name="propertiesStyle"> /// <param name="propertiesStyle">
/// A <see cref="ReadStyle" /> value specifying at what level /// A <see cref="ReadStyle" /> value specifying at what level
/// of accuracy to read the media properties, or <see /// of accuracy to read the media properties, or <see
/// cref="ReadStyle.None" /> to ignore the properties. /// cref="ReadStyle.None" /> to ignore the properties.
/// </param> /// </param>
protected override void ReadEnd (long end, protected override void ReadEnd (long end,
ReadStyle propertiesStyle) ReadStyle propertiesStyle)
{ {
} }
/// <summary> /// <summary>
/// Reads the audio properties from the file represented by /// Reads the audio properties from the file represented by
/// the current instance. /// the current instance.
/// </summary> /// </summary>
/// <param name="start"> /// <param name="start">
/// A <see cref="long" /> value containing the seek position /// A <see cref="long" /> value containing the seek position
/// at which the tags end and the media data begins. /// at which the tags end and the media data begins.
/// </param> /// </param>
/// <param name="end"> /// <param name="end">
/// A <see cref="long" /> value containing the seek position /// A <see cref="long" /> value containing the seek position
/// at which the media data ends and the tags begin. /// at which the media data ends and the tags begin.
/// </param> /// </param>
/// <param name="propertiesStyle"> /// <param name="propertiesStyle">
/// A <see cref="ReadStyle" /> value specifying at what level /// A <see cref="ReadStyle" /> value specifying at what level
/// of accuracy to read the media properties, or <see /// of accuracy to read the media properties, or <see
/// cref="ReadStyle.None" /> to ignore the properties. /// cref="ReadStyle.None" /> to ignore the properties.
/// </param> /// </param>
/// <returns> /// <returns>
/// A <see cref="TagLib.Properties" /> object describing the /// A <see cref="TagLib.Properties" /> object describing the
/// media properties of the file represented by the current /// media properties of the file represented by the current
/// instance. /// instance.
/// </returns> /// </returns>
protected override Properties ReadProperties (long start, protected override Properties ReadProperties (long start,
long end, long end,
ReadStyle propertiesStyle) ReadStyle propertiesStyle)
{ {
return new Properties (); return new Properties ();
} }
#endregion #endregion
} }
public static class AdditionalFileTypes public static class AdditionalFileTypes
{ {
private static bool inited = false; private static bool inited = false;
private static CUETools.Processor.CUEConfig _config; private static CUETools.Processor.CUEConfig _config;
@@ -329,27 +329,27 @@ namespace TagLib.UserDefined {
private static TagLib.File UserDefinedResolver(TagLib.File.IFileAbstraction abstraction, string mimetype, TagLib.ReadStyle style) private static TagLib.File UserDefinedResolver(TagLib.File.IFileAbstraction abstraction, string mimetype, TagLib.ReadStyle style)
{ {
if (mimetype == "taglib/flac" || mimetype == "taglib/wv" || mimetype == "taglib/ape" || mimetype == "taglib/wav" || mimetype == "taglib/ogg") if (mimetype == "taglib/flac" || mimetype == "taglib/wv" || mimetype == "taglib/ape" || mimetype == "taglib/wav" || mimetype == "taglib/ogg" || mimetype == "taglib/m4a")
return null; return null;
if (mimetype == "taglib/tta") if (mimetype == "taglib/tta")
return new File(abstraction, style, true, false); return new File(abstraction, style, true, false);
if (mimetype == "taglib/" + _config.udc1Extension) if (mimetype == "taglib/" + _config.udc1Extension)
return new File(abstraction, style, _config.udc1APEv2, _config.udc1ID3v2); return new File(abstraction, style, _config.udc1APEv2, _config.udc1ID3v2);
return null; return null;
} }
static AdditionalFileTypes () static AdditionalFileTypes ()
{ {
Init(); Init();
} }
internal static void Init() internal static void Init()
{ {
if (inited) if (inited)
return; return;
TagLib.File.AddFileTypeResolver(new TagLib.File.FileTypeResolver(UserDefinedResolver)); TagLib.File.AddFileTypeResolver(new TagLib.File.FileTypeResolver(UserDefinedResolver));
//FileTypes.Register(typeof(TagLib.NonContainer.File)); //FileTypes.Register(typeof(TagLib.NonContainer.File));
inited = true; inited = true;
} }
} }
} }

View File

@@ -9,6 +9,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder> <AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>JDP</RootNamespace> <RootNamespace>JDP</RootNamespace>
<AssemblyName>CUETools</AssemblyName> <AssemblyName>CUETools</AssemblyName>
<ApplicationIcon>Resources\cue.ico</ApplicationIcon>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
@@ -203,6 +204,10 @@
<Compile Include="Settings.cs" /> <Compile Include="Settings.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\CUETools.CDImage\CUETools.CDImage.csproj">
<Project>{1DD41038-D885-46C5-8DDE-E0B82F066584}</Project>
<Name>CUETools.CDImage</Name>
</ProjectReference>
<ProjectReference Include="..\CUETools.Processor\CUETools.Processor.csproj"> <ProjectReference Include="..\CUETools.Processor\CUETools.Processor.csproj">
<Project>{4911BD82-49EF-4858-8B51-5394F86739A4}</Project> <Project>{4911BD82-49EF-4858-8B51-5394F86739A4}</Project>
<Name>CUETools.Processor</Name> <Name>CUETools.Processor</Name>
@@ -222,6 +227,10 @@
<ItemGroup> <ItemGroup>
<None Include="Resources\musicbrainz.ico" /> <None Include="Resources\musicbrainz.ico" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Content Include="Resources\cue.ico" />
<Content Include="Resources\eac.ico" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets. Other similar extension points exist, see Microsoft.Common.targets.

BIN
CUETools/Resources/cue.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
CUETools/Resources/eac.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -49,6 +49,7 @@ namespace JDP {
this.rbAppendFilename = new System.Windows.Forms.RadioButton(); this.rbAppendFilename = new System.Windows.Forms.RadioButton();
this.txtAppendFilename = new System.Windows.Forms.TextBox(); this.txtAppendFilename = new System.Windows.Forms.TextBox();
this.grpAudioOutput = new System.Windows.Forms.GroupBox(); this.grpAudioOutput = new System.Windows.Forms.GroupBox();
this.btnCodec = new System.Windows.Forms.Button();
this.rbUDC1 = new System.Windows.Forms.RadioButton(); this.rbUDC1 = new System.Windows.Forms.RadioButton();
this.rbTTA = new System.Windows.Forms.RadioButton(); this.rbTTA = new System.Windows.Forms.RadioButton();
this.chkLossyWAV = new System.Windows.Forms.CheckBox(); this.chkLossyWAV = new System.Windows.Forms.CheckBox();
@@ -61,6 +62,7 @@ namespace JDP {
this.btnFilenameCorrector = new System.Windows.Forms.Button(); this.btnFilenameCorrector = new System.Windows.Forms.Button();
this.btnSettings = new System.Windows.Forms.Button(); this.btnSettings = new System.Windows.Forms.Button();
this.grpAccurateRip = new System.Windows.Forms.GroupBox(); this.grpAccurateRip = new System.Windows.Forms.GroupBox();
this.rbArPlusCRC = new System.Windows.Forms.RadioButton();
this.rbArAndEncode = new System.Windows.Forms.RadioButton(); this.rbArAndEncode = new System.Windows.Forms.RadioButton();
this.label1 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label();
this.txtDataTrackLength = new System.Windows.Forms.MaskedTextBox(); this.txtDataTrackLength = new System.Windows.Forms.MaskedTextBox();
@@ -80,9 +82,12 @@ namespace JDP {
this.rbFreedbAlways = new System.Windows.Forms.RadioButton(); this.rbFreedbAlways = new System.Windows.Forms.RadioButton();
this.rbFreedbIf = new System.Windows.Forms.RadioButton(); this.rbFreedbIf = new System.Windows.Forms.RadioButton();
this.rbFreedbNever = new System.Windows.Forms.RadioButton(); this.rbFreedbNever = new System.Windows.Forms.RadioButton();
this.btnCodec = new System.Windows.Forms.Button();
this.contextMenuStripUDC = new System.Windows.Forms.ContextMenuStrip(this.components); this.contextMenuStripUDC = new System.Windows.Forms.ContextMenuStrip(this.components);
this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem();
this.tAKToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.tAKToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.toolStripMenuItem3 = new System.Windows.Forms.ToolStripMenuItem();
this.mP3ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mP3ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.oGGToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.oGGToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.grpCUEPaths.SuspendLayout(); this.grpCUEPaths.SuspendLayout();
@@ -97,78 +102,125 @@ namespace JDP {
// //
// btnConvert // btnConvert
// //
this.btnConvert.AccessibleDescription = null;
this.btnConvert.AccessibleName = null;
resources.ApplyResources(this.btnConvert, "btnConvert"); resources.ApplyResources(this.btnConvert, "btnConvert");
this.btnConvert.BackgroundImage = null;
this.btnConvert.Font = null;
this.btnConvert.Name = "btnConvert"; this.btnConvert.Name = "btnConvert";
this.toolTip1.SetToolTip(this.btnConvert, resources.GetString("btnConvert.ToolTip"));
this.btnConvert.UseVisualStyleBackColor = true; this.btnConvert.UseVisualStyleBackColor = true;
this.btnConvert.Click += new System.EventHandler(this.btnConvert_Click); this.btnConvert.Click += new System.EventHandler(this.btnConvert_Click);
// //
// grpCUEPaths // grpCUEPaths
// //
this.grpCUEPaths.AccessibleDescription = null;
this.grpCUEPaths.AccessibleName = null;
resources.ApplyResources(this.grpCUEPaths, "grpCUEPaths");
this.grpCUEPaths.BackgroundImage = null;
this.grpCUEPaths.Controls.Add(this.btnBrowseOutput); this.grpCUEPaths.Controls.Add(this.btnBrowseOutput);
this.grpCUEPaths.Controls.Add(this.btnBrowseInput); this.grpCUEPaths.Controls.Add(this.btnBrowseInput);
this.grpCUEPaths.Controls.Add(this.lblOutput); this.grpCUEPaths.Controls.Add(this.lblOutput);
this.grpCUEPaths.Controls.Add(this.lblInput); this.grpCUEPaths.Controls.Add(this.lblInput);
this.grpCUEPaths.Controls.Add(this.txtOutputPath); this.grpCUEPaths.Controls.Add(this.txtOutputPath);
this.grpCUEPaths.Controls.Add(this.txtInputPath); this.grpCUEPaths.Controls.Add(this.txtInputPath);
resources.ApplyResources(this.grpCUEPaths, "grpCUEPaths"); this.grpCUEPaths.Font = null;
this.grpCUEPaths.Name = "grpCUEPaths"; this.grpCUEPaths.Name = "grpCUEPaths";
this.grpCUEPaths.TabStop = false; this.grpCUEPaths.TabStop = false;
this.toolTip1.SetToolTip(this.grpCUEPaths, resources.GetString("grpCUEPaths.ToolTip"));
// //
// btnBrowseOutput // btnBrowseOutput
// //
this.btnBrowseOutput.AccessibleDescription = null;
this.btnBrowseOutput.AccessibleName = null;
resources.ApplyResources(this.btnBrowseOutput, "btnBrowseOutput"); resources.ApplyResources(this.btnBrowseOutput, "btnBrowseOutput");
this.btnBrowseOutput.BackgroundImage = null;
this.btnBrowseOutput.Font = null;
this.btnBrowseOutput.Name = "btnBrowseOutput"; this.btnBrowseOutput.Name = "btnBrowseOutput";
this.toolTip1.SetToolTip(this.btnBrowseOutput, resources.GetString("btnBrowseOutput.ToolTip"));
this.btnBrowseOutput.UseVisualStyleBackColor = true; this.btnBrowseOutput.UseVisualStyleBackColor = true;
this.btnBrowseOutput.Click += new System.EventHandler(this.btnBrowseOutput_Click); this.btnBrowseOutput.Click += new System.EventHandler(this.btnBrowseOutput_Click);
// //
// btnBrowseInput // btnBrowseInput
// //
this.btnBrowseInput.AccessibleDescription = null;
this.btnBrowseInput.AccessibleName = null;
resources.ApplyResources(this.btnBrowseInput, "btnBrowseInput"); resources.ApplyResources(this.btnBrowseInput, "btnBrowseInput");
this.btnBrowseInput.BackgroundImage = null;
this.btnBrowseInput.Font = null;
this.btnBrowseInput.Name = "btnBrowseInput"; this.btnBrowseInput.Name = "btnBrowseInput";
this.toolTip1.SetToolTip(this.btnBrowseInput, resources.GetString("btnBrowseInput.ToolTip"));
this.btnBrowseInput.UseVisualStyleBackColor = true; this.btnBrowseInput.UseVisualStyleBackColor = true;
this.btnBrowseInput.Click += new System.EventHandler(this.btnBrowseInput_Click); this.btnBrowseInput.Click += new System.EventHandler(this.btnBrowseInput_Click);
// //
// lblOutput // lblOutput
// //
this.lblOutput.AccessibleDescription = null;
this.lblOutput.AccessibleName = null;
resources.ApplyResources(this.lblOutput, "lblOutput"); resources.ApplyResources(this.lblOutput, "lblOutput");
this.lblOutput.Font = null;
this.lblOutput.Name = "lblOutput"; this.lblOutput.Name = "lblOutput";
this.toolTip1.SetToolTip(this.lblOutput, resources.GetString("lblOutput.ToolTip"));
// //
// lblInput // lblInput
// //
this.lblInput.AccessibleDescription = null;
this.lblInput.AccessibleName = null;
resources.ApplyResources(this.lblInput, "lblInput"); resources.ApplyResources(this.lblInput, "lblInput");
this.lblInput.Font = null;
this.lblInput.Name = "lblInput"; this.lblInput.Name = "lblInput";
this.toolTip1.SetToolTip(this.lblInput, resources.GetString("lblInput.ToolTip"));
// //
// txtOutputPath // txtOutputPath
// //
this.txtOutputPath.AccessibleDescription = null;
this.txtOutputPath.AccessibleName = null;
this.txtOutputPath.AllowDrop = true; this.txtOutputPath.AllowDrop = true;
resources.ApplyResources(this.txtOutputPath, "txtOutputPath"); resources.ApplyResources(this.txtOutputPath, "txtOutputPath");
this.txtOutputPath.BackgroundImage = null;
this.txtOutputPath.Font = null;
this.txtOutputPath.Name = "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.DragDrop += new System.Windows.Forms.DragEventHandler(this.PathTextBox_DragDrop);
this.txtOutputPath.DragEnter += new System.Windows.Forms.DragEventHandler(this.PathTextBox_DragEnter); this.txtOutputPath.DragEnter += new System.Windows.Forms.DragEventHandler(this.PathTextBox_DragEnter);
// //
// txtInputPath // txtInputPath
// //
this.txtInputPath.AccessibleDescription = null;
this.txtInputPath.AccessibleName = null;
this.txtInputPath.AllowDrop = true; this.txtInputPath.AllowDrop = true;
resources.ApplyResources(this.txtInputPath, "txtInputPath"); resources.ApplyResources(this.txtInputPath, "txtInputPath");
this.txtInputPath.BackgroundImage = null;
this.txtInputPath.Font = null;
this.txtInputPath.Name = "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.TextChanged += new System.EventHandler(this.txtInputPath_TextChanged);
this.txtInputPath.DragDrop += new System.Windows.Forms.DragEventHandler(this.PathTextBox_DragDrop); this.txtInputPath.DragDrop += new System.Windows.Forms.DragEventHandler(this.PathTextBox_DragDrop);
this.txtInputPath.DragEnter += new System.Windows.Forms.DragEventHandler(this.PathTextBox_DragEnter); this.txtInputPath.DragEnter += new System.Windows.Forms.DragEventHandler(this.PathTextBox_DragEnter);
// //
// grpOutputStyle // grpOutputStyle
// //
this.grpOutputStyle.AccessibleDescription = null;
this.grpOutputStyle.AccessibleName = null;
resources.ApplyResources(this.grpOutputStyle, "grpOutputStyle");
this.grpOutputStyle.BackgroundImage = null;
this.grpOutputStyle.Controls.Add(this.rbEmbedCUE); this.grpOutputStyle.Controls.Add(this.rbEmbedCUE);
this.grpOutputStyle.Controls.Add(this.rbGapsLeftOut); this.grpOutputStyle.Controls.Add(this.rbGapsLeftOut);
this.grpOutputStyle.Controls.Add(this.rbGapsPrepended); this.grpOutputStyle.Controls.Add(this.rbGapsPrepended);
this.grpOutputStyle.Controls.Add(this.rbGapsAppended); this.grpOutputStyle.Controls.Add(this.rbGapsAppended);
this.grpOutputStyle.Controls.Add(this.rbSingleFile); this.grpOutputStyle.Controls.Add(this.rbSingleFile);
resources.ApplyResources(this.grpOutputStyle, "grpOutputStyle"); this.grpOutputStyle.Font = null;
this.grpOutputStyle.Name = "grpOutputStyle"; this.grpOutputStyle.Name = "grpOutputStyle";
this.grpOutputStyle.TabStop = false; this.grpOutputStyle.TabStop = false;
this.toolTip1.SetToolTip(this.grpOutputStyle, resources.GetString("grpOutputStyle.ToolTip"));
// //
// rbEmbedCUE // rbEmbedCUE
// //
this.rbEmbedCUE.AccessibleDescription = null;
this.rbEmbedCUE.AccessibleName = null;
resources.ApplyResources(this.rbEmbedCUE, "rbEmbedCUE"); resources.ApplyResources(this.rbEmbedCUE, "rbEmbedCUE");
this.rbEmbedCUE.BackgroundImage = null;
this.rbEmbedCUE.Font = null;
this.rbEmbedCUE.Name = "rbEmbedCUE"; this.rbEmbedCUE.Name = "rbEmbedCUE";
this.rbEmbedCUE.TabStop = true; this.rbEmbedCUE.TabStop = true;
this.toolTip1.SetToolTip(this.rbEmbedCUE, resources.GetString("rbEmbedCUE.ToolTip")); this.toolTip1.SetToolTip(this.rbEmbedCUE, resources.GetString("rbEmbedCUE.ToolTip"));
@@ -177,29 +229,45 @@ namespace JDP {
// //
// rbGapsLeftOut // rbGapsLeftOut
// //
this.rbGapsLeftOut.AccessibleDescription = null;
this.rbGapsLeftOut.AccessibleName = null;
resources.ApplyResources(this.rbGapsLeftOut, "rbGapsLeftOut"); resources.ApplyResources(this.rbGapsLeftOut, "rbGapsLeftOut");
this.rbGapsLeftOut.BackgroundImage = null;
this.rbGapsLeftOut.Font = null;
this.rbGapsLeftOut.Name = "rbGapsLeftOut"; this.rbGapsLeftOut.Name = "rbGapsLeftOut";
this.toolTip1.SetToolTip(this.rbGapsLeftOut, resources.GetString("rbGapsLeftOut.ToolTip")); this.toolTip1.SetToolTip(this.rbGapsLeftOut, resources.GetString("rbGapsLeftOut.ToolTip"));
this.rbGapsLeftOut.UseVisualStyleBackColor = true; this.rbGapsLeftOut.UseVisualStyleBackColor = true;
// //
// rbGapsPrepended // rbGapsPrepended
// //
this.rbGapsPrepended.AccessibleDescription = null;
this.rbGapsPrepended.AccessibleName = null;
resources.ApplyResources(this.rbGapsPrepended, "rbGapsPrepended"); resources.ApplyResources(this.rbGapsPrepended, "rbGapsPrepended");
this.rbGapsPrepended.BackgroundImage = null;
this.rbGapsPrepended.Font = null;
this.rbGapsPrepended.Name = "rbGapsPrepended"; this.rbGapsPrepended.Name = "rbGapsPrepended";
this.toolTip1.SetToolTip(this.rbGapsPrepended, resources.GetString("rbGapsPrepended.ToolTip")); this.toolTip1.SetToolTip(this.rbGapsPrepended, resources.GetString("rbGapsPrepended.ToolTip"));
this.rbGapsPrepended.UseVisualStyleBackColor = true; this.rbGapsPrepended.UseVisualStyleBackColor = true;
// //
// rbGapsAppended // rbGapsAppended
// //
this.rbGapsAppended.AccessibleDescription = null;
this.rbGapsAppended.AccessibleName = null;
resources.ApplyResources(this.rbGapsAppended, "rbGapsAppended"); resources.ApplyResources(this.rbGapsAppended, "rbGapsAppended");
this.rbGapsAppended.BackgroundImage = null;
this.rbGapsAppended.Font = null;
this.rbGapsAppended.Name = "rbGapsAppended"; this.rbGapsAppended.Name = "rbGapsAppended";
this.toolTip1.SetToolTip(this.rbGapsAppended, resources.GetString("rbGapsAppended.ToolTip")); this.toolTip1.SetToolTip(this.rbGapsAppended, resources.GetString("rbGapsAppended.ToolTip"));
this.rbGapsAppended.UseVisualStyleBackColor = true; this.rbGapsAppended.UseVisualStyleBackColor = true;
// //
// rbSingleFile // rbSingleFile
// //
this.rbSingleFile.AccessibleDescription = null;
this.rbSingleFile.AccessibleName = null;
resources.ApplyResources(this.rbSingleFile, "rbSingleFile"); resources.ApplyResources(this.rbSingleFile, "rbSingleFile");
this.rbSingleFile.BackgroundImage = null;
this.rbSingleFile.Checked = true; this.rbSingleFile.Checked = true;
this.rbSingleFile.Font = null;
this.rbSingleFile.Name = "rbSingleFile"; this.rbSingleFile.Name = "rbSingleFile";
this.rbSingleFile.TabStop = true; this.rbSingleFile.TabStop = true;
this.toolTip1.SetToolTip(this.rbSingleFile, resources.GetString("rbSingleFile.ToolTip")); this.toolTip1.SetToolTip(this.rbSingleFile, resources.GetString("rbSingleFile.ToolTip"));
@@ -207,13 +275,22 @@ namespace JDP {
// //
// btnAbout // btnAbout
// //
this.btnAbout.AccessibleDescription = null;
this.btnAbout.AccessibleName = null;
resources.ApplyResources(this.btnAbout, "btnAbout"); resources.ApplyResources(this.btnAbout, "btnAbout");
this.btnAbout.BackgroundImage = null;
this.btnAbout.Font = null;
this.btnAbout.Name = "btnAbout"; this.btnAbout.Name = "btnAbout";
this.toolTip1.SetToolTip(this.btnAbout, resources.GetString("btnAbout.ToolTip"));
this.btnAbout.UseVisualStyleBackColor = true; this.btnAbout.UseVisualStyleBackColor = true;
this.btnAbout.Click += new System.EventHandler(this.btnAbout_Click); this.btnAbout.Click += new System.EventHandler(this.btnAbout_Click);
// //
// grpOutputPathGeneration // grpOutputPathGeneration
// //
this.grpOutputPathGeneration.AccessibleDescription = null;
this.grpOutputPathGeneration.AccessibleName = null;
resources.ApplyResources(this.grpOutputPathGeneration, "grpOutputPathGeneration");
this.grpOutputPathGeneration.BackgroundImage = null;
this.grpOutputPathGeneration.Controls.Add(this.txtCustomFormat); this.grpOutputPathGeneration.Controls.Add(this.txtCustomFormat);
this.grpOutputPathGeneration.Controls.Add(this.rbCustomFormat); this.grpOutputPathGeneration.Controls.Add(this.rbCustomFormat);
this.grpOutputPathGeneration.Controls.Add(this.txtCreateSubdirectory); this.grpOutputPathGeneration.Controls.Add(this.txtCreateSubdirectory);
@@ -221,60 +298,100 @@ namespace JDP {
this.grpOutputPathGeneration.Controls.Add(this.rbCreateSubdirectory); this.grpOutputPathGeneration.Controls.Add(this.rbCreateSubdirectory);
this.grpOutputPathGeneration.Controls.Add(this.rbAppendFilename); this.grpOutputPathGeneration.Controls.Add(this.rbAppendFilename);
this.grpOutputPathGeneration.Controls.Add(this.txtAppendFilename); this.grpOutputPathGeneration.Controls.Add(this.txtAppendFilename);
resources.ApplyResources(this.grpOutputPathGeneration, "grpOutputPathGeneration"); this.grpOutputPathGeneration.Font = null;
this.grpOutputPathGeneration.Name = "grpOutputPathGeneration"; this.grpOutputPathGeneration.Name = "grpOutputPathGeneration";
this.grpOutputPathGeneration.TabStop = false; this.grpOutputPathGeneration.TabStop = false;
this.toolTip1.SetToolTip(this.grpOutputPathGeneration, resources.GetString("grpOutputPathGeneration.ToolTip"));
// //
// txtCustomFormat // txtCustomFormat
// //
this.txtCustomFormat.AccessibleDescription = null;
this.txtCustomFormat.AccessibleName = null;
resources.ApplyResources(this.txtCustomFormat, "txtCustomFormat"); resources.ApplyResources(this.txtCustomFormat, "txtCustomFormat");
this.txtCustomFormat.BackgroundImage = null;
this.txtCustomFormat.Font = null;
this.txtCustomFormat.Name = "txtCustomFormat"; this.txtCustomFormat.Name = "txtCustomFormat";
this.toolTip1.SetToolTip(this.txtCustomFormat, resources.GetString("txtCustomFormat.ToolTip"));
this.txtCustomFormat.TextChanged += new System.EventHandler(this.txtCustomFormat_TextChanged); this.txtCustomFormat.TextChanged += new System.EventHandler(this.txtCustomFormat_TextChanged);
// //
// rbCustomFormat // rbCustomFormat
// //
this.rbCustomFormat.AccessibleDescription = null;
this.rbCustomFormat.AccessibleName = null;
resources.ApplyResources(this.rbCustomFormat, "rbCustomFormat"); resources.ApplyResources(this.rbCustomFormat, "rbCustomFormat");
this.rbCustomFormat.BackgroundImage = null;
this.rbCustomFormat.Font = null;
this.rbCustomFormat.Name = "rbCustomFormat"; this.rbCustomFormat.Name = "rbCustomFormat";
this.rbCustomFormat.TabStop = true; this.rbCustomFormat.TabStop = true;
this.toolTip1.SetToolTip(this.rbCustomFormat, resources.GetString("rbCustomFormat.ToolTip"));
this.rbCustomFormat.UseVisualStyleBackColor = true; this.rbCustomFormat.UseVisualStyleBackColor = true;
this.rbCustomFormat.CheckedChanged += new System.EventHandler(this.rbCustomFormat_CheckedChanged); this.rbCustomFormat.CheckedChanged += new System.EventHandler(this.rbCustomFormat_CheckedChanged);
// //
// txtCreateSubdirectory // txtCreateSubdirectory
// //
this.txtCreateSubdirectory.AccessibleDescription = null;
this.txtCreateSubdirectory.AccessibleName = null;
resources.ApplyResources(this.txtCreateSubdirectory, "txtCreateSubdirectory"); resources.ApplyResources(this.txtCreateSubdirectory, "txtCreateSubdirectory");
this.txtCreateSubdirectory.BackgroundImage = null;
this.txtCreateSubdirectory.Font = null;
this.txtCreateSubdirectory.Name = "txtCreateSubdirectory"; this.txtCreateSubdirectory.Name = "txtCreateSubdirectory";
this.toolTip1.SetToolTip(this.txtCreateSubdirectory, resources.GetString("txtCreateSubdirectory.ToolTip"));
this.txtCreateSubdirectory.TextChanged += new System.EventHandler(this.txtCreateSubdirectory_TextChanged); this.txtCreateSubdirectory.TextChanged += new System.EventHandler(this.txtCreateSubdirectory_TextChanged);
// //
// rbDontGenerate // rbDontGenerate
// //
this.rbDontGenerate.AccessibleDescription = null;
this.rbDontGenerate.AccessibleName = null;
resources.ApplyResources(this.rbDontGenerate, "rbDontGenerate"); resources.ApplyResources(this.rbDontGenerate, "rbDontGenerate");
this.rbDontGenerate.BackgroundImage = null;
this.rbDontGenerate.Font = null;
this.rbDontGenerate.Name = "rbDontGenerate"; this.rbDontGenerate.Name = "rbDontGenerate";
this.toolTip1.SetToolTip(this.rbDontGenerate, resources.GetString("rbDontGenerate.ToolTip"));
this.rbDontGenerate.UseVisualStyleBackColor = true; this.rbDontGenerate.UseVisualStyleBackColor = true;
// //
// rbCreateSubdirectory // rbCreateSubdirectory
// //
this.rbCreateSubdirectory.AccessibleDescription = null;
this.rbCreateSubdirectory.AccessibleName = null;
resources.ApplyResources(this.rbCreateSubdirectory, "rbCreateSubdirectory"); resources.ApplyResources(this.rbCreateSubdirectory, "rbCreateSubdirectory");
this.rbCreateSubdirectory.BackgroundImage = null;
this.rbCreateSubdirectory.Checked = true; this.rbCreateSubdirectory.Checked = true;
this.rbCreateSubdirectory.Font = null;
this.rbCreateSubdirectory.Name = "rbCreateSubdirectory"; this.rbCreateSubdirectory.Name = "rbCreateSubdirectory";
this.rbCreateSubdirectory.TabStop = true; this.rbCreateSubdirectory.TabStop = true;
this.toolTip1.SetToolTip(this.rbCreateSubdirectory, resources.GetString("rbCreateSubdirectory.ToolTip"));
this.rbCreateSubdirectory.UseVisualStyleBackColor = true; this.rbCreateSubdirectory.UseVisualStyleBackColor = true;
this.rbCreateSubdirectory.CheckedChanged += new System.EventHandler(this.rbCreateSubdirectory_CheckedChanged); this.rbCreateSubdirectory.CheckedChanged += new System.EventHandler(this.rbCreateSubdirectory_CheckedChanged);
// //
// rbAppendFilename // rbAppendFilename
// //
this.rbAppendFilename.AccessibleDescription = null;
this.rbAppendFilename.AccessibleName = null;
resources.ApplyResources(this.rbAppendFilename, "rbAppendFilename"); resources.ApplyResources(this.rbAppendFilename, "rbAppendFilename");
this.rbAppendFilename.BackgroundImage = null;
this.rbAppendFilename.Font = null;
this.rbAppendFilename.Name = "rbAppendFilename"; this.rbAppendFilename.Name = "rbAppendFilename";
this.toolTip1.SetToolTip(this.rbAppendFilename, resources.GetString("rbAppendFilename.ToolTip"));
this.rbAppendFilename.UseVisualStyleBackColor = true; this.rbAppendFilename.UseVisualStyleBackColor = true;
this.rbAppendFilename.CheckedChanged += new System.EventHandler(this.rbAppendFilename_CheckedChanged); this.rbAppendFilename.CheckedChanged += new System.EventHandler(this.rbAppendFilename_CheckedChanged);
// //
// txtAppendFilename // txtAppendFilename
// //
this.txtAppendFilename.AccessibleDescription = null;
this.txtAppendFilename.AccessibleName = null;
resources.ApplyResources(this.txtAppendFilename, "txtAppendFilename"); resources.ApplyResources(this.txtAppendFilename, "txtAppendFilename");
this.txtAppendFilename.BackgroundImage = null;
this.txtAppendFilename.Font = null;
this.txtAppendFilename.Name = "txtAppendFilename"; this.txtAppendFilename.Name = "txtAppendFilename";
this.toolTip1.SetToolTip(this.txtAppendFilename, resources.GetString("txtAppendFilename.ToolTip"));
this.txtAppendFilename.TextChanged += new System.EventHandler(this.txtAppendFilename_TextChanged); this.txtAppendFilename.TextChanged += new System.EventHandler(this.txtAppendFilename_TextChanged);
// //
// grpAudioOutput // grpAudioOutput
// //
this.grpAudioOutput.AccessibleDescription = null;
this.grpAudioOutput.AccessibleName = null;
resources.ApplyResources(this.grpAudioOutput, "grpAudioOutput");
this.grpAudioOutput.BackgroundImage = null;
this.grpAudioOutput.Controls.Add(this.btnCodec); this.grpAudioOutput.Controls.Add(this.btnCodec);
this.grpAudioOutput.Controls.Add(this.rbUDC1); this.grpAudioOutput.Controls.Add(this.rbUDC1);
this.grpAudioOutput.Controls.Add(this.rbTTA); this.grpAudioOutput.Controls.Add(this.rbTTA);
@@ -284,29 +401,56 @@ namespace JDP {
this.grpAudioOutput.Controls.Add(this.rbWavPack); this.grpAudioOutput.Controls.Add(this.rbWavPack);
this.grpAudioOutput.Controls.Add(this.rbWAV); this.grpAudioOutput.Controls.Add(this.rbWAV);
this.grpAudioOutput.Controls.Add(this.rbFLAC); this.grpAudioOutput.Controls.Add(this.rbFLAC);
resources.ApplyResources(this.grpAudioOutput, "grpAudioOutput"); this.grpAudioOutput.Font = null;
this.grpAudioOutput.Name = "grpAudioOutput"; this.grpAudioOutput.Name = "grpAudioOutput";
this.grpAudioOutput.TabStop = false; this.grpAudioOutput.TabStop = false;
this.toolTip1.SetToolTip(this.grpAudioOutput, resources.GetString("grpAudioOutput.ToolTip"));
//
// btnCodec
//
this.btnCodec.AccessibleDescription = null;
this.btnCodec.AccessibleName = null;
resources.ApplyResources(this.btnCodec, "btnCodec");
this.btnCodec.BackgroundImage = null;
this.btnCodec.Font = null;
this.btnCodec.Name = "btnCodec";
this.toolTip1.SetToolTip(this.btnCodec, resources.GetString("btnCodec.ToolTip"));
this.btnCodec.UseVisualStyleBackColor = true;
this.btnCodec.Click += new System.EventHandler(this.btnCodec_Click);
// //
// rbUDC1 // rbUDC1
// //
this.rbUDC1.AccessibleDescription = null;
this.rbUDC1.AccessibleName = null;
resources.ApplyResources(this.rbUDC1, "rbUDC1"); resources.ApplyResources(this.rbUDC1, "rbUDC1");
this.rbUDC1.BackgroundImage = null;
this.rbUDC1.Font = null;
this.rbUDC1.Name = "rbUDC1"; this.rbUDC1.Name = "rbUDC1";
this.rbUDC1.TabStop = true; this.rbUDC1.TabStop = true;
this.toolTip1.SetToolTip(this.rbUDC1, resources.GetString("rbUDC1.ToolTip"));
this.rbUDC1.UseVisualStyleBackColor = true; this.rbUDC1.UseVisualStyleBackColor = true;
this.rbUDC1.CheckedChanged += new System.EventHandler(this.rbUDC1_CheckedChanged); this.rbUDC1.CheckedChanged += new System.EventHandler(this.rbUDC1_CheckedChanged);
// //
// rbTTA // rbTTA
// //
this.rbTTA.AccessibleDescription = null;
this.rbTTA.AccessibleName = null;
resources.ApplyResources(this.rbTTA, "rbTTA"); resources.ApplyResources(this.rbTTA, "rbTTA");
this.rbTTA.BackgroundImage = null;
this.rbTTA.Font = null;
this.rbTTA.Name = "rbTTA"; this.rbTTA.Name = "rbTTA";
this.rbTTA.TabStop = true; this.rbTTA.TabStop = true;
this.toolTip1.SetToolTip(this.rbTTA, resources.GetString("rbTTA.ToolTip"));
this.rbTTA.UseVisualStyleBackColor = true; this.rbTTA.UseVisualStyleBackColor = true;
this.rbTTA.CheckedChanged += new System.EventHandler(this.rbTTA_CheckedChanged); this.rbTTA.CheckedChanged += new System.EventHandler(this.rbTTA_CheckedChanged);
// //
// chkLossyWAV // chkLossyWAV
// //
this.chkLossyWAV.AccessibleDescription = null;
this.chkLossyWAV.AccessibleName = null;
resources.ApplyResources(this.chkLossyWAV, "chkLossyWAV"); resources.ApplyResources(this.chkLossyWAV, "chkLossyWAV");
this.chkLossyWAV.BackgroundImage = null;
this.chkLossyWAV.Font = null;
this.chkLossyWAV.Name = "chkLossyWAV"; this.chkLossyWAV.Name = "chkLossyWAV";
this.toolTip1.SetToolTip(this.chkLossyWAV, resources.GetString("chkLossyWAV.ToolTip")); this.toolTip1.SetToolTip(this.chkLossyWAV, resources.GetString("chkLossyWAV.ToolTip"));
this.chkLossyWAV.UseVisualStyleBackColor = true; this.chkLossyWAV.UseVisualStyleBackColor = true;
@@ -314,15 +458,24 @@ namespace JDP {
// //
// rbAPE // rbAPE
// //
this.rbAPE.AccessibleDescription = null;
this.rbAPE.AccessibleName = null;
resources.ApplyResources(this.rbAPE, "rbAPE"); resources.ApplyResources(this.rbAPE, "rbAPE");
this.rbAPE.BackgroundImage = null;
this.rbAPE.Font = null;
this.rbAPE.Name = "rbAPE"; this.rbAPE.Name = "rbAPE";
this.rbAPE.TabStop = true; this.rbAPE.TabStop = true;
this.toolTip1.SetToolTip(this.rbAPE, resources.GetString("rbAPE.ToolTip"));
this.rbAPE.UseVisualStyleBackColor = true; this.rbAPE.UseVisualStyleBackColor = true;
this.rbAPE.CheckedChanged += new System.EventHandler(this.rbAPE_CheckedChanged); this.rbAPE.CheckedChanged += new System.EventHandler(this.rbAPE_CheckedChanged);
// //
// rbNoAudio // rbNoAudio
// //
this.rbNoAudio.AccessibleDescription = null;
this.rbNoAudio.AccessibleName = null;
resources.ApplyResources(this.rbNoAudio, "rbNoAudio"); resources.ApplyResources(this.rbNoAudio, "rbNoAudio");
this.rbNoAudio.BackgroundImage = null;
this.rbNoAudio.Font = null;
this.rbNoAudio.Name = "rbNoAudio"; this.rbNoAudio.Name = "rbNoAudio";
this.toolTip1.SetToolTip(this.rbNoAudio, resources.GetString("rbNoAudio.ToolTip")); this.toolTip1.SetToolTip(this.rbNoAudio, resources.GetString("rbNoAudio.ToolTip"));
this.rbNoAudio.UseVisualStyleBackColor = true; this.rbNoAudio.UseVisualStyleBackColor = true;
@@ -330,85 +483,150 @@ namespace JDP {
// //
// rbWavPack // rbWavPack
// //
this.rbWavPack.AccessibleDescription = null;
this.rbWavPack.AccessibleName = null;
resources.ApplyResources(this.rbWavPack, "rbWavPack"); resources.ApplyResources(this.rbWavPack, "rbWavPack");
this.rbWavPack.BackgroundImage = null;
this.rbWavPack.Font = null;
this.rbWavPack.Name = "rbWavPack"; this.rbWavPack.Name = "rbWavPack";
this.toolTip1.SetToolTip(this.rbWavPack, resources.GetString("rbWavPack.ToolTip"));
this.rbWavPack.UseVisualStyleBackColor = true; this.rbWavPack.UseVisualStyleBackColor = true;
this.rbWavPack.CheckedChanged += new System.EventHandler(this.rbWavPack_CheckedChanged); this.rbWavPack.CheckedChanged += new System.EventHandler(this.rbWavPack_CheckedChanged);
// //
// rbWAV // rbWAV
// //
this.rbWAV.AccessibleDescription = null;
this.rbWAV.AccessibleName = null;
resources.ApplyResources(this.rbWAV, "rbWAV"); resources.ApplyResources(this.rbWAV, "rbWAV");
this.rbWAV.BackgroundImage = null;
this.rbWAV.Checked = true; this.rbWAV.Checked = true;
this.rbWAV.Font = null;
this.rbWAV.Name = "rbWAV"; this.rbWAV.Name = "rbWAV";
this.rbWAV.TabStop = true; this.rbWAV.TabStop = true;
this.toolTip1.SetToolTip(this.rbWAV, resources.GetString("rbWAV.ToolTip"));
this.rbWAV.UseVisualStyleBackColor = true; this.rbWAV.UseVisualStyleBackColor = true;
this.rbWAV.CheckedChanged += new System.EventHandler(this.rbWAV_CheckedChanged); this.rbWAV.CheckedChanged += new System.EventHandler(this.rbWAV_CheckedChanged);
// //
// rbFLAC // rbFLAC
// //
this.rbFLAC.AccessibleDescription = null;
this.rbFLAC.AccessibleName = null;
resources.ApplyResources(this.rbFLAC, "rbFLAC"); resources.ApplyResources(this.rbFLAC, "rbFLAC");
this.rbFLAC.BackgroundImage = null;
this.rbFLAC.Font = null;
this.rbFLAC.Name = "rbFLAC"; this.rbFLAC.Name = "rbFLAC";
this.toolTip1.SetToolTip(this.rbFLAC, resources.GetString("rbFLAC.ToolTip"));
this.rbFLAC.UseVisualStyleBackColor = true; this.rbFLAC.UseVisualStyleBackColor = true;
this.rbFLAC.CheckedChanged += new System.EventHandler(this.rbFLAC_CheckedChanged); this.rbFLAC.CheckedChanged += new System.EventHandler(this.rbFLAC_CheckedChanged);
// //
// btnBatch // btnBatch
// //
this.btnBatch.AccessibleDescription = null;
this.btnBatch.AccessibleName = null;
resources.ApplyResources(this.btnBatch, "btnBatch"); resources.ApplyResources(this.btnBatch, "btnBatch");
this.btnBatch.BackgroundImage = null;
this.btnBatch.Font = null;
this.btnBatch.Name = "btnBatch"; this.btnBatch.Name = "btnBatch";
this.toolTip1.SetToolTip(this.btnBatch, resources.GetString("btnBatch.ToolTip"));
this.btnBatch.UseVisualStyleBackColor = true; this.btnBatch.UseVisualStyleBackColor = true;
this.btnBatch.Click += new System.EventHandler(this.btnBatch_Click); this.btnBatch.Click += new System.EventHandler(this.btnBatch_Click);
// //
// btnFilenameCorrector // btnFilenameCorrector
// //
this.btnFilenameCorrector.AccessibleDescription = null;
this.btnFilenameCorrector.AccessibleName = null;
resources.ApplyResources(this.btnFilenameCorrector, "btnFilenameCorrector"); resources.ApplyResources(this.btnFilenameCorrector, "btnFilenameCorrector");
this.btnFilenameCorrector.BackgroundImage = null;
this.btnFilenameCorrector.Font = null;
this.btnFilenameCorrector.Name = "btnFilenameCorrector"; this.btnFilenameCorrector.Name = "btnFilenameCorrector";
this.toolTip1.SetToolTip(this.btnFilenameCorrector, resources.GetString("btnFilenameCorrector.ToolTip"));
this.btnFilenameCorrector.UseVisualStyleBackColor = true; this.btnFilenameCorrector.UseVisualStyleBackColor = true;
this.btnFilenameCorrector.Click += new System.EventHandler(this.btnFilenameCorrector_Click); this.btnFilenameCorrector.Click += new System.EventHandler(this.btnFilenameCorrector_Click);
// //
// btnSettings // btnSettings
// //
this.btnSettings.AccessibleDescription = null;
this.btnSettings.AccessibleName = null;
resources.ApplyResources(this.btnSettings, "btnSettings"); resources.ApplyResources(this.btnSettings, "btnSettings");
this.btnSettings.BackgroundImage = null;
this.btnSettings.Font = null;
this.btnSettings.Name = "btnSettings"; this.btnSettings.Name = "btnSettings";
this.toolTip1.SetToolTip(this.btnSettings, resources.GetString("btnSettings.ToolTip"));
this.btnSettings.UseVisualStyleBackColor = true; this.btnSettings.UseVisualStyleBackColor = true;
this.btnSettings.Click += new System.EventHandler(this.btnSettings_Click); this.btnSettings.Click += new System.EventHandler(this.btnSettings_Click);
// //
// grpAccurateRip // grpAccurateRip
// //
this.grpAccurateRip.AccessibleDescription = null;
this.grpAccurateRip.AccessibleName = null;
resources.ApplyResources(this.grpAccurateRip, "grpAccurateRip");
this.grpAccurateRip.BackgroundImage = null;
this.grpAccurateRip.Controls.Add(this.rbArPlusCRC);
this.grpAccurateRip.Controls.Add(this.rbArAndEncode); this.grpAccurateRip.Controls.Add(this.rbArAndEncode);
this.grpAccurateRip.Controls.Add(this.label1); this.grpAccurateRip.Controls.Add(this.label1);
this.grpAccurateRip.Controls.Add(this.txtDataTrackLength); this.grpAccurateRip.Controls.Add(this.txtDataTrackLength);
this.grpAccurateRip.Controls.Add(this.rbArApplyOffset); this.grpAccurateRip.Controls.Add(this.rbArApplyOffset);
this.grpAccurateRip.Controls.Add(this.rbArVerify); this.grpAccurateRip.Controls.Add(this.rbArVerify);
this.grpAccurateRip.Controls.Add(this.rbArNone); this.grpAccurateRip.Controls.Add(this.rbArNone);
resources.ApplyResources(this.grpAccurateRip, "grpAccurateRip"); this.grpAccurateRip.Font = null;
this.grpAccurateRip.Name = "grpAccurateRip"; this.grpAccurateRip.Name = "grpAccurateRip";
this.grpAccurateRip.TabStop = false; this.grpAccurateRip.TabStop = false;
this.toolTip1.SetToolTip(this.grpAccurateRip, resources.GetString("grpAccurateRip.ToolTip"));
//
// rbArPlusCRC
//
this.rbArPlusCRC.AccessibleDescription = null;
this.rbArPlusCRC.AccessibleName = null;
resources.ApplyResources(this.rbArPlusCRC, "rbArPlusCRC");
this.rbArPlusCRC.BackgroundImage = null;
this.rbArPlusCRC.Font = null;
this.rbArPlusCRC.Name = "rbArPlusCRC";
this.toolTip1.SetToolTip(this.rbArPlusCRC, resources.GetString("rbArPlusCRC.ToolTip"));
this.rbArPlusCRC.UseVisualStyleBackColor = true;
this.rbArPlusCRC.CheckedChanged += new System.EventHandler(this.rbArPlusCRC_CheckedChanged);
// //
// rbArAndEncode // rbArAndEncode
// //
this.rbArAndEncode.AccessibleDescription = null;
this.rbArAndEncode.AccessibleName = null;
resources.ApplyResources(this.rbArAndEncode, "rbArAndEncode"); resources.ApplyResources(this.rbArAndEncode, "rbArAndEncode");
this.rbArAndEncode.BackgroundImage = null;
this.rbArAndEncode.Font = null;
this.rbArAndEncode.Name = "rbArAndEncode"; this.rbArAndEncode.Name = "rbArAndEncode";
this.rbArAndEncode.TabStop = true; this.rbArAndEncode.TabStop = true;
this.toolTip1.SetToolTip(this.rbArAndEncode, resources.GetString("rbArAndEncode.ToolTip"));
this.rbArAndEncode.UseVisualStyleBackColor = true; this.rbArAndEncode.UseVisualStyleBackColor = true;
// //
// label1 // label1
// //
this.label1.AccessibleDescription = null;
this.label1.AccessibleName = null;
resources.ApplyResources(this.label1, "label1"); resources.ApplyResources(this.label1, "label1");
this.label1.Font = null;
this.label1.Name = "label1"; this.label1.Name = "label1";
this.toolTip1.SetToolTip(this.label1, resources.GetString("label1.ToolTip"));
// //
// txtDataTrackLength // txtDataTrackLength
// //
this.txtDataTrackLength.AccessibleDescription = null;
this.txtDataTrackLength.AccessibleName = null;
resources.ApplyResources(this.txtDataTrackLength, "txtDataTrackLength");
this.txtDataTrackLength.BackgroundImage = null;
this.txtDataTrackLength.Culture = new System.Globalization.CultureInfo(""); this.txtDataTrackLength.Culture = new System.Globalization.CultureInfo("");
this.txtDataTrackLength.CutCopyMaskFormat = System.Windows.Forms.MaskFormat.IncludePromptAndLiterals; this.txtDataTrackLength.CutCopyMaskFormat = System.Windows.Forms.MaskFormat.IncludePromptAndLiterals;
this.txtDataTrackLength.Font = null;
this.txtDataTrackLength.InsertKeyMode = System.Windows.Forms.InsertKeyMode.Overwrite; this.txtDataTrackLength.InsertKeyMode = System.Windows.Forms.InsertKeyMode.Overwrite;
resources.ApplyResources(this.txtDataTrackLength, "txtDataTrackLength");
this.txtDataTrackLength.Name = "txtDataTrackLength"; this.txtDataTrackLength.Name = "txtDataTrackLength";
this.txtDataTrackLength.TextMaskFormat = System.Windows.Forms.MaskFormat.IncludePromptAndLiterals; this.txtDataTrackLength.TextMaskFormat = System.Windows.Forms.MaskFormat.IncludePromptAndLiterals;
this.toolTip1.SetToolTip(this.txtDataTrackLength, resources.GetString("txtDataTrackLength.ToolTip")); this.toolTip1.SetToolTip(this.txtDataTrackLength, resources.GetString("txtDataTrackLength.ToolTip"));
// //
// rbArApplyOffset // rbArApplyOffset
// //
this.rbArApplyOffset.AccessibleDescription = null;
this.rbArApplyOffset.AccessibleName = null;
resources.ApplyResources(this.rbArApplyOffset, "rbArApplyOffset"); resources.ApplyResources(this.rbArApplyOffset, "rbArApplyOffset");
this.rbArApplyOffset.BackgroundImage = null;
this.rbArApplyOffset.Font = null;
this.rbArApplyOffset.Name = "rbArApplyOffset"; this.rbArApplyOffset.Name = "rbArApplyOffset";
this.toolTip1.SetToolTip(this.rbArApplyOffset, resources.GetString("rbArApplyOffset.ToolTip")); this.toolTip1.SetToolTip(this.rbArApplyOffset, resources.GetString("rbArApplyOffset.ToolTip"));
this.rbArApplyOffset.UseVisualStyleBackColor = true; this.rbArApplyOffset.UseVisualStyleBackColor = true;
@@ -416,7 +634,11 @@ namespace JDP {
// //
// rbArVerify // rbArVerify
// //
this.rbArVerify.AccessibleDescription = null;
this.rbArVerify.AccessibleName = null;
resources.ApplyResources(this.rbArVerify, "rbArVerify"); resources.ApplyResources(this.rbArVerify, "rbArVerify");
this.rbArVerify.BackgroundImage = null;
this.rbArVerify.Font = null;
this.rbArVerify.Name = "rbArVerify"; this.rbArVerify.Name = "rbArVerify";
this.toolTip1.SetToolTip(this.rbArVerify, resources.GetString("rbArVerify.ToolTip")); this.toolTip1.SetToolTip(this.rbArVerify, resources.GetString("rbArVerify.ToolTip"));
this.rbArVerify.UseVisualStyleBackColor = true; this.rbArVerify.UseVisualStyleBackColor = true;
@@ -424,8 +646,12 @@ namespace JDP {
// //
// rbArNone // rbArNone
// //
this.rbArNone.AccessibleDescription = null;
this.rbArNone.AccessibleName = null;
resources.ApplyResources(this.rbArNone, "rbArNone"); resources.ApplyResources(this.rbArNone, "rbArNone");
this.rbArNone.BackgroundImage = null;
this.rbArNone.Checked = true; this.rbArNone.Checked = true;
this.rbArNone.Font = null;
this.rbArNone.Name = "rbArNone"; this.rbArNone.Name = "rbArNone";
this.rbArNone.TabStop = true; this.rbArNone.TabStop = true;
this.toolTip1.SetToolTip(this.rbArNone, resources.GetString("rbArNone.ToolTip")); this.toolTip1.SetToolTip(this.rbArNone, resources.GetString("rbArNone.ToolTip"));
@@ -433,32 +659,44 @@ namespace JDP {
// //
// statusStrip1 // statusStrip1
// //
this.statusStrip1.AccessibleDescription = null;
this.statusStrip1.AccessibleName = null;
resources.ApplyResources(this.statusStrip1, "statusStrip1");
this.statusStrip1.BackgroundImage = null;
this.statusStrip1.Font = null;
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripStatusLabel1, this.toolStripStatusLabel1,
this.toolStripProgressBar1, this.toolStripProgressBar1,
this.toolStripProgressBar2}); this.toolStripProgressBar2});
resources.ApplyResources(this.statusStrip1, "statusStrip1");
this.statusStrip1.Name = "statusStrip1"; this.statusStrip1.Name = "statusStrip1";
this.statusStrip1.SizingGrip = false; this.statusStrip1.SizingGrip = false;
this.toolTip1.SetToolTip(this.statusStrip1, resources.GetString("statusStrip1.ToolTip"));
// //
// toolStripStatusLabel1 // toolStripStatusLabel1
// //
this.toolStripStatusLabel1.Name = "toolStripStatusLabel1"; this.toolStripStatusLabel1.AccessibleDescription = null;
this.toolStripStatusLabel1.AccessibleName = null;
resources.ApplyResources(this.toolStripStatusLabel1, "toolStripStatusLabel1"); resources.ApplyResources(this.toolStripStatusLabel1, "toolStripStatusLabel1");
this.toolStripStatusLabel1.BackgroundImage = null;
this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
this.toolStripStatusLabel1.Spring = true; this.toolStripStatusLabel1.Spring = true;
// //
// toolStripProgressBar1 // toolStripProgressBar1
// //
this.toolStripProgressBar1.AccessibleDescription = null;
this.toolStripProgressBar1.AccessibleName = null;
resources.ApplyResources(this.toolStripProgressBar1, "toolStripProgressBar1");
this.toolStripProgressBar1.AutoToolTip = true; this.toolStripProgressBar1.AutoToolTip = true;
this.toolStripProgressBar1.Name = "toolStripProgressBar1"; this.toolStripProgressBar1.Name = "toolStripProgressBar1";
resources.ApplyResources(this.toolStripProgressBar1, "toolStripProgressBar1");
this.toolStripProgressBar1.Style = System.Windows.Forms.ProgressBarStyle.Continuous; this.toolStripProgressBar1.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
// //
// toolStripProgressBar2 // toolStripProgressBar2
// //
this.toolStripProgressBar2.AccessibleDescription = null;
this.toolStripProgressBar2.AccessibleName = null;
resources.ApplyResources(this.toolStripProgressBar2, "toolStripProgressBar2");
this.toolStripProgressBar2.AutoToolTip = true; this.toolStripProgressBar2.AutoToolTip = true;
this.toolStripProgressBar2.Name = "toolStripProgressBar2"; this.toolStripProgressBar2.Name = "toolStripProgressBar2";
resources.ApplyResources(this.toolStripProgressBar2, "toolStripProgressBar2");
this.toolStripProgressBar2.Style = System.Windows.Forms.ProgressBarStyle.Continuous; this.toolStripProgressBar2.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
// //
// toolTip1 // toolTip1
@@ -469,98 +707,189 @@ namespace JDP {
// //
// btnCUECreator // btnCUECreator
// //
this.btnCUECreator.AccessibleDescription = null;
this.btnCUECreator.AccessibleName = null;
resources.ApplyResources(this.btnCUECreator, "btnCUECreator"); resources.ApplyResources(this.btnCUECreator, "btnCUECreator");
this.btnCUECreator.BackgroundImage = null;
this.btnCUECreator.Font = null;
this.btnCUECreator.Name = "btnCUECreator"; this.btnCUECreator.Name = "btnCUECreator";
this.toolTip1.SetToolTip(this.btnCUECreator, resources.GetString("btnCUECreator.ToolTip"));
this.btnCUECreator.UseVisualStyleBackColor = true; this.btnCUECreator.UseVisualStyleBackColor = true;
this.btnCUECreator.Click += new System.EventHandler(this.btnCUECreator_Click); this.btnCUECreator.Click += new System.EventHandler(this.btnCUECreator_Click);
// //
// btnStop // btnStop
// //
this.btnStop.AccessibleDescription = null;
this.btnStop.AccessibleName = null;
resources.ApplyResources(this.btnStop, "btnStop"); resources.ApplyResources(this.btnStop, "btnStop");
this.btnStop.BackgroundImage = null;
this.btnStop.Font = null;
this.btnStop.Name = "btnStop"; this.btnStop.Name = "btnStop";
this.toolTip1.SetToolTip(this.btnStop, resources.GetString("btnStop.ToolTip"));
this.btnStop.UseVisualStyleBackColor = true; this.btnStop.UseVisualStyleBackColor = true;
this.btnStop.Click += new System.EventHandler(this.btnStop_Click); this.btnStop.Click += new System.EventHandler(this.btnStop_Click);
// //
// btnPause // btnPause
// //
this.btnPause.AccessibleDescription = null;
this.btnPause.AccessibleName = null;
resources.ApplyResources(this.btnPause, "btnPause"); resources.ApplyResources(this.btnPause, "btnPause");
this.btnPause.BackgroundImage = null;
this.btnPause.Font = null;
this.btnPause.Name = "btnPause"; this.btnPause.Name = "btnPause";
this.toolTip1.SetToolTip(this.btnPause, resources.GetString("btnPause.ToolTip"));
this.btnPause.UseVisualStyleBackColor = true; this.btnPause.UseVisualStyleBackColor = true;
this.btnPause.Click += new System.EventHandler(this.btnPause_Click); this.btnPause.Click += new System.EventHandler(this.btnPause_Click);
// //
// btnResume // btnResume
// //
this.btnResume.AccessibleDescription = null;
this.btnResume.AccessibleName = null;
resources.ApplyResources(this.btnResume, "btnResume"); resources.ApplyResources(this.btnResume, "btnResume");
this.btnResume.BackgroundImage = null;
this.btnResume.Font = null;
this.btnResume.Name = "btnResume"; this.btnResume.Name = "btnResume";
this.toolTip1.SetToolTip(this.btnResume, resources.GetString("btnResume.ToolTip"));
this.btnResume.UseVisualStyleBackColor = true; this.btnResume.UseVisualStyleBackColor = true;
this.btnResume.Click += new System.EventHandler(this.btnPause_Click); this.btnResume.Click += new System.EventHandler(this.btnPause_Click);
// //
// groupBox1 // groupBox1
// //
this.groupBox1.AccessibleDescription = null;
this.groupBox1.AccessibleName = null;
resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.BackgroundImage = null;
this.groupBox1.Controls.Add(this.rbFreedbAlways); this.groupBox1.Controls.Add(this.rbFreedbAlways);
this.groupBox1.Controls.Add(this.rbFreedbIf); this.groupBox1.Controls.Add(this.rbFreedbIf);
this.groupBox1.Controls.Add(this.rbFreedbNever); this.groupBox1.Controls.Add(this.rbFreedbNever);
resources.ApplyResources(this.groupBox1, "groupBox1"); this.groupBox1.Font = null;
this.groupBox1.Name = "groupBox1"; this.groupBox1.Name = "groupBox1";
this.groupBox1.TabStop = false; this.groupBox1.TabStop = false;
this.toolTip1.SetToolTip(this.groupBox1, resources.GetString("groupBox1.ToolTip"));
// //
// rbFreedbAlways // rbFreedbAlways
// //
this.rbFreedbAlways.AccessibleDescription = null;
this.rbFreedbAlways.AccessibleName = null;
resources.ApplyResources(this.rbFreedbAlways, "rbFreedbAlways"); resources.ApplyResources(this.rbFreedbAlways, "rbFreedbAlways");
this.rbFreedbAlways.BackgroundImage = null;
this.rbFreedbAlways.Font = null;
this.rbFreedbAlways.Name = "rbFreedbAlways"; this.rbFreedbAlways.Name = "rbFreedbAlways";
this.rbFreedbAlways.TabStop = true; this.rbFreedbAlways.TabStop = true;
this.toolTip1.SetToolTip(this.rbFreedbAlways, resources.GetString("rbFreedbAlways.ToolTip"));
this.rbFreedbAlways.UseVisualStyleBackColor = true; this.rbFreedbAlways.UseVisualStyleBackColor = true;
// //
// rbFreedbIf // rbFreedbIf
// //
this.rbFreedbIf.AccessibleDescription = null;
this.rbFreedbIf.AccessibleName = null;
resources.ApplyResources(this.rbFreedbIf, "rbFreedbIf"); resources.ApplyResources(this.rbFreedbIf, "rbFreedbIf");
this.rbFreedbIf.BackgroundImage = null;
this.rbFreedbIf.Font = null;
this.rbFreedbIf.Name = "rbFreedbIf"; this.rbFreedbIf.Name = "rbFreedbIf";
this.rbFreedbIf.TabStop = true; this.rbFreedbIf.TabStop = true;
this.toolTip1.SetToolTip(this.rbFreedbIf, resources.GetString("rbFreedbIf.ToolTip"));
this.rbFreedbIf.UseVisualStyleBackColor = true; this.rbFreedbIf.UseVisualStyleBackColor = true;
// //
// rbFreedbNever // rbFreedbNever
// //
this.rbFreedbNever.AccessibleDescription = null;
this.rbFreedbNever.AccessibleName = null;
resources.ApplyResources(this.rbFreedbNever, "rbFreedbNever"); resources.ApplyResources(this.rbFreedbNever, "rbFreedbNever");
this.rbFreedbNever.BackgroundImage = null;
this.rbFreedbNever.Font = null;
this.rbFreedbNever.Name = "rbFreedbNever"; this.rbFreedbNever.Name = "rbFreedbNever";
this.rbFreedbNever.TabStop = true; this.rbFreedbNever.TabStop = true;
this.toolTip1.SetToolTip(this.rbFreedbNever, resources.GetString("rbFreedbNever.ToolTip"));
this.rbFreedbNever.UseVisualStyleBackColor = true; this.rbFreedbNever.UseVisualStyleBackColor = true;
// //
// btnCodec
//
resources.ApplyResources(this.btnCodec, "btnCodec");
this.btnCodec.Name = "btnCodec";
this.btnCodec.UseVisualStyleBackColor = true;
this.btnCodec.Click += new System.EventHandler(this.btnCodec_Click);
//
// contextMenuStripUDC // contextMenuStripUDC
// //
this.contextMenuStripUDC.AccessibleDescription = null;
this.contextMenuStripUDC.AccessibleName = null;
resources.ApplyResources(this.contextMenuStripUDC, "contextMenuStripUDC");
this.contextMenuStripUDC.BackgroundImage = null;
this.contextMenuStripUDC.Font = null;
this.contextMenuStripUDC.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.contextMenuStripUDC.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripMenuItem2,
this.tAKToolStripMenuItem, this.tAKToolStripMenuItem,
this.toolStripMenuItem1,
this.toolStripSeparator1,
this.toolStripMenuItem3,
this.mP3ToolStripMenuItem, this.mP3ToolStripMenuItem,
this.oGGToolStripMenuItem}); this.oGGToolStripMenuItem});
this.contextMenuStripUDC.Name = "contextMenuStripUDC"; this.contextMenuStripUDC.Name = "contextMenuStripUDC";
resources.ApplyResources(this.contextMenuStripUDC, "contextMenuStripUDC"); this.toolTip1.SetToolTip(this.contextMenuStripUDC, resources.GetString("contextMenuStripUDC.ToolTip"));
this.contextMenuStripUDC.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.contextMenuStripUDC_ItemClicked); this.contextMenuStripUDC.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.contextMenuStripUDC_ItemClicked);
// //
// toolStripMenuItem2
//
this.toolStripMenuItem2.AccessibleDescription = null;
this.toolStripMenuItem2.AccessibleName = null;
resources.ApplyResources(this.toolStripMenuItem2, "toolStripMenuItem2");
this.toolStripMenuItem2.BackgroundImage = null;
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
this.toolStripMenuItem2.ShortcutKeyDisplayString = null;
//
// tAKToolStripMenuItem // tAKToolStripMenuItem
// //
this.tAKToolStripMenuItem.Name = "tAKToolStripMenuItem"; this.tAKToolStripMenuItem.AccessibleDescription = null;
this.tAKToolStripMenuItem.AccessibleName = null;
resources.ApplyResources(this.tAKToolStripMenuItem, "tAKToolStripMenuItem"); resources.ApplyResources(this.tAKToolStripMenuItem, "tAKToolStripMenuItem");
this.tAKToolStripMenuItem.BackgroundImage = null;
this.tAKToolStripMenuItem.Name = "tAKToolStripMenuItem";
this.tAKToolStripMenuItem.ShortcutKeyDisplayString = null;
//
// toolStripMenuItem1
//
this.toolStripMenuItem1.AccessibleDescription = null;
this.toolStripMenuItem1.AccessibleName = null;
resources.ApplyResources(this.toolStripMenuItem1, "toolStripMenuItem1");
this.toolStripMenuItem1.BackgroundImage = null;
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
this.toolStripMenuItem1.ShortcutKeyDisplayString = null;
//
// toolStripSeparator1
//
this.toolStripSeparator1.AccessibleDescription = null;
this.toolStripSeparator1.AccessibleName = null;
resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");
this.toolStripSeparator1.Name = "toolStripSeparator1";
//
// toolStripMenuItem3
//
this.toolStripMenuItem3.AccessibleDescription = null;
this.toolStripMenuItem3.AccessibleName = null;
resources.ApplyResources(this.toolStripMenuItem3, "toolStripMenuItem3");
this.toolStripMenuItem3.BackgroundImage = null;
this.toolStripMenuItem3.Name = "toolStripMenuItem3";
this.toolStripMenuItem3.ShortcutKeyDisplayString = null;
// //
// mP3ToolStripMenuItem // mP3ToolStripMenuItem
// //
this.mP3ToolStripMenuItem.Name = "mP3ToolStripMenuItem"; this.mP3ToolStripMenuItem.AccessibleDescription = null;
this.mP3ToolStripMenuItem.AccessibleName = null;
resources.ApplyResources(this.mP3ToolStripMenuItem, "mP3ToolStripMenuItem"); resources.ApplyResources(this.mP3ToolStripMenuItem, "mP3ToolStripMenuItem");
this.mP3ToolStripMenuItem.BackgroundImage = null;
this.mP3ToolStripMenuItem.Name = "mP3ToolStripMenuItem";
this.mP3ToolStripMenuItem.ShortcutKeyDisplayString = null;
// //
// oGGToolStripMenuItem // oGGToolStripMenuItem
// //
this.oGGToolStripMenuItem.Name = "oGGToolStripMenuItem"; this.oGGToolStripMenuItem.AccessibleDescription = null;
this.oGGToolStripMenuItem.AccessibleName = null;
resources.ApplyResources(this.oGGToolStripMenuItem, "oGGToolStripMenuItem"); resources.ApplyResources(this.oGGToolStripMenuItem, "oGGToolStripMenuItem");
this.oGGToolStripMenuItem.BackgroundImage = null;
this.oGGToolStripMenuItem.Name = "oGGToolStripMenuItem";
this.oGGToolStripMenuItem.ShortcutKeyDisplayString = null;
// //
// frmCUETools // frmCUETools
// //
this.AccessibleDescription = null;
this.AccessibleName = null;
resources.ApplyResources(this, "$this"); resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackgroundImage = null;
this.Controls.Add(this.groupBox1); this.Controls.Add(this.groupBox1);
this.Controls.Add(this.btnResume); this.Controls.Add(this.btnResume);
this.Controls.Add(this.btnPause); this.Controls.Add(this.btnPause);
@@ -580,6 +909,7 @@ namespace JDP {
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.MaximizeBox = false; this.MaximizeBox = false;
this.Name = "frmCUETools"; this.Name = "frmCUETools";
this.toolTip1.SetToolTip(this, resources.GetString("$this.ToolTip"));
this.Load += new System.EventHandler(this.frmCUETools_Load); this.Load += new System.EventHandler(this.frmCUETools_Load);
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.frmCUETools_FormClosed); this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.frmCUETools_FormClosed);
this.grpCUEPaths.ResumeLayout(false); this.grpCUEPaths.ResumeLayout(false);
@@ -664,6 +994,11 @@ namespace JDP {
private System.Windows.Forms.ToolStripMenuItem tAKToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem tAKToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem mP3ToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem mP3ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem oGGToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem oGGToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem2;
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem3;
private System.Windows.Forms.RadioButton rbArPlusCRC;
} }
} }

View File

@@ -296,11 +296,9 @@ namespace JDP {
this.Invoke((MethodInvoker)delegate() this.Invoke((MethodInvoker)delegate()
{ {
frmChoice dlg = new frmChoice(); frmChoice dlg = new frmChoice();
foreach (string s in e.choices) dlg.Choices = e.choices;
dlg.comboRelease.Items.Add(s);
dlg.comboRelease.SelectedIndex = 0;
if (dlg.ShowDialog(this) == DialogResult.OK) if (dlg.ShowDialog(this) == DialogResult.OK)
e.selection = dlg.comboRelease.SelectedIndex; e.selection = dlg.ChosenIndex;
}); });
} }
@@ -318,14 +316,14 @@ namespace JDP {
try try
{ {
bool outputAudio = outputFormat != OutputAudioFormat.NoAudio && accurateRip != AccurateRipMode.Verify; bool outputAudio = outputFormat != OutputAudioFormat.NoAudio && accurateRip != AccurateRipMode.Verify && accurateRip != AccurateRipMode.VerifyPlusCRCs;
bool outputCUE = cueStyle != CUEStyle.SingleFileWithCUE && accurateRip != AccurateRipMode.Verify; bool outputCUE = cueStyle != CUEStyle.SingleFileWithCUE && accurateRip != AccurateRipMode.Verify && accurateRip != AccurateRipMode.VerifyPlusCRCs;
string pathOut = null; string pathOut = null;
List<object> releases = null; List<object> releases = null;
cueSheet.Open(pathIn); cueSheet.Open(pathIn);
if (_batchPaths.Count == 0 && accurateRip != AccurateRipMode.Verify) if (_batchPaths.Count == 0 && accurateRip != AccurateRipMode.Verify && accurateRip != AccurateRipMode.VerifyPlusCRCs)
{ {
if (rbFreedbAlways.Checked || (rbFreedbIf.Checked && if (rbFreedbAlways.Checked || (rbFreedbIf.Checked &&
(cueSheet.Artist == "" || cueSheet.Title == "" || cueSheet.Year == ""))) (cueSheet.Artist == "" || cueSheet.Title == "" || cueSheet.Year == "")))
@@ -337,11 +335,10 @@ namespace JDP {
if (releases != null && releases.Count > 0) if (releases != null && releases.Count > 0)
{ {
frmChoice dlg = new frmChoice(); frmChoice dlg = new frmChoice();
foreach (object release in releases)
dlg.comboRelease.Items.Add(release);
dlg.comboRelease.SelectedIndex = 0;
dlg.CUE = cueSheet; dlg.CUE = cueSheet;
if (dlg.ShowDialog(this) == DialogResult.Cancel) dlg.Choices = releases;
dlgRes = dlg.ShowDialog(this);
if (dlgRes == DialogResult.Cancel)
{ {
cueSheet.Close(); cueSheet.Close();
SetupControls(false); SetupControls(false);
@@ -419,6 +416,7 @@ namespace JDP {
reportForm.ShowDialog(this); reportForm.ShowDialog(this);
} }
else if (cueSheet.AccurateRip == AccurateRipMode.Verify || else if (cueSheet.AccurateRip == AccurateRipMode.Verify ||
cueSheet.AccurateRip == AccurateRipMode.VerifyPlusCRCs ||
(cueSheet.AccurateRip != AccurateRipMode.None && outputFormat != OutputAudioFormat.NoAudio)) (cueSheet.AccurateRip != AccurateRipMode.None && outputFormat != OutputAudioFormat.NoAudio))
{ {
frmReport reportForm = new frmReport(); frmReport reportForm = new frmReport();
@@ -487,10 +485,10 @@ namespace JDP {
private void SetupControls(bool running) { private void SetupControls(bool running) {
grpCUEPaths.Enabled = !running; grpCUEPaths.Enabled = !running;
grpOutputPathGeneration.Enabled = !running; grpOutputPathGeneration.Enabled = !running;
grpAudioOutput.Enabled = !running && !rbArVerify.Checked; grpAudioOutput.Enabled = !running && !rbArVerify.Checked && !rbArPlusCRC.Checked;
grpAccurateRip.Enabled = !running; grpAccurateRip.Enabled = !running;
grpOutputStyle.Enabled = !running && !rbArVerify.Checked; grpOutputStyle.Enabled = !running && !rbArVerify.Checked && !rbArPlusCRC.Checked;
groupBox1.Enabled = !running && !rbArVerify.Checked; groupBox1.Enabled = !running && !rbArVerify.Checked && !rbArPlusCRC.Checked;
txtDataTrackLength.Enabled = !running && !rbArNone.Checked; txtDataTrackLength.Enabled = !running && !rbArNone.Checked;
btnAbout.Enabled = !running; btnAbout.Enabled = !running;
btnSettings.Enabled = !running; btnSettings.Enabled = !running;
@@ -536,7 +534,8 @@ namespace JDP {
} }
private bool CheckWriteOffset() { private bool CheckWriteOffset() {
if ((_writeOffset == 0) || rbNoAudio.Checked || rbArVerify.Checked) { if ((_writeOffset == 0) || rbNoAudio.Checked || rbArVerify.Checked || rbArPlusCRC.Checked)
{
return true; return true;
} }
@@ -765,6 +764,7 @@ namespace JDP {
get get
{ {
return return
rbArPlusCRC.Checked ? AccurateRipMode.VerifyPlusCRCs :
rbArVerify.Checked ? AccurateRipMode.Verify : rbArVerify.Checked ? AccurateRipMode.Verify :
rbArApplyOffset.Checked ? AccurateRipMode.VerifyThenConvert : rbArApplyOffset.Checked ? AccurateRipMode.VerifyThenConvert :
rbArAndEncode.Checked ? AccurateRipMode.VerifyAndConvert : rbArAndEncode.Checked ? AccurateRipMode.VerifyAndConvert :
@@ -774,6 +774,9 @@ namespace JDP {
{ {
switch (value) switch (value)
{ {
case AccurateRipMode.VerifyPlusCRCs:
rbArPlusCRC.Checked = true;
break;
case AccurateRipMode.Verify: case AccurateRipMode.Verify:
rbArVerify.Checked = true; rbArVerify.Checked = true;
break; break;
@@ -1063,6 +1066,14 @@ namespace JDP {
apev2 = true; apev2 = true;
id3v2 = false; id3v2 = false;
break; break;
case "ALAC":
extension = "m4a";
executable = "ffmpeg.exe";
decParams = "%I -f wav -";
encParams = "-i - -f ipod -acodec alac -y %O";
apev2 = false;
id3v2 = false;
break;
case "MP3": case "MP3":
extension = "mp3"; extension = "mp3";
executable = "lame.exe"; executable = "lame.exe";
@@ -1107,6 +1118,12 @@ namespace JDP {
updateOutputStyles(); updateOutputStyles();
UpdateOutputPath(); UpdateOutputPath();
} }
private void rbArPlusCRC_CheckedChanged(object sender, EventArgs e)
{
UpdateOutputPath();
SetupControls(false);
}
} }
enum OutputPathGeneration { enum OutputPathGeneration {

File diff suppressed because it is too large Load Diff

View File

@@ -124,6 +124,9 @@
<data name="btnConvert.Text" xml:space="preserve"> <data name="btnConvert.Text" xml:space="preserve">
<value>Поехали</value> <value>Поехали</value>
</data> </data>
<data name="grpCUEPaths.Text" xml:space="preserve">
<value>Пути к файлам</value>
</data>
<data name="btnBrowseOutput.Text" xml:space="preserve"> <data name="btnBrowseOutput.Text" xml:space="preserve">
<value>Выбор...</value> <value>Выбор...</value>
</data> </data>
@@ -142,8 +145,11 @@
<data name="lblInput.Text" xml:space="preserve"> <data name="lblInput.Text" xml:space="preserve">
<value>&amp;Вход:</value> <value>&amp;Вход:</value>
</data> </data>
<data name="grpCUEPaths.Text" xml:space="preserve"> <data name="grpOutputStyle.Size" type="System.Drawing.Size, System.Drawing">
<value>Пути к файлам</value> <value>130, 164</value>
</data>
<data name="grpOutputStyle.Text" xml:space="preserve">
<value>Стиль CUE</value>
</data> </data>
<data name="rbEmbedCUE.Size" type="System.Drawing.Size, System.Drawing"> <data name="rbEmbedCUE.Size" type="System.Drawing.Size, System.Drawing">
<value>86, 17</value> <value>86, 17</value>
@@ -190,18 +196,18 @@
<data name="rbSingleFile.ToolTip" xml:space="preserve"> <data name="rbSingleFile.ToolTip" xml:space="preserve">
<value>Создать образ диска в виде одного аудио-файла и .cue файла</value> <value>Создать образ диска в виде одного аудио-файла и .cue файла</value>
</data> </data>
<data name="grpOutputStyle.Size" type="System.Drawing.Size, System.Drawing">
<value>130, 164</value>
</data>
<data name="grpOutputStyle.Text" xml:space="preserve">
<value>Стиль CUE</value>
</data>
<data name="btnAbout.Location" type="System.Drawing.Point, System.Drawing"> <data name="btnAbout.Location" type="System.Drawing.Point, System.Drawing">
<value>412, 191</value> <value>412, 191</value>
</data> </data>
<data name="btnAbout.Text" xml:space="preserve"> <data name="btnAbout.Text" xml:space="preserve">
<value>О программе</value> <value>О программе</value>
</data> </data>
<data name="grpOutputPathGeneration.Size" type="System.Drawing.Size, System.Drawing">
<value>392, 113</value>
</data>
<data name="grpOutputPathGeneration.Text" xml:space="preserve">
<value>Путь для выходных файлов</value>
</data>
<data name="txtCustomFormat.Size" type="System.Drawing.Size, System.Drawing"> <data name="txtCustomFormat.Size" type="System.Drawing.Size, System.Drawing">
<value>240, 21</value> <value>240, 21</value>
</data> </data>
@@ -235,11 +241,8 @@
<data name="txtAppendFilename.Size" type="System.Drawing.Size, System.Drawing"> <data name="txtAppendFilename.Size" type="System.Drawing.Size, System.Drawing">
<value>240, 21</value> <value>240, 21</value>
</data> </data>
<data name="grpOutputPathGeneration.Size" type="System.Drawing.Size, System.Drawing"> <data name="grpAudioOutput.Text" xml:space="preserve">
<value>392, 113</value> <value>Формат аудио</value>
</data>
<data name="grpOutputPathGeneration.Text" xml:space="preserve">
<value>Путь для выходных файлов</value>
</data> </data>
<data name="rbNoAudio.Size" type="System.Drawing.Size, System.Drawing"> <data name="rbNoAudio.Size" type="System.Drawing.Size, System.Drawing">
<value>76, 17</value> <value>76, 17</value>
@@ -247,9 +250,6 @@
<data name="rbNoAudio.Text" xml:space="preserve"> <data name="rbNoAudio.Text" xml:space="preserve">
<value>Без аудио</value> <value>Без аудио</value>
</data> </data>
<data name="grpAudioOutput.Text" xml:space="preserve">
<value>Формат аудио</value>
</data>
<data name="btnBatch.Location" type="System.Drawing.Point, System.Drawing"> <data name="btnBatch.Location" type="System.Drawing.Point, System.Drawing">
<value>412, 315</value> <value>412, 315</value>
</data> </data>
@@ -268,6 +268,18 @@
<data name="btnSettings.Text" xml:space="preserve"> <data name="btnSettings.Text" xml:space="preserve">
<value>Настройки...</value> <value>Настройки...</value>
</data> </data>
<data name="grpAccurateRip.Location" type="System.Drawing.Point, System.Drawing">
<value>250, 211</value>
</data>
<data name="grpAccurateRip.Size" type="System.Drawing.Size, System.Drawing">
<value>154, 164</value>
</data>
<data name="rbArPlusCRC.Size" type="System.Drawing.Size, System.Drawing">
<value>115, 17</value>
</data>
<data name="rbArPlusCRC.Text" xml:space="preserve">
<value>Проверить + CRC</value>
</data>
<data name="rbArAndEncode.Size" type="System.Drawing.Size, System.Drawing"> <data name="rbArAndEncode.Size" type="System.Drawing.Size, System.Drawing">
<value>138, 17</value> <value>138, 17</value>
</data> </data>
@@ -310,12 +322,6 @@
<data name="rbArNone.ToolTip" xml:space="preserve"> <data name="rbArNone.ToolTip" xml:space="preserve">
<value>Сконвертировать, не обращаясь к базе данных AccurateRip</value> <value>Сконвертировать, не обращаясь к базе данных AccurateRip</value>
</data> </data>
<data name="grpAccurateRip.Location" type="System.Drawing.Point, System.Drawing">
<value>250, 211</value>
</data>
<data name="grpAccurateRip.Size" type="System.Drawing.Size, System.Drawing">
<value>154, 164</value>
</data>
<data name="btnCUECreator.Location" type="System.Drawing.Point, System.Drawing"> <data name="btnCUECreator.Location" type="System.Drawing.Point, System.Drawing">
<value>412, 253</value> <value>412, 253</value>
</data> </data>
@@ -340,4 +346,32 @@
<data name="btnResume.Text" xml:space="preserve"> <data name="btnResume.Text" xml:space="preserve">
<value>&amp;Поехали</value> <value>&amp;Поехали</value>
</data> </data>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAEBAAAAAACABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAB
AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAwMDAAMDcwADwyqYABAQEAAgICAAMDAwAERERABYW
FgAcHBwAIiIiACkpKQBVVVUATU1NAEJCQgA5OTkAgHz/AFBQ/wCTANYA/+zMAMbW7wDW5+cAkKmtAAAA
MwAAAGYAAACZAAAAzAAAMwAAADMzAAAzZgAAM5kAADPMAAAz/wAAZgAAAGYzAABmZgAAZpkAAGbMAABm
/wAAmQAAAJkzAACZZgAAmZkAAJnMAACZ/wAAzAAAAMwzAADMZgAAzJkAAMzMAADM/wAA/2YAAP+ZAAD/
zAAzAAAAMwAzADMAZgAzAJkAMwDMADMA/wAzMwAAMzMzADMzZgAzM5kAMzPMADMz/wAzZgAAM2YzADNm
ZgAzZpkAM2bMADNm/wAzmQAAM5kzADOZZgAzmZkAM5nMADOZ/wAzzAAAM8wzADPMZgAzzJkAM8zMADPM
/wAz/zMAM/9mADP/mQAz/8wAM///AGYAAABmADMAZgBmAGYAmQBmAMwAZgD/AGYzAABmMzMAZjNmAGYz
mQBmM8wAZjP/AGZmAABmZjMAZmZmAGZmmQBmZswAZpkAAGaZMwBmmWYAZpmZAGaZzABmmf8AZswAAGbM
MwBmzJkAZszMAGbM/wBm/wAAZv8zAGb/mQBm/8wAzAD/AP8AzACZmQAAmTOZAJkAmQCZAMwAmQAAAJkz
MwCZAGYAmTPMAJkA/wCZZgAAmWYzAJkzZgCZZpkAmWbMAJkz/wCZmTMAmZlmAJmZmQCZmcwAmZn/AJnM
AACZzDMAZsxmAJnMmQCZzMwAmcz/AJn/AACZ/zMAmcxmAJn/mQCZ/8wAmf//AMwAAACZADMAzABmAMwA
mQDMAMwAmTMAAMwzMwDMM2YAzDOZAMwzzADMM/8AzGYAAMxmMwCZZmYAzGaZAMxmzACZZv8AzJkAAMyZ
MwDMmWYAzJmZAMyZzADMmf8AzMwAAMzMMwDMzGYAzMyZAMzMzADMzP8AzP8AAMz/MwCZ/2YAzP+ZAMz/
zADM//8AzAAzAP8AZgD/AJkAzDMAAP8zMwD/M2YA/zOZAP8zzAD/M/8A/2YAAP9mMwDMZmYA/2aZAP9m
zADMZv8A/5kAAP+ZMwD/mWYA/5mZAP+ZzAD/mf8A/8wAAP/MMwD/zGYA/8yZAP/MzAD/zP8A//8zAMz/
ZgD//5kA///MAGZm/wBm/2YAZv//AP9mZgD/Zv8A//9mACEApQBfX18Ad3d3AIaGhgCWlpYAy8vLALKy
sgDX19cA3d3dAOPj4wDq6uoA8fHxAPj4+ADw+/8ApKCgAICAgAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
AAD///8ACgoKCgrr6+vr6+sKCgoKCgoKCu/r7/Pz8/Pv6+8KCgoKCuvr7/Pz8/Pz8+/r6woKCu/r8/Pz
8/Pz8/Pz8+vvCu/r8/Pz8/Pz8/Pz8/Pz6+/r7/Pz8/Pz8/Pz8/Pz8+/r6/PrCgrz6woK6/MKCgrz6+vz
CvPz8wrz8wrzCvPz8+vr8wrz8/MK8/MK8woK8/Pr6/MK8/PzCvPzCvMK8/Pz6+vv6woK8wrz8wrzCgoK
7+vv6/Pz8/Pz8/Pz8/Pz8+vvCu/r8/Pz8/Pz8/Pz8+vvCgoK6+vv8/Pz8/Pz7+vrCgoKCgrv6+/z8/Pz
7+vvCgoKCgoKCu/r6+vr6+vvCgoKCvgfAADgBwAAwAMAAIABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAIABAADAAwAA4AcAAPAPAAA=
</value>
</data>
</root> </root>

View File

@@ -28,20 +28,20 @@ namespace JDP
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmChoice)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmChoice));
this.comboRelease = new System.Windows.Forms.ComboBox();
this.button1 = new System.Windows.Forms.Button(); this.button1 = new System.Windows.Forms.Button();
this.listChoices = new System.Windows.Forms.ListView();
this.columnHeader1 = new System.Windows.Forms.ColumnHeader();
this.imageList1 = new System.Windows.Forms.ImageList(this.components);
this.textBox1 = new System.Windows.Forms.TextBox();
this.listTracks = new System.Windows.Forms.ListView();
this.Title = new System.Windows.Forms.ColumnHeader();
this.TrackNo = new System.Windows.Forms.ColumnHeader();
this.Length = new System.Windows.Forms.ColumnHeader();
this.btnEdit = new System.Windows.Forms.Button();
this.SuspendLayout(); this.SuspendLayout();
// //
// comboRelease
//
resources.ApplyResources(this.comboRelease, "comboRelease");
this.comboRelease.BackColor = System.Drawing.SystemColors.Control;
this.comboRelease.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
this.comboRelease.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboRelease.Name = "comboRelease";
this.comboRelease.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.comboRelease_DrawItem);
//
// button1 // button1
// //
this.button1.DialogResult = System.Windows.Forms.DialogResult.OK; this.button1.DialogResult = System.Windows.Forms.DialogResult.OK;
@@ -49,24 +49,110 @@ namespace JDP
this.button1.Name = "button1"; this.button1.Name = "button1";
this.button1.UseVisualStyleBackColor = true; this.button1.UseVisualStyleBackColor = true;
// //
// listChoices
//
this.listChoices.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeader1});
this.listChoices.FullRowSelect = true;
this.listChoices.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
this.listChoices.HideSelection = false;
resources.ApplyResources(this.listChoices, "listChoices");
this.listChoices.MultiSelect = false;
this.listChoices.Name = "listChoices";
this.listChoices.ShowItemToolTips = true;
this.listChoices.SmallImageList = this.imageList1;
this.listChoices.UseCompatibleStateImageBehavior = false;
this.listChoices.View = System.Windows.Forms.View.Details;
this.listChoices.SelectedIndexChanged += new System.EventHandler(this.listChoices_SelectedIndexChanged);
//
// columnHeader1
//
resources.ApplyResources(this.columnHeader1, "columnHeader1");
//
// imageList1
//
this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
this.imageList1.TransparentColor = System.Drawing.Color.Transparent;
this.imageList1.Images.SetKeyName(0, "eac.ico");
this.imageList1.Images.SetKeyName(1, "freedb.gif");
this.imageList1.Images.SetKeyName(2, "musicbrainz.ico");
this.imageList1.Images.SetKeyName(3, "cue.ico");
//
// textBox1
//
this.textBox1.BorderStyle = System.Windows.Forms.BorderStyle.None;
resources.ApplyResources(this.textBox1, "textBox1");
this.textBox1.Name = "textBox1";
this.textBox1.ReadOnly = true;
//
// listTracks
//
resources.ApplyResources(this.listTracks, "listTracks");
this.listTracks.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.Title,
this.TrackNo,
this.Length});
this.listTracks.FullRowSelect = true;
this.listTracks.GridLines = true;
this.listTracks.LabelEdit = true;
this.listTracks.Name = "listTracks";
this.listTracks.UseCompatibleStateImageBehavior = false;
this.listTracks.View = System.Windows.Forms.View.Details;
this.listTracks.AfterLabelEdit += new System.Windows.Forms.LabelEditEventHandler(this.listTracks_AfterLabelEdit);
this.listTracks.DoubleClick += new System.EventHandler(this.listTracks_DoubleClick);
this.listTracks.PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventHandler(this.listTracks_PreviewKeyDown);
this.listTracks.BeforeLabelEdit += new System.Windows.Forms.LabelEditEventHandler(this.listTracks_BeforeLabelEdit);
this.listTracks.KeyDown += new System.Windows.Forms.KeyEventHandler(this.listTracks_KeyDown);
//
// Title
//
resources.ApplyResources(this.Title, "Title");
//
// TrackNo
//
resources.ApplyResources(this.TrackNo, "TrackNo");
//
// Length
//
resources.ApplyResources(this.Length, "Length");
//
// btnEdit
//
resources.ApplyResources(this.btnEdit, "btnEdit");
this.btnEdit.Name = "btnEdit";
this.btnEdit.UseVisualStyleBackColor = true;
this.btnEdit.Click += new System.EventHandler(this.btnEdit_Click);
//
// frmChoice // frmChoice
// //
this.AcceptButton = this.button1; this.AcceptButton = this.button1;
resources.ApplyResources(this, "$this"); resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.btnEdit);
this.Controls.Add(this.listTracks);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.listChoices);
this.Controls.Add(this.button1); this.Controls.Add(this.button1);
this.Controls.Add(this.comboRelease);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
this.Name = "frmChoice"; this.Name = "frmChoice";
this.Load += new System.EventHandler(this.frmChoice_Load); this.Load += new System.EventHandler(this.frmChoice_Load);
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmChoice_FormClosing); this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmChoice_FormClosing);
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout();
} }
#endregion #endregion
private System.Windows.Forms.Button button1; private System.Windows.Forms.Button button1;
public System.Windows.Forms.ComboBox comboRelease; private System.Windows.Forms.ColumnHeader columnHeader1;
private System.Windows.Forms.ImageList imageList1;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.ListView listChoices;
private System.Windows.Forms.ListView listTracks;
private System.Windows.Forms.ColumnHeader Title;
private System.Windows.Forms.ColumnHeader TrackNo;
private System.Windows.Forms.ColumnHeader Length;
private System.Windows.Forms.Button btnEdit;
} }
} }

View File

@@ -20,68 +20,215 @@ namespace JDP
public CUESheet CUE; public CUESheet CUE;
private void comboRelease_DrawItem(object sender, DrawItemEventArgs e)
{
e.DrawBackground();
StringFormat format = new StringFormat();
format.FormatFlags = StringFormatFlags.NoClip;
format.Alignment = StringAlignment.Near;
if (e.Index >= 0 && e.Index < comboRelease.Items.Count)
{
string text = null;
Bitmap ImageToDraw = null;
if (comboRelease.Items[e.Index] is string)
{
text = (string) comboRelease.Items[e.Index];
//comboRelease.GetItemText(comboRelease.Items[e.Index]);
}
else if (comboRelease.Items[e.Index] is MusicBrainz.Release)
{
ImageToDraw = Properties.Resources.musicbrainz;
MusicBrainz.Release release = (MusicBrainz.Release) comboRelease.Items[e.Index];
text = String.Format("{0}{1} - {2}",
release.GetEvents().Count > 0 ? release.GetEvents()[0].Date.Substring(0, 4) + ": " : "",
release.GetArtist(),
release.GetTitle());
}
else if (comboRelease.Items[e.Index] is CDEntry)
{
ImageToDraw = Properties.Resources.freedb;
CDEntry cdEntry = (CDEntry)comboRelease.Items[e.Index];
text = String.Format("{0}: {1} - {2}",
cdEntry.Year,
cdEntry.Artist,
cdEntry.Title);
}
if (ImageToDraw != null)
e.Graphics.DrawImage(ImageToDraw, new Rectangle(e.Bounds.X, e.Bounds.Y, e.Bounds.Height, e.Bounds.Height));
//e.Graphics.DrawImage(ImageToDraw, new Rectangle(e.Bounds.X + e.Bounds.Width - ImageToDraw.Width, e.Bounds.Y, ImageToDraw.Width, e.Bounds.Height));
if (text != null)
e.Graphics.DrawString(text, e.Font, new SolidBrush(e.ForeColor), new RectangleF((float)e.Bounds.X + e.Bounds.Height, (float)e.Bounds.Y, (float)(e.Bounds.Width - e.Bounds.Height), (float)e.Bounds.Height), format);
}
//e.DrawFocusRectangle();
}
private void frmChoice_Load(object sender, EventArgs e) private void frmChoice_Load(object sender, EventArgs e)
{ {
button1.Select(); button1.Select();
} }
public IEnumerable<object> Choices
{
set
{
bool isCD = false;
foreach(object i in value)
{
string text = "";
int image = -1;
if (i is string)
text = i as string;
else if (i is CUEToolsSourceFile)
{
text = (i as CUEToolsSourceFile).path;
image = 0;
}
else if (i is MusicBrainz.Release)
{
MusicBrainz.Release release = i as MusicBrainz.Release;
text = String.Format("{0}: {1} - {2}",
release.GetEvents().Count > 0 ? release.GetEvents()[0].Date.Substring(0, 4) : "YYYY",
release.GetArtist(),
release.GetTitle());
image = 2;
isCD = true;
}
else if (i is Freedb.CDEntry)
{
CDEntry cdEntry = i as CDEntry;
text = String.Format("{0}: {1} - {2}",
cdEntry.Year,
cdEntry.Artist,
cdEntry.Title);
image = 1;
isCD = true;
}
ListViewItem item = new ListViewItem(text, image);
item.Tag = i;
listChoices.Items.Add(item);
}
if (isCD)
{
if (CUE == null)
throw new Exception("selecting release information, but cue sheet has not been set");
string text = String.Format("{0}: {1} - {2}",
CUE.Year == "" ? "YYYY" : CUE.Year,
CUE.Artist == "" ? "Unknown Artist" : CUE.Artist,
CUE.Title == "" ? "Unknown Title" : CUE.Title);
ListViewItem item = new ListViewItem(text, 3);
item.Tag = CUE;
listChoices.Items.Insert(0, item);
textBox1.Hide();
listTracks.Show();
btnEdit.Show();
}
if (listChoices.Items.Count > 0)
listChoices.Items[0].Selected = true;
}
}
public int ChosenIndex
{
get
{
return listChoices.SelectedItems.Count > 0 ? listChoices.SelectedItems[0].Index : -1;
}
}
public object ChosenObject
{
get
{
return listChoices.SelectedItems.Count > 0 ? listChoices.SelectedItems[0].Tag : null;
}
}
private void frmChoice_FormClosing(object sender, FormClosingEventArgs e) private void frmChoice_FormClosing(object sender, FormClosingEventArgs e)
{ {
if (e.CloseReason != CloseReason.None || DialogResult != DialogResult.OK) object item = ChosenObject;
if (e.CloseReason != CloseReason.None || DialogResult != DialogResult.OK || item == null)
return; return;
if (comboRelease.SelectedItem != null && comboRelease.SelectedItem is MusicBrainz.Release) if (item is MusicBrainz.Release)
CUE.FillFromMusicBrainz((MusicBrainz.Release)comboRelease.SelectedItem); CUE.FillFromMusicBrainz((MusicBrainz.Release)item);
else if (item is CDEntry)
CUE.FillFromFreedb((CDEntry)item);
}
private void listChoices_SelectedIndexChanged(object sender, EventArgs e)
{
object item = ChosenObject;
if (item != null && item is CUEToolsSourceFile)
textBox1.Text = (item as CUEToolsSourceFile).contents;
else if (item != null && item is MusicBrainz.Release)
{
MusicBrainz.Release release = item as MusicBrainz.Release;
listTracks.Items.Clear();
foreach (MusicBrainz.Track track in release.GetTracks())
{
listTracks.Items.Add(new ListViewItem(new string[] {
track.GetTitle(),
(listTracks.Items.Count + 1).ToString(),
CUE == null ? "" : CUE.TOC[listTracks.Items.Count + 1].LengthMSF
}));
}
}
else if (item != null && item is CDEntry)
{
CDEntry cdEntry = item as CDEntry;
listTracks.Items.Clear();
foreach (Freedb.Track track in cdEntry.Tracks)
{
listTracks.Items.Add(new ListViewItem(new string[] {
track.Title,
(listTracks.Items.Count + 1).ToString(),
CUE == null ? "" : CUE.TOC[listTracks.Items.Count + 1].LengthMSF
}));
}
}
else if (item != null && item is CUESheet)
{
CUESheet cueSheet = item as CUESheet;
listTracks.Items.Clear();
foreach (TrackInfo track in cueSheet.Tracks)
{
listTracks.Items.Add(new ListViewItem(new string[] {
track.Title,
(listTracks.Items.Count + 1).ToString(),
CUE == null ? "" : CUE.TOC[listTracks.Items.Count + 1].LengthMSF
}));
}
}
else else
if (comboRelease.SelectedItem != null && comboRelease.SelectedItem is CDEntry) {
CUE.FillFromFreedb((CDEntry)comboRelease.SelectedItem); listTracks.Items.Clear();
else textBox1.Text = "";
return; }
}
private void btnEdit_Click(object sender, EventArgs e)
{
object item = ChosenObject;
if (item == null || CUE == null)
return;
if (item is MusicBrainz.Release)
CUE.FillFromMusicBrainz((MusicBrainz.Release)item);
else if (item is CDEntry)
CUE.FillFromFreedb((CDEntry)item);
else if (!(item is CUESheet))
return;
listChoices.Items[0].Selected = true;
listChoices.Items[0].Text = String.Format("{0}: {1} - {2}",
CUE.Year == "" ? "YYYY" : CUE.Year,
CUE.Artist == "" ? "Unknown Artist" : CUE.Artist,
CUE.Title == "" ? "Unknown Title" : CUE.Title);
frmProperties frm = new frmProperties(); frmProperties frm = new frmProperties();
frm.CUE = CUE; frm.CUE = CUE;
if (frm.ShowDialog(this) != DialogResult.OK) if (frm.ShowDialog(this) == DialogResult.OK)
e.Cancel = true; listChoices.Items[0].Text = String.Format("{0}: {1} - {2}",
CUE.Year == "" ? "YYYY" : CUE.Year,
CUE.Artist == "" ? "Unknown Artist" : CUE.Artist,
CUE.Title == "" ? "Unknown Title" : CUE.Title);
}
private void listTracks_DoubleClick(object sender, EventArgs e)
{
listTracks.FocusedItem.BeginEdit();
}
private void listTracks_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.F2)
listTracks.FocusedItem.BeginEdit();
}
private void listTracks_BeforeLabelEdit(object sender, LabelEditEventArgs e)
{
object item = ChosenObject;
if (item == null || !(item is CUESheet))
{
e.CancelEdit = true;
return;
}
}
private void listTracks_AfterLabelEdit(object sender, LabelEditEventArgs e)
{
if (e.Label != null)
{
CUE.Tracks[e.Item].Title = e.Label;
}
}
private void listTracks_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
if (listTracks.FocusedItem.Index + 1 < listTracks.Items.Count) // && e.editing
{
listTracks.FocusedItem.Selected = false;
listTracks.FocusedItem = listTracks.Items[listTracks.FocusedItem.Index + 1];
listTracks.FocusedItem.Selected = true;
listTracks.FocusedItem.BeginEdit();
}
}
} }
} }
} }

View File

@@ -117,39 +117,14 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="comboRelease.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="comboRelease.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 12</value>
</data>
<data name="comboRelease.Size" type="System.Drawing.Size, System.Drawing">
<value>543, 21</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="comboRelease.TabIndex" type="System.Int32, mscorlib">
<value>22</value>
</data>
<data name="&gt;&gt;comboRelease.Name" xml:space="preserve">
<value>comboRelease</value>
</data>
<data name="&gt;&gt;comboRelease.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;comboRelease.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;comboRelease.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="button1.Location" type="System.Drawing.Point, System.Drawing"> <data name="button1.Location" type="System.Drawing.Point, System.Drawing">
<value>480, 45</value> <value>488, 293</value>
</data> </data>
<data name="button1.Size" type="System.Drawing.Size, System.Drawing"> <data name="button1.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value> <value>75, 23</value>
</data> </data>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="button1.TabIndex" type="System.Int32, mscorlib"> <data name="button1.TabIndex" type="System.Int32, mscorlib">
<value>23</value> <value>23</value>
</data> </data>
@@ -166,6 +141,197 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;button1.ZOrder" xml:space="preserve"> <data name="&gt;&gt;button1.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="columnHeader1.Width" type="System.Int32, mscorlib">
<value>540</value>
</data>
<data name="listChoices.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 12</value>
</data>
<data name="listChoices.Size" type="System.Drawing.Size, System.Drawing">
<value>551, 72</value>
</data>
<metadata name="imageList1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<data name="imageList1.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAo
CwAAAk1TRnQBSQFMAgEBBAEAAQwBAAEEAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAASADAAEBAQABCAYAAQgYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD//8A/wD/AP8ACgAG6wUA
EAQBAAF6AlELegYABusIAAHvAesB7wTzAe8B6wHvAwAEBAP/AQcB7AP/AewDBAFRAQABEQETAQABDwp6
AwAB7wHrAe8E8wHvAesB7wUAAusB7wbzAe8C6wIAAwQCBwEEAf8BBwHsAf8BBAHsAf8DBAEAAbwD/wET
AQ8JegIAAusB7wbzAe8C6wMAAe8B6wrzAesB7wEAAwQBBwHsAQQCBwHsAf8CBAH/AwQBAAG8BP8BAAl6
AQAB7wHrCvMB6wHvAQAB7wHrDPMB6wHvAwQB7AH/AQQB/wEHAewB/wHsAf8BBwMEAVEBDwHrAgcBvAEA
AREEAAERA3oBAAHrDPMB6wEAAesB7wzzAe8B6wQEAuwCBwHsAf8C7AQEAXoBUQEPAgAB/wEAAQ8B9wL/
AZICEQJ6AesO8wLrAfMDAAHzAQAC8wEAAfMB7wIAAfMB6wYEAgcB7AH/BgQEegEAAf8BAAERBP8BvAEA
AnoB6wHzAesCAAHzAesCAAHrAfMDAAHzAusB8wEAA/MBAALzAQAB8wEAA/MB6xAEBK4BAAH/AgABEwG8
A/8BAAKuAesB8wEAA/MBAALzAQAB8wEAA/MC6wHzAgAC8wQAAfMBAAPzAesQ/wSuAQAB/wEAARIBDwMA
Af8BAAKuAesB8wEAA/MBAALzAQAB8wIAAvMC6wHzAQAD8wEAAvMBAAHzAQAD8wHrAf8BBAEHAf8BBAL/
AwQBBwH/AwQB/wSuAQAB/wEPAQABEQISAQAB/wEAAq4B6wHzAQAD8wEAAvMBAAHzAQAD8wLrAe8DAAHz
Ae8CAAHvAfMB7wIAAe8B6wH/AQQBBwH/AQQC/wEEA/8BBwEEAf8BBwH/BK4BAAL/AZIBEQEAAQ8BAAH/
AQACrgHrAfMB6wIAAfMBAALzAQAB8wMAAfMB6wHvAesM8wHrAe8B/wEEAQcB/wEEAv8BBALsAQQBBwEE
AewCBASuAQABBwP/AbwB6gEAAf8BAAKuAQAB6wzzAesCAAHvAesK8wHrAe8BAAH/AQQB7AH/AgQBBwEE
AQcB7AEEAf8BBAEHAQQBBwSuAREBEwEHBv8BAAKuAQAB7wHrCvMB6wHvAwAC6wHvBvMB7wLrAgAB/wEE
AewB/wMHAf8B7AEHA/8B7AEHAf8FrgERAQABEQGSBP8BAAKuAgAC6wHvBvMB7wLrBQAB7wHrAe8E8wHv
AesB7wMAAf8CBAHsDP8HrgERAQABDwHrAbwB/wEAAq4DAAHvAesB7wTzAe8B6wHvBwAB7wbrAe8EABD/
AQAJrgEPAQABEwERAa4GAAbrBQABQgFNAT4HAAE+AwABKAMAAUADAAEgAwABAQEAAQEGAAEBFgAD/4EA
AfgBHwIAAYABAQH4AR8B4AEHBAAB4AEHAcABAwQAAcABAwGAAQEEAAGAAQEGAAGAAQE2AAGAAQEBgAEB
BAABgAEBAcABAwQAAcABAwHgAQcEAAHgAQcB8AEPAgABgAEBAfgBHws=
</value>
</data>
<data name="listChoices.TabIndex" type="System.Int32, mscorlib">
<value>24</value>
</data>
<data name="&gt;&gt;listChoices.Name" xml:space="preserve">
<value>listChoices</value>
</data>
<data name="&gt;&gt;listChoices.Type" xml:space="preserve">
<value>System.Windows.Forms.ListView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;listChoices.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;listChoices.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="textBox1.Font" type="System.Drawing.Font, System.Drawing">
<value>Courier New, 8pt</value>
</data>
<data name="textBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 90</value>
</data>
<data name="textBox1.Multiline" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="textBox1.ScrollBars" type="System.Windows.Forms.ScrollBars, System.Windows.Forms">
<value>Vertical</value>
</data>
<data name="textBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>551, 197</value>
</data>
<data name="textBox1.TabIndex" type="System.Int32, mscorlib">
<value>25</value>
</data>
<data name="&gt;&gt;textBox1.Name" xml:space="preserve">
<value>textBox1</value>
</data>
<data name="&gt;&gt;textBox1.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;textBox1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;textBox1.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="listTracks.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="Title.DisplayIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="Title.Text" xml:space="preserve">
<value>Title</value>
</data>
<data name="Title.Width" type="System.Int32, mscorlib">
<value>455</value>
</data>
<data name="TrackNo.DisplayIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="TrackNo.Text" xml:space="preserve">
<value>#</value>
</data>
<data name="TrackNo.Width" type="System.Int32, mscorlib">
<value>30</value>
</data>
<data name="Length.Text" xml:space="preserve">
<value>Length</value>
</data>
<data name="Length.Width" type="System.Int32, mscorlib">
<value>62</value>
</data>
<data name="listTracks.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 90</value>
</data>
<data name="listTracks.Size" type="System.Drawing.Size, System.Drawing">
<value>551, 197</value>
</data>
<data name="listTracks.TabIndex" type="System.Int32, mscorlib">
<value>26</value>
</data>
<data name="listTracks.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;listTracks.Name" xml:space="preserve">
<value>listTracks</value>
</data>
<data name="&gt;&gt;listTracks.Type" xml:space="preserve">
<value>System.Windows.Forms.ListView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;listTracks.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;listTracks.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="btnEdit.Location" type="System.Drawing.Point, System.Drawing">
<value>407, 293</value>
</data>
<data name="btnEdit.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="btnEdit.TabIndex" type="System.Int32, mscorlib">
<value>27</value>
</data>
<data name="btnEdit.Text" xml:space="preserve">
<value>Edit</value>
</data>
<data name="btnEdit.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;btnEdit.Name" xml:space="preserve">
<value>btnEdit</value>
</data>
<data name="&gt;&gt;btnEdit.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;btnEdit.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;btnEdit.ZOrder" xml:space="preserve">
<value>0</value> <value>0</value>
</data> </data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
@@ -175,7 +341,7 @@
<value>6, 13</value> <value>6, 13</value>
</data> </data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing"> <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>567, 80</value> <value>575, 328</value>
</data> </data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms"> <data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterParent</value> <value>CenterParent</value>
@@ -183,6 +349,36 @@
<data name="$this.Text" xml:space="preserve"> <data name="$this.Text" xml:space="preserve">
<value>Select the best match</value> <value>Select the best match</value>
</data> </data>
<data name="&gt;&gt;columnHeader1.Name" xml:space="preserve">
<value>columnHeader1</value>
</data>
<data name="&gt;&gt;columnHeader1.Type" xml:space="preserve">
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;imageList1.Name" xml:space="preserve">
<value>imageList1</value>
</data>
<data name="&gt;&gt;imageList1.Type" xml:space="preserve">
<value>System.Windows.Forms.ImageList, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;Title.Name" xml:space="preserve">
<value>Title</value>
</data>
<data name="&gt;&gt;Title.Type" xml:space="preserve">
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;TrackNo.Name" xml:space="preserve">
<value>TrackNo</value>
</data>
<data name="&gt;&gt;TrackNo.Type" xml:space="preserve">
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;Length.Name" xml:space="preserve">
<value>Length</value>
</data>
<data name="&gt;&gt;Length.Type" xml:space="preserve">
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve"> <data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>frmChoice</value> <value>frmChoice</value>
</data> </data>

View File

@@ -97,7 +97,7 @@ namespace UnRarDotNet
while (_buffer == null && !_eof && !_close) while (_buffer == null && !_eof && !_close)
Monitor.Wait(this); Monitor.Wait(this);
if (_close) if (_close)
throw new IOException("Decompression failed", _ex); throw _ex ?? new IOException("Decompression failed");
if (_buffer == null) if (_buffer == null)
return total; return total;
if (_seek_to != null) if (_seek_to != null)