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:
chudov
2012-04-08 23:54:36 +00:00
parent bfd65f3152
commit 7f07eff0a5
56 changed files with 1752 additions and 860 deletions

View File

@@ -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("")]

View File

@@ -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("")]

View File

@@ -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; } }

View File

@@ -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();

View File

@@ -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");

View File

@@ -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("")]

View File

@@ -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("")]

View File

@@ -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("")]

View File

@@ -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);
}
}

View File

@@ -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)

View File

@@ -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
//

View File

@@ -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("")]

View File

@@ -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]

View File

@@ -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]

View File

@@ -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]

View File

@@ -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]

View File

@@ -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
{

View File

@@ -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.

View File

@@ -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
*

View File

@@ -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
*

View File

@@ -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("")]

View File

@@ -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

View File

@@ -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("")]

View File

@@ -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
*

View File

@@ -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
*

View File

@@ -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
*

View File

@@ -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("")]

View File

@@ -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

View File

@@ -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("")]

View File

@@ -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("")]

View File

@@ -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("")]

View File

@@ -6,7 +6,7 @@ using System.Threading;
using CUETools.Compression;
/* Author: Gregory S. Chudov
/* Author: Grigory Chudov
*
*/

View File

@@ -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("")]

View File

@@ -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("")]

View File

@@ -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)

View File

@@ -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.");
}

View File

@@ -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("")]

View File

@@ -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.");
}

View File

@@ -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("")]

View File

@@ -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.");

View File

@@ -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] != "-"))

View File

@@ -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;

View File

@@ -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 ?? "";
}
}
}

View File

@@ -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)

View File

@@ -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("")]

View File

@@ -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.");

View File

@@ -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("")]

View File

@@ -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("")]

View File

@@ -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;
}
}

View File

@@ -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("")]

View File

@@ -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}

View File

@@ -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));
}
}
}

View File

@@ -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>

View File

@@ -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;
}
}

View File

@@ -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