CUETools: fix profiles

This commit is contained in:
Grigory Chudov
2014-11-30 18:31:07 -05:00
parent cc3d921b8d
commit c671f200df
7 changed files with 132 additions and 10 deletions

View File

@@ -15,6 +15,19 @@ namespace CUETools.Codecs
public CUEToolsUDCList encoders;
public CUEToolsUDCList decoders;
public CUEToolsCodecsConfig(CUEToolsCodecsConfig src)
{
encoders = new CUEToolsUDCList(true);
foreach (var enc in src.encoders)
encoders.Add(enc.Clone());
decoders = new CUEToolsUDCList(false);
foreach (var dec in src.decoders)
decoders.Add(dec.Clone());
formats = new Dictionary<string, CUEToolsFormat>();
foreach (var fmt in src.formats)
formats.Add(fmt.Key, fmt.Value.Clone(this));
}
public CUEToolsCodecsConfig(List<Type> encs, List<Type> decs)
{
encoders = new CUEToolsUDCList(true);

View File

@@ -30,10 +30,21 @@
return "." + extension;
}
}
public CUEToolsFormat Clone(CUEToolsCodecsConfig cfg)
{
var res = this.MemberwiseClone() as CUEToolsFormat;
if (decoder != null) cfg.decoders.TryGetValue(decoder.extension, decoder.lossless, decoder.name, out res.decoder);
if (encoderLossy != null) cfg.encoders.TryGetValue(encoderLossy.extension, encoderLossy.lossless, encoderLossy.name, out res.encoderLossy);
if (encoderLossless != null) cfg.encoders.TryGetValue(encoderLossless.extension, encoderLossless.lossless, encoderLossless.name, out res.encoderLossless);
return res;
}
public override string ToString()
{
return extension;
}
public string extension;
public CUEToolsUDC encoderLossless;
public CUEToolsUDC encoderLossy;

View File

@@ -81,6 +81,13 @@ namespace CUETools.Codecs
type = dectype;
}
public CUEToolsUDC Clone()
{
var res = this.MemberwiseClone() as CUEToolsUDC;
if (settings != null) res.settings = settings.Clone();
return res;
}
public override string ToString()
{
return name;

View File

@@ -162,6 +162,87 @@ namespace CUETools.Processor
defaultEncodeScript = "default";
}
public CUEConfig(CUEConfig src)
: base(src)
{
fixOffsetMinimumConfidence = src.fixOffsetMinimumConfidence;
fixOffsetMinimumTracksPercent = src.fixOffsetMinimumTracksPercent;
encodeWhenConfidence = src.encodeWhenConfidence;
encodeWhenPercent = src.encodeWhenPercent;
encodeWhenZeroOffset = src.encodeWhenZeroOffset;
fixOffset = src.fixOffset;
noUnverifiedOutput = src.noUnverifiedOutput;
writeArTagsOnEncode = src.writeArTagsOnEncode;
writeArLogOnConvert = src.writeArLogOnConvert;
writeArTagsOnVerify = src.writeArTagsOnVerify;
writeArLogOnVerify = src.writeArLogOnVerify;
autoCorrectFilenames = src.autoCorrectFilenames;
preserveHTOA = src.preserveHTOA;
detectGaps = src.detectGaps;
keepOriginalFilenames = src.keepOriginalFilenames;
trackFilenameFormat = src.trackFilenameFormat;
singleFilenameFormat = src.singleFilenameFormat;
removeSpecial = src.removeSpecial;
specialExceptions = src.specialExceptions;
replaceSpaces = src.replaceSpaces;
embedLog = src.embedLog;
extractLog = src.extractLog;
fillUpCUE = src.fillUpCUE;
overwriteCUEData = src.overwriteCUEData;
filenamesANSISafe = src.filenamesANSISafe;
bruteForceDTL = src.bruteForceDTL;
createEACLOG = src.createEACLOG;
detectHDCD = src.detectHDCD;
wait750FramesForHDCD = src.wait750FramesForHDCD;
decodeHDCD = src.decodeHDCD;
createM3U = src.createM3U;
createCUEFileWhenEmbedded = src.createCUEFileWhenEmbedded;
truncate4608ExtraSamples = src.truncate4608ExtraSamples;
decodeHDCDtoLW16 = src.decodeHDCDtoLW16;
decodeHDCDto24bit = src.decodeHDCDto24bit;
oneInstance = src.oneInstance;
checkForUpdates = src.checkForUpdates;
writeBasicTagsFromCUEData = src.writeBasicTagsFromCUEData;
copyBasicTags = src.copyBasicTags;
copyUnknownTags = src.copyUnknownTags;
CopyAlbumArt = src.CopyAlbumArt;
embedAlbumArt = src.embedAlbumArt;
extractAlbumArt = src.extractAlbumArt;
maxAlbumArtSize = src.maxAlbumArtSize;
arLogToSourceFolder = src.arLogToSourceFolder;
arLogVerbose = src.arLogVerbose;
fixOffsetToNearest = src.fixOffsetToNearest;
ArLogFilenameFormat = src.ArLogFilenameFormat;
AlArtFilenameFormat = src.AlArtFilenameFormat;
separateDecodingThread = src.separateDecodingThread;
gapsHandling = src.gapsHandling;
advanced = new CUEConfigAdvanced(src.advanced);
language = src.language;
scripts = new Dictionary<string, CUEToolsScript>();
scripts.Add("default", new CUEToolsScript("default",
new CUEAction[] { CUEAction.Verify, CUEAction.Encode }));
scripts.Add("only if found", new CUEToolsScript("only if found",
new CUEAction[] { CUEAction.Verify }));
scripts.Add("fix offset", new CUEToolsScript("fix offset",
new CUEAction[] { CUEAction.Encode }));
scripts.Add("encode if verified", new CUEToolsScript("encode if verified",
new CUEAction[] { CUEAction.Encode }));
scripts.Add("repair", new CUEToolsScript("repair",
new CUEAction[] { CUEAction.Encode }));
defaultVerifyScript = src.defaultVerifyScript;
defaultEncodeScript = src.defaultEncodeScript;
}
public void Save(SettingsWriter sw)
{
sw.Save("Version", 204);

View File

@@ -30,6 +30,15 @@ namespace CUETools.Processor
}
}
public CUEConfigAdvanced(CUEConfigAdvanced src)
{
// Iterate through each property and call SetValue()
foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(this))
{
property.SetValue(this, property.GetValue(src));
}
}
internal static XmlSerializer serializer = new XmlSerializer(typeof(CUEConfigAdvanced));
[DefaultValue("i"), Category("Freedb"), DisplayName("Email user")]
public string FreedbUser { get; set; }

View File

@@ -24,6 +24,14 @@ namespace CUETools.Processor
}
}
public CUEToolsProfile Clone(string name)
{
var res = this.MemberwiseClone() as CUEToolsProfile;
res._config = new CUEConfig(_config);
res._name = string.Copy(name);
return res;
}
public void Load(SettingsReader sr)
{
_config.Load(sr);

View File

@@ -1360,10 +1360,6 @@ namespace JDP
_profile = new CUEToolsProfile(profileName);
SettingsReader sr = new SettingsReader("CUE Tools", string.Format("profile-{0}.txt", _profile._name), Application.ExecutablePath);
_profile.Load(sr);
_profile._config.encoders = _defaultProfile._config.encoders;
_profile._config.decoders = _defaultProfile._config.decoders;
_profile._config.formats = _defaultProfile._config.formats;
_profile._config.scripts = _defaultProfile._config.scripts;
ActivateProfile();
}
@@ -1373,10 +1369,6 @@ namespace JDP
if (_profile != _defaultProfile)
{
_defaultProfile._config.encoders = _profile._config.encoders;
_defaultProfile._config.decoders = _profile._config.decoders;
_defaultProfile._config.formats = _profile._config.formats;
_defaultProfile._config.scripts = _profile._config.scripts;
_profile = _defaultProfile;
ActivateProfile();
}
@@ -2551,8 +2543,9 @@ namespace JDP
e.SuppressKeyPress = true;
string profileName = item.Text;
DeactivateProfile();
_profile = new CUEToolsProfile(profileName);
SaveProfile();
//DeactivateProfile();
_profile = _profile.Clone(profileName);
ActivateProfile();
}