mirror of
https://github.com/claunia/cuetools.net.git
synced 2025-12-16 18:14:25 +00:00
Version 2.0.4
* Better handling of metadata for playstation type CDs * HTOA filename now starts with 00 instead of 01.00 * CUETools: local database: when the folder is already in database, you can now refresh it instead of removing/adding it * CUETools: local database: added sort category "by CTDB confidence" * CUETools: local database: new menu item: locate in explorer * CUERipper: Option to disable gaps detection * CUERipper: now correctly submits CDs with data tracks to Freedb * EAC plugin: now fixes codepage for freedb entries
This commit is contained in:
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("CUEControls")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2008-2010 Gregory S. Chudov")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2008-2010 Grigory Chudov")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("CUETools")]
|
||||
[assembly: AssemblyProduct("CUEPlayer")]
|
||||
[assembly: AssemblyCopyright("Copyright © Gregory S. Chudov 2010")]
|
||||
[assembly: AssemblyCopyright("Copyright © Grigory Chudov 2010")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
|
||||
@@ -58,6 +58,9 @@ namespace CUERipper
|
||||
[DefaultValue(true), Category("Extraction"), DisplayName("Preserve HTOA")]
|
||||
public bool preserveHTOA { get { return config.preserveHTOA; } set { config.preserveHTOA = value; } }
|
||||
|
||||
[DefaultValue(true), Category("Extraction"), DisplayName("Detect Indexes")]
|
||||
public bool detectGaps { get { return config.detectGaps; } set { config.detectGaps = value; } }
|
||||
|
||||
[DefaultValue(true), Category("Extraction"), DisplayName("EAC log style")]
|
||||
public bool createEACLOG { get { return config.createEACLOG; } set { config.createEACLOG = value; } }
|
||||
|
||||
|
||||
@@ -382,7 +382,7 @@ namespace CUERipper
|
||||
cueSheet.ArTestVerify = null;
|
||||
|
||||
cueSheet.Go();
|
||||
cueSheet.CTDB.Submit(
|
||||
cueSheet.CTDB.Submit(
|
||||
(int)cueSheet.ArVerify.WorstConfidence() + 1,
|
||||
audioSource.CorrectionQuality == 0 ? 0 :
|
||||
100 - (int)(7 * Math.Log(audioSource.ErrorsCount + 1)), // ErrorsCount==1 ~= 95, ErrorsCount==max ~= 5;
|
||||
@@ -658,7 +658,7 @@ namespace CUERipper
|
||||
cueSheet.UseAccurateRip();
|
||||
|
||||
General.SetCUELine(cueSheet.Attributes, "REM", "DISCID", AccurateRipVerify.CalculateCDDBId(audioSource.TOC), false);
|
||||
General.SetCUELine(cueSheet.Attributes, "REM", "COMMENT", _config.createEACLOG ? "ExactAudioCopy v0.99pb4" : audioSource.RipperVersion, true);
|
||||
General.SetCUELine(cueSheet.Attributes, "REM", "COMMENT", audioSource.RipperVersion, true);
|
||||
|
||||
try
|
||||
{
|
||||
@@ -1304,7 +1304,7 @@ namespace CUERipper
|
||||
int track = lvItem.Index + 1 - selectedDriveInfo.drive.TOC.FirstAudio;
|
||||
if (a == lvItem.SubItems[0])
|
||||
lvItem.BeginEdit();
|
||||
else if (/*a == lvItem.SubItems[2] &&*/ track >= 0)
|
||||
else if (/*a == lvItem.SubItems[2] &&*/ track >= 0 && track < selectedDriveInfo.drive.TOC.AudioTracks)
|
||||
{
|
||||
buttonTracks.Visible = true;
|
||||
buttonTracks.Focus();
|
||||
@@ -1327,6 +1327,22 @@ namespace CUERipper
|
||||
entry.Year = data.selectedRelease.metadata.Year;
|
||||
entry.Genre = data.selectedRelease.metadata.Genre;
|
||||
int i = 1;
|
||||
for (i = 1; i <= selectedDriveInfo.drive.TOC.TrackCount; i++)
|
||||
{
|
||||
Freedb.Track tt = new Freedb.Track();
|
||||
if (i >= selectedDriveInfo.drive.TOC.FirstAudio && i < selectedDriveInfo.drive.TOC.FirstAudio + selectedDriveInfo.drive.TOC.AudioTracks)
|
||||
{
|
||||
CUETrackMetadata t = data.selectedRelease.metadata.Tracks[i - selectedDriveInfo.drive.TOC.FirstAudio];
|
||||
if (t.Artist != "" && t.Artist != entry.Artist)
|
||||
tt.Title = t.Artist + " / " + t.Title;
|
||||
else
|
||||
tt.Title = t.Title;
|
||||
} else
|
||||
tt.Title = "Data track";
|
||||
tt.FrameOffset = 150 + (int)selectedDriveInfo.drive.TOC[i].Start;
|
||||
entry.Tracks.Add(tt);
|
||||
}
|
||||
/*
|
||||
foreach (CUETrackMetadata t in data.selectedRelease.metadata.Tracks)
|
||||
{
|
||||
Freedb.Track tt = new Freedb.Track();
|
||||
@@ -1336,7 +1352,7 @@ namespace CUERipper
|
||||
tt.Title = t.Title;
|
||||
tt.FrameOffset = 150 + (int)selectedDriveInfo.drive.TOC[i++].Start;
|
||||
entry.Tracks.Add(tt);
|
||||
}
|
||||
}*/
|
||||
|
||||
FreedbHelper m_freedb = new FreedbHelper();
|
||||
|
||||
|
||||
@@ -133,7 +133,7 @@ namespace CUETools.ALACEnc
|
||||
|
||||
if (!quiet)
|
||||
{
|
||||
Console.WriteLine("CUETools.ALACEnc, Copyright (C) 2009 Gregory S. Chudov.");
|
||||
Console.WriteLine("CUETools.ALACEnc, Copyright (C) 2009 Grigory Chudov.");
|
||||
Console.WriteLine("Based on ffdshow ALAC audio encoder");
|
||||
Console.WriteLine("Copyright (c) 2008 Jaikrishnan Menon, <realityman@gmx.net>");
|
||||
Console.WriteLine("This is free software under the GNU GPLv3+ license; There is NO WARRANTY, to");
|
||||
|
||||
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("CUETools.ARCUE")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2008-2010 Gregory S. Chudov")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2008-2010 Grigory Chudov")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("CUETools.AccurateRip")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2008-2010 Gregory S. Chudov")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2008-2010 Grigory Chudov")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("CUETools.CDImage")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2008-2010 Gregory S. Chudov")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2008-2010 Grigory Chudov")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
|
||||
@@ -227,6 +227,77 @@ namespace CUETools.CTDB.EACPlugin
|
||||
}
|
||||
}
|
||||
|
||||
private void AddMeta(CTDBResponseMeta metadata)
|
||||
{
|
||||
uint td = 0, dn = 0;
|
||||
var disccount = metadata.disccount ?? "1";
|
||||
var discnumber = metadata.discnumber ?? "1";
|
||||
var discnumber01 = (uint.TryParse(disccount, out td) && uint.TryParse(discnumber, out dn) && td > 9 && dn > 0) ?
|
||||
string.Format("{0:00}", dn) : discnumber;
|
||||
var discnumberandtotal = disccount != "1" ? discnumber01 + "/" + disccount : (discnumber != "1" ? discnumber01 : "");
|
||||
var label = metadata.country ?? "";
|
||||
if (metadata.label != null)
|
||||
foreach (var l in metadata.label)
|
||||
label = (label == "" ? "" : label + ": ") + (l.name ?? "") + (l.name != null && l.catno != null ? " " : "") + (l.catno ?? "");
|
||||
if (metadata.releasedate != null)
|
||||
label = (label == "" ? "" : label + ": ") + metadata.releasedate;
|
||||
var text = string.Format("{0}{1} - {2}{3}{4}", metadata.year != null ? metadata.year + ": " : "",
|
||||
metadata.artist == null ? "Unknown Artist" : metadata.artist,
|
||||
metadata.album == "" ? "Unknown Title" : metadata.album,
|
||||
discnumberandtotal != "" ? " (disc " + discnumberandtotal + (metadata.discname != null ? ": " + metadata.discname : "") + ")" : "",
|
||||
label == "" ? "" : " (" + label + ")");
|
||||
var tip = new StringBuilder();
|
||||
var i = 0;
|
||||
if (metadata.track != null)
|
||||
{
|
||||
foreach (var tr in metadata.track)
|
||||
tip.AppendFormat("{0}. {2}{1}\n", ++i, tr.name, ((tr.artist ?? metadata.artist) == metadata.artist) ? "" : tr.artist + " / ");
|
||||
}
|
||||
listView1.Items.Add(new ListViewItem(text) { Tag = metadata, ImageKey = metadata.source, ToolTipText = tip.ToString() });
|
||||
this.listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
|
||||
}
|
||||
|
||||
private static string FreedbToEncoding(Encoding iso, Encoding def, ref bool changed, ref bool error, string s)
|
||||
{
|
||||
if (s == null)
|
||||
return null;
|
||||
try
|
||||
{
|
||||
string res = def.GetString(iso.GetBytes(s));
|
||||
changed |= res != s;
|
||||
return res;
|
||||
}
|
||||
catch // EncoderFallbackException, DecoderFallbackException
|
||||
{
|
||||
error = true;
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
private CTDBResponseMeta FreedbToEncoding(CTDBResponseMeta src)
|
||||
{
|
||||
if (src.source != "freedb")
|
||||
return null;
|
||||
Encoding iso = Encoding.GetEncoding("iso-8859-1", new EncoderExceptionFallback(), new DecoderExceptionFallback());
|
||||
Encoding def = Encoding.GetEncoding(Encoding.Default.CodePage, new EncoderExceptionFallback(), new DecoderExceptionFallback());
|
||||
bool different = false;
|
||||
bool error = false;
|
||||
var metadata = new CTDBResponseMeta(src);
|
||||
metadata.artist = FreedbToEncoding(iso, def, ref different, ref error, metadata.artist);
|
||||
metadata.album = FreedbToEncoding(iso, def, ref different, ref error, metadata.album);
|
||||
metadata.extra = FreedbToEncoding(iso, def, ref different, ref error, metadata.extra);
|
||||
if (metadata.track != null)
|
||||
{
|
||||
for (int i = 0; i < metadata.track.Length; i++)
|
||||
{
|
||||
metadata.track[i].name = FreedbToEncoding(iso, def, ref different, ref error, metadata.track[i].name);
|
||||
metadata.track[i].artist = FreedbToEncoding(iso, def, ref different, ref error, metadata.track[i].artist);
|
||||
metadata.track[i].extra = FreedbToEncoding(iso, def, ref different, ref error, metadata.track[i].extra);
|
||||
}
|
||||
}
|
||||
return different && !error ? metadata : null;
|
||||
}
|
||||
|
||||
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
|
||||
{
|
||||
if (e.UserState is InternetImage)
|
||||
@@ -240,32 +311,9 @@ namespace CUETools.CTDB.EACPlugin
|
||||
if (e.UserState is CTDBResponseMeta)
|
||||
{
|
||||
var metadata = e.UserState as CTDBResponseMeta;
|
||||
uint td = 0, dn = 0;
|
||||
var disccount = metadata.disccount ?? "1";
|
||||
var discnumber = metadata.discnumber ?? "1";
|
||||
var discnumber01 = (uint.TryParse(disccount, out td) && uint.TryParse(discnumber, out dn) && td > 9 && dn > 0) ?
|
||||
string.Format("{0:00}", dn) : discnumber;
|
||||
var discnumberandtotal = disccount != "1" ? discnumber01 + "/" + disccount : (discnumber != "1" ? discnumber01 : "");
|
||||
var label = metadata.country ?? "";
|
||||
if (metadata.label != null)
|
||||
foreach (var l in metadata.label)
|
||||
label = (label == "" ? "" : label + ": ") + (l.name ?? "") + (l.name != null && l.catno != null ? " " : "") + (l.catno ?? "");
|
||||
if (metadata.releasedate != null)
|
||||
label = (label == "" ? "" : label + ": ") + metadata.releasedate;
|
||||
var text = string.Format("{0}{1} - {2}{3}{4}", metadata.year != null ? metadata.year + ": " : "",
|
||||
metadata.artist == null ? "Unknown Artist" : metadata.artist,
|
||||
metadata.album == "" ? "Unknown Title" : metadata.album,
|
||||
discnumberandtotal != "" ? " (disc " + discnumberandtotal + (metadata.discname != null ? ": " + metadata.discname : "") + ")" : "",
|
||||
label == "" ? "" : " (" + label + ")");
|
||||
var tip = new StringBuilder();
|
||||
var i = 0;
|
||||
if (metadata.track != null)
|
||||
{
|
||||
foreach (var tr in metadata.track)
|
||||
tip.AppendFormat("{0}. {2}{1}\n", ++i, tr.name, ((tr.artist ?? metadata.artist) == metadata.artist) ? "" : tr.artist + " / ");
|
||||
}
|
||||
listView1.Items.Add(new ListViewItem(text) { Tag = metadata, ImageKey = metadata.source, ToolTipText = tip.ToString() });
|
||||
this.listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
|
||||
var freedbenc = FreedbToEncoding(metadata);
|
||||
AddMeta(metadata);
|
||||
if (freedbenc != null) AddMeta(freedbenc);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -86,13 +86,21 @@ namespace MetadataPlugIn
|
||||
data.ExtendedDiscInformation = extra;
|
||||
data.Revision = -1; // TODO: meta.id? rock/ffffffff/16?
|
||||
if (meta.track != null)
|
||||
{
|
||||
int firstAudio = meta.track.Length == TOC.AudioTracks ? TOC.FirstAudio - 1 : 0;
|
||||
for (int track = 0; track < data.NumberOfTracks; track++)
|
||||
{
|
||||
if (track < meta.track.Length)
|
||||
if (track - firstAudio >= 0 && track - firstAudio < meta.track.Length)
|
||||
{
|
||||
data.SetTrackTitle(track, meta.track[track].name ?? "");
|
||||
data.SetTrackArtist(track, meta.track[track].artist ?? meta.artist ?? "");
|
||||
data.SetExtendedTrackInformation(track, meta.track[track].extra ?? "");
|
||||
data.SetTrackTitle(track, meta.track[track - firstAudio].name ?? "");
|
||||
data.SetTrackArtist(track, meta.track[track - firstAudio].artist ?? meta.artist ?? "");
|
||||
data.SetExtendedTrackInformation(track, meta.track[track - firstAudio].extra ?? "");
|
||||
}
|
||||
else if (!TOC[track + 1].IsAudio)
|
||||
{
|
||||
data.SetTrackTitle(track, "[data track]");
|
||||
data.SetTrackArtist(track, meta.artist ?? "");
|
||||
data.SetExtendedTrackInformation(track, "");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -102,6 +110,7 @@ namespace MetadataPlugIn
|
||||
}
|
||||
data.SetTrackComposer(track, "");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (cover)
|
||||
|
||||
2
CUETools.CTDB.EACPlugin/Options.Designer.cs
generated
2
CUETools.CTDB.EACPlugin/Options.Designer.cs
generated
@@ -63,7 +63,7 @@ namespace AudioDataPlugIn
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(230, 34);
|
||||
this.label2.TabIndex = 1;
|
||||
this.label2.Text = "Copyright (c) 2011-12 Gregory S. Chudov";
|
||||
this.label2.Text = "Copyright (c) 2011-12 Grigory Chudov";
|
||||
//
|
||||
// linkLabel1
|
||||
//
|
||||
|
||||
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("CUETools.CTDB.EACPlugin")]
|
||||
[assembly: AssemblyCopyright("Copyright © Gregory S. Chudov 2012")]
|
||||
[assembly: AssemblyCopyright("Copyright © Grigory Chudov 2012")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
|
||||
@@ -6,6 +6,48 @@ namespace CUETools.CTDB
|
||||
[Serializable]
|
||||
public class CTDBResponseMeta
|
||||
{
|
||||
public CTDBResponseMeta()
|
||||
{
|
||||
}
|
||||
|
||||
public CTDBResponseMeta(CTDBResponseMeta src)
|
||||
{
|
||||
this.source = src.source;
|
||||
this.id = src.id;
|
||||
this.artist = src.artist;
|
||||
this.album = src.album;
|
||||
this.year = src.year;
|
||||
this.genre = src.genre;
|
||||
this.extra = src.extra;
|
||||
this.country = src.country;
|
||||
this.releasedate = src.releasedate;
|
||||
this.discnumber = src.discnumber;
|
||||
this.disccount = src.disccount;
|
||||
this.discname = src.discname;
|
||||
this.infourl = src.infourl;
|
||||
this.barcode = src.barcode;
|
||||
if (src.coverart != null)
|
||||
{
|
||||
this.coverart = new CTDBResponseMetaImage[src.coverart.Length];
|
||||
for (int i = 0; i < src.coverart.Length; i++)
|
||||
this.coverart[i] = new CTDBResponseMetaImage(src.coverart[i]);
|
||||
}
|
||||
|
||||
if (src.track != null)
|
||||
{
|
||||
this.track = new CTDBResponseMetaTrack[src.track.Length];
|
||||
for (int i = 0; i < src.track.Length; i++)
|
||||
this.track[i] = new CTDBResponseMetaTrack(src.track[i]);
|
||||
}
|
||||
|
||||
if (src.label != null)
|
||||
{
|
||||
this.label = new CTDBResponseMetaLabel[src.label.Length];
|
||||
for (int i = 0; i < src.label.Length; i++)
|
||||
this.label[i] = new CTDBResponseMetaLabel(src.label[i]);
|
||||
}
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public string source { get; set; }
|
||||
[XmlAttribute]
|
||||
|
||||
@@ -6,6 +6,19 @@ namespace CUETools.CTDB
|
||||
[Serializable]
|
||||
public class CTDBResponseMetaImage
|
||||
{
|
||||
public CTDBResponseMetaImage()
|
||||
{
|
||||
}
|
||||
|
||||
public CTDBResponseMetaImage(CTDBResponseMetaImage src)
|
||||
{
|
||||
this.uri = src.uri;
|
||||
this.uri150 = src.uri150;
|
||||
this.height = src.height;
|
||||
this.width = src.width;
|
||||
this.primary = src.primary;
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public string uri { get; set; }
|
||||
[XmlAttribute]
|
||||
|
||||
@@ -6,6 +6,16 @@ namespace CUETools.CTDB
|
||||
[Serializable]
|
||||
public class CTDBResponseMetaLabel
|
||||
{
|
||||
public CTDBResponseMetaLabel()
|
||||
{
|
||||
}
|
||||
|
||||
public CTDBResponseMetaLabel(CTDBResponseMetaLabel src)
|
||||
{
|
||||
this.name = src.name;
|
||||
this.catno = src.catno;
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public string name { get; set; }
|
||||
[XmlAttribute]
|
||||
|
||||
@@ -6,6 +6,17 @@ namespace CUETools.CTDB
|
||||
[Serializable]
|
||||
public class CTDBResponseMetaTrack
|
||||
{
|
||||
public CTDBResponseMetaTrack()
|
||||
{
|
||||
}
|
||||
|
||||
public CTDBResponseMetaTrack(CTDBResponseMetaTrack src)
|
||||
{
|
||||
this.name = src.name;
|
||||
this.artist = src.artist;
|
||||
this.extra = src.extra;
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public string name { get; set; }
|
||||
[XmlAttribute]
|
||||
|
||||
@@ -56,6 +56,11 @@ namespace CUETools.CTDB
|
||||
}
|
||||
}
|
||||
|
||||
public void ContactDB(bool ctdb, bool fuzzy, CTDBMetadataSearch metadataSearch)
|
||||
{
|
||||
this.ContactDB(this.urlbase.Substring(7), this.userAgent, this.driveName, ctdb, fuzzy, metadataSearch);
|
||||
}
|
||||
|
||||
public void ContactDB(string server, string userAgent, string driveName, bool ctdb, bool fuzzy, CTDBMetadataSearch metadataSearch)
|
||||
{
|
||||
this.driveName = driveName;
|
||||
@@ -80,6 +85,8 @@ namespace CUETools.CTDB
|
||||
if (uploadHelper.onProgress != null)
|
||||
uploadHelper.onProgress(this, new UploadProgressEventArgs(req.RequestUri.AbsoluteUri, 0));
|
||||
|
||||
this.entries = new List<DBEntry>();
|
||||
this.metadata = new List<CTDBResponseMeta>();
|
||||
currentReq = req;
|
||||
try
|
||||
{
|
||||
|
||||
@@ -5,7 +5,7 @@ using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using CUETools.Codecs;
|
||||
|
||||
//Copyright (c) 2008 Gregory S. Chudov.
|
||||
//Copyright (c) 2008 Grigory Chudov.
|
||||
//This library is based on ALAC decoder by David Hammerton.
|
||||
//See http://crazney.net/programs/itunes/alac.html for details.
|
||||
//Copyright (c) 2004 David Hammerton.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* CUETools.Codecs.ALAC: pure managed ALAC audio encoder
|
||||
* Copyright (c) 2009 Gregory S. Chudov
|
||||
* Copyright (c) 2009 Grigory Chudov
|
||||
* Based on ffdshow ALAC audio encoder
|
||||
* Copyright (c) 2008 Jaikrishnan Menon, realityman@gmx.net
|
||||
*
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* CUETools.Codecs.ALAC: pure managed ALAC audio encoder
|
||||
* Copyright (c) 2009 Gregory S. Chudov
|
||||
* Copyright (c) 2009 Grigory Chudov
|
||||
* Based on ffdshow ALAC audio encoder
|
||||
* Copyright (c) 2008 Jaikrishnan Menon, realityman@gmx.net
|
||||
*
|
||||
|
||||
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("CUETools.Codecs.ALAC")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2008-2010 Gregory S. Chudov")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2008-2010 Grigory Chudov")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* CUETools.FLACCL: FLAC audio encoder using CUDA
|
||||
* Copyright (c) 2009 Gregory S. Chudov
|
||||
* Copyright (c) 2009 Grigory Chudov
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
||||
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("CUETools.Codecs.FLACCL")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2009-2010 Gregory S. Chudov")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2009-2010 Grigory Chudov")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* CUETools.Flake: pure managed FLAC audio encoder
|
||||
* Copyright (c) 2009 Gregory S. Chudov
|
||||
* Copyright (c) 2009 Grigory Chudov
|
||||
* Based on Flake encoder, http://flake-enc.sourceforge.net/
|
||||
* Copyright (c) 2006-2009 Justin Ruggles
|
||||
*
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* CUETools.Flake: pure managed FLAC audio encoder
|
||||
* Copyright (c) 2009 Gregory S. Chudov
|
||||
* Copyright (c) 2009 Grigory Chudov
|
||||
* Based on Flake encoder, http://flake-enc.sourceforge.net/
|
||||
* Copyright (c) 2006-2009 Justin Ruggles
|
||||
*
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* CUETools.Flake: pure managed FLAC audio encoder
|
||||
* Copyright (c) 2009 Gregory S. Chudov
|
||||
* Copyright (c) 2009 Grigory Chudov
|
||||
* Based on Flake encoder, http://flake-enc.sourceforge.net/
|
||||
* Copyright (c) 2006-2009 Justin Ruggles
|
||||
*
|
||||
|
||||
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("CUETools.Codecs.FLAKE")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2008-2010 Gregory S. Chudov")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2008-2010 Grigory Chudov")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* CUETools.FlaCuda: FLAC audio encoder using CUDA
|
||||
* Copyright (c) 2009 Gregory S. Chudov
|
||||
* Copyright (c) 2009 Grigory Chudov
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
||||
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("CUETools.Codecs.FlaCuda")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2009-2010 Gregory S. Chudov")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2009-2010 Grigory Chudov")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("CUETools.Codecs")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2008-2010 Gregory S. Chudov")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2008-2010 Grigory Chudov")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("CUETools.Compression.Rar")]
|
||||
[assembly: AssemblyCopyright("Copyright © Gregory S. Chudov, Michael A. McCloskey")]
|
||||
[assembly: AssemblyCopyright("Copyright © Grigory Chudov, Michael A. McCloskey")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ using System.Threading;
|
||||
using CUETools.Compression;
|
||||
|
||||
|
||||
/* Author: Gregory S. Chudov
|
||||
/* Author: Grigory Chudov
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("CUETools.Compression.Zip")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2008-2010 Gregory S. Chudov")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2008-2010 Grigory Chudov")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("CUETools.Compression")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2008-2010 Gregory S. Chudov")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2008-2010 Grigory Chudov")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace CUETools.Converter
|
||||
{
|
||||
TextWriter stdout = Console.Out;
|
||||
Console.SetOut(Console.Error);
|
||||
Console.WriteLine("CUETools.Converter, Copyright (C) 2009 Gregory S. Chudov.");
|
||||
Console.WriteLine("CUETools.Converter, Copyright (C) 2009 Grigory Chudov.");
|
||||
Console.WriteLine("This is free software under the GNU GPLv3+ license; There is NO WARRANTY, to");
|
||||
Console.WriteLine("the extent permitted by law. <http://www.gnu.org/licenses/> for details.");
|
||||
if (args.Length < 2)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* CUETools.FLACCL: FLAC audio encoder using CUDA
|
||||
* Copyright (c) 2009 Gregory S. Chudov
|
||||
* Copyright (c) 2009 Grigory Chudov
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
@@ -198,7 +198,7 @@ namespace CUETools.FLACCL.cmd
|
||||
}
|
||||
if (!quiet)
|
||||
{
|
||||
Console.WriteLine("{0}, Copyright (C) 2010 Gregory S. Chudov.", FLACCLWriter.vendor_string);
|
||||
Console.WriteLine("{0}, Copyright (C) 2010 Grigory Chudov.", FLACCLWriter.vendor_string);
|
||||
Console.WriteLine("This is free software under the GNU GPLv3+ license; There is NO WARRANTY, to");
|
||||
Console.WriteLine("the extent permitted by law. <http://www.gnu.org/licenses/> for details.");
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("CUETools.FLACCL.cmd")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2008-2010 Gregory S. Chudov")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2008-2010 Grigory Chudov")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* CUETools.FlaCuda: FLAC audio encoder using CUDA
|
||||
* Copyright (c) 2009 Gregory S. Chudov
|
||||
* Copyright (c) 2009 Grigory Chudov
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
@@ -159,7 +159,7 @@ namespace CUETools.FlaCudaExe
|
||||
}
|
||||
if (!quiet)
|
||||
{
|
||||
Console.WriteLine("{0}, Copyright (C) 2009 Gregory S. Chudov.", FlaCudaWriter.vendor_string);
|
||||
Console.WriteLine("{0}, Copyright (C) 2009 Grigory Chudov.", FlaCudaWriter.vendor_string);
|
||||
Console.WriteLine("This is free software under the GNU GPLv3+ license; There is NO WARRANTY, to");
|
||||
Console.WriteLine("the extent permitted by law. <http://www.gnu.org/licenses/> for details.");
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("CUETools.FlaCudaExe")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2008-2010 Gregory S. Chudov")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2008-2010 Grigory Chudov")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
|
||||
@@ -154,7 +154,7 @@ namespace CUETools.FlakeExe
|
||||
|
||||
if (!quiet)
|
||||
{
|
||||
Console.WriteLine("CUETools.Flake, Copyright (C) 2009 Gregory S. Chudov.");
|
||||
Console.WriteLine("CUETools.Flake, Copyright (C) 2009 Grigory Chudov.");
|
||||
Console.WriteLine("Based on Flake encoder by Justin Ruggles, <http://flake-enc.sourceforge.net/>.");
|
||||
Console.WriteLine("This is free software under the GNU GPLv3+ license; There is NO WARRANTY, to");
|
||||
Console.WriteLine("the extent permitted by law. <http://www.gnu.org/licenses/> for details.");
|
||||
|
||||
@@ -40,7 +40,7 @@ namespace LossyWAVSharp
|
||||
{
|
||||
Console.SetOut(Console.Error);
|
||||
Console.WriteLine("LossyWAV {0}, Copyright (C) 2007,2008 Nick Currie, Copyleft.", LossyWAVWriter.version_string);
|
||||
Console.WriteLine("C# port Copyright (C) 2008 Gregory S. Chudov.");
|
||||
Console.WriteLine("C# port Copyright (C) 2008 Grigory Chudov.");
|
||||
Console.WriteLine("This is free software under the GNU GPLv3+ license; There is NO WARRANTY, to");
|
||||
Console.WriteLine("the extent permitted by law. <http://www.gnu.org/licenses/> for details.");
|
||||
if (args.Length < 1 || (args[0].StartsWith("-") && args[0] != "-"))
|
||||
|
||||
@@ -28,6 +28,7 @@ namespace CUETools.Processor
|
||||
public bool fixOffset;
|
||||
public bool noUnverifiedOutput;
|
||||
public bool autoCorrectFilenames;
|
||||
public bool detectGaps;
|
||||
public bool preserveHTOA;
|
||||
public bool keepOriginalFilenames;
|
||||
public string trackFilenameFormat;
|
||||
@@ -97,6 +98,7 @@ namespace CUETools.Processor
|
||||
|
||||
autoCorrectFilenames = true;
|
||||
preserveHTOA = true;
|
||||
detectGaps = true;
|
||||
keepOriginalFilenames = false;
|
||||
trackFilenameFormat = "%tracknumber%. %title%";
|
||||
singleFilenameFormat = "%filename%";
|
||||
@@ -262,6 +264,7 @@ return processor.Go();
|
||||
sw.Save("ArWriteLogOnVerify", writeArLogOnVerify);
|
||||
|
||||
sw.Save("PreserveHTOA", preserveHTOA);
|
||||
sw.Save("DetectGaps", detectGaps);
|
||||
sw.Save("AutoCorrectFilenames", autoCorrectFilenames);
|
||||
sw.Save("KeepOriginalFilenames", keepOriginalFilenames);
|
||||
sw.Save("SingleFilenameFormat", singleFilenameFormat);
|
||||
@@ -405,6 +408,7 @@ return processor.Go();
|
||||
writeArLogOnVerify = sr.LoadBoolean("ArWriteLogOnVerify") ?? false;
|
||||
|
||||
preserveHTOA = sr.LoadBoolean("PreserveHTOA") ?? true;
|
||||
detectGaps = sr.LoadBoolean("DetectGaps") ?? true;
|
||||
autoCorrectFilenames = sr.LoadBoolean("AutoCorrectFilenames") ?? true;
|
||||
keepOriginalFilenames = sr.LoadBoolean("KeepOriginalFilenames") ?? false;
|
||||
singleFilenameFormat = sr.Load("SingleFilenameFormat") ?? singleFilenameFormat;
|
||||
|
||||
@@ -260,10 +260,12 @@ namespace CUETools.Processor
|
||||
this.AlbumArt.AddRange(cdEntry.coverart);
|
||||
if (cdEntry.track != null && cdEntry.track.Length >= this.Tracks.Count)
|
||||
{
|
||||
if (cdEntry.track.Length - this.Tracks.Count != firstAudio)
|
||||
firstAudio = 0;
|
||||
for (int i = 0; i < this.Tracks.Count; i++)
|
||||
{
|
||||
this.Tracks[i].Title = cdEntry.track[i].name ?? "";
|
||||
this.Tracks[i].Artist = cdEntry.track[i].artist ?? cdEntry.artist ?? "";
|
||||
this.Tracks[i].Title = cdEntry.track[i + firstAudio].name ?? "";
|
||||
this.Tracks[i].Artist = cdEntry.track[i + firstAudio].artist ?? cdEntry.artist ?? "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -611,8 +611,88 @@ namespace CUETools.Processor
|
||||
ShowProgress(status, percent, null, null);
|
||||
}
|
||||
|
||||
public bool IsInLocalDB(string folder)
|
||||
{
|
||||
string norm = CUEToolsLocalDBEntry.NormalizePath(folder);
|
||||
if (norm.Length != 0 && norm[norm.Length - 1] != System.IO.Path.DirectorySeparatorChar) norm = norm + System.IO.Path.DirectorySeparatorChar;
|
||||
return _localDB.Find(item => item.InputPaths != null && item.InputPaths.Find(i => i.StartsWith(norm)) != null) != null;
|
||||
}
|
||||
|
||||
public void ScanLocalDB(string folder)
|
||||
{
|
||||
// Delete missing files
|
||||
string norm = CUEToolsLocalDBEntry.NormalizePath(folder);
|
||||
if (norm.Length != 0 && norm[norm.Length - 1] != System.IO.Path.DirectorySeparatorChar) norm = norm + System.IO.Path.DirectorySeparatorChar;
|
||||
|
||||
ReportProgress("Checking known files", 0.0);
|
||||
int oldi = 0, oldn = _localDB.Count;
|
||||
foreach (var item in _localDB.ToArray())
|
||||
{
|
||||
bool matches = false;
|
||||
oldi++;
|
||||
if (item.AudioPaths != null)
|
||||
{
|
||||
foreach (var f in item.AudioPaths)
|
||||
if (f.StartsWith(norm))
|
||||
{
|
||||
matches = true;
|
||||
CheckStop();
|
||||
if (!File.Exists(f))
|
||||
{
|
||||
_localDB.Remove(item);
|
||||
_localDB.Dirty = true;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (item.InputPaths != null)
|
||||
{
|
||||
foreach (var f in item.InputPaths.ToArray())
|
||||
if (f.StartsWith(norm))
|
||||
{
|
||||
CheckStop();
|
||||
ReportProgress("Checking " + f, (double)oldi / oldn);
|
||||
matches = true;
|
||||
if (!File.Exists(f))
|
||||
{
|
||||
item.InputPaths.Remove(f);
|
||||
_localDB.Dirty = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
var cueSheet = new CUESheet(_config);
|
||||
cueSheet.UseLocalDB(_localDB);
|
||||
try
|
||||
{
|
||||
cueSheet.Open(f);
|
||||
List<string> fullAudioPaths = cueSheet._sourcePaths == null ? null : cueSheet._sourcePaths.ConvertAll(p => CUEToolsLocalDBEntry.NormalizePath(p));
|
||||
if (!item.Equals(cueSheet._toc, fullAudioPaths))
|
||||
{
|
||||
item.InputPaths.Remove(f);
|
||||
_localDB.Dirty = true;
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
item.InputPaths.Remove(f);
|
||||
_localDB.Dirty = true;
|
||||
}
|
||||
cueSheet.Close();
|
||||
}
|
||||
}
|
||||
|
||||
if (matches && item.InputPaths.Count == 0)
|
||||
{
|
||||
_localDB.Remove(item);
|
||||
_localDB.Dirty = true;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Add new files
|
||||
ReportProgress("Scanning for new files", 0.0);
|
||||
var results = new List<string>();
|
||||
|
||||
int n = 2, j = 0;
|
||||
@@ -636,6 +716,7 @@ namespace CUETools.Processor
|
||||
results.AddRange(Directory.GetFiles(folder, "*." + fmt.Key, SearchOption.AllDirectories));
|
||||
}
|
||||
|
||||
ReportProgress("Checking new files", 0.0);
|
||||
int i = 0;
|
||||
foreach (var result in results)
|
||||
{
|
||||
@@ -1353,7 +1434,7 @@ namespace CUETools.Processor
|
||||
"Range.wav";
|
||||
|
||||
_hasHTOAFilename = (_sourcePaths.Count == (TrackCount + 1));
|
||||
_htoaFilename = _hasHTOAFilename ? Path.GetFileName(_sourcePaths[0]) : "01.00.wav";
|
||||
_htoaFilename = _hasHTOAFilename ? Path.GetFileName(_sourcePaths[0]) : "00.wav";
|
||||
|
||||
_hasTrackFilenames = !_hasEmbeddedCUESheet && !_hasSingleFilename && (_sourcePaths.Count == TrackCount || _hasHTOAFilename);
|
||||
for (i = 0; i < TrackCount; i++)
|
||||
@@ -1981,7 +2062,7 @@ namespace CUETools.Processor
|
||||
}
|
||||
else
|
||||
{
|
||||
string trackStr = htoa ? "01.00" : String.Format("{0:00}", iTrack + 1);
|
||||
string trackStr = htoa ? "00" : String.Format("{0:00}", iTrack + 1);
|
||||
string artist = Metadata.Tracks[htoa ? 0 : iTrack].Artist;
|
||||
string title = htoa ? "(HTOA)" : Metadata.Tracks[iTrack].Title;
|
||||
|
||||
@@ -2455,7 +2536,10 @@ namespace CUETools.Processor
|
||||
WriteAudioFilesPass(OutputDir, OutputStyle, destLengths, htoaToFile, _action == CUEAction.Verify);
|
||||
|
||||
if (isUsingCUEToolsDB && !isUsingCUEToolsDBFix)
|
||||
{
|
||||
if (_isCD) _CUEToolsDB.ContactDB(true, true, CTDBMetadataSearch.None);
|
||||
_CUEToolsDB.DoVerify();
|
||||
}
|
||||
|
||||
_processed = true;
|
||||
|
||||
@@ -3394,11 +3478,14 @@ namespace CUETools.Processor
|
||||
if (!_isCD)
|
||||
throw new Exception("not a CD");
|
||||
|
||||
try { _ripper.DetectGaps(); }
|
||||
catch (Exception ex)
|
||||
if (_config.detectGaps)
|
||||
{
|
||||
if (ex is StopException)
|
||||
throw ex;
|
||||
try { _ripper.DetectGaps(); }
|
||||
catch (Exception ex)
|
||||
{
|
||||
if (ex is StopException)
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
|
||||
if (!_ripper.GapsDetected)
|
||||
|
||||
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("CUETools.Processor")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2006-2007 Moitah, 2008-2010 Gregory S. Chudov")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2006-2007 Moitah, 2008-2010 Grigory Chudov")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// ****************************************************************************
|
||||
//
|
||||
// CUERipper
|
||||
// Copyright (C) 2008 Gregory S. Chudov (gchudov@gmail.com)
|
||||
// Copyright (C) 2008 Grigory Chudov (gchudov@gmail.com)
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
@@ -89,7 +89,7 @@ namespace CUETools.ConsoleRipper
|
||||
static void Main(string[] args)
|
||||
{
|
||||
Console.SetOut(Console.Error);
|
||||
Console.WriteLine("CUERipper v2.1.4 Copyright (C) 2008-10 Gregory S. Chudov");
|
||||
Console.WriteLine("CUERipper v2.1.4 Copyright (C) 2008-10 Grigory Chudov");
|
||||
Console.WriteLine("This is free software under the GNU GPLv3+ license; There is NO WARRANTY, to");
|
||||
Console.WriteLine("the extent permitted by law. <http://www.gnu.org/licenses/> for details.");
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Microsoft")]
|
||||
[assembly: AssemblyProduct("CUETools.ConsoleRipper")]
|
||||
[assembly: AssemblyCopyright("Copyright © Gregory S. Chudov 2008")]
|
||||
[assembly: AssemblyCopyright("Copyright © Grigory Chudov 2008")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("CUETools.Ripper.SCSI")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2008-2010 Gregory S. Chudov")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2008-2010 Grigory Chudov")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// ****************************************************************************
|
||||
//
|
||||
// CUERipper
|
||||
// Copyright (C) 2008 Gregory S. Chudov (gchudov@gmail.com)
|
||||
// Copyright (C) 2008 Grigory Chudov (gchudov@gmail.com)
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
@@ -282,8 +282,8 @@ namespace CUETools.Ripper.SCSI
|
||||
} else
|
||||
throw new ReadCDException(Resource1.NoAudio);
|
||||
|
||||
UserData = new long[MSECTORS, 2, 4 * 588];
|
||||
C2Count = new byte[MSECTORS, 294];
|
||||
UserData = new long[MSECTORS, 2, 4 * 588];
|
||||
C2Count = new byte[MSECTORS, 294];
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -711,7 +711,7 @@ namespace CUETools.Ripper.SCSI
|
||||
StringBuilder barcode = new StringBuilder();
|
||||
for (int i = 1; i < 8; i++)
|
||||
barcode.AppendFormat("{0:x2}", _subchannelBuffer[offs + i]);
|
||||
if (barcode.ToString() != "0000000000000")
|
||||
if (barcode.ToString(0, 13) != "0000000000000")
|
||||
_toc2.Barcode = barcode.ToString(0, 13);
|
||||
}
|
||||
}
|
||||
@@ -1211,7 +1211,7 @@ namespace CUETools.Ripper.SCSI
|
||||
{
|
||||
get
|
||||
{
|
||||
return "CUERipper v2.1.4 Copyright (C) 2008-10 Gregory S. Chudov";
|
||||
return "CUERipper v2.1.4 Copyright (C) 2008-12 Grigory Chudov";
|
||||
// ripper.GetName().Name + " " + ripper.GetName().Version;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("CUETools.Ripper")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2008-2010 Gregory S. Chudov")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2008-2010 Grigory Chudov")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
|
||||
@@ -170,6 +170,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CUETools.CLParity", "..\CUE
|
||||
EndProject
|
||||
Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "CUETools.CTDB.EACPlugin.Installer", "..\CUETools.CTDB.EACPlugin.Installer\CUETools.CTDB.EACPlugin.Installer.vdproj", "{0AC7691C-562A-4879-8A11-6C7890BF659B}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CUETools.CTDB.Converter", "..\CUETools.CTDB.Converter\CUETools.CTDB.Converter.csproj", "{F8C29953-A697-4462-82DC-DA7146654A64}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CUETools.AVX", "..\CUETools.AVX\CUETools.AVX.vcxproj", "{CC022842-F2E9-4016-82B8-65A264B642D5}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(TestCaseManagementSettings) = postSolution
|
||||
CategoryFile = CUETools1.vsmdi
|
||||
@@ -381,6 +385,7 @@ Global
|
||||
{8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Release|Win32.ActiveCfg = Release|Any CPU
|
||||
@@ -1050,6 +1055,34 @@ Global
|
||||
{0AC7691C-562A-4879-8A11-6C7890BF659B}.Release|Win32.ActiveCfg = Release
|
||||
{0AC7691C-562A-4879-8A11-6C7890BF659B}.Release|x64.ActiveCfg = Release
|
||||
{0AC7691C-562A-4879-8A11-6C7890BF659B}.Release|x86.ActiveCfg = Release
|
||||
{F8C29953-A697-4462-82DC-DA7146654A64}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{F8C29953-A697-4462-82DC-DA7146654A64}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F8C29953-A697-4462-82DC-DA7146654A64}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{F8C29953-A697-4462-82DC-DA7146654A64}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{F8C29953-A697-4462-82DC-DA7146654A64}.Debug|Win32.ActiveCfg = Debug|Any CPU
|
||||
{F8C29953-A697-4462-82DC-DA7146654A64}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{F8C29953-A697-4462-82DC-DA7146654A64}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{F8C29953-A697-4462-82DC-DA7146654A64}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F8C29953-A697-4462-82DC-DA7146654A64}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{F8C29953-A697-4462-82DC-DA7146654A64}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{F8C29953-A697-4462-82DC-DA7146654A64}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{F8C29953-A697-4462-82DC-DA7146654A64}.Release|Win32.ActiveCfg = Release|Any CPU
|
||||
{F8C29953-A697-4462-82DC-DA7146654A64}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{F8C29953-A697-4462-82DC-DA7146654A64}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{CC022842-F2E9-4016-82B8-65A264B642D5}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||
{CC022842-F2E9-4016-82B8-65A264B642D5}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{CC022842-F2E9-4016-82B8-65A264B642D5}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{CC022842-F2E9-4016-82B8-65A264B642D5}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{CC022842-F2E9-4016-82B8-65A264B642D5}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{CC022842-F2E9-4016-82B8-65A264B642D5}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
{CC022842-F2E9-4016-82B8-65A264B642D5}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{CC022842-F2E9-4016-82B8-65A264B642D5}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{CC022842-F2E9-4016-82B8-65A264B642D5}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{CC022842-F2E9-4016-82B8-65A264B642D5}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||
{CC022842-F2E9-4016-82B8-65A264B642D5}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{CC022842-F2E9-4016-82B8-65A264B642D5}.Release|Win32.Build.0 = Release|Win32
|
||||
{CC022842-F2E9-4016-82B8-65A264B642D5}.Release|x64.ActiveCfg = Release|x64
|
||||
{CC022842-F2E9-4016-82B8-65A264B642D5}.Release|x86.ActiveCfg = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
@@ -1073,6 +1106,7 @@ Global
|
||||
{1FCA8834-34E6-47CF-B53F-D8DF49F0819E} = {4B59E09C-A51F-4B80-91BE-987904DCEF7D}
|
||||
{FC4BCF9B-F4C7-41AD-8A16-2A90A082954A} = {4B59E09C-A51F-4B80-91BE-987904DCEF7D}
|
||||
{1FCA8834-34E6-47CF-B53F-D8DF35345363} = {4B59E09C-A51F-4B80-91BE-987904DCEF7D}
|
||||
{F8C29953-A697-4462-82DC-DA7146654A64} = {4B59E09C-A51F-4B80-91BE-987904DCEF7D}
|
||||
{8B179853-B7D6-479C-B8B2-6CBCE835D040} = {39A17A65-E893-44B8-A312-DDCDD990D9D1}
|
||||
{E70FA90A-7012-4A52-86B5-362B699D1540} = {39A17A65-E893-44B8-A312-DDCDD990D9D1}
|
||||
{9AE965C4-301E-4C01-B90F-297AF341ACC6} = {39A17A65-E893-44B8-A312-DDCDD990D9D1}
|
||||
|
||||
@@ -107,6 +107,34 @@ namespace JDP
|
||||
i.ARConfidence < 100 ? "< 100" :
|
||||
">=100",
|
||||
null));
|
||||
|
||||
this.Nodes.Add(new FileSystemTreeNodeLocalDBCategory(
|
||||
icon_mgr, this.Group, true, true, icon_mgr.GetIconIndex(".#ctdb"), "By CTDB Confidence",
|
||||
i =>
|
||||
i.CTDBVerificationDate == DateTime.MinValue ? "00" :
|
||||
i.CTDBConfidence == 0 ? "01" :
|
||||
i.CTDBConfidence == 1 ? "02" :
|
||||
i.CTDBConfidence == 2 ? "03" :
|
||||
i.CTDBConfidence == 3 ? "04" :
|
||||
i.CTDBConfidence < 5 ? "05" :
|
||||
i.CTDBConfidence < 10 ? "06" :
|
||||
i.CTDBConfidence < 20 ? "07" :
|
||||
i.CTDBConfidence < 50 ? "08" :
|
||||
i.CTDBConfidence < 100 ? "09" :
|
||||
"10",
|
||||
i =>
|
||||
i.CTDBVerificationDate == DateTime.MinValue ? "?" :
|
||||
i.CTDBConfidence == 0 ? "0" :
|
||||
i.CTDBConfidence == 1 ? "1" :
|
||||
i.CTDBConfidence == 2 ? "2" :
|
||||
i.CTDBConfidence == 3 ? "3" :
|
||||
i.CTDBConfidence < 5 ? "< 5" :
|
||||
i.CTDBConfidence < 10 ? "< 10" :
|
||||
i.CTDBConfidence < 20 ? "< 20" :
|
||||
i.CTDBConfidence < 50 ? "< 50" :
|
||||
i.CTDBConfidence < 100 ? "< 100" :
|
||||
">=100",
|
||||
null));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -270,7 +270,7 @@ hdcd.dll (c) Christopher Key</value>
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name="linkLabel3.Text" xml:space="preserve">
|
||||
<value>Copyright 2008-2012 Gregory S. Chudov, gchudov@gmail.com</value>
|
||||
<value>Copyright 2008-2012 Grigory Chudov, gchudov@gmail.com</value>
|
||||
</data>
|
||||
<data name="linkLabel3.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
|
||||
<value>MiddleCenter</value>
|
||||
|
||||
20
CUETools/frmCUETools.Designer.cs
generated
20
CUETools/frmCUETools.Designer.cs
generated
@@ -127,6 +127,8 @@ namespace JDP {
|
||||
this.addFolderToLocalDatabaseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.removeItemFromDatabaseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.backgroundWorkerAddToLocalDB = new System.ComponentModel.BackgroundWorker();
|
||||
this.updateLocalDatabaseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.locateInExplorerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripContainer1.BottomToolStripPanel.SuspendLayout();
|
||||
this.toolStripContainer1.ContentPanel.SuspendLayout();
|
||||
this.toolStripContainer1.TopToolStripPanel.SuspendLayout();
|
||||
@@ -997,7 +999,9 @@ namespace JDP {
|
||||
this.resetToOriginalLocationToolStripMenuItem,
|
||||
this.editMetadataToolStripMenuItem,
|
||||
this.addFolderToLocalDatabaseToolStripMenuItem,
|
||||
this.removeItemFromDatabaseToolStripMenuItem});
|
||||
this.removeItemFromDatabaseToolStripMenuItem,
|
||||
this.updateLocalDatabaseToolStripMenuItem,
|
||||
this.locateInExplorerToolStripMenuItem});
|
||||
this.contextMenuStripFileTree.Name = "contextMenuStripFileTree";
|
||||
resources.ApplyResources(this.contextMenuStripFileTree, "contextMenuStripFileTree");
|
||||
//
|
||||
@@ -1046,6 +1050,18 @@ namespace JDP {
|
||||
this.backgroundWorkerAddToLocalDB.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorkerAddToLocalDB_DoWork);
|
||||
this.backgroundWorkerAddToLocalDB.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorkerAddToLocalDB_RunWorkerCompleted);
|
||||
//
|
||||
// updateLocalDatabaseToolStripMenuItem
|
||||
//
|
||||
this.updateLocalDatabaseToolStripMenuItem.Name = "updateLocalDatabaseToolStripMenuItem";
|
||||
resources.ApplyResources(this.updateLocalDatabaseToolStripMenuItem, "updateLocalDatabaseToolStripMenuItem");
|
||||
this.updateLocalDatabaseToolStripMenuItem.Click += new System.EventHandler(this.updateLocalDatabaseToolStripMenuItem_Click);
|
||||
//
|
||||
// locateInExplorerToolStripMenuItem
|
||||
//
|
||||
this.locateInExplorerToolStripMenuItem.Name = "locateInExplorerToolStripMenuItem";
|
||||
resources.ApplyResources(this.locateInExplorerToolStripMenuItem, "locateInExplorerToolStripMenuItem");
|
||||
this.locateInExplorerToolStripMenuItem.Click += new System.EventHandler(this.locateInExplorerToolStripMenuItem_Click);
|
||||
//
|
||||
// frmCUETools
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
@@ -1203,6 +1219,8 @@ namespace JDP {
|
||||
private System.Windows.Forms.ToolStripMenuItem addFolderToLocalDatabaseToolStripMenuItem;
|
||||
private System.ComponentModel.BackgroundWorker backgroundWorkerAddToLocalDB;
|
||||
private System.Windows.Forms.ToolStripMenuItem removeItemFromDatabaseToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem updateLocalDatabaseToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem locateInExplorerToolStripMenuItem;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -68,6 +68,7 @@ namespace JDP
|
||||
m_icon_mgr.SetExtensionIcon(".#alarm_clock", global::JDP.Properties.Resources.alarm_clock);
|
||||
m_icon_mgr.SetExtensionIcon(".#calendar", global::JDP.Properties.Resources.calendar);
|
||||
m_icon_mgr.SetExtensionIcon(".#ar", global::JDP.Properties.Resources.AR);
|
||||
m_icon_mgr.SetExtensionIcon(".#ctdb", global::JDP.Properties.Resources.cdrepair);
|
||||
m_icon_mgr.SetExtensionIcon(".#images", global::JDP.Properties.Resources.images);
|
||||
m_icon_mgr.SetExtensionIcon(".#images_question", global::JDP.Properties.Resources.images_question);
|
||||
m_icon_mgr.SetExtensionIcon(".#pictures", global::JDP.Properties.Resources.pictures);
|
||||
@@ -1183,11 +1184,12 @@ namespace JDP
|
||||
|
||||
public void SetStatus(object sender, CUEToolsProgressEventArgs e)
|
||||
{
|
||||
if (e.percent == 0)
|
||||
_startedAt = DateTime.Now;
|
||||
this.BeginInvoke((MethodInvoker)delegate()
|
||||
{
|
||||
if (e.percent == 0)
|
||||
{
|
||||
_startedAt = DateTime.Now;
|
||||
toolStripStatusLabelProcessed.Visible = false;
|
||||
toolStripProgressBar2.ToolTipText = "";
|
||||
}
|
||||
@@ -2118,6 +2120,27 @@ namespace JDP
|
||||
return true;
|
||||
}
|
||||
|
||||
private void locateInExplorerToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
var node = contextMenuStripFileTree.Tag as CUEControls.FileSystemTreeNode;
|
||||
if (node is FileSystemTreeNodeLocalDBFolder)
|
||||
{
|
||||
foreach (var entry in (node as FileSystemTreeNodeLocalDBFolder).Group)
|
||||
if (entry.InputPaths != null && entry.InputPaths.Count > 0 && File.Exists(entry.InputPaths[0]))
|
||||
{
|
||||
System.Diagnostics.Process.Start("explorer.exe", "/select,\"" + entry.InputPaths[0] + "\"");
|
||||
}
|
||||
}
|
||||
if (node is FileSystemTreeNodeLocalDBEntry)
|
||||
{
|
||||
var entry = (node as FileSystemTreeNodeLocalDBEntry).Item;
|
||||
if (entry.InputPaths != null && entry.InputPaths.Count > 0 && File.Exists(entry.InputPaths[0]))
|
||||
{
|
||||
System.Diagnostics.Process.Start("explorer.exe", "/select,\"" + entry.InputPaths[0] + "\"");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setAsMyMusicFolderToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
var node = (contextMenuStripFileTree.Tag as CUEControls.FileSystemTreeNode);
|
||||
@@ -2162,6 +2185,15 @@ namespace JDP
|
||||
backgroundWorkerAddToLocalDB.RunWorkerAsync(node.Path);
|
||||
}
|
||||
|
||||
private void updateLocalDatabaseToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
var node = contextMenuStripFileTree.Tag as CUEControls.FileSystemTreeNode;
|
||||
if (node == null || node.Path == null)
|
||||
return;
|
||||
SetupControls(true);
|
||||
backgroundWorkerAddToLocalDB.RunWorkerAsync(node.Path);
|
||||
}
|
||||
|
||||
private void SaveDatabase()
|
||||
{
|
||||
SetStatus(this, new CUEToolsProgressEventArgs() { status = "Saving local database..." });
|
||||
@@ -2251,12 +2283,19 @@ namespace JDP
|
||||
setAsMyMusicFolderToolStripMenuItem.Visible = false;
|
||||
editMetadataToolStripMenuItem.Visible = false;
|
||||
addFolderToLocalDatabaseToolStripMenuItem.Visible = false;
|
||||
updateLocalDatabaseToolStripMenuItem.Visible = false;
|
||||
removeItemFromDatabaseToolStripMenuItem.Visible = false;
|
||||
locateInExplorerToolStripMenuItem.Visible = false;
|
||||
if (info.Node is CUEControls.FileSystemTreeNodeFileSystemInfo && (info.Node as CUEControls.FileSystemTreeNodeFileSystemInfo).File is DirectoryInfo)
|
||||
{
|
||||
setAsMyMusicFolderToolStripMenuItem.Visible = true;
|
||||
setAsMyMusicFolderToolStripMenuItem.Image = m_icon_mgr.ImageList.Images[m_icon_mgr.GetIconIndex(CUEControls.ExtraSpecialFolder.MyMusic, true)];
|
||||
addFolderToLocalDatabaseToolStripMenuItem.Visible = true;
|
||||
|
||||
string norm = CUEToolsLocalDBEntry.NormalizePath(((info.Node as CUEControls.FileSystemTreeNodeFileSystemInfo).File as DirectoryInfo).FullName);
|
||||
if (norm.Length != 0 && norm[norm.Length - 1] != System.IO.Path.DirectorySeparatorChar) norm = norm + System.IO.Path.DirectorySeparatorChar;
|
||||
bool hasPath = _localDB.Find(item => item.InputPaths != null && item.InputPaths.Find(i => i.StartsWith(norm)) != null) != null;
|
||||
addFolderToLocalDatabaseToolStripMenuItem.Visible = !hasPath;
|
||||
updateLocalDatabaseToolStripMenuItem.Visible = hasPath;
|
||||
}
|
||||
else if (info.Node is CUEControls.FileSystemTreeNodeSpecialFolder && (info.Node as CUEControls.FileSystemTreeNodeSpecialFolder).Folder == CUEControls.ExtraSpecialFolder.MyMusic)
|
||||
{
|
||||
@@ -2264,10 +2303,12 @@ namespace JDP
|
||||
}
|
||||
else if (info.Node is FileSystemTreeNodeLocalDBCollision)
|
||||
{
|
||||
locateInExplorerToolStripMenuItem.Visible = true;
|
||||
editMetadataToolStripMenuItem.Visible = true;
|
||||
}
|
||||
else if (info.Node as FileSystemTreeNodeLocalDBEntry != null)
|
||||
{
|
||||
locateInExplorerToolStripMenuItem.Visible = true;
|
||||
editMetadataToolStripMenuItem.Visible = true;
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user