From 3557790aec2e2cd27b9d348b4e506468c062e7b5 Mon Sep 17 00:00:00 2001 From: niksedk Date: Mon, 25 Oct 2010 06:50:19 +0000 Subject: [PATCH] Drag-drop of wave file on wave form now allowed (usefull in cases for vlc wave file generation is not working) git-svn-id: https://subtitleedit.googlecode.com/svn/trunk@73 99eadd0c-20b8-1223-b5c4-2a2b2df33de2 --- src/Forms/AddWareForm.cs | 37 ++++ src/Forms/Main.Designer.cs | 50 +---- src/Forms/Main.cs | 286 +++++++++------------------ src/Forms/Main.resx | 382 ++++++++++++++++++------------------- 4 files changed, 326 insertions(+), 429 deletions(-) diff --git a/src/Forms/AddWareForm.cs b/src/Forms/AddWareForm.cs index 2900ff6e5..7d05dbef8 100644 --- a/src/Forms/AddWareForm.cs +++ b/src/Forms/AddWareForm.cs @@ -15,6 +15,7 @@ namespace Nikse.SubtitleEdit.Forms { public string SourceVideoFileName { get; private set; } private bool _cancel = false; + private string _wavFileName = null; public AddWareForm() { @@ -126,6 +127,8 @@ namespace Nikse.SubtitleEdit.Forms { if (labelVideoFileName.Text.Length > 1 && File.Exists(labelVideoFileName.Text)) buttonRipWave_Click(null, null); + else if (_wavFileName != null) + FixWaveOnly(); } private void AddWareForm_KeyDown(object sender, KeyEventArgs e) @@ -138,5 +141,39 @@ namespace Nikse.SubtitleEdit.Forms { _cancel = true; } + + internal void InitializeViaWaveFile(string fileName) + { + _wavFileName = fileName; + } + + private void FixWaveOnly() + { + Text = Configuration.Settings.Language.AddWaveForm.Title; + buttonRipWave.Text = Configuration.Settings.Language.AddWaveForm.GenerateWaveFormData; + labelPleaseWait.Text = Configuration.Settings.Language.AddWaveForm.PleaseWait; + labelVideoFileName.Text = string.Empty; + buttonCancel.Text = Configuration.Settings.Language.General.Cancel; + buttonRipWave.Enabled = false; + _cancel = false; + buttonCancel.Visible = false; + progressBar1.Visible = false; + progressBar1.Style = ProgressBarStyle.Blocks; + + labelProgress.Text = Configuration.Settings.Language.AddWaveForm.GeneratingPeakFile; + this.Refresh(); + labelPleaseWait.Visible = false; + try + { + ReadWaveFile(_wavFileName); + labelProgress.Text = string.Empty; + this.DialogResult = DialogResult.OK; + } + catch (Exception exception) + { + MessageBox.Show(exception.Message + Environment.NewLine + exception.StackTrace); + this.DialogResult = DialogResult.Cancel; + } + } } } diff --git a/src/Forms/Main.Designer.cs b/src/Forms/Main.Designer.cs index 75ad0077e..3b09a3cda 100644 --- a/src/Forms/Main.Designer.cs +++ b/src/Forms/Main.Designer.cs @@ -126,9 +126,6 @@ this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator(); this.GetDictionariesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.addWordToNamesetcListToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.addWordsFromWordlistToNamesetcToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.addWordsFromWordlistTonamesetcToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); - this.exportNewWordsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItemSyncronization = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItemAdjustAllTimes = new System.Windows.Forms.ToolStripMenuItem(); this.visualSyncToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -1120,10 +1117,7 @@ this.findDoubleWordsToolStripMenuItem, this.toolStripSeparator9, this.GetDictionariesToolStripMenuItem, - this.addWordToNamesetcListToolStripMenuItem, - this.addWordsFromWordlistToNamesetcToolStripMenuItem, - this.addWordsFromWordlistTonamesetcToolStripMenuItem1, - this.exportNewWordsToolStripMenuItem}); + this.addWordToNamesetcListToolStripMenuItem}); this.toolStripMenuItemSpellCheckMain.Name = "toolStripMenuItemSpellCheckMain"; this.toolStripMenuItemSpellCheckMain.Size = new System.Drawing.Size(80, 20); this.toolStripMenuItemSpellCheckMain.Text = "Spell check"; @@ -1133,7 +1127,7 @@ this.spellCheckToolStripMenuItem.Name = "spellCheckToolStripMenuItem"; this.spellCheckToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) | System.Windows.Forms.Keys.S))); - this.spellCheckToolStripMenuItem.Size = new System.Drawing.Size(348, 22); + this.spellCheckToolStripMenuItem.Size = new System.Drawing.Size(296, 22); this.spellCheckToolStripMenuItem.Text = "Spell check..."; this.spellCheckToolStripMenuItem.Click += new System.EventHandler(this.SpellCheckToolStripMenuItemClick); // @@ -1142,19 +1136,19 @@ this.findDoubleWordsToolStripMenuItem.Name = "findDoubleWordsToolStripMenuItem"; this.findDoubleWordsToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) | System.Windows.Forms.Keys.D))); - this.findDoubleWordsToolStripMenuItem.Size = new System.Drawing.Size(348, 22); + this.findDoubleWordsToolStripMenuItem.Size = new System.Drawing.Size(296, 22); this.findDoubleWordsToolStripMenuItem.Text = "Find double words"; this.findDoubleWordsToolStripMenuItem.Click += new System.EventHandler(this.FindDoubleWordsToolStripMenuItemClick); // // toolStripSeparator9 // this.toolStripSeparator9.Name = "toolStripSeparator9"; - this.toolStripSeparator9.Size = new System.Drawing.Size(345, 6); + this.toolStripSeparator9.Size = new System.Drawing.Size(293, 6); // // GetDictionariesToolStripMenuItem // this.GetDictionariesToolStripMenuItem.Name = "GetDictionariesToolStripMenuItem"; - this.GetDictionariesToolStripMenuItem.Size = new System.Drawing.Size(348, 22); + this.GetDictionariesToolStripMenuItem.Size = new System.Drawing.Size(296, 22); this.GetDictionariesToolStripMenuItem.Text = "Get dictionary..."; this.GetDictionariesToolStripMenuItem.Click += new System.EventHandler(this.GetDictionariesToolStripMenuItem_Click); // @@ -1163,34 +1157,10 @@ this.addWordToNamesetcListToolStripMenuItem.Name = "addWordToNamesetcListToolStripMenuItem"; this.addWordToNamesetcListToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) | System.Windows.Forms.Keys.L))); - this.addWordToNamesetcListToolStripMenuItem.Size = new System.Drawing.Size(348, 22); + this.addWordToNamesetcListToolStripMenuItem.Size = new System.Drawing.Size(296, 22); this.addWordToNamesetcListToolStripMenuItem.Text = "Add word to names/ect list"; this.addWordToNamesetcListToolStripMenuItem.Click += new System.EventHandler(this.AddWordToNamesetcListToolStripMenuItemClick); // - // addWordsFromWordlistToNamesetcToolStripMenuItem - // - this.addWordsFromWordlistToNamesetcToolStripMenuItem.Name = "addWordsFromWordlistToNamesetcToolStripMenuItem"; - this.addWordsFromWordlistToNamesetcToolStripMenuItem.Size = new System.Drawing.Size(348, 22); - this.addWordsFromWordlistToNamesetcToolStripMenuItem.Text = "_Add words from wordlist to \"en_US_names_etc\""; - this.addWordsFromWordlistToNamesetcToolStripMenuItem.Visible = false; - this.addWordsFromWordlistToNamesetcToolStripMenuItem.Click += new System.EventHandler(this.addWordsFromWordlistToNamesetcToolStripMenuItem_Click); - // - // addWordsFromWordlistTonamesetcToolStripMenuItem1 - // - this.addWordsFromWordlistTonamesetcToolStripMenuItem1.Name = "addWordsFromWordlistTonamesetcToolStripMenuItem1"; - this.addWordsFromWordlistTonamesetcToolStripMenuItem1.Size = new System.Drawing.Size(348, 22); - this.addWordsFromWordlistTonamesetcToolStripMenuItem1.Text = "_Add words from wordlist to \"names_etc\""; - this.addWordsFromWordlistTonamesetcToolStripMenuItem1.Visible = false; - this.addWordsFromWordlistTonamesetcToolStripMenuItem1.Click += new System.EventHandler(this.addWordsFromWordlistTonamesetcToolStripMenuItem1_Click); - // - // exportNewWordsToolStripMenuItem - // - this.exportNewWordsToolStripMenuItem.Name = "exportNewWordsToolStripMenuItem"; - this.exportNewWordsToolStripMenuItem.Size = new System.Drawing.Size(348, 22); - this.exportNewWordsToolStripMenuItem.Text = "_Export new words"; - this.exportNewWordsToolStripMenuItem.Visible = false; - this.exportNewWordsToolStripMenuItem.Click += new System.EventHandler(this.exportNewWordsToolStripMenuItem_Click); - // // toolStripMenuItemSyncronization // this.toolStripMenuItemSyncronization.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -1604,7 +1574,7 @@ this.fixCommonErrorsInSelectedLinesToolStripMenuItem, this.changeCasingForSelectedLinesToolStripMenuItem}); this.contextMenuStripListview.Name = "contextMenuStripListview"; - this.contextMenuStripListview.Size = new System.Drawing.Size(276, 540); + this.contextMenuStripListview.Size = new System.Drawing.Size(276, 562); this.contextMenuStripListview.Opening += new System.ComponentModel.CancelEventHandler(this.ContextMenuStripListviewOpening); // // toolStripMenuItemDelete @@ -2013,6 +1983,7 @@ // // AudioWaveForm // + this.AudioWaveForm.AllowDrop = true; this.AudioWaveForm.AllowNewSelection = true; this.AudioWaveForm.BackColor = System.Drawing.Color.Black; this.AudioWaveForm.BackgroundColor = System.Drawing.Color.Black; @@ -2032,6 +2003,8 @@ this.AudioWaveForm.WavePeaks = null; this.AudioWaveForm.ZoomFactor = 1D; this.AudioWaveForm.Click += new System.EventHandler(this.AudioWaveForm_Click); + this.AudioWaveForm.DragDrop += new System.Windows.Forms.DragEventHandler(this.AudioWaveForm_DragDrop); + this.AudioWaveForm.DragEnter += new System.Windows.Forms.DragEventHandler(this.AudioWaveForm_DragEnter); // // tabControlButtons // @@ -3072,8 +3045,6 @@ private System.Windows.Forms.ToolStripSeparator toolStripSeparator9; private System.Windows.Forms.ToolStripMenuItem GetDictionariesToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem addWordToNamesetcListToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem addWordsFromWordlistToNamesetcToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem addWordsFromWordlistTonamesetcToolStripMenuItem1; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemSyncronization; private System.Windows.Forms.ToolStripMenuItem visualSyncToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemPointSync; @@ -3166,7 +3137,6 @@ private System.Windows.Forms.TrackBar trackBarWaveFormPosition; private System.Windows.Forms.Label labelVideoInfo; private System.Windows.Forms.ToolStripMenuItem showhideWaveFormToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem exportNewWordsToolStripMenuItem; } } diff --git a/src/Forms/Main.cs b/src/Forms/Main.cs index 0964138ab..9832b9c1e 100644 --- a/src/Forms/Main.cs +++ b/src/Forms/Main.cs @@ -66,8 +66,6 @@ namespace Nikse.SubtitleEdit.Forms System.Windows.Forms.Timer _timerAddHistoryWhenDone = new Timer(); string _timerAddHistoryWhenDoneText; - private System.Threading.Mutex _mutex; - private bool AutoRepeatContinueOn { get @@ -86,10 +84,8 @@ namespace Nikse.SubtitleEdit.Forms _title = String.Format("{0} {1}.{2}", _languageGeneral.Title, versionInfo[0], versionInfo[1]); if (versionInfo.Length >= 3 && versionInfo[2] != "0") _title += "." + versionInfo[2]; - - _title = "Subtitle Edit 3.0 RC2"; - } + _title = "Subtitle Edit 3.0 RC3"; return _title; } } @@ -228,14 +224,15 @@ namespace Nikse.SubtitleEdit.Forms buttonCustomUrl.Enabled = Configuration.Settings.VideoControls.CustomSearchUrl.Length > 1; // Initialize events etc. for audio wave form + AudioWaveForm.OnDoubleClickNonParagraph += AudioWaveForm_OnDoubleClickNonParagraph; AudioWaveForm.OnPositionSelected += AudioWaveForm_OnPositionSelected; AudioWaveForm.OnTimeChanged += AudioWaveForm_OnTimeChanged; AudioWaveForm.OnNewSelectionRightClicked += AudioWaveForm_OnNewSelectionRightClicked; AudioWaveForm.OnParagraphRightClicked += AudioWaveForm_OnParagraphRightClicked; - AudioWaveForm.OnTooglePlay += AudioWaveForm_OnTooglePlay; + AudioWaveForm.OnSingleClick += AudioWaveForm_OnSingleClick; AudioWaveForm.OnPause += AudioWaveForm_OnPause; AudioWaveForm.OnTimeChangedAndOffsetRest += AudioWaveForm_OnTimeChangedAndOffsetRest; - AudioWaveForm.OnZoomedChanged += AudioWaveForm_OnZoomedChanged; + AudioWaveForm.OnZoomedChanged += AudioWaveForm_OnZoomedChanged; AudioWaveForm.DrawGridLines = Configuration.Settings.VideoControls.WaveFormDrawGrid; AudioWaveForm.GridColor = Configuration.Settings.VideoControls.WaveFormGridColor; AudioWaveForm.SelectedColor = Configuration.Settings.VideoControls.WaveFormSelectedColor; @@ -255,14 +252,20 @@ namespace Nikse.SubtitleEdit.Forms _timerAddHistoryWhenDone.Interval = 500; _timerAddHistoryWhenDone.Tick += new EventHandler(timerAddHistoryWhenDone_Tick); + } - try + void AudioWaveForm_OnDoubleClickNonParagraph(double seconds, Paragraph paragraph) + { + if (mediaPlayer.VideoPlayer != null) { - _mutex = System.Threading.Mutex.OpenExisting("Subtitle_Edit_Mutex"); - } - catch - { - _mutex = new System.Threading.Mutex(true, "Subtitle_Edit_Mutex"); + if (paragraph == null) + { + mediaPlayer.TooglePlayPause(); + } + else + { + SubtitleListview1.SelectIndexAndEnsureVisible(_subtitle.GetIndex(paragraph)); + } } } @@ -290,15 +293,16 @@ namespace Nikse.SubtitleEdit.Forms } void AudioWaveForm_OnPause(object sender, EventArgs e) - { + { if (mediaPlayer.VideoPlayer != null) mediaPlayer.Pause(); } - void AudioWaveForm_OnTooglePlay(object sender, EventArgs e) + void AudioWaveForm_OnSingleClick(double seconds, Paragraph paragraph) { if (mediaPlayer.VideoPlayer != null) - mediaPlayer.TooglePlayPause(); + mediaPlayer.Pause(); + mediaPlayer.CurrentPosition = seconds; } void AudioWaveForm_OnParagraphRightClicked(double seconds, Paragraph paragraph) @@ -737,11 +741,11 @@ namespace Nikse.SubtitleEdit.Forms var selectedLines = new Subtitle { WasLoadedWithFrameNumbers = _subtitle.WasLoadedWithFrameNumbers }; foreach (int index in SubtitleListview1.SelectedIndices) selectedLines.Paragraphs.Add(_subtitle.Paragraphs[index]); - visualSync.Initialize(this.Icon, selectedLines, _fileName, _language.VisualSyncSelectedLines, CurrentFrameRate); + visualSync.Initialize(toolStripButtonVisualSync.Image as Bitmap, selectedLines, _fileName, _language.VisualSyncSelectedLines, CurrentFrameRate); } else { - visualSync.Initialize(this.Icon, _subtitle, _fileName, _language.VisualSyncTitle, CurrentFrameRate); + visualSync.Initialize(toolStripButtonVisualSync.Image as Bitmap, _subtitle, _fileName, _language.VisualSyncTitle, CurrentFrameRate); } if (visualSync.ShowDialog(this) == DialogResult.OK) @@ -1027,6 +1031,10 @@ namespace Nikse.SubtitleEdit.Forms { SubtitleFormat currentFormat = GetCurrentSubtitleFormat(); Utilities.SetSaveDialogFilter(saveFileDialog1, currentFormat); + + Ebu ebu = new Ebu(); + saveFileDialog1.Filter += "| " + ebu.FriendlyName + "|*" + ebu.Extension; + saveFileDialog1.Title = _language.SaveSubtitleAs; saveFileDialog1.DefaultExt = "*" + currentFormat.Extension; saveFileDialog1.AddExtension = true; @@ -1039,6 +1047,21 @@ namespace Nikse.SubtitleEdit.Forms DialogResult result = saveFileDialog1.ShowDialog(this); if (result == DialogResult.OK) { + if (saveFileDialog1.FilterIndex == SubtitleFormat.AllSubtitleFormats.Count + 1) + { + string fileName = saveFileDialog1.FileName; + string ext = Path.GetExtension(fileName).ToLower(); + bool extOk = ext == ebu.Extension.ToLower(); + if (!extOk) + { + if (fileName.EndsWith(".")) + fileName = fileName.Substring(0, fileName.Length - 1); + fileName += ebu.Extension; + } + ebu.Save(fileName, _subtitle); + return DialogResult.OK; + } + _converted = false; _fileName = saveFileDialog1.FileName; @@ -1061,8 +1084,9 @@ namespace Nikse.SubtitleEdit.Forms _fileName = _fileName.Substring(0, _fileName.Length - 1); _fileName += format.Extension; } - - SaveSubtitle(format); + + if (SaveSubtitle(format) == DialogResult.OK) + SetCurrentFormat(format); } index++; } @@ -2323,7 +2347,7 @@ namespace Nikse.SubtitleEdit.Forms { VisualSync visualSync = new VisualSync(); - visualSync.Initialize(this.Icon, subtitleToAppend, _fileName, _language.AppendViaVisualSyncTitle, CurrentFrameRate); + visualSync.Initialize(toolStripButtonVisualSync.Image as Bitmap, subtitleToAppend, _fileName, _language.AppendViaVisualSyncTitle, CurrentFrameRate); visualSync.ShowDialog(this); if (visualSync.OKPressed) @@ -3244,7 +3268,10 @@ namespace Nikse.SubtitleEdit.Forms prevParagraph.Text = prevParagraph.Text.Replace(Environment.NewLine, " "); prevParagraph.Text += Environment.NewLine + currentParagraph.Text.Replace(Environment.NewLine, " "); prevParagraph.Text = Utilities.AutoBreakLine(prevParagraph.Text); - prevParagraph.EndTime.TotalMilliseconds = prevParagraph.EndTime.TotalMilliseconds + currentParagraph.Duration.TotalMilliseconds; // currentParagraph.EndTime; + + +// prevParagraph.EndTime.TotalMilliseconds = prevParagraph.EndTime.TotalMilliseconds + currentParagraph.Duration.TotalMilliseconds; + prevParagraph.EndTime.TotalMilliseconds = currentParagraph.EndTime.TotalMilliseconds; _subtitle.Paragraphs.Remove(currentParagraph); @@ -3279,7 +3306,9 @@ namespace Nikse.SubtitleEdit.Forms currentParagraph.Text = currentParagraph.Text.Replace(Environment.NewLine, " "); currentParagraph.Text += Environment.NewLine + nextParagraph.Text.Replace(Environment.NewLine, " "); currentParagraph.Text = Utilities.AutoBreakLine(currentParagraph.Text); - currentParagraph.EndTime.TotalMilliseconds = currentParagraph.EndTime.TotalMilliseconds + nextParagraph.Duration.TotalMilliseconds; //nextParagraph.EndTime; + + //currentParagraph.EndTime.TotalMilliseconds = currentParagraph.EndTime.TotalMilliseconds + nextParagraph.Duration.TotalMilliseconds; //nextParagraph.EndTime; + currentParagraph.EndTime.TotalMilliseconds = nextParagraph.EndTime.TotalMilliseconds; _subtitle.Paragraphs.Remove(nextParagraph); @@ -3430,12 +3459,6 @@ namespace Nikse.SubtitleEdit.Forms Configuration.Settings.Save(); } } - - if (_mutex != null) - { - _mutex.WaitOne(); - _mutex.ReleaseMutex(); - } } private void ButtonUnBreakClick(object sender, EventArgs e) @@ -4329,7 +4352,6 @@ namespace Nikse.SubtitleEdit.Forms buttonSetEnd_Click(null, null); e.SuppressKeyPress = true; } - } } @@ -4929,123 +4951,7 @@ namespace Nikse.SubtitleEdit.Forms } } - - private void addWordsFromWordlistToNamesetcToolStripMenuItem_Click(object sender, EventArgs e) - { - openFileDialog1.Title = "Open names_etc.xml file to import into en_US_names_etc.xml"; - openFileDialog1.FileName = string.Empty; - openFileDialog1.Filter = "Xml files|*.xml"; - if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) - { - int wordsAdded = 0; - XmlDocument doc = new XmlDocument(); - doc.Load(openFileDialog1.FileName); - - string language = "en_US"; - - var namesEtc = new List(); - Utilities.LoadGlobalNamesEtc(namesEtc, namesEtc); - - var localNamesEtc = new List(); - string userNamesEtcXmlFileName = Utilities.LoadLocalNamesEtc(localNamesEtc, localNamesEtc, language); - localNamesEtc.Sort(); - - foreach (XmlNode node in doc.DocumentElement.SelectNodes("name")) - { - - string word = node.InnerText.Trim(); - if (!localNamesEtc.Contains(word) && !namesEtc.Contains(word)) - { - wordsAdded++; - localNamesEtc.Add(word); - localNamesEtc.Sort(); - } - } - - if (MessageBox.Show("Add new words: " + wordsAdded.ToString(), "", MessageBoxButtons.OKCancel) == System.Windows.Forms.DialogResult.OK) - { - var namesEtcDoc = new XmlDocument(); - if (File.Exists(userNamesEtcXmlFileName)) - namesEtcDoc.Load(userNamesEtcXmlFileName); - else - namesEtcDoc.LoadXml(""); - - XmlNode de = namesEtcDoc.DocumentElement; - if (de != null) - { - de.RemoveAll(); - foreach (var name in localNamesEtc) - { - XmlNode node = namesEtcDoc.CreateElement("name"); - node.InnerText = name; - de.AppendChild(node); - } - namesEtcDoc.Save(userNamesEtcXmlFileName); - } - - } - } - } - - private void addWordsFromWordlistTonamesetcToolStripMenuItem1_Click(object sender, EventArgs e) - { - openFileDialog1.Title = "Open names_etc.xml file to import into names_etc.xml"; - openFileDialog1.FileName = string.Empty; - openFileDialog1.Filter = "Xml files|*.xml"; - if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) - { - int wordsAdded = 0; - XmlDocument doc = new XmlDocument(); - doc.Load(openFileDialog1.FileName); - - string language = "en_US"; - - string globalNamesEtcFileName = Utilities.DictionaryFolder + "names_etc.xml"; - - var namesEtc = new List(); - Utilities.LoadGlobalNamesEtc(namesEtc, namesEtc); - namesEtc.Sort(); - - var localNamesEtc = new List(); - string userNamesEtcXmlFileName = Utilities.LoadLocalNamesEtc(localNamesEtc, localNamesEtc, language); - - foreach (XmlNode node in doc.DocumentElement.SelectNodes("name")) - { - - string word = node.InnerText.Trim(); - if (!localNamesEtc.Contains(word) && !namesEtc.Contains(word)) - { - wordsAdded++; - namesEtc.Add(word); - } - } - - if (MessageBox.Show("Add new words: " + wordsAdded.ToString(), "", MessageBoxButtons.OKCancel) == System.Windows.Forms.DialogResult.OK) - { - namesEtc.Sort(); - var namesEtcDoc = new XmlDocument(); - if (File.Exists(globalNamesEtcFileName)) - namesEtcDoc.Load(globalNamesEtcFileName); - else - namesEtcDoc.LoadXml(""); - - XmlNode de = namesEtcDoc.DocumentElement; - if (de != null) - { - de.RemoveAll(); - foreach (var name in namesEtc) - { - XmlNode node = namesEtcDoc.CreateElement("name"); - node.InnerText = name; - de.AppendChild(node); - } - namesEtcDoc.Save(globalNamesEtcFileName); - } - - } - } - } - + private void toolStripMenuItemTranslationMode_Click(object sender, EventArgs e) { if (SubtitleListview1.IsColumTextAlternateActive) @@ -6342,64 +6248,48 @@ namespace Nikse.SubtitleEdit.Forms toolStripButtonToogleWaveForm_Click(null, null); } - private void exportNewWordsToolStripMenuItem_Click(object sender, EventArgs e) + private void AudioWaveForm_DragEnter(object sender, DragEventArgs e) { - openFileDialog1.Title = "Open names_etc.xml file to import into names_etc.xml"; - openFileDialog1.FileName = string.Empty; - openFileDialog1.Filter = "Xml files|*.xml"; - if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) + // make sure they're actually dropping files (not text or anything else) + if (e.Data.GetDataPresent(DataFormats.FileDrop, false)) + e.Effect = DragDropEffects.All; + } + + private void AudioWaveForm_DragDrop(object sender, DragEventArgs e) + { + if (string.IsNullOrEmpty(_videoFileName)) + buttonOpenVideo_Click(null, null); + if (_videoFileName == null) + return; + + string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); + if (files.Length == 1) { - int wordsAdded = 0; - XmlDocument doc = new XmlDocument(); - doc.Load(openFileDialog1.FileName); + string fileName = files[0]; - string language = "en_US"; - - string globalNamesEtcFileName = Utilities.DictionaryFolder + "names_etc.xml"; - - var namesEtc = new List(); - Utilities.LoadGlobalNamesEtc(namesEtc, namesEtc); - namesEtc.Sort(); - - var localNamesEtc = new List(); - var newNames = new List(); - string userNamesEtcXmlFileName = Utilities.LoadLocalNamesEtc(localNamesEtc, localNamesEtc, language); - - foreach (XmlNode node in doc.DocumentElement.SelectNodes("name")) + var fi = new FileInfo(fileName); + string ext = Path.GetExtension(fileName).ToLower(); + if (ext != ".wav") { - - string word = node.InnerText.Trim(); - if (!localNamesEtc.Contains(word) && !namesEtc.Contains(word)) - { - wordsAdded++; - newNames.Add(word); - newNames.Sort(); - } + MessageBox.Show(string.Format(".Wav only!", fileName)); + return; } - saveFileDialog1.Filter = "Xml files|*.xml"; - saveFileDialog1.FileName = "NewNames.xml"; - - if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) + AddWareForm addWaveForm = new AddWareForm(); + addWaveForm.InitializeViaWaveFile(fileName); + if (addWaveForm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { - if (MessageBox.Show("Save new words: " + newNames.Count.ToString(), "", MessageBoxButtons.OKCancel) == System.Windows.Forms.DialogResult.OK) - { - var namesEtcDoc = new XmlDocument(); - namesEtcDoc.LoadXml(""); - - XmlNode de = namesEtcDoc.DocumentElement; - if (de != null) - { - foreach (var name in newNames) - { - XmlNode node = namesEtcDoc.CreateElement("name"); - node.InnerText = name; - de.AppendChild(node); - } - namesEtcDoc.Save(saveFileDialog1.FileName); - } - } - } + string peakWaveFileName = GetPeakWaveFileName(_videoFileName); + addWaveForm.WavePeak.WritePeakSamples(peakWaveFileName); + var audioPeakWave = new WavePeakGenerator(peakWaveFileName); + audioPeakWave.GenerateAllSamples(); + AudioWaveForm.WavePeaks = audioPeakWave; + timerWaveForm.Start(); + } + } + else + { + MessageBox.Show(_language.DropOnlyOneFile); } } diff --git a/src/Forms/Main.resx b/src/Forms/Main.resx index b21a87adf..9a18a96cb 100644 --- a/src/Forms/Main.resx +++ b/src/Forms/Main.resx @@ -127,28 +127,28 @@ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAATOSURBVFhH7VdbT1xVGMXqk76ov8KkiQ/65os+GJpKZ8Ri - KFJoYou0Rii1KlZbE6M1IRprG+ulIXIZZISCwABSMx0GkLRD6JCUFJuo4TbcL8N9uONyr51+457TOWOb - +OCDk6zsfb5zvrXW9+0vnENS0v+//1IHgsHgEz09PUuBQACtra0afr8fbW1t0bW9vR1ER0dHDCRuPstc - 4SEnualhWzMf6Ovr297c3MTq6qrG2toa1tfXsbGxAca5bm1tYXt7Gzs7OxrcM2Y+wxzmCg9zyU0NWwOd - nZ1aZGVlBZFIJK4Bq7jVhJg0DZCLnLxHDVsDLS0tWF5e1g/LmsgIzQgSCZuc1LA10NzcjKWlJQ0m2Ymb - x/BP7ScHuYSXGrYGmpqasLi4qBHPBM9T5oErqybMmMwNV1NceKlha6CxsRHz8/NYWFiIMWEehwyWnLEM - qQjLeTNHKqc4OclNDVsDHo8nRpyJpjhnQyozJ5x7OS4ZYJkj6aaYoIatgYaGBu1ybm4uphNCIqRSJa8F - 0m5e8/ik5VK5cFLD1kB9fX2MOM2YFUhLxYi0Wbokc2PmyJFKYdSwNVBbW4twOIzZ2Vm90rVUIC00q5Mq - zcGV+RFhcpic1LA1UFNTEyPORHFuNcJrK2jEFOZeChET1EhoYGZmBtPT01Ej7IZUIWZ4bQdTVDrJlZzk - TmigqqoKU1NTUTBJEpksVZimpELGRJDPSiHMNzmpYduB6upqTE5O6gRJNDsixFYzNGHeMys2uchNDVsD - brcbExMTGB8f1yuTmUSYlZjVmV2SShmTPOEg58rsFtzuH+wNVFZWRsWZQJJERszWSqXhmQXc+uNn1N84 - iu9+eUbjx+5c9P5+BVsrgLfJa2+goqICY2NjGB0d1Ua4l46YhhizgmYHQrdxOZAHVyAL1wYv4NfpGtxW - 4N7VlYXLXXlobgjaG3C5XFp8ZGTkLiNWMzT0NyYwPRlGuf8NVHYdQ0foPDy/FUaFuGfMre5dvPIqgKQH - 4s5BWVkZQqGQNsBVzJiGGLOC5oK3/Pi8fh/cvcdRcvMYym6+Hv1i4p4xd28BznnScNb9XElcA6WlpRge - HtbiXMWI1QzjJmiouKkQn159BV9ey8GF6wqB16Kva+4Z471z/kM4U/58/M8yvquHhoYwODioDXBPiCHG - BKY57gsvpeCTq9m67eaHjLw1GeO9Il823irec9cc8Ex28V09MDAQAzFEU1ZjYpCmTn7lwAfeTE3MP9Hy - YpIXGGO896E3GwXfpHAfMwcPqsCjNEAyqwm5tpoRU4wXud5BflUa3m3JQmFLJgp/Ohh9V3DPGO+96TmA - t0scYaVHzejvYbXbzW94TnZ/f/99o/W6D4eLnMjzZCCv7oBChv7TTHDP2Al1L+eLF/Febfb3So+aMQae - 6u7uhhrEP2mC1d2rkchcRH0RbeDU1/k4eNGBI43pOFKdHj1n7nNV7FBxKo6fz4GSfjqegd3Jyckf8T8b - n88HfjjU1dXdM254exHw9iD/s1ykf+xERnkqMite1uA+/awTJ749irTDzkvsttWAngGFJxX2KOy/g5fU - mnqf2O943+FznHw28sKpvSD2FaSsOU872xXP3jsa1IqZAZ7FLoWHFB5ReEzh8X8Z5CQ3Nailf38BeJXM - u9CRItMAAAAASUVORK5CYII= + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAATQSURBVFhH7ZfbT1xVFMax+qQv6l9h0sQHffNFHwxNpTNi + MRQpNLFFWiOUWhWrrYnRGojG2sZ6aYhcBhmhIDCA1EyHASTtEApJSbGJGu73y3Cd4Tbg5/52usY9p3Ow + TXzwwUm+7H3WOWt9v7X3DueQkPD/77+0At3d3U/09PQsBwIBtLS0aPn9frS2tkbHtrY2UO3t7TGSuPks + c6UOa7I2PWx75gN9fX1bm5ubWF1d1VpbW8P6+jo2NjbAOMdIJIKtrS1sb29rcc6Y+QxzmCt1mMva9LAF + 6Ojo0CahUAjhcDgugNXcCiGQJgBrsSbv0cMWoLm5GSsrK/phGXcCIYxoJ2OzJj1sAZqamrC8vKzFJDtz + cxv+aflZg7WkLj1sARobG7G0tKQVD4L7KeeBI7umzJicG46mudSlhy1AQ0MDFhYWsLi4GANhboccLNlj + OaRiLPvNHOmc5qzJ2vSwBfB4PDHmTDTNeTakM/OEcy7bJQdYzpGspkDQwxagvr5eU87Pz8eshBSRotIl + r0Wy3Lzm9smSS+dSkx62AHV1dTHmhDE7kCUVEFlmWSU5N2aObKk0Rg9bgJqaGgSDQczNzemR1NKBLKHZ + nXRpHlw5P2LMGmZNetgCVFdXx5gzUcitILy2iiCmMefSiEDQY0eA2dlZzMzMREG4GtKFwPDaTqaprCRH + 1mTtHQEqKysxPT0dFZMkkcnShQklHTImhnxWGmG+WZMetitQVVWFqakpnSCJ5opIYSsMIcx7ZsdmLdam + hy2A2+3G5OQkJiYm9MhkJlFmJ2Z35ipJp4xJntRgzdBcBG73D/YAFRUVUXMmsMhOIObSSqfB2UXc+uNn + 1N04iu9+eUbrx65s9P5+BZEQ4G302gOUl5djfHwcY2NjGoRzWRETiDGrCDswchuXAzlwBTJwbfACfp2p + xm0lzl2dGbjcmYOm+m57AJfLpc1HR0fvArHCEOhvTWJmKogy/xuo6DyG9pHz8PyWHzXinDG3unfxyqsA + Eh6Iew5KS0sxMjKiATgKjAnEmFWE677lx+d1++DuPY7im8dQevP16BcT54y5e/NwzpOCs+7niuMClJSU + YHh4WJtzFBArDOOmCFTUmI9Pr76CL69l4cJ1pcBr0dc154zx3jn/IZwpez7+Zxnf1UNDQxgcHNQAnFMC + xJjIhOM8/1ISPrmaqZfd/JCRtyZjvFfoy8RbRXvuOgfck118Vw8MDMRIgAhlBRNAQp38yoEPvOm6MP9E + y4tJXmCM8d6H3kzkfZPEecw5eFAFHiUAi1kh5NoKI1CMF7reQW5lCt5tzkB+czryfzoYfVdwzhjvvek5 + gLeLHUHlR8/o72E1281veJ7s/v7++1bLdR8OFzqR40lDTu0BpTT9p5ninLET6l7WFy/ivZrM75UfPWMA + nurq6kJBQcGfhGB39woSng+rL6INnPo6FwcvOnCkIRVHqlKj+8x5toodKkrG8fNZUNZPxwPYnZiY+BH/ + s/H5fOCHQ21t7T3rhrcXAW8Pcj/LRurHTqSVJSO9/GUtzlPPOnHi26NIOey8xNW2AugzoPSk0h6l/Xf0 + khqT71P7He87fI6Tz4ZfOLUX1L68pDXnaWebqrP3jge9Ys4A92KX0kNKjyg9pvT4vyzWZG160Ev//gLs + dsxzExmB6QAAAABJRU5ErkJggg== @@ -247,128 +247,128 @@ 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 RK5CYII= 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 + oC7qNPodVIi0n+u2s9oAAAAASUVORK5CYII= @@ -400,69 +400,69 @@ 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 - AAAASUVORK5CYII= + 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 + AABJRU5ErkJggg==