mirror of
https://github.com/claunia/cuetools.net.git
synced 2025-12-16 18:14:25 +00:00
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:
@@ -98,6 +98,7 @@
|
||||
</Compile>
|
||||
<Compile Include="Processor.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="SeekableZipStream.cs" />
|
||||
<Compile Include="Settings.cs" />
|
||||
<Compile Include="Tagging.cs" />
|
||||
<Compile Include="UserDefined.cs" />
|
||||
|
||||
@@ -61,6 +61,7 @@ namespace CUETools.Processor
|
||||
{
|
||||
None,
|
||||
Verify,
|
||||
VerifyPlusCRCs,
|
||||
VerifyThenConvert,
|
||||
VerifyAndConvert
|
||||
}
|
||||
@@ -479,9 +480,23 @@ namespace CUETools.Processor
|
||||
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 string[] choices;
|
||||
public object[] choices;
|
||||
public int selection = -1;
|
||||
}
|
||||
|
||||
@@ -740,22 +755,13 @@ namespace CUETools.Processor
|
||||
cueSheet = CUESheet.CreateDummyCUESheet(pathIn, "*." + _config.udc1Extension);
|
||||
if (cueSheet == null)
|
||||
throw new Exception("Input directory doesn't contain supported audio files.");
|
||||
sr = new StringReader(cueSheet);
|
||||
if (CUEToolsSelection != null)
|
||||
{
|
||||
CUEToolsSelectionEventArgs e = new CUEToolsSelectionEventArgs();
|
||||
e.choices = Directory.GetFiles(pathIn, "*.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();
|
||||
}
|
||||
}
|
||||
}
|
||||
sr = new StringReader(cueSheet);
|
||||
|
||||
List<CUEToolsSourceFile> logFiles = new List<CUEToolsSourceFile>();
|
||||
foreach (string logPath in Directory.GetFiles(pathIn, "*.log"))
|
||||
logFiles.Add(new CUEToolsSourceFile(logPath, new StreamReader(logPath, CUESheet.Encoding)));
|
||||
CUEToolsSourceFile selectedLogFile = ChooseFile(logFiles, null, false);
|
||||
_eacLog = selectedLogFile != null ? selectedLogFile.contents : null;
|
||||
}
|
||||
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<string> cueNames = new List<string>();
|
||||
List<string> logNames = new List<string>();
|
||||
|
||||
List<CUEToolsSourceFile> logFiles = new List<CUEToolsSourceFile>();
|
||||
List<CUEToolsSourceFile> cueFiles = new List<CUEToolsSourceFile>();
|
||||
foreach (string s in _archiveContents)
|
||||
{
|
||||
if (Path.GetExtension(s).ToLower() == ".cue")
|
||||
cueNames.Add(s);
|
||||
if (Path.GetExtension(s).ToLower() == ".log")
|
||||
logNames.Add(s);
|
||||
if (Path.GetExtension(s).ToLower() == ".cue" || Path.GetExtension(s).ToLower() == ".log")
|
||||
{
|
||||
Stream archiveStream = OpenArchive(s, false);
|
||||
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)
|
||||
throw new Exception("Input archive doesn't contain a cue sheet.");
|
||||
if (cueNames.Count == 1)
|
||||
cueName = cueNames[0];
|
||||
if (cueName == null && CUEToolsSelection != null)
|
||||
{
|
||||
CUEToolsSelectionEventArgs e = new CUEToolsSelectionEventArgs();
|
||||
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);
|
||||
CUEToolsSourceFile selectedCUEFile = ChooseFile(cueFiles, null, true);
|
||||
if (selectedCUEFile == null || selectedCUEFile.contents == "")
|
||||
throw new Exception("Input archive doesn't contain a usable cue sheet.");
|
||||
CUEToolsSourceFile selectedLogFile = ChooseFile(logFiles, Path.GetFileNameWithoutExtension(selectedCUEFile.path), true);
|
||||
_eacLog = selectedLogFile != null ? selectedLogFile.contents : null;
|
||||
_archiveCUEpath = Path.GetDirectoryName(selectedCUEFile.path);
|
||||
string cueText = selectedCUEFile.contents;
|
||||
if (_config.autoCorrectFilenames)
|
||||
cueText = CorrectAudioFilenames(_archiveCUEpath, cueText, false, _archiveContents);
|
||||
sr = new StringReader(cueText);
|
||||
@@ -864,29 +834,13 @@ namespace CUETools.Processor
|
||||
else
|
||||
sr = new StreamReader (pathIn, CUESheet.Encoding);
|
||||
|
||||
string logPath = Path.ChangeExtension(pathIn, ".log");
|
||||
if (System.IO.File.Exists(logPath))
|
||||
{
|
||||
StreamReader logReader = new StreamReader(logPath, CUESheet.Encoding);
|
||||
_eacLog = logReader.ReadToEnd();
|
||||
logReader.Close();
|
||||
}
|
||||
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
|
||||
List<CUEToolsSourceFile> logFiles = new List<CUEToolsSourceFile>();
|
||||
foreach (string logPath in Directory.GetFiles(cueDir == "" ? "." : cueDir, "*.log"))
|
||||
logFiles.Add(new CUEToolsSourceFile(logPath, new StreamReader(logPath, CUESheet.Encoding)));
|
||||
CUEToolsSourceFile selectedLogFile = ChooseFile(logFiles, Path.GetFileNameWithoutExtension(pathIn), false);
|
||||
_eacLog = selectedLogFile != null ? selectedLogFile.contents : null;
|
||||
}
|
||||
else
|
||||
{
|
||||
string cuesheetTag = null;
|
||||
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)
|
||||
{
|
||||
#if !MONO
|
||||
@@ -1347,9 +1338,9 @@ namespace CUETools.Processor
|
||||
if (Path.GetExtension(_archivePath).ToLower() == ".zip")
|
||||
{
|
||||
SeekableZipStream zipStream = new SeekableZipStream(_archivePath, fileName);
|
||||
zipStream.PasswordRequired += new PasswordRequiredHandler(unrar_PasswordRequired);
|
||||
zipStream.PasswordRequired += new ZipPasswordRequiredHandler(unzip_PasswordRequired);
|
||||
if (showProgress)
|
||||
zipStream.ExtractionProgress += new ExtractionProgressHandler(unrar_ExtractionProgress);
|
||||
zipStream.ExtractionProgress += new ZipExtractionProgressHandler(unzip_ExtractionProgress);
|
||||
return zipStream;
|
||||
}
|
||||
throw new Exception("Unknown archive type.");
|
||||
@@ -1370,16 +1361,7 @@ namespace CUETools.Processor
|
||||
#if !MONO
|
||||
private void CDReadProgress(object sender, ReadProgressArgs e)
|
||||
{
|
||||
lock (this)
|
||||
{
|
||||
if (_stop)
|
||||
throw new StopException();
|
||||
if (_pause)
|
||||
{
|
||||
ShowProgress("Paused...", 0, 0, null, null);
|
||||
Monitor.Wait(this);
|
||||
}
|
||||
}
|
||||
CheckStop();
|
||||
if (this.CUEToolsProgress == null)
|
||||
return;
|
||||
CDDriveReader audioSource = (CDDriveReader)sender;
|
||||
@@ -1406,6 +1388,7 @@ namespace CUETools.Processor
|
||||
|
||||
private void unrar_ExtractionProgress(object sender, ExtractionProgressEventArgs e)
|
||||
{
|
||||
CheckStop();
|
||||
if (this.CUEToolsProgress == null)
|
||||
return;
|
||||
_progress.percentTrck = e.PercentComplete/100;
|
||||
@@ -1436,6 +1419,38 @@ namespace CUETools.Processor
|
||||
}
|
||||
#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 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 j = 0; j < _sourcePaths.Count; j++)
|
||||
if (destPaths[i].ToLower() == _sourcePaths[j].ToLower())
|
||||
@@ -1972,17 +1987,10 @@ namespace CUETools.Processor
|
||||
break;
|
||||
}
|
||||
ShowProgress((string)"Contacting AccurateRip database...", 0, (dtl - minDTL) / 75.0, null, null);
|
||||
CheckStop();
|
||||
lock (this)
|
||||
{
|
||||
if (_stop)
|
||||
throw new StopException();
|
||||
if (_pause)
|
||||
{
|
||||
ShowProgress("Paused...", 0, 0, null, null);
|
||||
Monitor.Wait(this);
|
||||
}
|
||||
else
|
||||
Monitor.Wait(this, 1000);
|
||||
Monitor.Wait(this, 1000);
|
||||
}
|
||||
}
|
||||
if (_arVerify.AccResult != HttpStatusCode.OK)
|
||||
@@ -1993,6 +2001,23 @@ namespace CUETools.Processor
|
||||
else
|
||||
_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 (_arVerify.AccResult != HttpStatusCode.OK && !_isCD)
|
||||
@@ -2047,16 +2072,16 @@ namespace CUETools.Processor
|
||||
|
||||
if (!SkipOutput)
|
||||
{
|
||||
if (_accurateRipMode != AccurateRipMode.Verify)
|
||||
if (_accurateRipMode != AccurateRipMode.Verify && _accurateRipMode != AccurateRipMode.VerifyPlusCRCs)
|
||||
{
|
||||
if (!Directory.Exists(dir))
|
||||
Directory.CreateDirectory(dir);
|
||||
}
|
||||
if (_isCD)
|
||||
destLengths = CalculateAudioFileLengths(style); // need to recalc, might have changed after scanning the CD
|
||||
if (_outputFormat != OutputAudioFormat.NoAudio || _accurateRipMode == AccurateRipMode.Verify)
|
||||
WriteAudioFilesPass(dir, style, destPaths, destLengths, htoaToFile, _accurateRipMode == AccurateRipMode.Verify);
|
||||
if (_accurateRipMode != AccurateRipMode.Verify)
|
||||
if (_outputFormat != OutputAudioFormat.NoAudio || _accurateRipMode == AccurateRipMode.Verify || _accurateRipMode == AccurateRipMode.VerifyPlusCRCs)
|
||||
WriteAudioFilesPass(dir, style, destPaths, destLengths, htoaToFile, _accurateRipMode == AccurateRipMode.Verify || _accurateRipMode == AccurateRipMode.VerifyPlusCRCs);
|
||||
if (_accurateRipMode != AccurateRipMode.Verify && _accurateRipMode != AccurateRipMode.VerifyPlusCRCs)
|
||||
{
|
||||
string logContents = LOGContents();
|
||||
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))
|
||||
{
|
||||
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;
|
||||
int bestOffset;
|
||||
@@ -2174,8 +2200,8 @@ namespace CUETools.Processor
|
||||
}
|
||||
}
|
||||
|
||||
if ((_accurateRipMode != AccurateRipMode.Verify && _config.writeArLogOnConvert) ||
|
||||
(_accurateRipMode == AccurateRipMode.Verify && _config.writeArLogOnVerify))
|
||||
if ((_accurateRipMode != AccurateRipMode.Verify && _accurateRipMode != AccurateRipMode.VerifyPlusCRCs && _config.writeArLogOnConvert) ||
|
||||
((_accurateRipMode == AccurateRipMode.Verify || _accurateRipMode == AccurateRipMode.VerifyPlusCRCs) && _config.writeArLogOnVerify))
|
||||
{
|
||||
if (!Directory.Exists(dir))
|
||||
Directory.CreateDirectory(dir);
|
||||
@@ -2525,16 +2551,7 @@ namespace CUETools.Processor
|
||||
samplesRemIndex -= copyCount;
|
||||
samplesRemSource -= copyCount;
|
||||
|
||||
lock (this)
|
||||
{
|
||||
if (_stop)
|
||||
throw new StopException();
|
||||
if (_pause)
|
||||
{
|
||||
ShowProgress("Paused...", 0, 0, null, null);
|
||||
Monitor.Wait(this);
|
||||
}
|
||||
}
|
||||
CheckStop();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2734,6 +2751,20 @@ namespace CUETools.Processor
|
||||
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() {
|
||||
lock (this) {
|
||||
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)
|
||||
{
|
||||
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
|
||||
{
|
||||
private string name;
|
||||
|
||||
167
CUETools.Processor/SeekableZipStream.cs
Normal file
167
CUETools.Processor/SeekableZipStream.cs
Normal 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
|
||||
}
|
||||
@@ -18,6 +18,8 @@ namespace CUETools.Processor
|
||||
xiph.SetField(tag, tags.GetValues(tag));
|
||||
return true;
|
||||
}
|
||||
if (fileInfo is TagLib.Mpeg4.File)
|
||||
return true;
|
||||
if (fileInfo is TagLib.UserDefined.File && !(fileInfo as TagLib.UserDefined.File).SupportsAPEv2)
|
||||
{
|
||||
if (!(fileInfo as TagLib.UserDefined.File).SupportsID3v2)
|
||||
|
||||
@@ -1,80 +1,80 @@
|
||||
//
|
||||
// File.cs: Provides tagging and properties support for WavPack files.
|
||||
//
|
||||
// Author:
|
||||
// Brian Nickel (brian.nickel@gmail.com)
|
||||
//
|
||||
// Original Source:
|
||||
// wvfile.cpp from libtunepimp
|
||||
//
|
||||
// Copyright (C) 2006-2007 Brian Nickel
|
||||
// Copyright (C) 2006 by Lukáš Lalinský (Original Implementation)
|
||||
// Copyright (C) 2004 by Allan Sandfeld Jensen (Original Implementation)
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Lesser General Public License version
|
||||
// 2.1 as published by the Free Software Foundation.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful, but
|
||||
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||
// USA
|
||||
//
|
||||
|
||||
using System;
|
||||
using TagLib;
|
||||
|
||||
namespace TagLib.UserDefined {
|
||||
/// <summary>
|
||||
/// This class extends <see cref="TagLib.NonContainer.File" /> to
|
||||
/// provide tagging and properties support for user defined format files.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// A <see cref="TagLib.Ape.Tag" /> will be added automatically to
|
||||
/// any file that doesn't contain one. This change does not effect
|
||||
/// the file and can be reversed using the following method:
|
||||
/// <code>file.RemoveTags (file.TagTypes & ~file.TagTypesOnDisk);</code>
|
||||
/// </remarks>
|
||||
[SupportedMimeType("taglib/misc", "misc")]
|
||||
public class File : TagLib.NonContainer.File
|
||||
{
|
||||
#region Private Fields
|
||||
|
||||
//
|
||||
// File.cs: Provides tagging and properties support for WavPack files.
|
||||
//
|
||||
// Author:
|
||||
// Brian Nickel (brian.nickel@gmail.com)
|
||||
//
|
||||
// Original Source:
|
||||
// wvfile.cpp from libtunepimp
|
||||
//
|
||||
// Copyright (C) 2006-2007 Brian Nickel
|
||||
// Copyright (C) 2006 by Lukáš Lalinský (Original Implementation)
|
||||
// Copyright (C) 2004 by Allan Sandfeld Jensen (Original Implementation)
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Lesser General Public License version
|
||||
// 2.1 as published by the Free Software Foundation.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful, but
|
||||
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||
// USA
|
||||
//
|
||||
|
||||
using System;
|
||||
using TagLib;
|
||||
|
||||
namespace TagLib.UserDefined {
|
||||
/// <summary>
|
||||
/// This class extends <see cref="TagLib.NonContainer.File" /> to
|
||||
/// provide tagging and properties support for user defined format files.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// A <see cref="TagLib.Ape.Tag" /> will be added automatically to
|
||||
/// any file that doesn't contain one. This change does not effect
|
||||
/// the file and can be reversed using the following method:
|
||||
/// <code>file.RemoveTags (file.TagTypes & ~file.TagTypesOnDisk);</code>
|
||||
/// </remarks>
|
||||
[SupportedMimeType("taglib/misc", "misc")]
|
||||
public class File : TagLib.NonContainer.File
|
||||
{
|
||||
#region Private Fields
|
||||
|
||||
private bool _supportsAPEv2 = true;
|
||||
|
||||
private bool _supportsID3v2 = true;
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
#region Constructors
|
||||
|
||||
/// <summary>
|
||||
/// Constructs and initializes a new instance of <see
|
||||
/// cref="File" /> for a specified path in the local file
|
||||
/// system and specified read style.
|
||||
/// </summary>
|
||||
/// <param name="path">
|
||||
/// A <see cref="string" /> object containing the path of the
|
||||
/// file to use in the new instance.
|
||||
/// </param>
|
||||
/// <param name="propertiesStyle">
|
||||
/// A <see cref="ReadStyle" /> value specifying at what level
|
||||
/// of accuracy to read the media properties, or <see
|
||||
/// cref="ReadStyle.None" /> to ignore the properties.
|
||||
/// </param>
|
||||
/// <exception cref="ArgumentNullException">
|
||||
/// <paramref name="path" /> is <see langword="null" />.
|
||||
/// </exception>
|
||||
public File (string path, ReadStyle propertiesStyle, bool supportsAPEv2, bool supportsID3v2)
|
||||
: base (path, propertiesStyle)
|
||||
{
|
||||
private bool _supportsID3v2 = true;
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
#region Constructors
|
||||
|
||||
/// <summary>
|
||||
/// Constructs and initializes a new instance of <see
|
||||
/// cref="File" /> for a specified path in the local file
|
||||
/// system and specified read style.
|
||||
/// </summary>
|
||||
/// <param name="path">
|
||||
/// A <see cref="string" /> object containing the path of the
|
||||
/// file to use in the new instance.
|
||||
/// </param>
|
||||
/// <param name="propertiesStyle">
|
||||
/// A <see cref="ReadStyle" /> value specifying at what level
|
||||
/// of accuracy to read the media properties, or <see
|
||||
/// cref="ReadStyle.None" /> to ignore the properties.
|
||||
/// </param>
|
||||
/// <exception cref="ArgumentNullException">
|
||||
/// <paramref name="path" /> is <see langword="null" />.
|
||||
/// </exception>
|
||||
public File (string path, ReadStyle propertiesStyle, bool supportsAPEv2, bool supportsID3v2)
|
||||
: base (path, propertiesStyle)
|
||||
{
|
||||
_supportsAPEv2 = supportsAPEv2;
|
||||
_supportsID3v2 = supportsID3v2;
|
||||
// Make sure we have an APE tag.
|
||||
@@ -83,23 +83,23 @@ namespace TagLib.UserDefined {
|
||||
else
|
||||
if (_supportsID3v2)
|
||||
GetTag(TagTypes.Id3v2, true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Constructs and initializes a new instance of <see
|
||||
/// cref="File" /> for a specified path in the local file
|
||||
/// system with an average read style.
|
||||
/// </summary>
|
||||
/// <param name="path">
|
||||
/// A <see cref="string" /> object containing the path of the
|
||||
/// file to use in the new instance.
|
||||
/// </param>
|
||||
/// <exception cref="ArgumentNullException">
|
||||
/// <paramref name="path" /> is <see langword="null" />.
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Constructs and initializes a new instance of <see
|
||||
/// cref="File" /> for a specified path in the local file
|
||||
/// system with an average read style.
|
||||
/// </summary>
|
||||
/// <param name="path">
|
||||
/// A <see cref="string" /> object containing the path of the
|
||||
/// file to use in the new instance.
|
||||
/// </param>
|
||||
/// <exception cref="ArgumentNullException">
|
||||
/// <paramref name="path" /> is <see langword="null" />.
|
||||
/// </exception>
|
||||
public File(string path, bool supportsAPEv2, bool supportsID3v2)
|
||||
: base(path)
|
||||
{
|
||||
: base(path)
|
||||
{
|
||||
_supportsAPEv2 = supportsAPEv2;
|
||||
_supportsID3v2 = supportsID3v2;
|
||||
// Make sure we have an APE tag.
|
||||
@@ -108,56 +108,30 @@ namespace TagLib.UserDefined {
|
||||
else
|
||||
if (_supportsID3v2)
|
||||
GetTag(TagTypes.Id3v2, true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Constructs and initializes a new instance of <see
|
||||
/// cref="File" /> for a specified file abstraction and
|
||||
/// specified read style.
|
||||
/// </summary>
|
||||
/// <param name="abstraction">
|
||||
/// A <see cref="IFileAbstraction" /> object to use when
|
||||
/// reading from and writing to the file.
|
||||
/// </param>
|
||||
/// <param name="propertiesStyle">
|
||||
/// A <see cref="ReadStyle" /> value specifying at what level
|
||||
/// of accuracy to read the media properties, or <see
|
||||
/// cref="ReadStyle.None" /> to ignore the properties.
|
||||
/// </param>
|
||||
/// <exception cref="ArgumentNullException">
|
||||
/// <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"
|
||||
/// />.
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Constructs and initializes a new instance of <see
|
||||
/// cref="File" /> for a specified file abstraction and
|
||||
/// specified read style.
|
||||
/// </summary>
|
||||
/// <param name="abstraction">
|
||||
/// A <see cref="IFileAbstraction" /> object to use when
|
||||
/// reading from and writing to the file.
|
||||
/// </param>
|
||||
/// <param name="propertiesStyle">
|
||||
/// A <see cref="ReadStyle" /> value specifying at what level
|
||||
/// of accuracy to read the media properties, or <see
|
||||
/// cref="ReadStyle.None" /> to ignore the properties.
|
||||
/// </param>
|
||||
/// <exception cref="ArgumentNullException">
|
||||
/// <paramref name="abstraction" /> is <see langword="null"
|
||||
/// />.
|
||||
/// </exception>
|
||||
public File(File.IFileAbstraction abstraction, bool supportsAPEv2, bool supportsID3v2)
|
||||
: base (abstraction)
|
||||
{
|
||||
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.
|
||||
@@ -166,20 +140,46 @@ namespace TagLib.UserDefined {
|
||||
else
|
||||
if (_supportsID3v2)
|
||||
GetTag(TagTypes.Id3v2, true);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
#region Public Methods
|
||||
|
||||
public bool SupportsAPEv2
|
||||
{
|
||||
get
|
||||
{
|
||||
return _supportsAPEv2;
|
||||
}
|
||||
}
|
||||
|
||||
/// <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>
|
||||
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
|
||||
@@ -188,133 +188,133 @@ namespace TagLib.UserDefined {
|
||||
{
|
||||
return _supportsID3v2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Gets a tag of a specified type from the current instance,
|
||||
/// optionally creating a new tag if possible.
|
||||
/// </summary>
|
||||
/// <param name="type">
|
||||
/// A <see cref="TagLib.TagTypes" /> value indicating the
|
||||
/// type of tag to read.
|
||||
/// </param>
|
||||
/// <param name="create">
|
||||
/// A <see cref="bool" /> value specifying whether or not to
|
||||
/// try and create the tag if one is not found.
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// A <see cref="Tag" /> object containing the tag that was
|
||||
/// found in or added to the current instance. If no
|
||||
/// matching tag was found and none was created, <see
|
||||
/// langword="null" /> is returned.
|
||||
/// </returns>
|
||||
/// <remarks>
|
||||
/// If a <see cref="TagLib.Id3v2.Tag" /> is added to the
|
||||
/// current instance, it will be placed at the start of the
|
||||
/// file. On the other hand, <see cref="TagLib.Id3v1.Tag" />
|
||||
/// <see cref="TagLib.Ape.Tag" /> will be added to the end of
|
||||
/// the file. All other tag types will be ignored.
|
||||
/// </remarks>
|
||||
public override TagLib.Tag GetTag (TagTypes type, bool create)
|
||||
{
|
||||
Tag t = (Tag as TagLib.NonContainer.Tag).GetTag (type);
|
||||
|
||||
if (t != null || !create)
|
||||
return t;
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case TagTypes.Id3v1:
|
||||
return EndTag.AddTag (type, Tag);
|
||||
|
||||
case TagTypes.Id3v2:
|
||||
return StartTag.AddTag (type, Tag);
|
||||
|
||||
case TagTypes.Ape:
|
||||
return EndTag.AddTag (type, Tag);
|
||||
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
/// <summary>
|
||||
/// Reads format specific information at the start of the
|
||||
/// file.
|
||||
/// </summary>
|
||||
/// <param name="start">
|
||||
/// A <see cref="long" /> value containing the seek position
|
||||
/// at which the tags end and the media data begins.
|
||||
/// </param>
|
||||
/// <param name="propertiesStyle">
|
||||
/// A <see cref="ReadStyle" /> value specifying at what level
|
||||
/// of accuracy to read the media properties, or <see
|
||||
/// cref="ReadStyle.None" /> to ignore the properties.
|
||||
/// </param>
|
||||
protected override void ReadStart (long start,
|
||||
ReadStyle propertiesStyle)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Reads format specific information at the end of the
|
||||
/// file.
|
||||
/// </summary>
|
||||
/// <param name="end">
|
||||
/// A <see cref="long" /> value containing the seek position
|
||||
/// at which the media data ends and the tags begin.
|
||||
/// </param>
|
||||
/// <param name="propertiesStyle">
|
||||
/// A <see cref="ReadStyle" /> value specifying at what level
|
||||
/// of accuracy to read the media properties, or <see
|
||||
/// cref="ReadStyle.None" /> to ignore the properties.
|
||||
/// </param>
|
||||
protected override void ReadEnd (long end,
|
||||
ReadStyle propertiesStyle)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Reads the audio properties from the file represented by
|
||||
/// the current instance.
|
||||
/// </summary>
|
||||
/// <param name="start">
|
||||
/// A <see cref="long" /> value containing the seek position
|
||||
/// at which the tags end and the media data begins.
|
||||
/// </param>
|
||||
/// <param name="end">
|
||||
/// A <see cref="long" /> value containing the seek position
|
||||
/// at which the media data ends and the tags begin.
|
||||
/// </param>
|
||||
/// <param name="propertiesStyle">
|
||||
/// A <see cref="ReadStyle" /> value specifying at what level
|
||||
/// of accuracy to read the media properties, or <see
|
||||
/// cref="ReadStyle.None" /> to ignore the properties.
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// A <see cref="TagLib.Properties" /> object describing the
|
||||
/// media properties of the file represented by the current
|
||||
/// instance.
|
||||
/// </returns>
|
||||
protected override Properties ReadProperties (long start,
|
||||
long end,
|
||||
ReadStyle propertiesStyle)
|
||||
{
|
||||
return new Properties ();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
public static class AdditionalFileTypes
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Gets a tag of a specified type from the current instance,
|
||||
/// optionally creating a new tag if possible.
|
||||
/// </summary>
|
||||
/// <param name="type">
|
||||
/// A <see cref="TagLib.TagTypes" /> value indicating the
|
||||
/// type of tag to read.
|
||||
/// </param>
|
||||
/// <param name="create">
|
||||
/// A <see cref="bool" /> value specifying whether or not to
|
||||
/// try and create the tag if one is not found.
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// A <see cref="Tag" /> object containing the tag that was
|
||||
/// found in or added to the current instance. If no
|
||||
/// matching tag was found and none was created, <see
|
||||
/// langword="null" /> is returned.
|
||||
/// </returns>
|
||||
/// <remarks>
|
||||
/// If a <see cref="TagLib.Id3v2.Tag" /> is added to the
|
||||
/// current instance, it will be placed at the start of the
|
||||
/// file. On the other hand, <see cref="TagLib.Id3v1.Tag" />
|
||||
/// <see cref="TagLib.Ape.Tag" /> will be added to the end of
|
||||
/// the file. All other tag types will be ignored.
|
||||
/// </remarks>
|
||||
public override TagLib.Tag GetTag (TagTypes type, bool create)
|
||||
{
|
||||
Tag t = (Tag as TagLib.NonContainer.Tag).GetTag (type);
|
||||
|
||||
if (t != null || !create)
|
||||
return t;
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case TagTypes.Id3v1:
|
||||
return EndTag.AddTag (type, Tag);
|
||||
|
||||
case TagTypes.Id3v2:
|
||||
return StartTag.AddTag (type, Tag);
|
||||
|
||||
case TagTypes.Ape:
|
||||
return EndTag.AddTag (type, Tag);
|
||||
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
/// <summary>
|
||||
/// Reads format specific information at the start of the
|
||||
/// file.
|
||||
/// </summary>
|
||||
/// <param name="start">
|
||||
/// A <see cref="long" /> value containing the seek position
|
||||
/// at which the tags end and the media data begins.
|
||||
/// </param>
|
||||
/// <param name="propertiesStyle">
|
||||
/// A <see cref="ReadStyle" /> value specifying at what level
|
||||
/// of accuracy to read the media properties, or <see
|
||||
/// cref="ReadStyle.None" /> to ignore the properties.
|
||||
/// </param>
|
||||
protected override void ReadStart (long start,
|
||||
ReadStyle propertiesStyle)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Reads format specific information at the end of the
|
||||
/// file.
|
||||
/// </summary>
|
||||
/// <param name="end">
|
||||
/// A <see cref="long" /> value containing the seek position
|
||||
/// at which the media data ends and the tags begin.
|
||||
/// </param>
|
||||
/// <param name="propertiesStyle">
|
||||
/// A <see cref="ReadStyle" /> value specifying at what level
|
||||
/// of accuracy to read the media properties, or <see
|
||||
/// cref="ReadStyle.None" /> to ignore the properties.
|
||||
/// </param>
|
||||
protected override void ReadEnd (long end,
|
||||
ReadStyle propertiesStyle)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Reads the audio properties from the file represented by
|
||||
/// the current instance.
|
||||
/// </summary>
|
||||
/// <param name="start">
|
||||
/// A <see cref="long" /> value containing the seek position
|
||||
/// at which the tags end and the media data begins.
|
||||
/// </param>
|
||||
/// <param name="end">
|
||||
/// A <see cref="long" /> value containing the seek position
|
||||
/// at which the media data ends and the tags begin.
|
||||
/// </param>
|
||||
/// <param name="propertiesStyle">
|
||||
/// A <see cref="ReadStyle" /> value specifying at what level
|
||||
/// of accuracy to read the media properties, or <see
|
||||
/// cref="ReadStyle.None" /> to ignore the properties.
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// A <see cref="TagLib.Properties" /> object describing the
|
||||
/// media properties of the file represented by the current
|
||||
/// instance.
|
||||
/// </returns>
|
||||
protected override Properties ReadProperties (long start,
|
||||
long end,
|
||||
ReadStyle propertiesStyle)
|
||||
{
|
||||
return new Properties ();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
public static class AdditionalFileTypes
|
||||
{
|
||||
private static bool inited = false;
|
||||
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)
|
||||
{
|
||||
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;
|
||||
if (mimetype == "taglib/tta")
|
||||
return new File(abstraction, style, true, false);
|
||||
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;
|
||||
}
|
||||
|
||||
static AdditionalFileTypes ()
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
internal static void Init()
|
||||
{
|
||||
if (inited)
|
||||
|
||||
static AdditionalFileTypes ()
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
internal static void Init()
|
||||
{
|
||||
if (inited)
|
||||
return;
|
||||
TagLib.File.AddFileTypeResolver(new TagLib.File.FileTypeResolver(UserDefinedResolver));
|
||||
//FileTypes.Register(typeof(TagLib.NonContainer.File));
|
||||
inited = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
//FileTypes.Register(typeof(TagLib.NonContainer.File));
|
||||
inited = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>JDP</RootNamespace>
|
||||
<AssemblyName>CUETools</AssemblyName>
|
||||
<ApplicationIcon>Resources\cue.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
@@ -203,6 +204,10 @@
|
||||
<Compile Include="Settings.cs" />
|
||||
</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">
|
||||
<Project>{4911BD82-49EF-4858-8B51-5394F86739A4}</Project>
|
||||
<Name>CUETools.Processor</Name>
|
||||
@@ -222,6 +227,10 @@
|
||||
<ItemGroup>
|
||||
<None Include="Resources\musicbrainz.ico" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Resources\cue.ico" />
|
||||
<Content Include="Resources\eac.ico" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- 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.
|
||||
|
||||
BIN
CUETools/Resources/cue.ico
Normal file
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
BIN
CUETools/Resources/eac.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.4 KiB |
381
CUETools/frmCUETools.Designer.cs
generated
381
CUETools/frmCUETools.Designer.cs
generated
@@ -49,6 +49,7 @@ namespace JDP {
|
||||
this.rbAppendFilename = new System.Windows.Forms.RadioButton();
|
||||
this.txtAppendFilename = new System.Windows.Forms.TextBox();
|
||||
this.grpAudioOutput = new System.Windows.Forms.GroupBox();
|
||||
this.btnCodec = new System.Windows.Forms.Button();
|
||||
this.rbUDC1 = new System.Windows.Forms.RadioButton();
|
||||
this.rbTTA = new System.Windows.Forms.RadioButton();
|
||||
this.chkLossyWAV = new System.Windows.Forms.CheckBox();
|
||||
@@ -61,6 +62,7 @@ namespace JDP {
|
||||
this.btnFilenameCorrector = new System.Windows.Forms.Button();
|
||||
this.btnSettings = new System.Windows.Forms.Button();
|
||||
this.grpAccurateRip = new System.Windows.Forms.GroupBox();
|
||||
this.rbArPlusCRC = new System.Windows.Forms.RadioButton();
|
||||
this.rbArAndEncode = new System.Windows.Forms.RadioButton();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.txtDataTrackLength = new System.Windows.Forms.MaskedTextBox();
|
||||
@@ -80,9 +82,12 @@ namespace JDP {
|
||||
this.rbFreedbAlways = new System.Windows.Forms.RadioButton();
|
||||
this.rbFreedbIf = 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.toolStripMenuItem2 = 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.oGGToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.grpCUEPaths.SuspendLayout();
|
||||
@@ -97,78 +102,125 @@ namespace JDP {
|
||||
//
|
||||
// btnConvert
|
||||
//
|
||||
this.btnConvert.AccessibleDescription = null;
|
||||
this.btnConvert.AccessibleName = null;
|
||||
resources.ApplyResources(this.btnConvert, "btnConvert");
|
||||
this.btnConvert.BackgroundImage = null;
|
||||
this.btnConvert.Font = null;
|
||||
this.btnConvert.Name = "btnConvert";
|
||||
this.toolTip1.SetToolTip(this.btnConvert, resources.GetString("btnConvert.ToolTip"));
|
||||
this.btnConvert.UseVisualStyleBackColor = true;
|
||||
this.btnConvert.Click += new System.EventHandler(this.btnConvert_Click);
|
||||
//
|
||||
// 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.btnBrowseInput);
|
||||
this.grpCUEPaths.Controls.Add(this.lblOutput);
|
||||
this.grpCUEPaths.Controls.Add(this.lblInput);
|
||||
this.grpCUEPaths.Controls.Add(this.txtOutputPath);
|
||||
this.grpCUEPaths.Controls.Add(this.txtInputPath);
|
||||
resources.ApplyResources(this.grpCUEPaths, "grpCUEPaths");
|
||||
this.grpCUEPaths.Font = null;
|
||||
this.grpCUEPaths.Name = "grpCUEPaths";
|
||||
this.grpCUEPaths.TabStop = false;
|
||||
this.toolTip1.SetToolTip(this.grpCUEPaths, resources.GetString("grpCUEPaths.ToolTip"));
|
||||
//
|
||||
// btnBrowseOutput
|
||||
//
|
||||
this.btnBrowseOutput.AccessibleDescription = null;
|
||||
this.btnBrowseOutput.AccessibleName = null;
|
||||
resources.ApplyResources(this.btnBrowseOutput, "btnBrowseOutput");
|
||||
this.btnBrowseOutput.BackgroundImage = null;
|
||||
this.btnBrowseOutput.Font = null;
|
||||
this.btnBrowseOutput.Name = "btnBrowseOutput";
|
||||
this.toolTip1.SetToolTip(this.btnBrowseOutput, resources.GetString("btnBrowseOutput.ToolTip"));
|
||||
this.btnBrowseOutput.UseVisualStyleBackColor = true;
|
||||
this.btnBrowseOutput.Click += new System.EventHandler(this.btnBrowseOutput_Click);
|
||||
//
|
||||
// btnBrowseInput
|
||||
//
|
||||
this.btnBrowseInput.AccessibleDescription = null;
|
||||
this.btnBrowseInput.AccessibleName = null;
|
||||
resources.ApplyResources(this.btnBrowseInput, "btnBrowseInput");
|
||||
this.btnBrowseInput.BackgroundImage = null;
|
||||
this.btnBrowseInput.Font = null;
|
||||
this.btnBrowseInput.Name = "btnBrowseInput";
|
||||
this.toolTip1.SetToolTip(this.btnBrowseInput, resources.GetString("btnBrowseInput.ToolTip"));
|
||||
this.btnBrowseInput.UseVisualStyleBackColor = true;
|
||||
this.btnBrowseInput.Click += new System.EventHandler(this.btnBrowseInput_Click);
|
||||
//
|
||||
// lblOutput
|
||||
//
|
||||
this.lblOutput.AccessibleDescription = null;
|
||||
this.lblOutput.AccessibleName = null;
|
||||
resources.ApplyResources(this.lblOutput, "lblOutput");
|
||||
this.lblOutput.Font = null;
|
||||
this.lblOutput.Name = "lblOutput";
|
||||
this.toolTip1.SetToolTip(this.lblOutput, resources.GetString("lblOutput.ToolTip"));
|
||||
//
|
||||
// lblInput
|
||||
//
|
||||
this.lblInput.AccessibleDescription = null;
|
||||
this.lblInput.AccessibleName = null;
|
||||
resources.ApplyResources(this.lblInput, "lblInput");
|
||||
this.lblInput.Font = null;
|
||||
this.lblInput.Name = "lblInput";
|
||||
this.toolTip1.SetToolTip(this.lblInput, resources.GetString("lblInput.ToolTip"));
|
||||
//
|
||||
// txtOutputPath
|
||||
//
|
||||
this.txtOutputPath.AccessibleDescription = null;
|
||||
this.txtOutputPath.AccessibleName = null;
|
||||
this.txtOutputPath.AllowDrop = true;
|
||||
resources.ApplyResources(this.txtOutputPath, "txtOutputPath");
|
||||
this.txtOutputPath.BackgroundImage = null;
|
||||
this.txtOutputPath.Font = null;
|
||||
this.txtOutputPath.Name = "txtOutputPath";
|
||||
this.toolTip1.SetToolTip(this.txtOutputPath, resources.GetString("txtOutputPath.ToolTip"));
|
||||
this.txtOutputPath.DragDrop += new System.Windows.Forms.DragEventHandler(this.PathTextBox_DragDrop);
|
||||
this.txtOutputPath.DragEnter += new System.Windows.Forms.DragEventHandler(this.PathTextBox_DragEnter);
|
||||
//
|
||||
// txtInputPath
|
||||
//
|
||||
this.txtInputPath.AccessibleDescription = null;
|
||||
this.txtInputPath.AccessibleName = null;
|
||||
this.txtInputPath.AllowDrop = true;
|
||||
resources.ApplyResources(this.txtInputPath, "txtInputPath");
|
||||
this.txtInputPath.BackgroundImage = null;
|
||||
this.txtInputPath.Font = null;
|
||||
this.txtInputPath.Name = "txtInputPath";
|
||||
this.toolTip1.SetToolTip(this.txtInputPath, resources.GetString("txtInputPath.ToolTip"));
|
||||
this.txtInputPath.TextChanged += new System.EventHandler(this.txtInputPath_TextChanged);
|
||||
this.txtInputPath.DragDrop += new System.Windows.Forms.DragEventHandler(this.PathTextBox_DragDrop);
|
||||
this.txtInputPath.DragEnter += new System.Windows.Forms.DragEventHandler(this.PathTextBox_DragEnter);
|
||||
//
|
||||
// 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.rbGapsLeftOut);
|
||||
this.grpOutputStyle.Controls.Add(this.rbGapsPrepended);
|
||||
this.grpOutputStyle.Controls.Add(this.rbGapsAppended);
|
||||
this.grpOutputStyle.Controls.Add(this.rbSingleFile);
|
||||
resources.ApplyResources(this.grpOutputStyle, "grpOutputStyle");
|
||||
this.grpOutputStyle.Font = null;
|
||||
this.grpOutputStyle.Name = "grpOutputStyle";
|
||||
this.grpOutputStyle.TabStop = false;
|
||||
this.toolTip1.SetToolTip(this.grpOutputStyle, resources.GetString("grpOutputStyle.ToolTip"));
|
||||
//
|
||||
// rbEmbedCUE
|
||||
//
|
||||
this.rbEmbedCUE.AccessibleDescription = null;
|
||||
this.rbEmbedCUE.AccessibleName = null;
|
||||
resources.ApplyResources(this.rbEmbedCUE, "rbEmbedCUE");
|
||||
this.rbEmbedCUE.BackgroundImage = null;
|
||||
this.rbEmbedCUE.Font = null;
|
||||
this.rbEmbedCUE.Name = "rbEmbedCUE";
|
||||
this.rbEmbedCUE.TabStop = true;
|
||||
this.toolTip1.SetToolTip(this.rbEmbedCUE, resources.GetString("rbEmbedCUE.ToolTip"));
|
||||
@@ -177,29 +229,45 @@ namespace JDP {
|
||||
//
|
||||
// rbGapsLeftOut
|
||||
//
|
||||
this.rbGapsLeftOut.AccessibleDescription = null;
|
||||
this.rbGapsLeftOut.AccessibleName = null;
|
||||
resources.ApplyResources(this.rbGapsLeftOut, "rbGapsLeftOut");
|
||||
this.rbGapsLeftOut.BackgroundImage = null;
|
||||
this.rbGapsLeftOut.Font = null;
|
||||
this.rbGapsLeftOut.Name = "rbGapsLeftOut";
|
||||
this.toolTip1.SetToolTip(this.rbGapsLeftOut, resources.GetString("rbGapsLeftOut.ToolTip"));
|
||||
this.rbGapsLeftOut.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// rbGapsPrepended
|
||||
//
|
||||
this.rbGapsPrepended.AccessibleDescription = null;
|
||||
this.rbGapsPrepended.AccessibleName = null;
|
||||
resources.ApplyResources(this.rbGapsPrepended, "rbGapsPrepended");
|
||||
this.rbGapsPrepended.BackgroundImage = null;
|
||||
this.rbGapsPrepended.Font = null;
|
||||
this.rbGapsPrepended.Name = "rbGapsPrepended";
|
||||
this.toolTip1.SetToolTip(this.rbGapsPrepended, resources.GetString("rbGapsPrepended.ToolTip"));
|
||||
this.rbGapsPrepended.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// rbGapsAppended
|
||||
//
|
||||
this.rbGapsAppended.AccessibleDescription = null;
|
||||
this.rbGapsAppended.AccessibleName = null;
|
||||
resources.ApplyResources(this.rbGapsAppended, "rbGapsAppended");
|
||||
this.rbGapsAppended.BackgroundImage = null;
|
||||
this.rbGapsAppended.Font = null;
|
||||
this.rbGapsAppended.Name = "rbGapsAppended";
|
||||
this.toolTip1.SetToolTip(this.rbGapsAppended, resources.GetString("rbGapsAppended.ToolTip"));
|
||||
this.rbGapsAppended.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// rbSingleFile
|
||||
//
|
||||
this.rbSingleFile.AccessibleDescription = null;
|
||||
this.rbSingleFile.AccessibleName = null;
|
||||
resources.ApplyResources(this.rbSingleFile, "rbSingleFile");
|
||||
this.rbSingleFile.BackgroundImage = null;
|
||||
this.rbSingleFile.Checked = true;
|
||||
this.rbSingleFile.Font = null;
|
||||
this.rbSingleFile.Name = "rbSingleFile";
|
||||
this.rbSingleFile.TabStop = true;
|
||||
this.toolTip1.SetToolTip(this.rbSingleFile, resources.GetString("rbSingleFile.ToolTip"));
|
||||
@@ -207,13 +275,22 @@ namespace JDP {
|
||||
//
|
||||
// btnAbout
|
||||
//
|
||||
this.btnAbout.AccessibleDescription = null;
|
||||
this.btnAbout.AccessibleName = null;
|
||||
resources.ApplyResources(this.btnAbout, "btnAbout");
|
||||
this.btnAbout.BackgroundImage = null;
|
||||
this.btnAbout.Font = null;
|
||||
this.btnAbout.Name = "btnAbout";
|
||||
this.toolTip1.SetToolTip(this.btnAbout, resources.GetString("btnAbout.ToolTip"));
|
||||
this.btnAbout.UseVisualStyleBackColor = true;
|
||||
this.btnAbout.Click += new System.EventHandler(this.btnAbout_Click);
|
||||
//
|
||||
// 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.rbCustomFormat);
|
||||
this.grpOutputPathGeneration.Controls.Add(this.txtCreateSubdirectory);
|
||||
@@ -221,60 +298,100 @@ namespace JDP {
|
||||
this.grpOutputPathGeneration.Controls.Add(this.rbCreateSubdirectory);
|
||||
this.grpOutputPathGeneration.Controls.Add(this.rbAppendFilename);
|
||||
this.grpOutputPathGeneration.Controls.Add(this.txtAppendFilename);
|
||||
resources.ApplyResources(this.grpOutputPathGeneration, "grpOutputPathGeneration");
|
||||
this.grpOutputPathGeneration.Font = null;
|
||||
this.grpOutputPathGeneration.Name = "grpOutputPathGeneration";
|
||||
this.grpOutputPathGeneration.TabStop = false;
|
||||
this.toolTip1.SetToolTip(this.grpOutputPathGeneration, resources.GetString("grpOutputPathGeneration.ToolTip"));
|
||||
//
|
||||
// txtCustomFormat
|
||||
//
|
||||
this.txtCustomFormat.AccessibleDescription = null;
|
||||
this.txtCustomFormat.AccessibleName = null;
|
||||
resources.ApplyResources(this.txtCustomFormat, "txtCustomFormat");
|
||||
this.txtCustomFormat.BackgroundImage = null;
|
||||
this.txtCustomFormat.Font = null;
|
||||
this.txtCustomFormat.Name = "txtCustomFormat";
|
||||
this.toolTip1.SetToolTip(this.txtCustomFormat, resources.GetString("txtCustomFormat.ToolTip"));
|
||||
this.txtCustomFormat.TextChanged += new System.EventHandler(this.txtCustomFormat_TextChanged);
|
||||
//
|
||||
// rbCustomFormat
|
||||
//
|
||||
this.rbCustomFormat.AccessibleDescription = null;
|
||||
this.rbCustomFormat.AccessibleName = null;
|
||||
resources.ApplyResources(this.rbCustomFormat, "rbCustomFormat");
|
||||
this.rbCustomFormat.BackgroundImage = null;
|
||||
this.rbCustomFormat.Font = null;
|
||||
this.rbCustomFormat.Name = "rbCustomFormat";
|
||||
this.rbCustomFormat.TabStop = true;
|
||||
this.toolTip1.SetToolTip(this.rbCustomFormat, resources.GetString("rbCustomFormat.ToolTip"));
|
||||
this.rbCustomFormat.UseVisualStyleBackColor = true;
|
||||
this.rbCustomFormat.CheckedChanged += new System.EventHandler(this.rbCustomFormat_CheckedChanged);
|
||||
//
|
||||
// txtCreateSubdirectory
|
||||
//
|
||||
this.txtCreateSubdirectory.AccessibleDescription = null;
|
||||
this.txtCreateSubdirectory.AccessibleName = null;
|
||||
resources.ApplyResources(this.txtCreateSubdirectory, "txtCreateSubdirectory");
|
||||
this.txtCreateSubdirectory.BackgroundImage = null;
|
||||
this.txtCreateSubdirectory.Font = null;
|
||||
this.txtCreateSubdirectory.Name = "txtCreateSubdirectory";
|
||||
this.toolTip1.SetToolTip(this.txtCreateSubdirectory, resources.GetString("txtCreateSubdirectory.ToolTip"));
|
||||
this.txtCreateSubdirectory.TextChanged += new System.EventHandler(this.txtCreateSubdirectory_TextChanged);
|
||||
//
|
||||
// rbDontGenerate
|
||||
//
|
||||
this.rbDontGenerate.AccessibleDescription = null;
|
||||
this.rbDontGenerate.AccessibleName = null;
|
||||
resources.ApplyResources(this.rbDontGenerate, "rbDontGenerate");
|
||||
this.rbDontGenerate.BackgroundImage = null;
|
||||
this.rbDontGenerate.Font = null;
|
||||
this.rbDontGenerate.Name = "rbDontGenerate";
|
||||
this.toolTip1.SetToolTip(this.rbDontGenerate, resources.GetString("rbDontGenerate.ToolTip"));
|
||||
this.rbDontGenerate.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// rbCreateSubdirectory
|
||||
//
|
||||
this.rbCreateSubdirectory.AccessibleDescription = null;
|
||||
this.rbCreateSubdirectory.AccessibleName = null;
|
||||
resources.ApplyResources(this.rbCreateSubdirectory, "rbCreateSubdirectory");
|
||||
this.rbCreateSubdirectory.BackgroundImage = null;
|
||||
this.rbCreateSubdirectory.Checked = true;
|
||||
this.rbCreateSubdirectory.Font = null;
|
||||
this.rbCreateSubdirectory.Name = "rbCreateSubdirectory";
|
||||
this.rbCreateSubdirectory.TabStop = true;
|
||||
this.toolTip1.SetToolTip(this.rbCreateSubdirectory, resources.GetString("rbCreateSubdirectory.ToolTip"));
|
||||
this.rbCreateSubdirectory.UseVisualStyleBackColor = true;
|
||||
this.rbCreateSubdirectory.CheckedChanged += new System.EventHandler(this.rbCreateSubdirectory_CheckedChanged);
|
||||
//
|
||||
// rbAppendFilename
|
||||
//
|
||||
this.rbAppendFilename.AccessibleDescription = null;
|
||||
this.rbAppendFilename.AccessibleName = null;
|
||||
resources.ApplyResources(this.rbAppendFilename, "rbAppendFilename");
|
||||
this.rbAppendFilename.BackgroundImage = null;
|
||||
this.rbAppendFilename.Font = null;
|
||||
this.rbAppendFilename.Name = "rbAppendFilename";
|
||||
this.toolTip1.SetToolTip(this.rbAppendFilename, resources.GetString("rbAppendFilename.ToolTip"));
|
||||
this.rbAppendFilename.UseVisualStyleBackColor = true;
|
||||
this.rbAppendFilename.CheckedChanged += new System.EventHandler(this.rbAppendFilename_CheckedChanged);
|
||||
//
|
||||
// txtAppendFilename
|
||||
//
|
||||
this.txtAppendFilename.AccessibleDescription = null;
|
||||
this.txtAppendFilename.AccessibleName = null;
|
||||
resources.ApplyResources(this.txtAppendFilename, "txtAppendFilename");
|
||||
this.txtAppendFilename.BackgroundImage = null;
|
||||
this.txtAppendFilename.Font = null;
|
||||
this.txtAppendFilename.Name = "txtAppendFilename";
|
||||
this.toolTip1.SetToolTip(this.txtAppendFilename, resources.GetString("txtAppendFilename.ToolTip"));
|
||||
this.txtAppendFilename.TextChanged += new System.EventHandler(this.txtAppendFilename_TextChanged);
|
||||
//
|
||||
// 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.rbUDC1);
|
||||
this.grpAudioOutput.Controls.Add(this.rbTTA);
|
||||
@@ -284,29 +401,56 @@ namespace JDP {
|
||||
this.grpAudioOutput.Controls.Add(this.rbWavPack);
|
||||
this.grpAudioOutput.Controls.Add(this.rbWAV);
|
||||
this.grpAudioOutput.Controls.Add(this.rbFLAC);
|
||||
resources.ApplyResources(this.grpAudioOutput, "grpAudioOutput");
|
||||
this.grpAudioOutput.Font = null;
|
||||
this.grpAudioOutput.Name = "grpAudioOutput";
|
||||
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
|
||||
//
|
||||
this.rbUDC1.AccessibleDescription = null;
|
||||
this.rbUDC1.AccessibleName = null;
|
||||
resources.ApplyResources(this.rbUDC1, "rbUDC1");
|
||||
this.rbUDC1.BackgroundImage = null;
|
||||
this.rbUDC1.Font = null;
|
||||
this.rbUDC1.Name = "rbUDC1";
|
||||
this.rbUDC1.TabStop = true;
|
||||
this.toolTip1.SetToolTip(this.rbUDC1, resources.GetString("rbUDC1.ToolTip"));
|
||||
this.rbUDC1.UseVisualStyleBackColor = true;
|
||||
this.rbUDC1.CheckedChanged += new System.EventHandler(this.rbUDC1_CheckedChanged);
|
||||
//
|
||||
// rbTTA
|
||||
//
|
||||
this.rbTTA.AccessibleDescription = null;
|
||||
this.rbTTA.AccessibleName = null;
|
||||
resources.ApplyResources(this.rbTTA, "rbTTA");
|
||||
this.rbTTA.BackgroundImage = null;
|
||||
this.rbTTA.Font = null;
|
||||
this.rbTTA.Name = "rbTTA";
|
||||
this.rbTTA.TabStop = true;
|
||||
this.toolTip1.SetToolTip(this.rbTTA, resources.GetString("rbTTA.ToolTip"));
|
||||
this.rbTTA.UseVisualStyleBackColor = true;
|
||||
this.rbTTA.CheckedChanged += new System.EventHandler(this.rbTTA_CheckedChanged);
|
||||
//
|
||||
// chkLossyWAV
|
||||
//
|
||||
this.chkLossyWAV.AccessibleDescription = null;
|
||||
this.chkLossyWAV.AccessibleName = null;
|
||||
resources.ApplyResources(this.chkLossyWAV, "chkLossyWAV");
|
||||
this.chkLossyWAV.BackgroundImage = null;
|
||||
this.chkLossyWAV.Font = null;
|
||||
this.chkLossyWAV.Name = "chkLossyWAV";
|
||||
this.toolTip1.SetToolTip(this.chkLossyWAV, resources.GetString("chkLossyWAV.ToolTip"));
|
||||
this.chkLossyWAV.UseVisualStyleBackColor = true;
|
||||
@@ -314,15 +458,24 @@ namespace JDP {
|
||||
//
|
||||
// rbAPE
|
||||
//
|
||||
this.rbAPE.AccessibleDescription = null;
|
||||
this.rbAPE.AccessibleName = null;
|
||||
resources.ApplyResources(this.rbAPE, "rbAPE");
|
||||
this.rbAPE.BackgroundImage = null;
|
||||
this.rbAPE.Font = null;
|
||||
this.rbAPE.Name = "rbAPE";
|
||||
this.rbAPE.TabStop = true;
|
||||
this.toolTip1.SetToolTip(this.rbAPE, resources.GetString("rbAPE.ToolTip"));
|
||||
this.rbAPE.UseVisualStyleBackColor = true;
|
||||
this.rbAPE.CheckedChanged += new System.EventHandler(this.rbAPE_CheckedChanged);
|
||||
//
|
||||
// rbNoAudio
|
||||
//
|
||||
this.rbNoAudio.AccessibleDescription = null;
|
||||
this.rbNoAudio.AccessibleName = null;
|
||||
resources.ApplyResources(this.rbNoAudio, "rbNoAudio");
|
||||
this.rbNoAudio.BackgroundImage = null;
|
||||
this.rbNoAudio.Font = null;
|
||||
this.rbNoAudio.Name = "rbNoAudio";
|
||||
this.toolTip1.SetToolTip(this.rbNoAudio, resources.GetString("rbNoAudio.ToolTip"));
|
||||
this.rbNoAudio.UseVisualStyleBackColor = true;
|
||||
@@ -330,85 +483,150 @@ namespace JDP {
|
||||
//
|
||||
// rbWavPack
|
||||
//
|
||||
this.rbWavPack.AccessibleDescription = null;
|
||||
this.rbWavPack.AccessibleName = null;
|
||||
resources.ApplyResources(this.rbWavPack, "rbWavPack");
|
||||
this.rbWavPack.BackgroundImage = null;
|
||||
this.rbWavPack.Font = null;
|
||||
this.rbWavPack.Name = "rbWavPack";
|
||||
this.toolTip1.SetToolTip(this.rbWavPack, resources.GetString("rbWavPack.ToolTip"));
|
||||
this.rbWavPack.UseVisualStyleBackColor = true;
|
||||
this.rbWavPack.CheckedChanged += new System.EventHandler(this.rbWavPack_CheckedChanged);
|
||||
//
|
||||
// rbWAV
|
||||
//
|
||||
this.rbWAV.AccessibleDescription = null;
|
||||
this.rbWAV.AccessibleName = null;
|
||||
resources.ApplyResources(this.rbWAV, "rbWAV");
|
||||
this.rbWAV.BackgroundImage = null;
|
||||
this.rbWAV.Checked = true;
|
||||
this.rbWAV.Font = null;
|
||||
this.rbWAV.Name = "rbWAV";
|
||||
this.rbWAV.TabStop = true;
|
||||
this.toolTip1.SetToolTip(this.rbWAV, resources.GetString("rbWAV.ToolTip"));
|
||||
this.rbWAV.UseVisualStyleBackColor = true;
|
||||
this.rbWAV.CheckedChanged += new System.EventHandler(this.rbWAV_CheckedChanged);
|
||||
//
|
||||
// rbFLAC
|
||||
//
|
||||
this.rbFLAC.AccessibleDescription = null;
|
||||
this.rbFLAC.AccessibleName = null;
|
||||
resources.ApplyResources(this.rbFLAC, "rbFLAC");
|
||||
this.rbFLAC.BackgroundImage = null;
|
||||
this.rbFLAC.Font = null;
|
||||
this.rbFLAC.Name = "rbFLAC";
|
||||
this.toolTip1.SetToolTip(this.rbFLAC, resources.GetString("rbFLAC.ToolTip"));
|
||||
this.rbFLAC.UseVisualStyleBackColor = true;
|
||||
this.rbFLAC.CheckedChanged += new System.EventHandler(this.rbFLAC_CheckedChanged);
|
||||
//
|
||||
// btnBatch
|
||||
//
|
||||
this.btnBatch.AccessibleDescription = null;
|
||||
this.btnBatch.AccessibleName = null;
|
||||
resources.ApplyResources(this.btnBatch, "btnBatch");
|
||||
this.btnBatch.BackgroundImage = null;
|
||||
this.btnBatch.Font = null;
|
||||
this.btnBatch.Name = "btnBatch";
|
||||
this.toolTip1.SetToolTip(this.btnBatch, resources.GetString("btnBatch.ToolTip"));
|
||||
this.btnBatch.UseVisualStyleBackColor = true;
|
||||
this.btnBatch.Click += new System.EventHandler(this.btnBatch_Click);
|
||||
//
|
||||
// btnFilenameCorrector
|
||||
//
|
||||
this.btnFilenameCorrector.AccessibleDescription = null;
|
||||
this.btnFilenameCorrector.AccessibleName = null;
|
||||
resources.ApplyResources(this.btnFilenameCorrector, "btnFilenameCorrector");
|
||||
this.btnFilenameCorrector.BackgroundImage = null;
|
||||
this.btnFilenameCorrector.Font = null;
|
||||
this.btnFilenameCorrector.Name = "btnFilenameCorrector";
|
||||
this.toolTip1.SetToolTip(this.btnFilenameCorrector, resources.GetString("btnFilenameCorrector.ToolTip"));
|
||||
this.btnFilenameCorrector.UseVisualStyleBackColor = true;
|
||||
this.btnFilenameCorrector.Click += new System.EventHandler(this.btnFilenameCorrector_Click);
|
||||
//
|
||||
// btnSettings
|
||||
//
|
||||
this.btnSettings.AccessibleDescription = null;
|
||||
this.btnSettings.AccessibleName = null;
|
||||
resources.ApplyResources(this.btnSettings, "btnSettings");
|
||||
this.btnSettings.BackgroundImage = null;
|
||||
this.btnSettings.Font = null;
|
||||
this.btnSettings.Name = "btnSettings";
|
||||
this.toolTip1.SetToolTip(this.btnSettings, resources.GetString("btnSettings.ToolTip"));
|
||||
this.btnSettings.UseVisualStyleBackColor = true;
|
||||
this.btnSettings.Click += new System.EventHandler(this.btnSettings_Click);
|
||||
//
|
||||
// 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.label1);
|
||||
this.grpAccurateRip.Controls.Add(this.txtDataTrackLength);
|
||||
this.grpAccurateRip.Controls.Add(this.rbArApplyOffset);
|
||||
this.grpAccurateRip.Controls.Add(this.rbArVerify);
|
||||
this.grpAccurateRip.Controls.Add(this.rbArNone);
|
||||
resources.ApplyResources(this.grpAccurateRip, "grpAccurateRip");
|
||||
this.grpAccurateRip.Font = null;
|
||||
this.grpAccurateRip.Name = "grpAccurateRip";
|
||||
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
|
||||
//
|
||||
this.rbArAndEncode.AccessibleDescription = null;
|
||||
this.rbArAndEncode.AccessibleName = null;
|
||||
resources.ApplyResources(this.rbArAndEncode, "rbArAndEncode");
|
||||
this.rbArAndEncode.BackgroundImage = null;
|
||||
this.rbArAndEncode.Font = null;
|
||||
this.rbArAndEncode.Name = "rbArAndEncode";
|
||||
this.rbArAndEncode.TabStop = true;
|
||||
this.toolTip1.SetToolTip(this.rbArAndEncode, resources.GetString("rbArAndEncode.ToolTip"));
|
||||
this.rbArAndEncode.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AccessibleDescription = null;
|
||||
this.label1.AccessibleName = null;
|
||||
resources.ApplyResources(this.label1, "label1");
|
||||
this.label1.Font = null;
|
||||
this.label1.Name = "label1";
|
||||
this.toolTip1.SetToolTip(this.label1, resources.GetString("label1.ToolTip"));
|
||||
//
|
||||
// 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.CutCopyMaskFormat = System.Windows.Forms.MaskFormat.IncludePromptAndLiterals;
|
||||
this.txtDataTrackLength.Font = null;
|
||||
this.txtDataTrackLength.InsertKeyMode = System.Windows.Forms.InsertKeyMode.Overwrite;
|
||||
resources.ApplyResources(this.txtDataTrackLength, "txtDataTrackLength");
|
||||
this.txtDataTrackLength.Name = "txtDataTrackLength";
|
||||
this.txtDataTrackLength.TextMaskFormat = System.Windows.Forms.MaskFormat.IncludePromptAndLiterals;
|
||||
this.toolTip1.SetToolTip(this.txtDataTrackLength, resources.GetString("txtDataTrackLength.ToolTip"));
|
||||
//
|
||||
// rbArApplyOffset
|
||||
//
|
||||
this.rbArApplyOffset.AccessibleDescription = null;
|
||||
this.rbArApplyOffset.AccessibleName = null;
|
||||
resources.ApplyResources(this.rbArApplyOffset, "rbArApplyOffset");
|
||||
this.rbArApplyOffset.BackgroundImage = null;
|
||||
this.rbArApplyOffset.Font = null;
|
||||
this.rbArApplyOffset.Name = "rbArApplyOffset";
|
||||
this.toolTip1.SetToolTip(this.rbArApplyOffset, resources.GetString("rbArApplyOffset.ToolTip"));
|
||||
this.rbArApplyOffset.UseVisualStyleBackColor = true;
|
||||
@@ -416,7 +634,11 @@ namespace JDP {
|
||||
//
|
||||
// rbArVerify
|
||||
//
|
||||
this.rbArVerify.AccessibleDescription = null;
|
||||
this.rbArVerify.AccessibleName = null;
|
||||
resources.ApplyResources(this.rbArVerify, "rbArVerify");
|
||||
this.rbArVerify.BackgroundImage = null;
|
||||
this.rbArVerify.Font = null;
|
||||
this.rbArVerify.Name = "rbArVerify";
|
||||
this.toolTip1.SetToolTip(this.rbArVerify, resources.GetString("rbArVerify.ToolTip"));
|
||||
this.rbArVerify.UseVisualStyleBackColor = true;
|
||||
@@ -424,8 +646,12 @@ namespace JDP {
|
||||
//
|
||||
// rbArNone
|
||||
//
|
||||
this.rbArNone.AccessibleDescription = null;
|
||||
this.rbArNone.AccessibleName = null;
|
||||
resources.ApplyResources(this.rbArNone, "rbArNone");
|
||||
this.rbArNone.BackgroundImage = null;
|
||||
this.rbArNone.Checked = true;
|
||||
this.rbArNone.Font = null;
|
||||
this.rbArNone.Name = "rbArNone";
|
||||
this.rbArNone.TabStop = true;
|
||||
this.toolTip1.SetToolTip(this.rbArNone, resources.GetString("rbArNone.ToolTip"));
|
||||
@@ -433,32 +659,44 @@ namespace JDP {
|
||||
//
|
||||
// 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.toolStripStatusLabel1,
|
||||
this.toolStripProgressBar1,
|
||||
this.toolStripProgressBar2});
|
||||
resources.ApplyResources(this.statusStrip1, "statusStrip1");
|
||||
this.statusStrip1.Name = "statusStrip1";
|
||||
this.statusStrip1.SizingGrip = false;
|
||||
this.toolTip1.SetToolTip(this.statusStrip1, resources.GetString("statusStrip1.ToolTip"));
|
||||
//
|
||||
// toolStripStatusLabel1
|
||||
//
|
||||
this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
|
||||
this.toolStripStatusLabel1.AccessibleDescription = null;
|
||||
this.toolStripStatusLabel1.AccessibleName = null;
|
||||
resources.ApplyResources(this.toolStripStatusLabel1, "toolStripStatusLabel1");
|
||||
this.toolStripStatusLabel1.BackgroundImage = null;
|
||||
this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
|
||||
this.toolStripStatusLabel1.Spring = true;
|
||||
//
|
||||
// toolStripProgressBar1
|
||||
//
|
||||
this.toolStripProgressBar1.AccessibleDescription = null;
|
||||
this.toolStripProgressBar1.AccessibleName = null;
|
||||
resources.ApplyResources(this.toolStripProgressBar1, "toolStripProgressBar1");
|
||||
this.toolStripProgressBar1.AutoToolTip = true;
|
||||
this.toolStripProgressBar1.Name = "toolStripProgressBar1";
|
||||
resources.ApplyResources(this.toolStripProgressBar1, "toolStripProgressBar1");
|
||||
this.toolStripProgressBar1.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
|
||||
//
|
||||
// toolStripProgressBar2
|
||||
//
|
||||
this.toolStripProgressBar2.AccessibleDescription = null;
|
||||
this.toolStripProgressBar2.AccessibleName = null;
|
||||
resources.ApplyResources(this.toolStripProgressBar2, "toolStripProgressBar2");
|
||||
this.toolStripProgressBar2.AutoToolTip = true;
|
||||
this.toolStripProgressBar2.Name = "toolStripProgressBar2";
|
||||
resources.ApplyResources(this.toolStripProgressBar2, "toolStripProgressBar2");
|
||||
this.toolStripProgressBar2.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
|
||||
//
|
||||
// toolTip1
|
||||
@@ -469,98 +707,189 @@ namespace JDP {
|
||||
//
|
||||
// btnCUECreator
|
||||
//
|
||||
this.btnCUECreator.AccessibleDescription = null;
|
||||
this.btnCUECreator.AccessibleName = null;
|
||||
resources.ApplyResources(this.btnCUECreator, "btnCUECreator");
|
||||
this.btnCUECreator.BackgroundImage = null;
|
||||
this.btnCUECreator.Font = null;
|
||||
this.btnCUECreator.Name = "btnCUECreator";
|
||||
this.toolTip1.SetToolTip(this.btnCUECreator, resources.GetString("btnCUECreator.ToolTip"));
|
||||
this.btnCUECreator.UseVisualStyleBackColor = true;
|
||||
this.btnCUECreator.Click += new System.EventHandler(this.btnCUECreator_Click);
|
||||
//
|
||||
// btnStop
|
||||
//
|
||||
this.btnStop.AccessibleDescription = null;
|
||||
this.btnStop.AccessibleName = null;
|
||||
resources.ApplyResources(this.btnStop, "btnStop");
|
||||
this.btnStop.BackgroundImage = null;
|
||||
this.btnStop.Font = null;
|
||||
this.btnStop.Name = "btnStop";
|
||||
this.toolTip1.SetToolTip(this.btnStop, resources.GetString("btnStop.ToolTip"));
|
||||
this.btnStop.UseVisualStyleBackColor = true;
|
||||
this.btnStop.Click += new System.EventHandler(this.btnStop_Click);
|
||||
//
|
||||
// btnPause
|
||||
//
|
||||
this.btnPause.AccessibleDescription = null;
|
||||
this.btnPause.AccessibleName = null;
|
||||
resources.ApplyResources(this.btnPause, "btnPause");
|
||||
this.btnPause.BackgroundImage = null;
|
||||
this.btnPause.Font = null;
|
||||
this.btnPause.Name = "btnPause";
|
||||
this.toolTip1.SetToolTip(this.btnPause, resources.GetString("btnPause.ToolTip"));
|
||||
this.btnPause.UseVisualStyleBackColor = true;
|
||||
this.btnPause.Click += new System.EventHandler(this.btnPause_Click);
|
||||
//
|
||||
// btnResume
|
||||
//
|
||||
this.btnResume.AccessibleDescription = null;
|
||||
this.btnResume.AccessibleName = null;
|
||||
resources.ApplyResources(this.btnResume, "btnResume");
|
||||
this.btnResume.BackgroundImage = null;
|
||||
this.btnResume.Font = null;
|
||||
this.btnResume.Name = "btnResume";
|
||||
this.toolTip1.SetToolTip(this.btnResume, resources.GetString("btnResume.ToolTip"));
|
||||
this.btnResume.UseVisualStyleBackColor = true;
|
||||
this.btnResume.Click += new System.EventHandler(this.btnPause_Click);
|
||||
//
|
||||
// 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.rbFreedbIf);
|
||||
this.groupBox1.Controls.Add(this.rbFreedbNever);
|
||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||
this.groupBox1.Font = null;
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.TabStop = false;
|
||||
this.toolTip1.SetToolTip(this.groupBox1, resources.GetString("groupBox1.ToolTip"));
|
||||
//
|
||||
// rbFreedbAlways
|
||||
//
|
||||
this.rbFreedbAlways.AccessibleDescription = null;
|
||||
this.rbFreedbAlways.AccessibleName = null;
|
||||
resources.ApplyResources(this.rbFreedbAlways, "rbFreedbAlways");
|
||||
this.rbFreedbAlways.BackgroundImage = null;
|
||||
this.rbFreedbAlways.Font = null;
|
||||
this.rbFreedbAlways.Name = "rbFreedbAlways";
|
||||
this.rbFreedbAlways.TabStop = true;
|
||||
this.toolTip1.SetToolTip(this.rbFreedbAlways, resources.GetString("rbFreedbAlways.ToolTip"));
|
||||
this.rbFreedbAlways.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// rbFreedbIf
|
||||
//
|
||||
this.rbFreedbIf.AccessibleDescription = null;
|
||||
this.rbFreedbIf.AccessibleName = null;
|
||||
resources.ApplyResources(this.rbFreedbIf, "rbFreedbIf");
|
||||
this.rbFreedbIf.BackgroundImage = null;
|
||||
this.rbFreedbIf.Font = null;
|
||||
this.rbFreedbIf.Name = "rbFreedbIf";
|
||||
this.rbFreedbIf.TabStop = true;
|
||||
this.toolTip1.SetToolTip(this.rbFreedbIf, resources.GetString("rbFreedbIf.ToolTip"));
|
||||
this.rbFreedbIf.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// rbFreedbNever
|
||||
//
|
||||
this.rbFreedbNever.AccessibleDescription = null;
|
||||
this.rbFreedbNever.AccessibleName = null;
|
||||
resources.ApplyResources(this.rbFreedbNever, "rbFreedbNever");
|
||||
this.rbFreedbNever.BackgroundImage = null;
|
||||
this.rbFreedbNever.Font = null;
|
||||
this.rbFreedbNever.Name = "rbFreedbNever";
|
||||
this.rbFreedbNever.TabStop = true;
|
||||
this.toolTip1.SetToolTip(this.rbFreedbNever, resources.GetString("rbFreedbNever.ToolTip"));
|
||||
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
|
||||
//
|
||||
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.toolStripMenuItem2,
|
||||
this.tAKToolStripMenuItem,
|
||||
this.toolStripMenuItem1,
|
||||
this.toolStripSeparator1,
|
||||
this.toolStripMenuItem3,
|
||||
this.mP3ToolStripMenuItem,
|
||||
this.oGGToolStripMenuItem});
|
||||
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);
|
||||
//
|
||||
// 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
|
||||
//
|
||||
this.tAKToolStripMenuItem.Name = "tAKToolStripMenuItem";
|
||||
this.tAKToolStripMenuItem.AccessibleDescription = null;
|
||||
this.tAKToolStripMenuItem.AccessibleName = null;
|
||||
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
|
||||
//
|
||||
this.mP3ToolStripMenuItem.Name = "mP3ToolStripMenuItem";
|
||||
this.mP3ToolStripMenuItem.AccessibleDescription = null;
|
||||
this.mP3ToolStripMenuItem.AccessibleName = null;
|
||||
resources.ApplyResources(this.mP3ToolStripMenuItem, "mP3ToolStripMenuItem");
|
||||
this.mP3ToolStripMenuItem.BackgroundImage = null;
|
||||
this.mP3ToolStripMenuItem.Name = "mP3ToolStripMenuItem";
|
||||
this.mP3ToolStripMenuItem.ShortcutKeyDisplayString = null;
|
||||
//
|
||||
// oGGToolStripMenuItem
|
||||
//
|
||||
this.oGGToolStripMenuItem.Name = "oGGToolStripMenuItem";
|
||||
this.oGGToolStripMenuItem.AccessibleDescription = null;
|
||||
this.oGGToolStripMenuItem.AccessibleName = null;
|
||||
resources.ApplyResources(this.oGGToolStripMenuItem, "oGGToolStripMenuItem");
|
||||
this.oGGToolStripMenuItem.BackgroundImage = null;
|
||||
this.oGGToolStripMenuItem.Name = "oGGToolStripMenuItem";
|
||||
this.oGGToolStripMenuItem.ShortcutKeyDisplayString = null;
|
||||
//
|
||||
// frmCUETools
|
||||
//
|
||||
this.AccessibleDescription = null;
|
||||
this.AccessibleName = null;
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackgroundImage = null;
|
||||
this.Controls.Add(this.groupBox1);
|
||||
this.Controls.Add(this.btnResume);
|
||||
this.Controls.Add(this.btnPause);
|
||||
@@ -580,6 +909,7 @@ namespace JDP {
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||
this.MaximizeBox = false;
|
||||
this.Name = "frmCUETools";
|
||||
this.toolTip1.SetToolTip(this, resources.GetString("$this.ToolTip"));
|
||||
this.Load += new System.EventHandler(this.frmCUETools_Load);
|
||||
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.frmCUETools_FormClosed);
|
||||
this.grpCUEPaths.ResumeLayout(false);
|
||||
@@ -664,6 +994,11 @@ namespace JDP {
|
||||
private System.Windows.Forms.ToolStripMenuItem tAKToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem mP3ToolStripMenuItem;
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -296,11 +296,9 @@ namespace JDP {
|
||||
this.Invoke((MethodInvoker)delegate()
|
||||
{
|
||||
frmChoice dlg = new frmChoice();
|
||||
foreach (string s in e.choices)
|
||||
dlg.comboRelease.Items.Add(s);
|
||||
dlg.comboRelease.SelectedIndex = 0;
|
||||
dlg.Choices = e.choices;
|
||||
if (dlg.ShowDialog(this) == DialogResult.OK)
|
||||
e.selection = dlg.comboRelease.SelectedIndex;
|
||||
e.selection = dlg.ChosenIndex;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -318,14 +316,14 @@ namespace JDP {
|
||||
try
|
||||
{
|
||||
|
||||
bool outputAudio = outputFormat != OutputAudioFormat.NoAudio && accurateRip != AccurateRipMode.Verify;
|
||||
bool outputCUE = cueStyle != CUEStyle.SingleFileWithCUE && accurateRip != AccurateRipMode.Verify;
|
||||
bool outputAudio = outputFormat != OutputAudioFormat.NoAudio && accurateRip != AccurateRipMode.Verify && accurateRip != AccurateRipMode.VerifyPlusCRCs;
|
||||
bool outputCUE = cueStyle != CUEStyle.SingleFileWithCUE && accurateRip != AccurateRipMode.Verify && accurateRip != AccurateRipMode.VerifyPlusCRCs;
|
||||
string pathOut = null;
|
||||
List<object> releases = null;
|
||||
|
||||
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 &&
|
||||
(cueSheet.Artist == "" || cueSheet.Title == "" || cueSheet.Year == "")))
|
||||
@@ -337,11 +335,10 @@ namespace JDP {
|
||||
if (releases != null && releases.Count > 0)
|
||||
{
|
||||
frmChoice dlg = new frmChoice();
|
||||
foreach (object release in releases)
|
||||
dlg.comboRelease.Items.Add(release);
|
||||
dlg.comboRelease.SelectedIndex = 0;
|
||||
dlg.CUE = cueSheet;
|
||||
if (dlg.ShowDialog(this) == DialogResult.Cancel)
|
||||
dlg.Choices = releases;
|
||||
dlgRes = dlg.ShowDialog(this);
|
||||
if (dlgRes == DialogResult.Cancel)
|
||||
{
|
||||
cueSheet.Close();
|
||||
SetupControls(false);
|
||||
@@ -419,6 +416,7 @@ namespace JDP {
|
||||
reportForm.ShowDialog(this);
|
||||
}
|
||||
else if (cueSheet.AccurateRip == AccurateRipMode.Verify ||
|
||||
cueSheet.AccurateRip == AccurateRipMode.VerifyPlusCRCs ||
|
||||
(cueSheet.AccurateRip != AccurateRipMode.None && outputFormat != OutputAudioFormat.NoAudio))
|
||||
{
|
||||
frmReport reportForm = new frmReport();
|
||||
@@ -487,10 +485,10 @@ namespace JDP {
|
||||
private void SetupControls(bool running) {
|
||||
grpCUEPaths.Enabled = !running;
|
||||
grpOutputPathGeneration.Enabled = !running;
|
||||
grpAudioOutput.Enabled = !running && !rbArVerify.Checked;
|
||||
grpAudioOutput.Enabled = !running && !rbArVerify.Checked && !rbArPlusCRC.Checked;
|
||||
grpAccurateRip.Enabled = !running;
|
||||
grpOutputStyle.Enabled = !running && !rbArVerify.Checked;
|
||||
groupBox1.Enabled = !running && !rbArVerify.Checked;
|
||||
grpOutputStyle.Enabled = !running && !rbArVerify.Checked && !rbArPlusCRC.Checked;
|
||||
groupBox1.Enabled = !running && !rbArVerify.Checked && !rbArPlusCRC.Checked;
|
||||
txtDataTrackLength.Enabled = !running && !rbArNone.Checked;
|
||||
btnAbout.Enabled = !running;
|
||||
btnSettings.Enabled = !running;
|
||||
@@ -536,7 +534,8 @@ namespace JDP {
|
||||
}
|
||||
|
||||
private bool CheckWriteOffset() {
|
||||
if ((_writeOffset == 0) || rbNoAudio.Checked || rbArVerify.Checked) {
|
||||
if ((_writeOffset == 0) || rbNoAudio.Checked || rbArVerify.Checked || rbArPlusCRC.Checked)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -765,6 +764,7 @@ namespace JDP {
|
||||
get
|
||||
{
|
||||
return
|
||||
rbArPlusCRC.Checked ? AccurateRipMode.VerifyPlusCRCs :
|
||||
rbArVerify.Checked ? AccurateRipMode.Verify :
|
||||
rbArApplyOffset.Checked ? AccurateRipMode.VerifyThenConvert :
|
||||
rbArAndEncode.Checked ? AccurateRipMode.VerifyAndConvert :
|
||||
@@ -774,6 +774,9 @@ namespace JDP {
|
||||
{
|
||||
switch (value)
|
||||
{
|
||||
case AccurateRipMode.VerifyPlusCRCs:
|
||||
rbArPlusCRC.Checked = true;
|
||||
break;
|
||||
case AccurateRipMode.Verify:
|
||||
rbArVerify.Checked = true;
|
||||
break;
|
||||
@@ -1063,6 +1066,14 @@ namespace JDP {
|
||||
apev2 = true;
|
||||
id3v2 = false;
|
||||
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":
|
||||
extension = "mp3";
|
||||
executable = "lame.exe";
|
||||
@@ -1107,6 +1118,12 @@ namespace JDP {
|
||||
updateOutputStyles();
|
||||
UpdateOutputPath();
|
||||
}
|
||||
|
||||
private void rbArPlusCRC_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
UpdateOutputPath();
|
||||
SetupControls(false);
|
||||
}
|
||||
}
|
||||
|
||||
enum OutputPathGeneration {
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -124,6 +124,9 @@
|
||||
<data name="btnConvert.Text" xml:space="preserve">
|
||||
<value>Поехали</value>
|
||||
</data>
|
||||
<data name="grpCUEPaths.Text" xml:space="preserve">
|
||||
<value>Пути к файлам</value>
|
||||
</data>
|
||||
<data name="btnBrowseOutput.Text" xml:space="preserve">
|
||||
<value>Выбор...</value>
|
||||
</data>
|
||||
@@ -142,8 +145,11 @@
|
||||
<data name="lblInput.Text" xml:space="preserve">
|
||||
<value>&Вход:</value>
|
||||
</data>
|
||||
<data name="grpCUEPaths.Text" xml:space="preserve">
|
||||
<value>Пути к файлам</value>
|
||||
<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="rbEmbedCUE.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>86, 17</value>
|
||||
@@ -190,18 +196,18 @@
|
||||
<data name="rbSingleFile.ToolTip" xml:space="preserve">
|
||||
<value>Создать образ диска в виде одного аудио-файла и .cue файла</value>
|
||||
</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">
|
||||
<value>412, 191</value>
|
||||
</data>
|
||||
<data name="btnAbout.Text" xml:space="preserve">
|
||||
<value>О программе</value>
|
||||
</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">
|
||||
<value>240, 21</value>
|
||||
</data>
|
||||
@@ -235,11 +241,8 @@
|
||||
<data name="txtAppendFilename.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>240, 21</value>
|
||||
</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 name="grpAudioOutput.Text" xml:space="preserve">
|
||||
<value>Формат аудио</value>
|
||||
</data>
|
||||
<data name="rbNoAudio.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>76, 17</value>
|
||||
@@ -247,9 +250,6 @@
|
||||
<data name="rbNoAudio.Text" xml:space="preserve">
|
||||
<value>Без аудио</value>
|
||||
</data>
|
||||
<data name="grpAudioOutput.Text" xml:space="preserve">
|
||||
<value>Формат аудио</value>
|
||||
</data>
|
||||
<data name="btnBatch.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>412, 315</value>
|
||||
</data>
|
||||
@@ -268,6 +268,18 @@
|
||||
<data name="btnSettings.Text" xml:space="preserve">
|
||||
<value>Настройки...</value>
|
||||
</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">
|
||||
<value>138, 17</value>
|
||||
</data>
|
||||
@@ -310,12 +322,6 @@
|
||||
<data name="rbArNone.ToolTip" xml:space="preserve">
|
||||
<value>Сконвертировать, не обращаясь к базе данных AccurateRip</value>
|
||||
</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">
|
||||
<value>412, 253</value>
|
||||
</data>
|
||||
@@ -340,4 +346,32 @@
|
||||
<data name="btnResume.Text" xml:space="preserve">
|
||||
<value>&Поехали</value>
|
||||
</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>
|
||||
110
CUETools/frmChoice.Designer.cs
generated
110
CUETools/frmChoice.Designer.cs
generated
@@ -28,20 +28,20 @@ namespace JDP
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
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.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();
|
||||
//
|
||||
// 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
|
||||
//
|
||||
this.button1.DialogResult = System.Windows.Forms.DialogResult.OK;
|
||||
@@ -49,24 +49,110 @@ namespace JDP
|
||||
this.button1.Name = "button1";
|
||||
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
|
||||
//
|
||||
this.AcceptButton = this.button1;
|
||||
resources.ApplyResources(this, "$this");
|
||||
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.comboRelease);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
|
||||
this.Name = "frmChoice";
|
||||
this.Load += new System.EventHandler(this.frmChoice_Load);
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmChoice_FormClosing);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -20,68 +20,215 @@ namespace JDP
|
||||
|
||||
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)
|
||||
{
|
||||
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)
|
||||
{
|
||||
if (e.CloseReason != CloseReason.None || DialogResult != DialogResult.OK)
|
||||
object item = ChosenObject;
|
||||
if (e.CloseReason != CloseReason.None || DialogResult != DialogResult.OK || item == null)
|
||||
return;
|
||||
if (comboRelease.SelectedItem != null && comboRelease.SelectedItem is MusicBrainz.Release)
|
||||
CUE.FillFromMusicBrainz((MusicBrainz.Release)comboRelease.SelectedItem);
|
||||
if (item is MusicBrainz.Release)
|
||||
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
|
||||
if (comboRelease.SelectedItem != null && comboRelease.SelectedItem is CDEntry)
|
||||
CUE.FillFromFreedb((CDEntry)comboRelease.SelectedItem);
|
||||
else
|
||||
return;
|
||||
{
|
||||
listTracks.Items.Clear();
|
||||
textBox1.Text = "";
|
||||
}
|
||||
}
|
||||
|
||||
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();
|
||||
frm.CUE = CUE;
|
||||
if (frm.ShowDialog(this) != DialogResult.OK)
|
||||
e.Cancel = true;
|
||||
if (frm.ShowDialog(this) == DialogResult.OK)
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -117,39 +117,14 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</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" />
|
||||
<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=">>comboRelease.Name" xml:space="preserve">
|
||||
<value>comboRelease</value>
|
||||
</data>
|
||||
<data name=">>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=">>comboRelease.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>comboRelease.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="button1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>480, 45</value>
|
||||
<value>488, 293</value>
|
||||
</data>
|
||||
<data name="button1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>75, 23</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="button1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>23</value>
|
||||
</data>
|
||||
@@ -166,6 +141,197 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>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=">>listChoices.Name" xml:space="preserve">
|
||||
<value>listChoices</value>
|
||||
</data>
|
||||
<data name=">>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=">>listChoices.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>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=">>textBox1.Name" xml:space="preserve">
|
||||
<value>textBox1</value>
|
||||
</data>
|
||||
<data name=">>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=">>textBox1.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>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=">>listTracks.Name" xml:space="preserve">
|
||||
<value>listTracks</value>
|
||||
</data>
|
||||
<data name=">>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=">>listTracks.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>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=">>btnEdit.Name" xml:space="preserve">
|
||||
<value>btnEdit</value>
|
||||
</data>
|
||||
<data name=">>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=">>btnEdit.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>btnEdit.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<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>
|
||||
</data>
|
||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>567, 80</value>
|
||||
<value>575, 328</value>
|
||||
</data>
|
||||
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
|
||||
<value>CenterParent</value>
|
||||
@@ -183,6 +349,36 @@
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>Select the best match</value>
|
||||
</data>
|
||||
<data name=">>columnHeader1.Name" xml:space="preserve">
|
||||
<value>columnHeader1</value>
|
||||
</data>
|
||||
<data name=">>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=">>imageList1.Name" xml:space="preserve">
|
||||
<value>imageList1</value>
|
||||
</data>
|
||||
<data name=">>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=">>Title.Name" xml:space="preserve">
|
||||
<value>Title</value>
|
||||
</data>
|
||||
<data name=">>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=">>TrackNo.Name" xml:space="preserve">
|
||||
<value>TrackNo</value>
|
||||
</data>
|
||||
<data name=">>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=">>Length.Name" xml:space="preserve">
|
||||
<value>Length</value>
|
||||
</data>
|
||||
<data name=">>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=">>$this.Name" xml:space="preserve">
|
||||
<value>frmChoice</value>
|
||||
</data>
|
||||
|
||||
@@ -97,7 +97,7 @@ namespace UnRarDotNet
|
||||
while (_buffer == null && !_eof && !_close)
|
||||
Monitor.Wait(this);
|
||||
if (_close)
|
||||
throw new IOException("Decompression failed", _ex);
|
||||
throw _ex ?? new IOException("Decompression failed");
|
||||
if (_buffer == null)
|
||||
return total;
|
||||
if (_seek_to != null)
|
||||
|
||||
Reference in New Issue
Block a user