mirror of
https://github.com/claunia/cuetools.net.git
synced 2025-12-16 18:14:25 +00:00
2.0.2
This commit is contained in:
@@ -5,25 +5,40 @@ using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using CUETools.Processor;
|
||||
using CUEControls;
|
||||
|
||||
namespace JDP {
|
||||
public partial class frmSettings : Form {
|
||||
bool _reducePriority;
|
||||
CUEConfig _config;
|
||||
private ShellIconMgr m_icon_mgr;
|
||||
|
||||
public frmSettings() {
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public ShellIconMgr IconMgr
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_icon_mgr;
|
||||
}
|
||||
set
|
||||
{
|
||||
m_icon_mgr = value;
|
||||
}
|
||||
}
|
||||
|
||||
private void frmSettings_Load(object sender, EventArgs e) {
|
||||
chkReducePriority.Checked = _reducePriority;
|
||||
chkPreserveHTOA.Checked = _config.preserveHTOA;
|
||||
chkAutoCorrectFilenames.Checked = _config.autoCorrectFilenames;
|
||||
numericFLACCompressionLevel.Value = _config.flacCompressionLevel;
|
||||
numFixWhenConfidence.Value = _config.fixWhenConfidence;
|
||||
numFixWhenPercent.Value = _config.fixWhenPercent;
|
||||
numFixWhenConfidence.Value = _config.fixOffsetMinimumConfidence;
|
||||
numFixWhenPercent.Value = _config.fixOffsetMinimumTracksPercent;
|
||||
numEncodeWhenConfidence.Value = _config.encodeWhenConfidence;
|
||||
numEncodeWhenPercent.Value = _config.encodeWhenPercent;
|
||||
chkEncodeWhenZeroOffset.Checked = _config.encodeWhenZeroOffset;
|
||||
@@ -53,8 +68,6 @@ namespace JDP {
|
||||
chkReplaceSpaces.Checked = _config.replaceSpaces;
|
||||
chkWriteArLogOnConvert.Checked = _config.writeArLogOnConvert;
|
||||
chkWriteARLogOnVerify.Checked = _config.writeArLogOnVerify;
|
||||
chkArNoUnverifiedAudio.Checked = _config.noUnverifiedOutput;
|
||||
chkArFixOffset.Checked = _config.fixOffset;
|
||||
chkEmbedLog.Checked = _config.embedLog;
|
||||
chkExtractLog.Checked = _config.extractLog;
|
||||
chkFillUpCUE.Checked = _config.fillUpCUE;
|
||||
@@ -69,15 +82,17 @@ namespace JDP {
|
||||
chkHDCDLW16.Checked = _config.decodeHDCDtoLW16;
|
||||
chkHDCD24bit.Checked = _config.decodeHDCDto24bit;
|
||||
chkOverwriteTags.Checked = _config.overwriteCUEData;
|
||||
chkSingleInstance.Checked = _config.oneInstance;
|
||||
|
||||
textUDC1Extension.Text = _config.udc1Extension;
|
||||
textUDC1Decoder.Text = _config.udc1Decoder;
|
||||
textUDC1Params.Text = _config.udc1Params;
|
||||
textUDC1Encoder.Text = _config.udc1Encoder;
|
||||
textUDC1EncParams.Text = _config.udc1EncParams;
|
||||
chkUDC1APEv2.Checked = _config.udc1APEv2;
|
||||
chkUDC1ID3v2.Checked = _config.udc1ID3v2;
|
||||
chkAllowMultipleInstances.Checked = !_config.oneInstance;
|
||||
checkBoxWriteCUETags.Checked = _config.writeBasicTagsFromCUEData;
|
||||
checkBoxCopyBasicTags.Checked = _config.copyBasicTags;
|
||||
checkBoxCopyUnknownTags.Checked = _config.copyUnknownTags;
|
||||
checkBoxCopyAlbumArt.Checked = _config.copyAlbumArt;
|
||||
checkBoxEmbedAlbumArt.Checked = _config.embedAlbumArt;
|
||||
checkBoxARVerifyUseSourceFolder.Checked = _config.arLogToSourceFolder;
|
||||
checkBoxARLogVerbose.Checked = _config.arLogVerbose;
|
||||
checkBoxFixToNearest.Checked = _config.fixOffsetToNearest;
|
||||
textBoxARLogExtension.Text = _config.arLogExtension;
|
||||
numericUpDownMaxResolution.Value = _config.maxAlbumArtSize;
|
||||
|
||||
string[] cultures = { "en-US", "de-DE", "ru-RU" };
|
||||
foreach (string culture in cultures)
|
||||
@@ -96,9 +111,59 @@ namespace JDP {
|
||||
if (comboLanguage.SelectedItem == null)
|
||||
comboLanguage.SelectedItem = comboLanguage.Items[0];
|
||||
|
||||
foreach (KeyValuePair<string, CUEToolsUDC> encoder in _config.encoders)
|
||||
{
|
||||
ListViewItem item = new ListViewItem(encoder.Key);
|
||||
item.Tag = encoder.Value;
|
||||
listViewEncoders.Items.Add(item);
|
||||
}
|
||||
//listViewEncoders.Items[0].Selected = true;
|
||||
foreach (KeyValuePair<string, CUEToolsUDC> decoder in _config.decoders)
|
||||
if (decoder.Value.path != null)
|
||||
{
|
||||
ListViewItem item = new ListViewItem(decoder.Key);
|
||||
item.Tag = decoder.Value;
|
||||
listViewDecoders.Items.Add(item);
|
||||
}
|
||||
//listViewDecoders.Items[0].Selected = true;
|
||||
listViewFormats.SmallImageList = m_icon_mgr.ImageList;
|
||||
labelEncoderExtension.ImageList = m_icon_mgr.ImageList;
|
||||
labelDecoderExtension.ImageList = m_icon_mgr.ImageList;
|
||||
foreach (KeyValuePair<string, CUEToolsFormat> format in _config.formats)
|
||||
{
|
||||
ListViewItem item = new ListViewItem(format.Key, "." + format.Key);
|
||||
item.Tag = format.Value;
|
||||
listViewFormats.Items.Add(item);
|
||||
comboBoxEncoderExtension.Items.Add(format.Key);
|
||||
comboBoxDecoderExtension.Items.Add(format.Key);
|
||||
}
|
||||
//listViewFormats.Items[0].Selected = true;
|
||||
comboBoxFormatTagger.Items.Add(CUEToolsTagger.TagLibSharp);
|
||||
comboBoxFormatTagger.Items.Add(CUEToolsTagger.APEv2);
|
||||
comboBoxFormatTagger.Items.Add(CUEToolsTagger.ID3v2);
|
||||
foreach (KeyValuePair<string, CUEToolsScript> script in _config.scripts)
|
||||
{
|
||||
ListViewItem item = new ListViewItem(script.Key);
|
||||
item.Tag = script.Value;
|
||||
listViewScripts.Items.Add(item);
|
||||
}
|
||||
listViewScriptConditions.Items[0].Tag = CUEAction.Verify;
|
||||
listViewScriptConditions.Items[1].Tag = CUEAction.VerifyAndConvert;
|
||||
listViewScriptConditions.Items[2].Tag = CUEAction.Convert;
|
||||
|
||||
EnableDisable();
|
||||
}
|
||||
|
||||
//private void DictionaryToListView(IDictionary<> dict, ListView view)
|
||||
//{
|
||||
// foreach (KeyValuePair<string, object> format in dict)
|
||||
// {
|
||||
// ListViewItem item = new ListViewItem(format.Key, format.Key);
|
||||
// item.Tag = format.Value;
|
||||
// listViewFormats.Items.Add(item);
|
||||
// }
|
||||
//}
|
||||
|
||||
private void frmSettings_FormClosing(object sender, FormClosingEventArgs e) {
|
||||
}
|
||||
|
||||
@@ -119,13 +184,22 @@ namespace JDP {
|
||||
|
||||
private void btnOK_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (listViewFormats.SelectedIndices.Count > 0)
|
||||
listViewFormats.Items[listViewFormats.SelectedIndices[0]].Selected = false;
|
||||
if (listViewEncoders.SelectedIndices.Count > 0)
|
||||
listViewEncoders.Items[listViewEncoders.SelectedIndices[0]].Selected = false;
|
||||
if (listViewDecoders.SelectedIndices.Count > 0)
|
||||
listViewDecoders.Items[listViewDecoders.SelectedIndices[0]].Selected = false;
|
||||
if (listViewScripts.SelectedItems.Count > 0)
|
||||
listViewScripts.SelectedItems[0].Selected = false;
|
||||
|
||||
_reducePriority = chkReducePriority.Checked;
|
||||
_config.preserveHTOA = chkPreserveHTOA.Checked;
|
||||
_config.autoCorrectFilenames = chkAutoCorrectFilenames.Checked;
|
||||
_config.flacCompressionLevel = (uint)numericFLACCompressionLevel.Value;
|
||||
_config.lossyWAVQuality = (int)numericLossyWAVQuality.Value;
|
||||
_config.fixWhenPercent = (uint)numFixWhenPercent.Value;
|
||||
_config.fixWhenConfidence = (uint)numFixWhenConfidence.Value;
|
||||
_config.fixOffsetMinimumTracksPercent = (uint)numFixWhenPercent.Value;
|
||||
_config.fixOffsetMinimumConfidence = (uint)numFixWhenConfidence.Value;
|
||||
_config.encodeWhenPercent = (uint)numEncodeWhenPercent.Value;
|
||||
_config.encodeWhenConfidence = (uint)numEncodeWhenConfidence.Value;
|
||||
_config.encodeWhenZeroOffset = chkEncodeWhenZeroOffset.Checked;
|
||||
@@ -152,8 +226,6 @@ namespace JDP {
|
||||
_config.replaceSpaces = chkReplaceSpaces.Checked;
|
||||
_config.writeArLogOnConvert = chkWriteArLogOnConvert.Checked;
|
||||
_config.writeArLogOnVerify = chkWriteARLogOnVerify.Checked;
|
||||
_config.noUnverifiedOutput = chkArNoUnverifiedAudio.Checked;
|
||||
_config.fixOffset = chkArFixOffset.Checked;
|
||||
_config.embedLog = chkEmbedLog.Checked;
|
||||
_config.extractLog = chkExtractLog.Checked;
|
||||
_config.fillUpCUE = chkFillUpCUE.Checked;
|
||||
@@ -167,30 +239,24 @@ namespace JDP {
|
||||
_config.decodeHDCDtoLW16 = chkHDCDLW16.Checked;
|
||||
_config.decodeHDCDto24bit = chkHDCD24bit.Checked;
|
||||
_config.overwriteCUEData = chkOverwriteTags.Checked;
|
||||
_config.oneInstance = chkSingleInstance.Checked;
|
||||
_config.oneInstance = !chkAllowMultipleInstances.Checked;
|
||||
_config.writeBasicTagsFromCUEData = checkBoxWriteCUETags.Checked ;
|
||||
_config.copyBasicTags = checkBoxCopyBasicTags.Checked;
|
||||
_config.copyUnknownTags = checkBoxCopyUnknownTags.Checked;
|
||||
_config.copyAlbumArt = checkBoxCopyAlbumArt.Checked;
|
||||
_config.embedAlbumArt = checkBoxEmbedAlbumArt.Checked;
|
||||
|
||||
_config.udc1Extension = textUDC1Extension.Text;
|
||||
_config.udc1Decoder = textUDC1Decoder.Text;
|
||||
_config.udc1Params = textUDC1Params.Text;
|
||||
_config.udc1Encoder = textUDC1Encoder.Text;
|
||||
_config.udc1EncParams = textUDC1EncParams.Text;
|
||||
_config.udc1APEv2 = chkUDC1APEv2.Checked;
|
||||
_config.udc1ID3v2 = chkUDC1ID3v2.Checked;
|
||||
_config.arLogToSourceFolder = checkBoxARVerifyUseSourceFolder.Checked;
|
||||
_config.arLogVerbose = checkBoxARLogVerbose.Checked;
|
||||
_config.fixOffsetToNearest = checkBoxFixToNearest.Checked;
|
||||
_config.arLogExtension = textBoxARLogExtension.Text;
|
||||
_config.maxAlbumArtSize = (int) numericUpDownMaxResolution.Value;
|
||||
|
||||
_config.language = ((CultureInfo)comboLanguage.SelectedItem).Name;
|
||||
}
|
||||
|
||||
private void EnableDisable()
|
||||
{
|
||||
numFixWhenConfidence.Enabled =
|
||||
labelFixWhenConfidence.Enabled =
|
||||
numFixWhenPercent.Enabled = chkArFixOffset.Checked;
|
||||
|
||||
numEncodeWhenConfidence.Enabled =
|
||||
labelEncodeWhenConfidence.Enabled =
|
||||
numEncodeWhenPercent.Enabled =
|
||||
chkEncodeWhenZeroOffset.Enabled = chkArNoUnverifiedAudio.Checked;
|
||||
|
||||
grpHDCD.Enabled = chkHDCDDetect.Checked;
|
||||
chkHDCDLW16.Enabled = chkHDCDDetect.Checked && chkHDCDDecode.Checked;
|
||||
chkHDCD24bit.Enabled = chkHDCDDetect.Checked && chkHDCDDecode.Checked;
|
||||
@@ -239,5 +305,605 @@ namespace JDP {
|
||||
{
|
||||
EnableDisable();
|
||||
}
|
||||
|
||||
private void tabControl1_Deselecting(object sender, TabControlCancelEventArgs e)
|
||||
{
|
||||
if (listViewFormats.SelectedItems.Count > 0)
|
||||
listViewFormats.SelectedItems[0].Selected = false;
|
||||
if (listViewEncoders.SelectedItems.Count > 0)
|
||||
listViewEncoders.SelectedItems[0].Selected = false;
|
||||
if (listViewDecoders.SelectedItems.Count > 0)
|
||||
listViewDecoders.SelectedItems[0].Selected = false;
|
||||
if (listViewScripts.SelectedItems.Count > 0)
|
||||
listViewScripts.SelectedItems[0].Selected = false;
|
||||
}
|
||||
|
||||
private void listViewFormats_BeforeLabelEdit(object sender, LabelEditEventArgs e)
|
||||
{
|
||||
CUEToolsFormat format = (CUEToolsFormat)listViewFormats.Items[e.Item].Tag;
|
||||
if (format.builtin)
|
||||
e.CancelEdit = true;
|
||||
}
|
||||
|
||||
private void listViewFormats_AfterLabelEdit(object sender, LabelEditEventArgs e)
|
||||
{
|
||||
CUEToolsFormat format;
|
||||
if (e.Label == null || _config.formats.TryGetValue(e.Label, out format))
|
||||
{
|
||||
e.CancelEdit = true;
|
||||
return;
|
||||
}
|
||||
format = (CUEToolsFormat)listViewFormats.Items[e.Item].Tag;
|
||||
if (format.builtin)
|
||||
{
|
||||
e.CancelEdit = true;
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (KeyValuePair<string, CUEToolsUDC> encoder in _config.encoders)
|
||||
if (encoder.Value.extension == format.extension)
|
||||
encoder.Value.extension = e.Label;
|
||||
|
||||
foreach (KeyValuePair<string, CUEToolsUDC> decoder in _config.decoders)
|
||||
if (decoder.Value.extension == format.extension)
|
||||
decoder.Value.extension = e.Label;
|
||||
|
||||
comboBoxEncoderExtension.Items.Remove(format.extension);
|
||||
comboBoxEncoderExtension.Items.Add(e.Label);
|
||||
comboBoxDecoderExtension.Items.Remove(format.extension);
|
||||
comboBoxDecoderExtension.Items.Add(e.Label);
|
||||
|
||||
_config.formats.Remove(format.extension);
|
||||
format.extension = e.Label;
|
||||
_config.formats.Add(format.extension, format);
|
||||
}
|
||||
|
||||
private void listViewFormats_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
switch (e.KeyCode)
|
||||
{
|
||||
case Keys.Insert:
|
||||
{
|
||||
CUEToolsFormat format;
|
||||
if (_config.formats.TryGetValue("new", out format))
|
||||
return;
|
||||
format = new CUEToolsFormat("new", CUEToolsTagger.TagLibSharp, true, true, false, false, false, null, null, null);
|
||||
_config.formats.Add("new", format);
|
||||
ListViewItem item = new ListViewItem(format.extension, "." + format.extension);
|
||||
item.Tag = format;
|
||||
listViewFormats.Items.Add(item);
|
||||
comboBoxEncoderExtension.Items.Add(format.extension);
|
||||
comboBoxDecoderExtension.Items.Add(format.extension);
|
||||
item.BeginEdit();
|
||||
break;
|
||||
}
|
||||
case Keys.Delete:
|
||||
{
|
||||
if (listViewFormats.SelectedItems.Count <= 0)
|
||||
return;
|
||||
CUEToolsFormat format = (CUEToolsFormat)listViewFormats.SelectedItems[0].Tag;
|
||||
if (format.builtin)
|
||||
return;
|
||||
List<string> decodersToRemove = new List<string>();
|
||||
foreach (KeyValuePair<string, CUEToolsUDC> decoder in _config.decoders)
|
||||
if (decoder.Value.extension == format.extension)
|
||||
decodersToRemove.Add(decoder.Key);
|
||||
foreach (string decoder in decodersToRemove)
|
||||
{
|
||||
_config.decoders.Remove(decoder);
|
||||
foreach (ListViewItem item in listViewDecoders.Items)
|
||||
if (item.Text == decoder)
|
||||
{
|
||||
item.Remove();
|
||||
break;
|
||||
}
|
||||
}
|
||||
List<string> encodersToRemove = new List<string>();
|
||||
foreach (KeyValuePair<string, CUEToolsUDC> encoder in _config.encoders)
|
||||
if (encoder.Value.extension == format.extension)
|
||||
encodersToRemove.Add(encoder.Key);
|
||||
foreach (string encoder in encodersToRemove)
|
||||
{
|
||||
_config.encoders.Remove(encoder);
|
||||
foreach (ListViewItem item in listViewEncoders.Items)
|
||||
if (item.Text == encoder)
|
||||
{
|
||||
item.Remove();
|
||||
break;
|
||||
}
|
||||
}
|
||||
_config.formats.Remove(format.extension);
|
||||
listViewFormats.SelectedItems[0].Remove();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void listViewFormats_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
|
||||
{
|
||||
if (e.IsSelected)
|
||||
{
|
||||
CUEToolsFormat format = (CUEToolsFormat)e.Item.Tag;
|
||||
if (format == null)
|
||||
return;
|
||||
|
||||
comboFormatLosslessEncoder.Items.Clear();
|
||||
foreach (KeyValuePair<string, CUEToolsUDC> encoder in _config.encoders)
|
||||
if (encoder.Value.extension == format.extension && encoder.Value.lossless)
|
||||
comboFormatLosslessEncoder.Items.Add(encoder.Key);
|
||||
comboFormatLosslessEncoder.SelectedItem = format.encoderLossless;
|
||||
comboFormatLosslessEncoder.Enabled = format.allowLossless;
|
||||
|
||||
comboFormatLossyEncoder.Items.Clear();
|
||||
foreach (KeyValuePair<string, CUEToolsUDC> encoder in _config.encoders)
|
||||
if (encoder.Value.extension == format.extension && !encoder.Value.lossless)
|
||||
comboFormatLossyEncoder.Items.Add(encoder.Key);
|
||||
comboFormatLossyEncoder.SelectedItem = format.encoderLossy;
|
||||
comboFormatLossyEncoder.Enabled = format.allowLossy;
|
||||
|
||||
comboFormatDecoder.Items.Clear();
|
||||
foreach (KeyValuePair<string, CUEToolsUDC> decoder in _config.decoders)
|
||||
if (decoder.Value.extension == format.extension)
|
||||
comboFormatDecoder.Items.Add(decoder.Key);
|
||||
comboFormatDecoder.SelectedItem = format.decoder;
|
||||
comboFormatDecoder.Enabled = format.allowLossless;
|
||||
|
||||
comboBoxFormatTagger.SelectedItem = format.tagger;
|
||||
|
||||
checkBoxFormatEmbedCUESheet.Checked = format.allowEmbed;
|
||||
checkBoxFormatAllowLossless.Checked = format.allowLossless;
|
||||
checkBoxFormatAllowLossy.Checked = format.allowLossy;
|
||||
checkBoxFormatSupportsLossyWAV.Checked = format.allowLossyWAV;
|
||||
|
||||
comboBoxFormatTagger.Enabled =
|
||||
checkBoxFormatEmbedCUESheet.Enabled =
|
||||
checkBoxFormatSupportsLossyWAV.Enabled =
|
||||
checkBoxFormatAllowLossless.Enabled =
|
||||
checkBoxFormatAllowLossy.Enabled =
|
||||
!format.builtin;
|
||||
|
||||
groupBoxFormat.Visible = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
groupBoxFormat.Visible = false;
|
||||
|
||||
CUEToolsFormat format = (CUEToolsFormat)e.Item.Tag;
|
||||
if (format == null)
|
||||
return;
|
||||
|
||||
format.encoderLossless = (string)comboFormatLosslessEncoder.SelectedItem;
|
||||
format.encoderLossy = (string)comboFormatLossyEncoder.SelectedItem;
|
||||
format.decoder = (string)comboFormatDecoder.SelectedItem;
|
||||
if (!format.builtin)
|
||||
{
|
||||
format.tagger = (CUEToolsTagger)comboBoxFormatTagger.SelectedItem;
|
||||
format.allowEmbed = checkBoxFormatEmbedCUESheet.Checked;
|
||||
format.allowLossyWAV = checkBoxFormatSupportsLossyWAV.Checked;
|
||||
format.allowLossless = checkBoxFormatAllowLossless.Checked;
|
||||
format.allowLossy = checkBoxFormatAllowLossy.Checked;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void comboBoxEncoderExtension_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
labelEncoderExtension.ImageKey = "." + (string)comboBoxEncoderExtension.SelectedItem;
|
||||
CUEToolsFormat format;
|
||||
if (_config.formats.TryGetValue((string)comboBoxEncoderExtension.SelectedItem, out format))
|
||||
{
|
||||
checkBoxEncoderLossless.Enabled = format.allowLossless && format.allowLossy;
|
||||
if (!checkBoxEncoderLossless.Enabled)
|
||||
checkBoxEncoderLossless.Checked = format.allowLossless;
|
||||
}
|
||||
}
|
||||
|
||||
private void listViewEncoders_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
|
||||
{
|
||||
if (e.IsSelected)
|
||||
{
|
||||
CUEToolsUDC encoder = (CUEToolsUDC)e.Item.Tag;
|
||||
if (encoder == null) return;
|
||||
|
||||
comboBoxEncoderExtension.Visible = true;
|
||||
comboBoxEncoderExtension.SelectedItem = encoder.extension;
|
||||
labelEncoderExtension.Visible = true;
|
||||
if (encoder.path != null)
|
||||
{
|
||||
CUEToolsFormat format;
|
||||
comboBoxEncoderExtension.Enabled = true;
|
||||
groupBoxExternalEncoder.Visible = true;
|
||||
textBoxEncoderPath.Text = encoder.path;
|
||||
textBoxEncoderParameters.Text = encoder.parameters;
|
||||
checkBoxEncoderLossless.Checked = encoder.lossless;
|
||||
checkBoxEncoderLossless.Enabled = _config.formats.TryGetValue(encoder.extension, out format) && format.allowLossless && format.allowLossy;
|
||||
}
|
||||
else
|
||||
{
|
||||
comboBoxEncoderExtension.Enabled = false;
|
||||
switch (encoder.className)
|
||||
{
|
||||
case "FLACWriter":
|
||||
groupBoxLibFLAC.Visible = true;
|
||||
break;
|
||||
case "WavPackWriter":
|
||||
groupBoxLibWavpack.Visible = true;
|
||||
break;
|
||||
case "APEWriter":
|
||||
groupBoxLibMAC_SDK.Visible = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
CUEToolsUDC encoder = (CUEToolsUDC)e.Item.Tag;
|
||||
if (encoder == null) return;
|
||||
|
||||
if (encoder.path != null)
|
||||
{
|
||||
if (encoder.extension != (string)comboBoxEncoderExtension.SelectedItem || encoder.lossless != checkBoxEncoderLossless.Checked)
|
||||
{
|
||||
if (listViewFormats.SelectedItems.Count > 0)
|
||||
listViewFormats.SelectedItems[0].Selected = false;
|
||||
CUEToolsFormat format;
|
||||
if (_config.formats.TryGetValue(encoder.extension, out format))
|
||||
{
|
||||
if (format.encoderLossless == encoder.name)
|
||||
format.encoderLossless = null;
|
||||
if (format.encoderLossy == encoder.name)
|
||||
format.encoderLossy = null;
|
||||
}
|
||||
encoder.extension = (string)comboBoxEncoderExtension.SelectedItem;
|
||||
}
|
||||
encoder.path = textBoxEncoderPath.Text;
|
||||
encoder.parameters = textBoxEncoderParameters.Text;
|
||||
encoder.lossless = checkBoxEncoderLossless.Checked;
|
||||
}
|
||||
|
||||
comboBoxEncoderExtension.Visible = false;
|
||||
labelEncoderExtension.Visible = false;
|
||||
groupBoxExternalEncoder.Visible = false;
|
||||
groupBoxLibFLAC.Visible = false;
|
||||
groupBoxLibWavpack.Visible = false;
|
||||
groupBoxLibMAC_SDK.Visible = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void listViewEncoders_BeforeLabelEdit(object sender, LabelEditEventArgs e)
|
||||
{
|
||||
CUEToolsUDC encoder = (CUEToolsUDC)listViewEncoders.Items[e.Item].Tag;
|
||||
if (encoder.path == null)
|
||||
e.CancelEdit = true;
|
||||
}
|
||||
|
||||
private void listViewEncoders_AfterLabelEdit(object sender, LabelEditEventArgs e)
|
||||
{
|
||||
CUEToolsUDC encoder;
|
||||
if (e.Label == null || _config.encoders.TryGetValue(e.Label, out encoder))
|
||||
{
|
||||
e.CancelEdit = true;
|
||||
return;
|
||||
}
|
||||
encoder = (CUEToolsUDC) listViewEncoders.Items[e.Item].Tag;
|
||||
if (listViewFormats.SelectedItems.Count > 0)
|
||||
listViewFormats.SelectedItems[0].Selected = false;
|
||||
if (_config.formats[encoder.extension].encoderLossless == encoder.name)
|
||||
_config.formats[encoder.extension].encoderLossless = e.Label;
|
||||
if (_config.formats[encoder.extension].encoderLossy == encoder.name)
|
||||
_config.formats[encoder.extension].encoderLossy = e.Label;
|
||||
_config.encoders.Remove(encoder.name);
|
||||
encoder.name = e.Label;
|
||||
_config.encoders.Add(encoder.name, encoder);
|
||||
}
|
||||
|
||||
private void listViewEncoders_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
switch (e.KeyCode)
|
||||
{
|
||||
case Keys.Insert:
|
||||
{
|
||||
CUEToolsUDC encoder;
|
||||
if (_config.encoders.TryGetValue("new", out encoder))
|
||||
return;
|
||||
encoder = new CUEToolsUDC("new", "wav", true, "", "");
|
||||
_config.encoders.Add("new", encoder);
|
||||
ListViewItem item = new ListViewItem(encoder.name);
|
||||
item.Tag = encoder;
|
||||
listViewEncoders.Items.Add(item);
|
||||
item.BeginEdit();
|
||||
break;
|
||||
}
|
||||
case Keys.Delete:
|
||||
{
|
||||
if (listViewEncoders.SelectedItems.Count <= 0)
|
||||
return;
|
||||
CUEToolsUDC encoder = (CUEToolsUDC)listViewEncoders.SelectedItems[0].Tag;
|
||||
if (encoder.path == null)
|
||||
return;
|
||||
if (_config.formats[encoder.extension].encoderLossless == encoder.name)
|
||||
_config.formats[encoder.extension].encoderLossless = null;
|
||||
if (_config.formats[encoder.extension].encoderLossy == encoder.name)
|
||||
_config.formats[encoder.extension].encoderLossy = null;
|
||||
_config.encoders.Remove(encoder.name);
|
||||
listViewEncoders.Items.Remove(listViewEncoders.SelectedItems[0]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void listViewDecoders_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
|
||||
{
|
||||
if (e.IsSelected)
|
||||
{
|
||||
CUEToolsUDC decoder = (CUEToolsUDC)e.Item.Tag;
|
||||
if (decoder == null) return;
|
||||
comboBoxDecoderExtension.SelectedItem = decoder.extension;
|
||||
comboBoxDecoderExtension.Visible = true;
|
||||
labelDecoderExtension.Visible = true;
|
||||
if (decoder.path != null)
|
||||
{
|
||||
comboBoxDecoderExtension.Enabled = true;
|
||||
groupBoxExternalDecoder.Visible = true;
|
||||
textBoxDecoderPath.Text = decoder.path;
|
||||
textBoxDecoderParameters.Text = decoder.parameters;
|
||||
}
|
||||
else
|
||||
{
|
||||
comboBoxDecoderExtension.Enabled = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
CUEToolsUDC decoder = (CUEToolsUDC)e.Item.Tag;
|
||||
if (decoder == null) return;
|
||||
|
||||
if (decoder.path != null)
|
||||
{
|
||||
decoder.path = textBoxDecoderPath.Text;
|
||||
decoder.parameters = textBoxDecoderParameters.Text;
|
||||
if (decoder.extension != (string)comboBoxDecoderExtension.SelectedItem)
|
||||
{
|
||||
if (listViewFormats.SelectedItems.Count > 0)
|
||||
listViewFormats.SelectedItems[0].Selected = false;
|
||||
CUEToolsFormat format;
|
||||
if (_config.formats.TryGetValue(decoder.extension, out format) && format.decoder == decoder.name)
|
||||
format.decoder = null;
|
||||
decoder.extension = (string)comboBoxDecoderExtension.SelectedItem;
|
||||
}
|
||||
}
|
||||
|
||||
comboBoxDecoderExtension.Visible = false;
|
||||
labelDecoderExtension.Visible = false;
|
||||
groupBoxExternalDecoder.Visible = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void listViewDecoders_AfterLabelEdit(object sender, LabelEditEventArgs e)
|
||||
{
|
||||
CUEToolsUDC decoder;
|
||||
if (e.Label == null || _config.decoders.TryGetValue(e.Label, out decoder))
|
||||
{
|
||||
e.CancelEdit = true;
|
||||
return;
|
||||
}
|
||||
decoder = (CUEToolsUDC)listViewDecoders.Items[e.Item].Tag;
|
||||
if (listViewFormats.SelectedItems.Count > 0)
|
||||
listViewFormats.SelectedItems[0].Selected = false;
|
||||
if (_config.formats[decoder.extension].decoder == decoder.name)
|
||||
_config.formats[decoder.extension].decoder = e.Label;
|
||||
_config.decoders.Remove(decoder.name);
|
||||
decoder.name = e.Label;
|
||||
_config.decoders.Add(decoder.name, decoder);
|
||||
}
|
||||
|
||||
private void listViewDecoders_BeforeLabelEdit(object sender, LabelEditEventArgs e)
|
||||
{
|
||||
CUEToolsUDC decoder = (CUEToolsUDC)listViewDecoders.Items[e.Item].Tag;
|
||||
if (decoder.path == null)
|
||||
e.CancelEdit = true;
|
||||
}
|
||||
|
||||
private void listViewDecoders_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
switch (e.KeyCode)
|
||||
{
|
||||
case Keys.Insert:
|
||||
{
|
||||
CUEToolsUDC decoder;
|
||||
if (_config.decoders.TryGetValue("new", out decoder))
|
||||
return;
|
||||
decoder = new CUEToolsUDC("new", "wav", true, "", "");
|
||||
_config.decoders.Add("new", decoder);
|
||||
ListViewItem item = new ListViewItem(decoder.name);
|
||||
item.Tag = decoder;
|
||||
listViewDecoders.Items.Add(item);
|
||||
item.BeginEdit();
|
||||
break;
|
||||
}
|
||||
case Keys.Delete:
|
||||
{
|
||||
if (listViewDecoders.SelectedItems.Count <= 0)
|
||||
return;
|
||||
CUEToolsUDC decoder = (CUEToolsUDC)listViewDecoders.SelectedItems[0].Tag;
|
||||
if (decoder.path == null)
|
||||
return;
|
||||
if (_config.formats[decoder.extension].decoder == decoder.name)
|
||||
_config.formats[decoder.extension].decoder = null;
|
||||
_config.decoders.Remove(decoder.name);
|
||||
listViewDecoders.Items.Remove(listViewDecoders.SelectedItems[0]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void comboBoxDecoderExtension_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
labelDecoderExtension.ImageKey = "." + (string)comboBoxDecoderExtension.SelectedItem;
|
||||
}
|
||||
|
||||
private void listViewScripts_BeforeLabelEdit(object sender, LabelEditEventArgs e)
|
||||
{
|
||||
CUEToolsScript script = (CUEToolsScript)listViewScripts.Items[e.Item].Tag;
|
||||
if (script.builtin)
|
||||
e.CancelEdit = true;
|
||||
}
|
||||
|
||||
private void listViewScripts_AfterLabelEdit(object sender, LabelEditEventArgs e)
|
||||
{
|
||||
CUEToolsScript script;
|
||||
if (e.Label == null || _config.scripts.TryGetValue(e.Label, out script))
|
||||
{
|
||||
e.CancelEdit = true;
|
||||
return;
|
||||
}
|
||||
script = (CUEToolsScript)listViewScripts.Items[e.Item].Tag;
|
||||
if (script.builtin)
|
||||
{
|
||||
e.CancelEdit = true;
|
||||
return;
|
||||
}
|
||||
_config.scripts.Remove(script.name);
|
||||
script.name = e.Label;
|
||||
_config.scripts.Add(script.name, script);
|
||||
}
|
||||
|
||||
private void listViewScripts_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
switch (e.KeyCode)
|
||||
{
|
||||
case Keys.Insert:
|
||||
{
|
||||
CUEToolsScript script;
|
||||
if (_config.scripts.TryGetValue("new", out script))
|
||||
return;
|
||||
script = new CUEToolsScript("new", false, new CUEAction[] {}, "");
|
||||
_config.scripts.Add("new", script);
|
||||
ListViewItem item = new ListViewItem(script.name);
|
||||
item.Tag = script;
|
||||
listViewScripts.Items.Add(item);
|
||||
item.BeginEdit();
|
||||
break;
|
||||
}
|
||||
case Keys.Delete:
|
||||
{
|
||||
if (listViewScripts.SelectedItems.Count <= 0)
|
||||
return;
|
||||
CUEToolsScript script = (CUEToolsScript)listViewScripts.SelectedItems[0].Tag;
|
||||
if (script.builtin)
|
||||
return;
|
||||
_config.scripts.Remove(script.name);
|
||||
listViewScripts.Items.Remove(listViewScripts.SelectedItems[0]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void listViewScripts_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
|
||||
{
|
||||
if (e.IsSelected)
|
||||
{
|
||||
CUEToolsScript script = (CUEToolsScript)e.Item.Tag;
|
||||
if (script == null) return;
|
||||
foreach (ListViewItem item in listViewScriptConditions.Items)
|
||||
item.Checked = script.conditions.Contains((CUEAction)item.Tag);
|
||||
groupBoxScriptConditions.Visible = true;
|
||||
richTextBoxScript.Text = script.code;
|
||||
richTextBoxScript.Visible = true;
|
||||
buttonScriptCompile.Visible = true;
|
||||
|
||||
groupBoxScriptConditions.Enabled =
|
||||
buttonScriptCompile.Enabled =
|
||||
!script.builtin;
|
||||
richTextBoxScript.ReadOnly = script.builtin;
|
||||
}
|
||||
else
|
||||
{
|
||||
CUEToolsScript script = (CUEToolsScript)e.Item.Tag;
|
||||
if (script == null) return;
|
||||
if (!script.builtin)
|
||||
{
|
||||
script.conditions.Clear();
|
||||
foreach (ListViewItem item in listViewScriptConditions.Items)
|
||||
if (item.Checked)
|
||||
script.conditions.Add((CUEAction)item.Tag);
|
||||
script.code = richTextBoxScript.Text;
|
||||
}
|
||||
groupBoxScriptConditions.Visible = false;
|
||||
richTextBoxScript.Visible = false;
|
||||
buttonScriptCompile.Visible = false;
|
||||
}
|
||||
}
|
||||
|
||||
private static int WordLength(string text, int pos)
|
||||
{
|
||||
if ((text[pos] >= 'a' && text[pos] <= 'z') ||
|
||||
(text[pos] >= 'A' && text[pos] <= 'Z') ||
|
||||
(text[pos] == '_'))
|
||||
{
|
||||
for (int len = 1; len < text.Length - pos; len++)
|
||||
{
|
||||
bool ok = (text[pos + len] >= 'a' && text[pos + len] <= 'z') ||
|
||||
(text[pos + len] >= 'A' && text[pos + len] <= 'Z') ||
|
||||
(text[pos + len] == '_');
|
||||
if (!ok)
|
||||
return len;
|
||||
}
|
||||
return text.Length - pos;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
private void buttonScriptCompile_Click(object sender, EventArgs e)
|
||||
{
|
||||
richTextBoxScript.SelectAll();
|
||||
richTextBoxScript.SelectionColor = richTextBoxScript.ForeColor;
|
||||
richTextBoxScript.DeselectAll();
|
||||
try
|
||||
{
|
||||
CUESheet.TryCompileScript(richTextBoxScript.Text);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
using (StringWriter sw = new StringWriter())
|
||||
{
|
||||
using (StringReader sr = new StringReader(ex.Message))
|
||||
{
|
||||
string lineStr;
|
||||
while ((lineStr = sr.ReadLine()) != null)
|
||||
{
|
||||
string[] s = { ".tmp(" };
|
||||
string[] n = lineStr.Split(s, 2, StringSplitOptions.None);
|
||||
if (n.Length == 2)
|
||||
{
|
||||
string[] n2 = n[1].Split(")".ToCharArray(), 2);
|
||||
if (n2.Length == 2)
|
||||
{
|
||||
string[] n3 = n2[0].Split(",".ToCharArray(), 2);
|
||||
int row, col;
|
||||
if (n3.Length == 2 && int.TryParse(n3[0], out row) && int.TryParse(n3[1], out col) && row > 1)
|
||||
{
|
||||
int pos = richTextBoxScript.GetFirstCharIndexFromLine(row - 2);
|
||||
if (pos >= 0)
|
||||
{
|
||||
pos += col - 1;
|
||||
richTextBoxScript.Select(pos, WordLength(richTextBoxScript.Text, pos));
|
||||
richTextBoxScript.SelectionColor = Color.Red;
|
||||
richTextBoxScript.DeselectAll();
|
||||
}
|
||||
}
|
||||
}
|
||||
sw.WriteLine("({0}", n[1]);
|
||||
}
|
||||
else
|
||||
sw.WriteLine("{0}", lineStr);
|
||||
}
|
||||
}
|
||||
MessageBox.Show(this, sw.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
return;
|
||||
}
|
||||
MessageBox.Show(this, "Script compiled successfully.", "Ok", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user