Merge pull request #5388 from OmrSi/save-smpte-status

Save SMPTE status for recent files
This commit is contained in:
Nikolaj Olsson 2021-10-14 19:51:47 +02:00 committed by GitHub
commit bb7e69eb18
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 42 additions and 16 deletions

View File

@ -22,6 +22,7 @@ namespace Nikse.SubtitleEdit.Core.Common
public int FirstVisibleIndex { get; set; }
public int FirstSelectedIndex { get; set; }
public long VideoOffsetInMs { get; set; }
public bool VideoIsSmpte { get; set; }
}
public class RecentFilesSettings
@ -36,7 +37,7 @@ namespace Nikse.SubtitleEdit.Core.Common
Files = new List<RecentFileEntry>();
}
public void Add(string fileName, int firstVisibleIndex, int firstSelectedIndex, string videoFileName, string originalFileName, long videoOffset)
public void Add(string fileName, int firstVisibleIndex, int firstSelectedIndex, string videoFileName, string originalFileName, long videoOffset, bool isSmpte)
{
Files = Files.Where(p => !string.IsNullOrEmpty(p.FileName)).ToList();
@ -61,10 +62,11 @@ namespace Nikse.SubtitleEdit.Core.Common
{
Files.Remove(existingEntry);
existingEntry.FirstSelectedIndex = firstSelectedIndex;
existingEntry.VideoOffsetInMs = videoOffset;
existingEntry.FirstVisibleIndex = firstVisibleIndex;
existingEntry.VideoFileName = videoFileName;
existingEntry.OriginalFileName = originalFileName;
existingEntry.VideoOffsetInMs = videoOffset;
existingEntry.VideoIsSmpte = isSmpte;
Files.Insert(0, existingEntry);
}
Files = Files.Take(MaxRecentFiles).ToList();
@ -1256,6 +1258,7 @@ $HorzAlign = Center
public bool ShowNegativeDurationInfoOnSave { get; set; }
public bool ShowFormatRequiresUtf8Warning { get; set; }
public long CurrentVideoOffsetInMs { get; set; }
public bool CurrentVideoIsSmpte { get; set; }
public string TitleBarAsterisk { get; set; } // Show asteriks "before" or "after" file name (any other value will hide asteriks)
public bool TitleBarFullFileName { get; set; } // Show full file name with path or just file name
public bool MeasurementConverterCloseOnInsert { get; set; }
@ -2704,7 +2707,13 @@ $HorzAlign = Center
long.TryParse(listNode.Attributes["VideoOffset"].Value, out videoOffset);
}
settings.RecentFiles.Files.Add(new RecentFileEntry { FileName = listNode.InnerText, FirstVisibleIndex = int.Parse(firstVisibleIndex, CultureInfo.InvariantCulture), FirstSelectedIndex = int.Parse(firstSelectedIndex, CultureInfo.InvariantCulture), VideoFileName = videoFileName, OriginalFileName = originalFileName, VideoOffsetInMs = videoOffset });
bool isSmpte = false;
if (listNode.Attributes["IsSmpte"] != null)
{
bool.TryParse(listNode.Attributes["IsSmpte"].Value, out isSmpte);
}
settings.RecentFiles.Files.Add(new RecentFileEntry { FileName = listNode.InnerText, FirstVisibleIndex = int.Parse(firstVisibleIndex, CultureInfo.InvariantCulture), FirstSelectedIndex = int.Parse(firstSelectedIndex, CultureInfo.InvariantCulture), VideoFileName = videoFileName, OriginalFileName = originalFileName, VideoOffsetInMs = videoOffset, VideoIsSmpte = isSmpte });
}
// General
@ -8634,11 +8643,17 @@ $HorzAlign = Center
textWriter.WriteAttributeString("FirstVisibleIndex", item.FirstVisibleIndex.ToString(CultureInfo.InvariantCulture));
textWriter.WriteAttributeString("FirstSelectedIndex", item.FirstSelectedIndex.ToString(CultureInfo.InvariantCulture));
if (item.VideoOffsetInMs != 0)
{
textWriter.WriteAttributeString("VideoOffset", item.VideoOffsetInMs.ToString(CultureInfo.InvariantCulture));
}
if (item.VideoIsSmpte)
{
textWriter.WriteAttributeString("VideoIsSmpte", item.VideoIsSmpte.ToString(CultureInfo.InvariantCulture));
}
textWriter.WriteString(item.FileName);
textWriter.WriteEndElement();
}

View File

@ -2181,7 +2181,7 @@ namespace Nikse.SubtitleEdit.Forms
openFileDialog1.InitialDirectory = saveFileDialog1.InitialDirectory;
_fileName = saveFileDialog1.FileName;
SetTitle();
Configuration.Settings.RecentFiles.Add(_fileName, FirstVisibleIndex, FirstSelectedIndex, VideoFileName, _subtitleOriginalFileName, Configuration.Settings.General.CurrentVideoOffsetInMs);
Configuration.Settings.RecentFiles.Add(_fileName, FirstVisibleIndex, FirstSelectedIndex, VideoFileName, _subtitleOriginalFileName, Configuration.Settings.General.CurrentVideoOffsetInMs, Configuration.Settings.General.CurrentVideoIsSmpte);
Configuration.Settings.Save();
}
else
@ -2542,10 +2542,11 @@ namespace Nikse.SubtitleEdit.Forms
// save last first visible index + first selected index from listview
if (_fileName != null && updateRecentFile)
{
Configuration.Settings.RecentFiles.Add(_fileName, FirstVisibleIndex, FirstSelectedIndex, VideoFileName, _subtitleOriginalFileName, Configuration.Settings.General.CurrentVideoOffsetInMs);
Configuration.Settings.RecentFiles.Add(_fileName, FirstVisibleIndex, FirstSelectedIndex, VideoFileName, _subtitleOriginalFileName, Configuration.Settings.General.CurrentVideoOffsetInMs, Configuration.Settings.General.CurrentVideoIsSmpte);
}
Configuration.Settings.General.CurrentVideoOffsetInMs = 0;
Configuration.Settings.General.CurrentVideoIsSmpte = false;
openFileDialog1.InitialDirectory = file.DirectoryName;
@ -3412,6 +3413,7 @@ namespace Nikse.SubtitleEdit.Forms
_subtitleListViewIndex = -1;
Configuration.Settings.General.CurrentVideoOffsetInMs = 0;
Configuration.Settings.General.CurrentVideoIsSmpte = false;
if (_resetVideo && ModifierKeys != Keys.Shift)
{
@ -3657,7 +3659,7 @@ namespace Nikse.SubtitleEdit.Forms
audioVisualizer.SceneChanges = new List<double>();
audioVisualizer.Chapters = new List<MatroskaChapter>();
Configuration.Settings.RecentFiles.Add(fileName, FirstVisibleIndex, FirstSelectedIndex, VideoFileName, _subtitleOriginalFileName, Configuration.Settings.General.CurrentVideoOffsetInMs);
Configuration.Settings.RecentFiles.Add(fileName, FirstVisibleIndex, FirstSelectedIndex, VideoFileName, _subtitleOriginalFileName, Configuration.Settings.General.CurrentVideoOffsetInMs, Configuration.Settings.General.CurrentVideoIsSmpte);
Configuration.Settings.Save();
UpdateRecentFilesUI();
_fileName = fileName;
@ -4002,7 +4004,7 @@ namespace Nikse.SubtitleEdit.Forms
{
if (!string.IsNullOrEmpty(_fileName))
{
Configuration.Settings.RecentFiles.Add(_fileName, FirstVisibleIndex, FirstSelectedIndex, VideoFileName, _subtitleOriginalFileName, Configuration.Settings.General.CurrentVideoOffsetInMs);
Configuration.Settings.RecentFiles.Add(_fileName, FirstVisibleIndex, FirstSelectedIndex, VideoFileName, _subtitleOriginalFileName, Configuration.Settings.General.CurrentVideoOffsetInMs, Configuration.Settings.General.CurrentVideoIsSmpte);
}
RecentFileEntry rfe = null;
@ -4072,6 +4074,12 @@ namespace Nikse.SubtitleEdit.Forms
SubtitleListview1.Fill(_subtitle);
}
}
Configuration.Settings.General.CurrentVideoIsSmpte = rfe.VideoIsSmpte;
if (rfe.VideoIsSmpte)
{
SmpteTimeModedropFrameToolStripMenuItem_Click(null, null);
}
}
private void GotoSubPosAndPause()
@ -4259,7 +4267,7 @@ namespace Nikse.SubtitleEdit.Forms
Configuration.Settings.General.LastSaveAsFormat = format.Name;
SetCurrentFormat(format);
Configuration.Settings.RecentFiles.Add(_fileName, FirstVisibleIndex, FirstSelectedIndex, VideoFileName, _subtitleOriginalFileName, Configuration.Settings.General.CurrentVideoOffsetInMs);
Configuration.Settings.RecentFiles.Add(_fileName, FirstVisibleIndex, FirstSelectedIndex, VideoFileName, _subtitleOriginalFileName, Configuration.Settings.General.CurrentVideoOffsetInMs, Configuration.Settings.General.CurrentVideoIsSmpte);
Configuration.Settings.Save();
UpdateRecentFilesUI();
_changeSubtitleHash = GetFastSubtitleHash();
@ -4301,7 +4309,7 @@ namespace Nikse.SubtitleEdit.Forms
if (ebu.Save(_fileName, sub, !_saveAsCalled, header))
{
_changeSubtitleHash = GetFastSubtitleHash();
Configuration.Settings.RecentFiles.Add(_fileName, FirstVisibleIndex, FirstSelectedIndex, VideoFileName, _subtitleOriginalFileName, Configuration.Settings.General.CurrentVideoOffsetInMs);
Configuration.Settings.RecentFiles.Add(_fileName, FirstVisibleIndex, FirstSelectedIndex, VideoFileName, _subtitleOriginalFileName, Configuration.Settings.General.CurrentVideoOffsetInMs, Configuration.Settings.General.CurrentVideoIsSmpte);
Configuration.Settings.Save();
}
}
@ -4477,7 +4485,7 @@ namespace Nikse.SubtitleEdit.Forms
}, TimeSpan.FromSeconds(1), 4);
}
Configuration.Settings.RecentFiles.Add(_fileName, FirstVisibleIndex, FirstSelectedIndex, VideoFileName, _subtitleOriginalFileName, Configuration.Settings.General.CurrentVideoOffsetInMs);
Configuration.Settings.RecentFiles.Add(_fileName, FirstVisibleIndex, FirstSelectedIndex, VideoFileName, _subtitleOriginalFileName, Configuration.Settings.General.CurrentVideoOffsetInMs, Configuration.Settings.General.CurrentVideoIsSmpte);
Configuration.Settings.Save();
new BookmarkPersistence(_subtitle, _fileName).Save();
_fileDateTime = File.GetLastWriteTime(_fileName);
@ -4529,7 +4537,7 @@ namespace Nikse.SubtitleEdit.Forms
{
if (ebu.Save(_subtitleOriginalFileName, subAlt))
{
Configuration.Settings.RecentFiles.Add(_fileName, FirstVisibleIndex, FirstSelectedIndex, VideoFileName, _subtitleOriginalFileName, Configuration.Settings.General.CurrentVideoOffsetInMs);
Configuration.Settings.RecentFiles.Add(_fileName, FirstVisibleIndex, FirstSelectedIndex, VideoFileName, _subtitleOriginalFileName, Configuration.Settings.General.CurrentVideoOffsetInMs, Configuration.Settings.General.CurrentVideoIsSmpte);
Configuration.Settings.Save();
ShowStatus(string.Format(_language.SavedOriginalSubtitleX, _subtitleOriginalFileName));
_changeOriginalSubtitleHash = GetFastSubtitleOriginalHash();
@ -4655,6 +4663,8 @@ namespace Nikse.SubtitleEdit.Forms
labelDurationWarning.Text = string.Empty;
Configuration.Settings.General.CurrentVideoOffsetInMs = 0;
Configuration.Settings.General.CurrentVideoIsSmpte = false;
smpteTimeModedropFrameToolStripMenuItem.Checked = false;
_subtitle = new Subtitle(_subtitle.HistoryItems);
_changeOriginalSubtitleHash = -1;
_changeSubtitleHash = -1;
@ -4778,7 +4788,7 @@ namespace Nikse.SubtitleEdit.Forms
{
if (Configuration.Settings.General.ShowRecentFiles)
{
Configuration.Settings.RecentFiles.Add(_fileName, FirstVisibleIndex, FirstSelectedIndex, VideoFileName, _subtitleOriginalFileName, Configuration.Settings.General.CurrentVideoOffsetInMs);
Configuration.Settings.RecentFiles.Add(_fileName, FirstVisibleIndex, FirstSelectedIndex, VideoFileName, _subtitleOriginalFileName, Configuration.Settings.General.CurrentVideoOffsetInMs, Configuration.Settings.General.CurrentVideoIsSmpte);
}
MakeHistoryForUndo(_language.BeforeNew);
@ -12142,7 +12152,7 @@ namespace Nikse.SubtitleEdit.Forms
{
if (!string.IsNullOrEmpty(_fileName))
{
Configuration.Settings.RecentFiles.Add(_fileName, FirstVisibleIndex, FirstSelectedIndex, VideoFileName, _subtitleOriginalFileName, Configuration.Settings.General.CurrentVideoOffsetInMs);
Configuration.Settings.RecentFiles.Add(_fileName, FirstVisibleIndex, FirstSelectedIndex, VideoFileName, _subtitleOriginalFileName, Configuration.Settings.General.CurrentVideoOffsetInMs, Configuration.Settings.General.CurrentVideoIsSmpte);
}
else if (Configuration.Settings.RecentFiles.Files.Count > 0)
{
@ -20180,7 +20190,7 @@ namespace Nikse.SubtitleEdit.Forms
SubtitleListview1.Fill(_subtitle, _subtitleOriginal);
RestoreSubtitleListviewIndices();
Configuration.Settings.RecentFiles.Add(_fileName, FirstVisibleIndex, FirstSelectedIndex, VideoFileName, _subtitleOriginalFileName, Configuration.Settings.General.CurrentVideoOffsetInMs);
Configuration.Settings.RecentFiles.Add(_fileName, FirstVisibleIndex, FirstSelectedIndex, VideoFileName, _subtitleOriginalFileName, Configuration.Settings.General.CurrentVideoOffsetInMs, Configuration.Settings.General.CurrentVideoIsSmpte);
Configuration.Settings.Save();
UpdateRecentFilesUI();
MainResize();
@ -26333,7 +26343,7 @@ namespace Nikse.SubtitleEdit.Forms
SetTitle();
if (_fileName != null)
{
Configuration.Settings.RecentFiles.Add(_fileName, FirstVisibleIndex, FirstSelectedIndex, VideoFileName, _subtitleOriginalFileName, Configuration.Settings.General.CurrentVideoOffsetInMs);
Configuration.Settings.RecentFiles.Add(_fileName, FirstVisibleIndex, FirstSelectedIndex, VideoFileName, _subtitleOriginalFileName, Configuration.Settings.General.CurrentVideoOffsetInMs, Configuration.Settings.General.CurrentVideoIsSmpte);
}
}
}
@ -26375,7 +26385,7 @@ namespace Nikse.SubtitleEdit.Forms
if (_fileName != null && updateRecentFiles)
{
Configuration.Settings.RecentFiles.Add(_fileName, FirstVisibleIndex, FirstSelectedIndex, VideoFileName, _subtitleOriginalFileName, Configuration.Settings.General.CurrentVideoOffsetInMs);
Configuration.Settings.RecentFiles.Add(_fileName, FirstVisibleIndex, FirstSelectedIndex, VideoFileName, _subtitleOriginalFileName, Configuration.Settings.General.CurrentVideoOffsetInMs, Configuration.Settings.General.CurrentVideoIsSmpte);
Configuration.Settings.Save();
UpdateRecentFilesUI();
}
@ -30520,6 +30530,7 @@ namespace Nikse.SubtitleEdit.Forms
{
smpteTimeModedropFrameToolStripMenuItem.Checked = !smpteTimeModedropFrameToolStripMenuItem.Checked;
mediaPlayer.SmpteMode = smpteTimeModedropFrameToolStripMenuItem.Checked;
Configuration.Settings.General.CurrentVideoIsSmpte = smpteTimeModedropFrameToolStripMenuItem.Checked;
if (audioVisualizer.WavePeaks != null)
{
ReloadWaveform(VideoFileName, VideoAudioTrackNumber);