diff --git a/src/libse/AutoTranslate/AnthropicTranslate.cs b/src/libse/AutoTranslate/AnthropicTranslate.cs index 77b122735..c5e6cc8fd 100644 --- a/src/libse/AutoTranslate/AnthropicTranslate.cs +++ b/src/libse/AutoTranslate/AnthropicTranslate.cs @@ -8,6 +8,7 @@ using System.Net.Http.Headers; using System.Text; using System.Threading; using System.Threading.Tasks; +using Nikse.SubtitleEdit.Core.Settings; namespace Nikse.SubtitleEdit.Core.AutoTranslate { diff --git a/src/libse/AutoTranslate/ChatGptTranslate.cs b/src/libse/AutoTranslate/ChatGptTranslate.cs index 0dfa46db2..7050b8c63 100644 --- a/src/libse/AutoTranslate/ChatGptTranslate.cs +++ b/src/libse/AutoTranslate/ChatGptTranslate.cs @@ -9,6 +9,7 @@ using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; +using Nikse.SubtitleEdit.Core.Settings; namespace Nikse.SubtitleEdit.Core.AutoTranslate { diff --git a/src/libse/AutoTranslate/LmStudioTranslate.cs b/src/libse/AutoTranslate/LmStudioTranslate.cs index ee15573c3..3ca09a98c 100644 --- a/src/libse/AutoTranslate/LmStudioTranslate.cs +++ b/src/libse/AutoTranslate/LmStudioTranslate.cs @@ -8,6 +8,7 @@ using System.Net.Http.Headers; using System.Text; using System.Threading; using System.Threading.Tasks; +using Nikse.SubtitleEdit.Core.Settings; namespace Nikse.SubtitleEdit.Core.AutoTranslate { diff --git a/src/libse/AutoTranslate/OllamaTranslate.cs b/src/libse/AutoTranslate/OllamaTranslate.cs index 8411ce3c6..f70fa3d0d 100644 --- a/src/libse/AutoTranslate/OllamaTranslate.cs +++ b/src/libse/AutoTranslate/OllamaTranslate.cs @@ -8,6 +8,7 @@ using System.Net.Http.Headers; using System.Text; using System.Threading; using System.Threading.Tasks; +using Nikse.SubtitleEdit.Core.Settings; namespace Nikse.SubtitleEdit.Core.AutoTranslate { diff --git a/src/libse/Common/Configuration.cs b/src/libse/Common/Configuration.cs index 489932fa6..346ce6269 100644 --- a/src/libse/Common/Configuration.cs +++ b/src/libse/Common/Configuration.cs @@ -13,7 +13,7 @@ namespace Nikse.SubtitleEdit.Core.Common { private static readonly Lazy Instance = new Lazy(() => new Configuration()); - private readonly Lazy _settings; + private readonly Lazy _settings; private readonly IEnumerable _encodings; public static readonly string BaseDirectory = GetBaseDirectory(); @@ -59,7 +59,7 @@ namespace Nikse.SubtitleEdit.Core.Common private Configuration() { _encodings = GetAvailableEncodings(); - _settings = new Lazy(Settings.GetSettings); + _settings = new Lazy(Core.Settings.Settings.GetSettings); } private const int PlatformWindows = 1; @@ -113,7 +113,7 @@ namespace Nikse.SubtitleEdit.Core.Common : PlatformWindows; } - public static Settings Settings => Instance.Value._settings.Value; + public static Settings.Settings Settings => Instance.Value._settings.Value; public static IEnumerable AvailableEncodings => Instance.Value._encodings; diff --git a/src/libse/Forms/TimeCodesBeautifier.cs b/src/libse/Forms/TimeCodesBeautifier.cs index e44e5dda1..8eb8d03de 100644 --- a/src/libse/Forms/TimeCodesBeautifier.cs +++ b/src/libse/Forms/TimeCodesBeautifier.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using Nikse.SubtitleEdit.Core.Common; +using Nikse.SubtitleEdit.Core.Settings; using Nikse.SubtitleEdit.Core.SubtitleFormats; namespace Nikse.SubtitleEdit.Core.Forms diff --git a/src/libse/Http/DownloaderFactory.cs b/src/libse/Http/DownloaderFactory.cs index 72114248c..707abf747 100644 --- a/src/libse/Http/DownloaderFactory.cs +++ b/src/libse/Http/DownloaderFactory.cs @@ -2,6 +2,7 @@ using System.Net; using System.Net.Http; using Nikse.SubtitleEdit.Core.Common; +using Nikse.SubtitleEdit.Core.Settings; namespace Nikse.SubtitleEdit.Core.Http { diff --git a/src/libse/Settings/AssaStorageCategory.cs b/src/libse/Settings/AssaStorageCategory.cs new file mode 100644 index 000000000..b0703b64f --- /dev/null +++ b/src/libse/Settings/AssaStorageCategory.cs @@ -0,0 +1,12 @@ +using System.Collections.Generic; +using Nikse.SubtitleEdit.Core.Common; + +namespace Nikse.SubtitleEdit.Core.Settings +{ + public class AssaStorageCategory + { + public string Name { get; set; } + public bool IsDefault { get; set; } + public List Styles { get; set; } + } +} \ No newline at end of file diff --git a/src/libse/Settings/BeautifyTimeCodesSettings.cs b/src/libse/Settings/BeautifyTimeCodesSettings.cs new file mode 100644 index 000000000..432e91d46 --- /dev/null +++ b/src/libse/Settings/BeautifyTimeCodesSettings.cs @@ -0,0 +1,220 @@ +namespace Nikse.SubtitleEdit.Core.Settings +{ + public class BeautifyTimeCodesSettings + { + public bool AlignTimeCodes { get; set; } + public bool ExtractExactTimeCodes { get; set; } + public bool SnapToShotChanges { get; set; } + public int OverlapThreshold { get; set; } + public BeautifyTimeCodesProfile Profile { get; set; } + + public BeautifyTimeCodesSettings() + { + AlignTimeCodes = true; + ExtractExactTimeCodes = false; + SnapToShotChanges = true; + OverlapThreshold = 1000; + Profile = new BeautifyTimeCodesProfile(); + } + + public class BeautifyTimeCodesProfile + { + // General + public int Gap { get; set; } + + // In cues + public int InCuesGap { get; set; } + public int InCuesLeftGreenZone { get; set; } + public int InCuesLeftRedZone { get; set; } + public int InCuesRightRedZone { get; set; } + public int InCuesRightGreenZone { get; set; } + + // Out cues + public int OutCuesGap { get; set; } + public int OutCuesLeftGreenZone { get; set; } + public int OutCuesLeftRedZone { get; set; } + public int OutCuesRightRedZone { get; set; } + public int OutCuesRightGreenZone { get; set; } + + // Connected subtitles + public int ConnectedSubtitlesInCueClosestLeftGap { get; set; } + public int ConnectedSubtitlesInCueClosestRightGap { get; set; } + public int ConnectedSubtitlesOutCueClosestLeftGap { get; set; } + public int ConnectedSubtitlesOutCueClosestRightGap { get; set; } + public int ConnectedSubtitlesLeftGreenZone { get; set; } + public int ConnectedSubtitlesLeftRedZone { get; set; } + public int ConnectedSubtitlesRightRedZone { get; set; } + public int ConnectedSubtitlesRightGreenZone { get; set; } + public int ConnectedSubtitlesTreatConnected { get; set; } + + // Chaining + public bool ChainingGeneralUseZones { get; set; } + public int ChainingGeneralMaxGap { get; set; } + public int ChainingGeneralLeftGreenZone { get; set; } + public int ChainingGeneralLeftRedZone { get; set; } + public ChainingShotChangeBehaviorEnum ChainingGeneralShotChangeBehavior { get; set; } + public bool ChainingInCueOnShotUseZones { get; set; } + public int ChainingInCueOnShotMaxGap { get; set; } + public int ChainingInCueOnShotLeftGreenZone { get; set; } + public int ChainingInCueOnShotLeftRedZone { get; set; } + public ChainingShotChangeBehaviorEnum ChainingInCueOnShotShotChangeBehavior { get; set; } + public bool ChainingInCueOnShotCheckGeneral { get; set; } + public bool ChainingOutCueOnShotUseZones { get; set; } + public int ChainingOutCueOnShotMaxGap { get; set; } + public int ChainingOutCueOnShotRightRedZone { get; set; } + public int ChainingOutCueOnShotRightGreenZone { get; set; } + public ChainingShotChangeBehaviorEnum ChainingOutCueOnShotShotChangeBehavior { get; set; } + public bool ChainingOutCueOnShotCheckGeneral { get; set; } + + public enum Preset : int + { + Default = 0, + Netflix = 1, + SDI = 2, + } + + public enum ChainingShotChangeBehaviorEnum : int + { + DontChain = 0, + ExtendCrossingShotChange = 1, + ExtendUntilShotChange = 2 + } + + public BeautifyTimeCodesProfile(Preset preset = Preset.Default) + { + switch (preset) + { + case Preset.Netflix: + Gap = 2; + + InCuesGap = 0; + InCuesLeftGreenZone = 12; + InCuesLeftRedZone = 7; + InCuesRightRedZone = 7; + InCuesRightGreenZone = 12; + + OutCuesGap = 2; + OutCuesLeftGreenZone = 12; + OutCuesLeftRedZone = 7; + OutCuesRightRedZone = 7; + OutCuesRightGreenZone = 12; + + ConnectedSubtitlesInCueClosestLeftGap = 2; + ConnectedSubtitlesInCueClosestRightGap = 0; + ConnectedSubtitlesOutCueClosestLeftGap = 2; + ConnectedSubtitlesOutCueClosestRightGap = 0; + ConnectedSubtitlesLeftGreenZone = 12; + ConnectedSubtitlesLeftRedZone = 7; + ConnectedSubtitlesRightRedZone = 7; + ConnectedSubtitlesRightGreenZone = 12; + ConnectedSubtitlesTreatConnected = 180; + + ChainingGeneralUseZones = false; + ChainingGeneralMaxGap = 500; + ChainingGeneralLeftGreenZone = 12; + ChainingGeneralLeftRedZone = 11; + ChainingGeneralShotChangeBehavior = ChainingShotChangeBehaviorEnum.ExtendUntilShotChange; + ChainingInCueOnShotUseZones = false; + ChainingInCueOnShotMaxGap = 500; + ChainingInCueOnShotLeftGreenZone = 12; + ChainingInCueOnShotLeftRedZone = 11; + ChainingInCueOnShotShotChangeBehavior = ChainingShotChangeBehaviorEnum.ExtendUntilShotChange; + ChainingInCueOnShotCheckGeneral = true; + ChainingOutCueOnShotUseZones = false; + ChainingOutCueOnShotMaxGap = 500; + ChainingOutCueOnShotRightRedZone = 11; + ChainingOutCueOnShotRightGreenZone = 12; + ChainingOutCueOnShotShotChangeBehavior = ChainingShotChangeBehaviorEnum.ExtendUntilShotChange; + ChainingOutCueOnShotCheckGeneral = true; + break; + case Preset.SDI: + Gap = 4; + + InCuesGap = 2; + InCuesLeftGreenZone = 12; + InCuesLeftRedZone = 7; + InCuesRightRedZone = 7; + InCuesRightGreenZone = 12; + + OutCuesGap = 2; + OutCuesLeftGreenZone = 12; + OutCuesLeftRedZone = 7; + OutCuesRightRedZone = 7; + OutCuesRightGreenZone = 12; + + ConnectedSubtitlesInCueClosestLeftGap = 2; + ConnectedSubtitlesInCueClosestRightGap = 2; + ConnectedSubtitlesOutCueClosestLeftGap = 2; + ConnectedSubtitlesOutCueClosestRightGap = 2; + ConnectedSubtitlesLeftGreenZone = 12; + ConnectedSubtitlesLeftRedZone = 7; + ConnectedSubtitlesRightRedZone = 7; + ConnectedSubtitlesRightGreenZone = 12; + ConnectedSubtitlesTreatConnected = 240; + + ChainingGeneralUseZones = false; + ChainingGeneralMaxGap = 1000; + ChainingGeneralLeftGreenZone = 25; + ChainingGeneralLeftRedZone = 24; + ChainingGeneralShotChangeBehavior = ChainingShotChangeBehaviorEnum.ExtendCrossingShotChange; + ChainingInCueOnShotUseZones = false; + ChainingInCueOnShotMaxGap = 1000; + ChainingInCueOnShotLeftGreenZone = 25; + ChainingInCueOnShotLeftRedZone = 24; + ChainingInCueOnShotShotChangeBehavior = ChainingShotChangeBehaviorEnum.ExtendCrossingShotChange; + ChainingInCueOnShotCheckGeneral = true; + ChainingOutCueOnShotUseZones = true; + ChainingOutCueOnShotMaxGap = 500; + ChainingOutCueOnShotRightRedZone = 7; + ChainingOutCueOnShotRightGreenZone = 12; + ChainingOutCueOnShotShotChangeBehavior = ChainingShotChangeBehaviorEnum.ExtendCrossingShotChange; + ChainingOutCueOnShotCheckGeneral = true; + break; + default: + Gap = 3; + + InCuesGap = 0; + InCuesLeftGreenZone = 3; + InCuesLeftRedZone = 3; + InCuesRightRedZone = 5; + InCuesRightGreenZone = 5; + + OutCuesGap = 0; + OutCuesLeftGreenZone = 10; + OutCuesLeftRedZone = 10; + OutCuesRightRedZone = 3; + OutCuesRightGreenZone = 12; + + ConnectedSubtitlesInCueClosestLeftGap = 3; + ConnectedSubtitlesInCueClosestRightGap = 0; + ConnectedSubtitlesOutCueClosestLeftGap = 0; + ConnectedSubtitlesOutCueClosestRightGap = 3; + ConnectedSubtitlesLeftGreenZone = 3; + ConnectedSubtitlesLeftRedZone = 3; + ConnectedSubtitlesRightRedZone = 3; + ConnectedSubtitlesRightGreenZone = 3; + ConnectedSubtitlesTreatConnected = 180; + + ChainingGeneralUseZones = false; + ChainingGeneralMaxGap = 1000; + ChainingGeneralLeftGreenZone = 25; + ChainingGeneralLeftRedZone = 24; + ChainingGeneralShotChangeBehavior = ChainingShotChangeBehaviorEnum.ExtendUntilShotChange; + ChainingInCueOnShotUseZones = false; + ChainingInCueOnShotMaxGap = 1000; + ChainingInCueOnShotLeftGreenZone = 25; + ChainingInCueOnShotLeftRedZone = 24; + ChainingInCueOnShotShotChangeBehavior = ChainingShotChangeBehaviorEnum.ExtendUntilShotChange; + ChainingInCueOnShotCheckGeneral = true; + ChainingOutCueOnShotUseZones = false; + ChainingOutCueOnShotMaxGap = 500; + ChainingOutCueOnShotRightRedZone = 11; + ChainingOutCueOnShotRightGreenZone = 12; + ChainingOutCueOnShotShotChangeBehavior = ChainingShotChangeBehaviorEnum.ExtendUntilShotChange; + ChainingOutCueOnShotCheckGeneral = true; + break; + } + } + } + } +} \ No newline at end of file diff --git a/src/libse/Settings/CompareSettings.cs b/src/libse/Settings/CompareSettings.cs new file mode 100644 index 000000000..0c4ccf727 --- /dev/null +++ b/src/libse/Settings/CompareSettings.cs @@ -0,0 +1,16 @@ +namespace Nikse.SubtitleEdit.Core.Settings +{ + public class CompareSettings + { + public bool ShowOnlyDifferences { get; set; } + public bool OnlyLookForDifferenceInText { get; set; } + public bool IgnoreLineBreaks { get; set; } + public bool IgnoreWhitespace { get; set; } + public bool IgnoreFormatting { get; set; } + + public CompareSettings() + { + OnlyLookForDifferenceInText = true; + } + } +} \ No newline at end of file diff --git a/src/libse/Settings/FcpExportSettings.cs b/src/libse/Settings/FcpExportSettings.cs new file mode 100644 index 000000000..126f0ba36 --- /dev/null +++ b/src/libse/Settings/FcpExportSettings.cs @@ -0,0 +1,22 @@ +using System.Drawing; + +namespace Nikse.SubtitleEdit.Core.Settings +{ + public class FcpExportSettings + { + public string FontName { get; set; } + public int FontSize { get; set; } + public string Alignment { get; set; } + public int Baseline { get; set; } + public Color Color { get; set; } + + public FcpExportSettings() + { + FontName = "Lucida Sans"; + FontSize = 36; + Alignment = "center"; + Baseline = 29; + Color = Color.WhiteSmoke; + } + } +} \ No newline at end of file diff --git a/src/libse/Settings/FixCommonErrorsSettings.cs b/src/libse/Settings/FixCommonErrorsSettings.cs new file mode 100644 index 000000000..5451ac601 --- /dev/null +++ b/src/libse/Settings/FixCommonErrorsSettings.cs @@ -0,0 +1,340 @@ +using System.Linq; +using System.Text; + +namespace Nikse.SubtitleEdit.Core.Settings +{ + public class FixCommonErrorsSettings + { + public string StartPosition { get; set; } + public string StartSize { get; set; } + public bool EmptyLinesTicked { get; set; } + public bool OverlappingDisplayTimeTicked { get; set; } + public bool TooShortDisplayTimeTicked { get; set; } + public bool TooLongDisplayTimeTicked { get; set; } + public bool TooShortGapTicked { get; set; } + public bool InvalidItalicTagsTicked { get; set; } + public bool BreakLongLinesTicked { get; set; } + public bool MergeShortLinesTicked { get; set; } + public bool MergeShortLinesAllTicked { get; set; } + public bool MergeShortLinesPixelWidthTicked { get; set; } + public bool UnneededSpacesTicked { get; set; } + public bool UnneededPeriodsTicked { get; set; } + public bool FixCommasTicked { get; set; } + public bool MissingSpacesTicked { get; set; } + public bool AddMissingQuotesTicked { get; set; } + public bool Fix3PlusLinesTicked { get; set; } + public bool FixHyphensTicked { get; set; } + public bool FixHyphensRemoveSingleLineTicked { get; set; } + public bool UppercaseIInsideLowercaseWordTicked { get; set; } + public bool DoubleApostropheToQuoteTicked { get; set; } + public bool AddPeriodAfterParagraphTicked { get; set; } + public bool StartWithUppercaseLetterAfterParagraphTicked { get; set; } + public bool StartWithUppercaseLetterAfterPeriodInsideParagraphTicked { get; set; } + public bool StartWithUppercaseLetterAfterColonTicked { get; set; } + public bool AloneLowercaseIToUppercaseIEnglishTicked { get; set; } + public bool FixOcrErrorsViaReplaceListTicked { get; set; } + public bool RemoveSpaceBetweenNumberTicked { get; set; } + public bool FixDialogsOnOneLineTicked { get; set; } + public bool RemoveDialogFirstLineInNonDialogs { get; set; } + public bool TurkishAnsiTicked { get; set; } + public bool DanishLetterITicked { get; set; } + public bool SpanishInvertedQuestionAndExclamationMarksTicked { get; set; } + public bool FixDoubleDashTicked { get; set; } + public bool FixDoubleGreaterThanTicked { get; set; } + public bool FixEllipsesStartTicked { get; set; } + public bool FixMissingOpenBracketTicked { get; set; } + public bool FixMusicNotationTicked { get; set; } + public bool FixContinuationStyleTicked { get; set; } + public bool FixUnnecessaryLeadingDotsTicked { get; set; } + public bool NormalizeStringsTicked { get; set; } + public string DefaultFixes { get; set; } + + + public FixCommonErrorsSettings() + { + SetDefaultFixes(); + } + + public void SaveUserDefaultFixes() + { + var sb = new StringBuilder(); + + if (EmptyLinesTicked) + { + sb.Append(nameof(EmptyLinesTicked) + ";"); + } + + if (OverlappingDisplayTimeTicked) + { + sb.Append(nameof(OverlappingDisplayTimeTicked) + ";"); + } + + if (TooShortDisplayTimeTicked) + { + sb.Append(nameof(TooShortDisplayTimeTicked) + ";"); + } + + if (TooLongDisplayTimeTicked) + { + sb.Append(nameof(TooLongDisplayTimeTicked) + ";"); + } + + if (TooShortGapTicked) + { + sb.Append(nameof(TooShortGapTicked) + ";"); + } + + if (InvalidItalicTagsTicked) + { + sb.Append(nameof(InvalidItalicTagsTicked) + ";"); + } + + if (BreakLongLinesTicked) + { + sb.Append(nameof(BreakLongLinesTicked) + ";"); + } + + if (MergeShortLinesTicked) + { + sb.Append(nameof(MergeShortLinesTicked) + ";"); + } + + if (MergeShortLinesAllTicked) + { + sb.Append(nameof(MergeShortLinesAllTicked) + ";"); + } + + if (MergeShortLinesPixelWidthTicked) + { + sb.Append(nameof(MergeShortLinesPixelWidthTicked) + ";"); + } + + if (UnneededSpacesTicked) + { + sb.Append(nameof(UnneededSpacesTicked) + ";"); + } + + if (UnneededPeriodsTicked) + { + sb.Append(nameof(UnneededPeriodsTicked) + ";"); + } + + if (FixCommasTicked) + { + sb.Append(nameof(FixCommasTicked) + ";"); + } + + if (MissingSpacesTicked) + { + sb.Append(nameof(MissingSpacesTicked) + ";"); + } + + if (AddMissingQuotesTicked) + { + sb.Append(nameof(AddMissingQuotesTicked) + ";"); + } + + if (Fix3PlusLinesTicked) + { + sb.Append(nameof(Fix3PlusLinesTicked) + ";"); + } + + if (FixHyphensTicked) + { + sb.Append(nameof(FixHyphensTicked) + ";"); + } + + if (FixHyphensRemoveSingleLineTicked) + { + sb.Append(nameof(FixHyphensRemoveSingleLineTicked) + ";"); + } + + if (UppercaseIInsideLowercaseWordTicked) + { + sb.Append(nameof(UppercaseIInsideLowercaseWordTicked) + ";"); + } + + if (DoubleApostropheToQuoteTicked) + { + sb.Append(nameof(DoubleApostropheToQuoteTicked) + ";"); + } + + if (AddPeriodAfterParagraphTicked) + { + sb.Append(nameof(AddPeriodAfterParagraphTicked) + ";"); + } + + if (StartWithUppercaseLetterAfterParagraphTicked) + { + sb.Append(nameof(StartWithUppercaseLetterAfterParagraphTicked) + ";"); + } + + if (StartWithUppercaseLetterAfterPeriodInsideParagraphTicked) + { + sb.Append(nameof(StartWithUppercaseLetterAfterPeriodInsideParagraphTicked) + ";"); + } + + if (StartWithUppercaseLetterAfterColonTicked) + { + sb.Append(nameof(StartWithUppercaseLetterAfterColonTicked) + ";"); + } + + if (AloneLowercaseIToUppercaseIEnglishTicked) + { + sb.Append(nameof(AloneLowercaseIToUppercaseIEnglishTicked) + ";"); + } + + if (FixOcrErrorsViaReplaceListTicked) + { + sb.Append(nameof(FixOcrErrorsViaReplaceListTicked) + ";"); + } + + if (RemoveSpaceBetweenNumberTicked) + { + sb.Append(nameof(RemoveSpaceBetweenNumberTicked) + ";"); + } + + if (FixDialogsOnOneLineTicked) + { + sb.Append(nameof(FixDialogsOnOneLineTicked) + ";"); + } + + if (RemoveDialogFirstLineInNonDialogs) + { + sb.Append(nameof(RemoveDialogFirstLineInNonDialogs) + ";"); + } + + if (TurkishAnsiTicked) + { + sb.Append(nameof(TurkishAnsiTicked) + ";"); + } + + if (DanishLetterITicked) + { + sb.Append(nameof(DanishLetterITicked) + ";"); + } + + if (SpanishInvertedQuestionAndExclamationMarksTicked) + { + sb.Append(nameof(SpanishInvertedQuestionAndExclamationMarksTicked) + ";"); + } + + if (FixDoubleDashTicked) + { + sb.Append(nameof(FixDoubleDashTicked) + ";"); + } + + if (FixEllipsesStartTicked) + { + sb.Append(nameof(FixEllipsesStartTicked) + ";"); + } + + if (FixMissingOpenBracketTicked) + { + sb.Append(nameof(FixMissingOpenBracketTicked) + ";"); + } + + if (FixMusicNotationTicked) + { + sb.Append(nameof(FixMusicNotationTicked) + ";"); + } + + if (FixContinuationStyleTicked) + { + sb.Append(nameof(FixContinuationStyleTicked) + ";"); + } + + if (FixUnnecessaryLeadingDotsTicked) + { + sb.Append(nameof(FixUnnecessaryLeadingDotsTicked) + ";"); + } + + if (NormalizeStringsTicked) + { + sb.Append(nameof(NormalizeStringsTicked) + ";"); + } + + DefaultFixes = sb.ToString().TrimEnd(';'); + } + + public void LoadUserDefaultFixes(string fixes) + { + var list = fixes.Split(';'); + EmptyLinesTicked = list.Contains(nameof(EmptyLinesTicked)); + OverlappingDisplayTimeTicked = list.Contains(nameof(OverlappingDisplayTimeTicked)); + TooShortDisplayTimeTicked = list.Contains(nameof(TooShortDisplayTimeTicked)); + TooLongDisplayTimeTicked = list.Contains(nameof(TooLongDisplayTimeTicked)); + TooShortGapTicked = list.Contains(nameof(TooShortGapTicked)); + InvalidItalicTagsTicked = list.Contains(nameof(InvalidItalicTagsTicked)); + BreakLongLinesTicked = list.Contains(nameof(BreakLongLinesTicked)); + MergeShortLinesTicked = list.Contains(nameof(MergeShortLinesTicked)); + MergeShortLinesAllTicked = list.Contains(nameof(MergeShortLinesAllTicked)); + MergeShortLinesPixelWidthTicked = list.Contains(nameof(MergeShortLinesPixelWidthTicked)); + UnneededSpacesTicked = list.Contains(nameof(UnneededSpacesTicked)); + UnneededPeriodsTicked = list.Contains(nameof(UnneededPeriodsTicked)); + FixCommasTicked = list.Contains(nameof(FixCommasTicked)); + MissingSpacesTicked = list.Contains(nameof(MissingSpacesTicked)); + AddMissingQuotesTicked = list.Contains(nameof(AddMissingQuotesTicked)); + Fix3PlusLinesTicked = list.Contains(nameof(Fix3PlusLinesTicked)); + FixHyphensTicked = list.Contains(nameof(FixHyphensTicked)); + FixHyphensRemoveSingleLineTicked = list.Contains(nameof(FixHyphensRemoveSingleLineTicked)); + UppercaseIInsideLowercaseWordTicked = list.Contains(nameof(UppercaseIInsideLowercaseWordTicked)); + DoubleApostropheToQuoteTicked = list.Contains(nameof(DoubleApostropheToQuoteTicked)); + AddPeriodAfterParagraphTicked = list.Contains(nameof(AddPeriodAfterParagraphTicked)); + StartWithUppercaseLetterAfterParagraphTicked = list.Contains(nameof(StartWithUppercaseLetterAfterParagraphTicked)); + StartWithUppercaseLetterAfterPeriodInsideParagraphTicked = list.Contains(nameof(StartWithUppercaseLetterAfterPeriodInsideParagraphTicked)); + StartWithUppercaseLetterAfterColonTicked = list.Contains(nameof(StartWithUppercaseLetterAfterColonTicked)); + AloneLowercaseIToUppercaseIEnglishTicked = list.Contains(nameof(AloneLowercaseIToUppercaseIEnglishTicked)); + FixOcrErrorsViaReplaceListTicked = list.Contains(nameof(FixOcrErrorsViaReplaceListTicked)); + RemoveSpaceBetweenNumberTicked = list.Contains(nameof(RemoveSpaceBetweenNumberTicked)); + FixDialogsOnOneLineTicked = list.Contains(nameof(FixDialogsOnOneLineTicked)); + RemoveDialogFirstLineInNonDialogs = list.Contains(nameof(RemoveDialogFirstLineInNonDialogs)); + TurkishAnsiTicked = list.Contains(nameof(TurkishAnsiTicked)); + DanishLetterITicked = list.Contains(nameof(DanishLetterITicked)); + SpanishInvertedQuestionAndExclamationMarksTicked = list.Contains(nameof(SpanishInvertedQuestionAndExclamationMarksTicked)); + FixDoubleDashTicked = list.Contains(nameof(FixDoubleDashTicked)); + FixEllipsesStartTicked = list.Contains(nameof(FixEllipsesStartTicked)); + FixMissingOpenBracketTicked = list.Contains(nameof(FixMissingOpenBracketTicked)); + FixMusicNotationTicked = list.Contains(nameof(FixMusicNotationTicked)); + FixContinuationStyleTicked = list.Contains(nameof(FixContinuationStyleTicked)); + FixUnnecessaryLeadingDotsTicked = list.Contains(nameof(FixUnnecessaryLeadingDotsTicked)); + NormalizeStringsTicked = list.Contains(nameof(NormalizeStringsTicked)); + } + + public void SetDefaultFixes() + { + LoadUserDefaultFixes(string.Empty); + EmptyLinesTicked = true; + OverlappingDisplayTimeTicked = true; + TooShortDisplayTimeTicked = true; + TooLongDisplayTimeTicked = true; + TooShortGapTicked = false; + InvalidItalicTagsTicked = true; + BreakLongLinesTicked = true; + MergeShortLinesTicked = true; + MergeShortLinesPixelWidthTicked = false; + UnneededPeriodsTicked = true; + FixCommasTicked = true; + UnneededSpacesTicked = true; + MissingSpacesTicked = true; + UppercaseIInsideLowercaseWordTicked = true; + DoubleApostropheToQuoteTicked = true; + AddPeriodAfterParagraphTicked = false; + StartWithUppercaseLetterAfterParagraphTicked = true; + StartWithUppercaseLetterAfterPeriodInsideParagraphTicked = false; + StartWithUppercaseLetterAfterColonTicked = false; + AloneLowercaseIToUppercaseIEnglishTicked = false; + TurkishAnsiTicked = false; + DanishLetterITicked = false; + FixDoubleDashTicked = true; + FixDoubleGreaterThanTicked = true; + FixEllipsesStartTicked = true; + FixMissingOpenBracketTicked = true; + FixMusicNotationTicked = true; + FixContinuationStyleTicked = false; + FixUnnecessaryLeadingDotsTicked = true; + NormalizeStringsTicked = false; + SaveUserDefaultFixes(); + } + } +} \ No newline at end of file diff --git a/src/libse/Settings/GeneralSettings.cs b/src/libse/Settings/GeneralSettings.cs new file mode 100644 index 000000000..f4633b99e --- /dev/null +++ b/src/libse/Settings/GeneralSettings.cs @@ -0,0 +1,836 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using Nikse.SubtitleEdit.Core.Common; +using Nikse.SubtitleEdit.Core.Common.TextLengthCalculator; +using Nikse.SubtitleEdit.Core.Enums; + +namespace Nikse.SubtitleEdit.Core.Settings +{ + public class GeneralSettings + { + public List Profiles { get; set; } + public string CurrentProfile { get; set; } + public bool ShowToolbarNew { get; set; } + public bool ShowToolbarOpen { get; set; } + public bool ShowToolbarOpenVideo { get; set; } + public bool ShowToolbarSave { get; set; } + public bool ShowToolbarSaveAs { get; set; } + public bool ShowToolbarFind { get; set; } + public bool ShowToolbarReplace { get; set; } + public bool ShowToolbarFixCommonErrors { get; set; } + public bool ShowToolbarRemoveTextForHi { get; set; } + public bool ShowToolbarToggleSourceView { get; set; } + public bool ShowToolbarVisualSync { get; set; } + public bool ShowToolbarBurnIn { get; set; } + public bool ShowToolbarSpellCheck { get; set; } + public bool ShowToolbarNetflixGlyphCheck { get; set; } + public bool ShowToolbarBeautifyTimeCodes { get; set; } + public bool ShowToolbarSettings { get; set; } + public bool ShowToolbarHelp { get; set; } + + public int LayoutNumber { get; set; } + public string LayoutSizes { get; set; } + public bool ShowVideoPlayer { get; set; } + public bool ShowAudioVisualizer { get; set; } + public bool ShowWaveform { get; set; } + public bool ShowSpectrogram { get; set; } + public bool ShowFrameRate { get; set; } + public bool ShowVideoControls { get; set; } + public bool TextAndOrigianlTextBoxesSwitched { get; set; } + public double DefaultFrameRate { get; set; } + public double CurrentFrameRate { get; set; } + public string DefaultSubtitleFormat { get; set; } + public string DefaultSaveAsFormat { get; set; } + public string FavoriteSubtitleFormats { get; set; } + public string DefaultEncoding { get; set; } + public bool AutoConvertToUtf8 { get; set; } + public bool AutoGuessAnsiEncoding { get; set; } + public string TranslationAutoSuffixes { get; set; } + public string TranslationAutoSuffixDefault { get; set; } + public string SystemSubtitleFontNameOverride { get; set; } + public int SystemSubtitleFontSizeOverride { get; set; } + + public string SubtitleFontName { get; set; } + public int SubtitleTextBoxFontSize { get; set; } + public bool SubtitleTextBoxSyntaxColor { get; set; } + public Color SubtitleTextBoxHtmlColor { get; set; } + public Color SubtitleTextBoxAssColor { get; set; } + public int SubtitleListViewFontSize { get; set; } + public bool SubtitleTextBoxFontBold { get; set; } + public bool SubtitleListViewFontBold { get; set; } + public Color SubtitleFontColor { get; set; } + public Color SubtitleBackgroundColor { get; set; } + public string MeasureFontName { get; set; } + public int MeasureFontSize { get; set; } + public bool MeasureFontBold { get; set; } + public int SubtitleLineMaximumPixelWidth { get; set; } + public bool CenterSubtitleInTextBox { get; set; } + public bool ShowRecentFiles { get; set; } + public bool RememberSelectedLine { get; set; } + public bool StartLoadLastFile { get; set; } + public bool StartRememberPositionAndSize { get; set; } + public string StartPosition { get; set; } + public string StartSize { get; set; } + public bool StartInSourceView { get; set; } + public bool RemoveBlankLinesWhenOpening { get; set; } + public bool RemoveBadCharsWhenOpening { get; set; } + public int SubtitleLineMaximumLength { get; set; } + public int MaxNumberOfLines { get; set; } + public int MaxNumberOfLinesPlusAbort { get; set; } + public int MergeLinesShorterThan { get; set; } + public int SubtitleMinimumDisplayMilliseconds { get; set; } + public int SubtitleMaximumDisplayMilliseconds { get; set; } + public int MinimumMillisecondsBetweenLines { get; set; } + public int SetStartEndHumanDelay { get; set; } + public bool AutoWrapLineWhileTyping { get; set; } + public double SubtitleMaximumCharactersPerSeconds { get; set; } + public double SubtitleOptimalCharactersPerSeconds { get; set; } + public string CpsLineLengthStrategy { get; set; } + public double SubtitleMaximumWordsPerMinute { get; set; } + public DialogType DialogStyle { get; set; } + public ContinuationStyle ContinuationStyle { get; set; } + public int ContinuationPause { get; set; } + public string CustomContinuationStyleSuffix { get; set; } + public bool CustomContinuationStyleSuffixApplyIfComma { get; set; } + public bool CustomContinuationStyleSuffixAddSpace { get; set; } + public bool CustomContinuationStyleSuffixReplaceComma { get; set; } + public string CustomContinuationStylePrefix { get; set; } + public bool CustomContinuationStylePrefixAddSpace { get; set; } + public bool CustomContinuationStyleUseDifferentStyleGap { get; set; } + public string CustomContinuationStyleGapSuffix { get; set; } + public bool CustomContinuationStyleGapSuffixApplyIfComma { get; set; } + public bool CustomContinuationStyleGapSuffixAddSpace { get; set; } + public bool CustomContinuationStyleGapSuffixReplaceComma { get; set; } + public string CustomContinuationStyleGapPrefix { get; set; } + public bool CustomContinuationStyleGapPrefixAddSpace { get; set; } + public bool FixContinuationStyleUncheckInsertsAllCaps { get; set; } + public bool FixContinuationStyleUncheckInsertsItalic { get; set; } + public bool FixContinuationStyleUncheckInsertsLowercase { get; set; } + public bool FixContinuationStyleHideContinuationCandidatesWithoutName { get; set; } + public bool FixContinuationStyleIgnoreLyrics { get; set; } + public string SpellCheckLanguage { get; set; } + public string VideoPlayer { get; set; } + public int VideoPlayerDefaultVolume { get; set; } + public string VideoPlayerPreviewFontName { get; set; } + public int VideoPlayerPreviewFontSize { get; set; } + public bool VideoPlayerPreviewFontBold { get; set; } + public bool VideoPlayerShowStopButton { get; set; } + public bool VideoPlayerShowFullscreenButton { get; set; } + public bool VideoPlayerShowMuteButton { get; set; } + public string Language { get; set; } + public string ListViewLineSeparatorString { get; set; } + public int ListViewDoubleClickAction { get; set; } + public string SaveAsUseFileNameFrom { get; set; } + public string UppercaseLetters { get; set; } + public int DefaultAdjustMilliseconds { get; set; } + public bool AutoRepeatOn { get; set; } + public int AutoRepeatCount { get; set; } + public bool AutoContinueOn { get; set; } + public int AutoContinueDelay { get; set; } + public bool ReturnToStartAfterRepeat { get; set; } + public bool SyncListViewWithVideoWhilePlaying { get; set; } + public int AutoBackupSeconds { get; set; } + public int AutoBackupDeleteAfterMonths { get; set; } + public string SpellChecker { get; set; } + public bool AllowEditOfOriginalSubtitle { get; set; } + public bool PromptDeleteLines { get; set; } + public bool Undocked { get; set; } + public string UndockedVideoPosition { get; set; } + public bool UndockedVideoFullscreen { get; set; } + public string UndockedWaveformPosition { get; set; } + public string UndockedVideoControlsPosition { get; set; } + public bool WaveformCenter { get; set; } + public bool WaveformAutoGenWhenOpeningVideo { get; set; } + public int WaveformUpdateIntervalMs { get; set; } + public int SmallDelayMilliseconds { get; set; } + public int LargeDelayMilliseconds { get; set; } + public bool ShowOriginalAsPreviewIfAvailable { get; set; } + public int LastPacCodePage { get; set; } + public string OpenSubtitleExtraExtensions { get; set; } + public bool ListViewColumnsRememberSize { get; set; } + + public int ListViewNumberWidth { get; set; } + public int ListViewStartWidth { get; set; } + public int ListViewEndWidth { get; set; } + public int ListViewDurationWidth { get; set; } + public int ListViewCpsWidth { get; set; } + public int ListViewWpmWidth { get; set; } + public int ListViewGapWidth { get; set; } + public int ListViewActorWidth { get; set; } + public int ListViewRegionWidth { get; set; } + public int ListViewTextWidth { get; set; } + + public int ListViewNumberDisplayIndex { get; set; } = -1; + public int ListViewStartDisplayIndex { get; set; } = -1; + public int ListViewEndDisplayIndex { get; set; } = -1; + public int ListViewDurationDisplayIndex { get; set; } = -1; + public int ListViewCpsDisplayIndex { get; set; } = -1; + public int ListViewWpmDisplayIndex { get; set; } = -1; + public int ListViewGapDisplayIndex { get; set; } = -1; + public int ListViewActorDisplayIndex { get; set; } = -1; + public int ListViewRegionDisplayIndex { get; set; } = -1; + public int ListViewTextDisplayIndex { get; set; } = -1; + + public bool DirectShowDoubleLoad { get; set; } + public string VlcWaveTranscodeSettings { get; set; } + public string VlcLocation { get; set; } + public string VlcLocationRelative { get; set; } + public string MpvVideoOutputWindows { get; set; } + public string MpvVideoOutputLinux { get; set; } + public string MpvVideoVf { get; set; } + public string MpvVideoAf { get; set; } + public string MpvExtraOptions { get; set; } + public bool MpvLogging { get; set; } + public bool MpvHandlesPreviewText { get; set; } + public Color MpvPreviewTextPrimaryColor { get; set; } + public Color MpvPreviewTextOutlineColor { get; set; } + public Color MpvPreviewTextBackgroundColor { get; set; } + public decimal MpvPreviewTextOutlineWidth { get; set; } + public decimal MpvPreviewTextShadowWidth { get; set; } + public bool MpvPreviewTextOpaqueBox { get; set; } + public string MpvPreviewTextOpaqueBoxStyle { get; set; } + public string MpvPreviewTextAlignment { get; set; } + public int MpvPreviewTextMarginVertical { get; set; } + public string MpcHcLocation { get; set; } + public string MkvMergeLocation { get; set; } + public bool UseFFmpegForWaveExtraction { get; set; } + public bool FFmpegUseCenterChannelOnly { get; set; } + public string FFmpegLocation { get; set; } + public string FFmpegSceneThreshold { get; set; } + public bool UseTimeFormatHHMMSSFF { get; set; } + public int SplitBehavior { get; set; } + public bool SplitRemovesDashes { get; set; } + public int ClearStatusBarAfterSeconds { get; set; } + public string Company { get; set; } + public bool MoveVideo100Or500MsPlaySmallSample { get; set; } + public bool DisableVideoAutoLoading { get; set; } + public bool DisableShowingLoadErrors { get; set; } + public bool AllowVolumeBoost { get; set; } + public int NewEmptyDefaultMs { get; set; } + public bool NewEmptyUseAutoDuration { get; set; } + public bool RightToLeftMode { get; set; } + public string LastSaveAsFormat { get; set; } + public bool CheckForUpdates { get; set; } + public DateTime LastCheckForUpdates { get; set; } + public bool AutoSave { get; set; } + public string PreviewAssaText { get; set; } + public string TagsInToggleHiTags { get; set; } + public string TagsInToggleCustomTags { get; set; } + public bool ShowProgress { get; set; } + public bool ShowNegativeDurationInfoOnSave { get; set; } + public bool ShowFormatRequiresUtf8Warning { get; set; } + public long DefaultVideoOffsetInMs { get; set; } + public string DefaultVideoOffsetInMsList { get; set; } + public long CurrentVideoOffsetInMs { get; set; } + public bool CurrentVideoIsSmpte { get; set; } + public bool AutoSetVideoSmpteForTtml { get; set; } + public bool AutoSetVideoSmpteForTtmlPrompt { 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; } + public string MeasurementConverterCategories { get; set; } + public bool SubtitleTextBoxAutoVerticalScrollBars { get; set; } + public int SubtitleTextBoxMaxHeight { get; set; } + public bool AllowLetterShortcutsInTextBox { get; set; } + public Color DarkThemeForeColor { get; set; } + public Color DarkThemeBackColor { get; set; } + public Color DarkThemeSelectedBackgroundColor { get; set; } + public Color DarkThemeDisabledColor { get; set; } + public Color LastColorPickerColor { get; set; } + public Color LastColorPickerColor1 { get; set; } + public Color LastColorPickerColor2 { get; set; } + public Color LastColorPickerColor3 { get; set; } + public Color LastColorPickerColor4 { get; set; } + public Color LastColorPickerColor5 { get; set; } + public Color LastColorPickerColor6 { get; set; } + public Color LastColorPickerColor7 { get; set; } + public Color LastColorPickerDropper { get; set; } + public string ToolbarIconTheme { get; set; } + public bool UseDarkTheme { get; set; } + public bool DarkThemeShowListViewGridLines { get; set; } + public bool ShowBetaStuff { get; set; } + public bool DebugTranslationSync { get; set; } + public bool UseLegacyDownloader { get; set; } + public bool UseLegacyHtmlColor { get; set; } = true; + public string DefaultLanguages { get; set; } + + public GeneralSettings() + { + ShowToolbarNew = true; + ShowToolbarOpen = true; + ShowToolbarSave = true; + ShowToolbarSaveAs = false; + ShowToolbarFind = true; + ShowToolbarReplace = true; + ShowToolbarFixCommonErrors = false; + ShowToolbarVisualSync = true; + ShowToolbarSpellCheck = true; + ShowToolbarNetflixGlyphCheck = true; + ShowToolbarBeautifyTimeCodes = false; + ShowToolbarSettings = true; + ShowToolbarHelp = true; + ShowToolbarToggleSourceView = false; + ShowVideoPlayer = true; + ShowAudioVisualizer = true; + ShowWaveform = true; + ShowSpectrogram = true; + ShowFrameRate = false; + ShowVideoControls = true; + DefaultFrameRate = 23.976; + CurrentFrameRate = DefaultFrameRate; + SubtitleFontName = "Tahoma"; + SubtitleTextBoxFontSize = 12; + SubtitleListViewFontSize = 10; + SubtitleTextBoxSyntaxColor = false; + SubtitleTextBoxHtmlColor = Color.CornflowerBlue; + SubtitleTextBoxAssColor = Color.BlueViolet; + SubtitleTextBoxFontBold = true; + SubtitleFontColor = Color.Black; + MeasureFontName = "Arial"; + MeasureFontSize = 24; + MeasureFontBold = false; + SubtitleLineMaximumPixelWidth = 576; + SubtitleBackgroundColor = Color.White; + CenterSubtitleInTextBox = false; + DefaultSubtitleFormat = "SubRip"; + DefaultEncoding = TextEncoding.Utf8WithBom; + AutoConvertToUtf8 = false; + AutoGuessAnsiEncoding = true; + TranslationAutoSuffixes = ";.translation;_translation;.en;_en"; + TranslationAutoSuffixDefault = ""; + ShowRecentFiles = true; + RememberSelectedLine = true; + StartLoadLastFile = true; + StartRememberPositionAndSize = true; + SubtitleLineMaximumLength = 43; + MaxNumberOfLines = 2; + MaxNumberOfLinesPlusAbort = 1; + MergeLinesShorterThan = 33; + SubtitleMinimumDisplayMilliseconds = 1000; + SubtitleMaximumDisplayMilliseconds = 8 * 1000; + RemoveBadCharsWhenOpening = true; + MinimumMillisecondsBetweenLines = 24; + SetStartEndHumanDelay = 100; + AutoWrapLineWhileTyping = false; + SubtitleMaximumCharactersPerSeconds = 25.0; + SubtitleOptimalCharactersPerSeconds = 15.0; + SubtitleMaximumWordsPerMinute = 400; + DialogStyle = DialogType.DashBothLinesWithSpace; + ContinuationStyle = ContinuationStyle.None; + ContinuationPause = 300; + CustomContinuationStyleSuffix = ""; + CustomContinuationStyleSuffixApplyIfComma = false; + CustomContinuationStyleSuffixAddSpace = false; + CustomContinuationStyleSuffixReplaceComma = false; + CustomContinuationStylePrefix = ""; + CustomContinuationStylePrefixAddSpace = false; + CustomContinuationStyleUseDifferentStyleGap = true; + CustomContinuationStyleGapSuffix = "..."; + CustomContinuationStyleGapSuffixApplyIfComma = true; + CustomContinuationStyleGapSuffixAddSpace = false; + CustomContinuationStyleGapSuffixReplaceComma = true; + CustomContinuationStyleGapPrefix = "..."; + CustomContinuationStyleGapPrefixAddSpace = false; + FixContinuationStyleUncheckInsertsAllCaps = true; + FixContinuationStyleUncheckInsertsItalic = true; + FixContinuationStyleUncheckInsertsLowercase = true; + FixContinuationStyleHideContinuationCandidatesWithoutName = true; + FixContinuationStyleIgnoreLyrics = true; + SpellCheckLanguage = null; + VideoPlayer = string.Empty; + VideoPlayerDefaultVolume = 75; + VideoPlayerPreviewFontName = "Tahoma"; + VideoPlayerPreviewFontSize = 12; + VideoPlayerPreviewFontBold = true; + VideoPlayerShowStopButton = true; + VideoPlayerShowMuteButton = true; + VideoPlayerShowFullscreenButton = true; + ListViewLineSeparatorString = "
"; + ListViewDoubleClickAction = 1; + SaveAsUseFileNameFrom = "video"; + UppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWZYXÆØÃÅÄÖÉÈÁÂÀÇÊÍÓÔÕÚŁАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯĞİŞÜÙÁÌÑÎΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ"; + DefaultAdjustMilliseconds = 1000; + AutoRepeatOn = true; + AutoRepeatCount = 2; + AutoContinueOn = false; + AutoContinueDelay = 2; + ReturnToStartAfterRepeat = false; + SyncListViewWithVideoWhilePlaying = false; + AutoBackupSeconds = 60 * 5; + AutoBackupDeleteAfterMonths = 3; + SpellChecker = "hunspell"; + AllowEditOfOriginalSubtitle = true; + PromptDeleteLines = true; + Undocked = false; + UndockedVideoPosition = "-32000;-32000"; + UndockedWaveformPosition = "-32000;-32000"; + UndockedVideoControlsPosition = "-32000;-32000"; + WaveformUpdateIntervalMs = 40; + SmallDelayMilliseconds = 500; + LargeDelayMilliseconds = 5000; + OpenSubtitleExtraExtensions = "*.mp4;*.m4v;*.mkv;*.ts"; // matroska/mp4/m4v files (can contain subtitles) + ListViewColumnsRememberSize = true; + DirectShowDoubleLoad = true; + VlcWaveTranscodeSettings = "acodec=s16l"; // "acodec=s16l,channels=1,ab=64,samplerate=8000"; + MpvVideoOutputWindows = string.Empty; // could also be e.g. "gpu" or "directshow" + MpvVideoOutputLinux = "x11"; // could also be e.g. "x11"; + MpvHandlesPreviewText = true; + MpvPreviewTextPrimaryColor = Color.White; + MpvPreviewTextOutlineColor = Color.Black; + MpvPreviewTextBackgroundColor = Color.Black; + MpvPreviewTextOutlineWidth = 1; + MpvPreviewTextShadowWidth = 1; + MpvPreviewTextOpaqueBox = false; + MpvPreviewTextOpaqueBoxStyle = "1"; + MpvPreviewTextAlignment = "2"; + MpvPreviewTextMarginVertical = 10; + FFmpegSceneThreshold = "0.4"; // threshold for generating shot changes - 0.2 is sensitive (more shot changes), 0.6 is less sensitive (fewer shot changes) + UseTimeFormatHHMMSSFF = false; + SplitBehavior = 1; // 0=take gap from left, 1=divide evenly, 2=take gap from right + SplitRemovesDashes = true; + ClearStatusBarAfterSeconds = 10; + MoveVideo100Or500MsPlaySmallSample = false; + DisableVideoAutoLoading = false; + NewEmptyUseAutoDuration = true; + RightToLeftMode = false; + LastSaveAsFormat = string.Empty; + SystemSubtitleFontNameOverride = string.Empty; + CheckForUpdates = true; + LastCheckForUpdates = DateTime.Now; + ShowProgress = false; + ShowNegativeDurationInfoOnSave = true; + ShowFormatRequiresUtf8Warning = true; + DefaultVideoOffsetInMs = 10 * 60 * 60 * 1000; + DefaultVideoOffsetInMsList = "36000000;3600000"; + DarkThemeForeColor = Color.FromArgb(155, 155, 155); + DarkThemeBackColor = Color.FromArgb(30, 30, 30); + DarkThemeSelectedBackgroundColor = Color.FromArgb(24, 52, 75); + DarkThemeDisabledColor = Color.FromArgb(120, 120, 120); + LastColorPickerColor = Color.Yellow; + LastColorPickerColor1 = Color.Red; + LastColorPickerColor2 = Color.Green; + LastColorPickerColor3 = Color.Blue; + LastColorPickerColor4 = Color.White; + LastColorPickerColor5 = Color.Black; + LastColorPickerColor6 = Color.Cyan; + LastColorPickerColor7 = Color.DarkOrange; + LastColorPickerDropper = Color.Transparent; + ToolbarIconTheme = "Auto"; + UseDarkTheme = false; + DarkThemeShowListViewGridLines = false; + AutoSetVideoSmpteForTtml = true; + AutoSetVideoSmpteForTtmlPrompt = true; + TitleBarAsterisk = "before"; + MeasurementConverterCloseOnInsert = true; + MeasurementConverterCategories = "Length;Kilometers;Meters"; + PreviewAssaText = "ABCDEFGHIJKL abcdefghijkl 123"; + TagsInToggleHiTags = "[;]"; + TagsInToggleCustomTags = "(Æ)"; + SubtitleTextBoxMaxHeight = 300; + ShowBetaStuff = false; + DebugTranslationSync = false; + NewEmptyDefaultMs = 2000; + DialogStyle = DialogType.DashBothLinesWithSpace; + ContinuationStyle = ContinuationStyle.None; + + if (Configuration.IsRunningOnLinux) + { + SubtitleFontName = Configuration.DefaultLinuxFontName; + VideoPlayerPreviewFontName = Configuration.DefaultLinuxFontName; + } + + Profiles = new List(); + CurrentProfile = "Default"; + Profiles.Add(new RulesProfile + { + Name = CurrentProfile, + SubtitleLineMaximumLength = SubtitleLineMaximumLength, + MaxNumberOfLines = MaxNumberOfLines, + MergeLinesShorterThan = MergeLinesShorterThan, + SubtitleMaximumCharactersPerSeconds = (decimal)SubtitleMaximumCharactersPerSeconds, + SubtitleOptimalCharactersPerSeconds = (decimal)SubtitleOptimalCharactersPerSeconds, + SubtitleMaximumDisplayMilliseconds = SubtitleMaximumDisplayMilliseconds, + SubtitleMinimumDisplayMilliseconds = SubtitleMinimumDisplayMilliseconds, + SubtitleMaximumWordsPerMinute = (decimal)SubtitleMaximumWordsPerMinute, + CpsLineLengthStrategy = CpsLineLengthStrategy, + MinimumMillisecondsBetweenLines = MinimumMillisecondsBetweenLines, + DialogStyle = DialogStyle, + ContinuationStyle = ContinuationStyle + }); + AddExtraProfiles(Profiles); + } + + internal static void AddExtraProfiles(List profiles) + { + profiles.Add(new RulesProfile + { + Name = "Netflix (English)", + SubtitleLineMaximumLength = 42, + MaxNumberOfLines = 2, + MergeLinesShorterThan = 43, + SubtitleMaximumCharactersPerSeconds = 20, + SubtitleOptimalCharactersPerSeconds = 15, + SubtitleMaximumDisplayMilliseconds = 7007, + SubtitleMinimumDisplayMilliseconds = 833, + SubtitleMaximumWordsPerMinute = 240, + CpsLineLengthStrategy = string.Empty, + MinimumMillisecondsBetweenLines = 83, // 2 frames for 23.976 fps videos + DialogStyle = DialogType.DashBothLinesWithoutSpace, + ContinuationStyle = ContinuationStyle.NoneLeadingTrailingEllipsis + }); + profiles.Add(new RulesProfile + { + Name = "Netflix (Other languages)", + SubtitleLineMaximumLength = 42, + MaxNumberOfLines = 2, + MergeLinesShorterThan = 43, + SubtitleMaximumCharactersPerSeconds = 17, + SubtitleOptimalCharactersPerSeconds = 12, + SubtitleMaximumDisplayMilliseconds = 7007, + SubtitleMinimumDisplayMilliseconds = 833, + SubtitleMaximumWordsPerMinute = 204, + CpsLineLengthStrategy = string.Empty, + MinimumMillisecondsBetweenLines = 83, // 2 frames for 23.976 fps videos + DialogStyle = DialogType.DashBothLinesWithSpace, + ContinuationStyle = ContinuationStyle.NoneLeadingTrailingEllipsis + }); + profiles.Add(new RulesProfile + { + Name = "Netflix (Dutch)", + SubtitleLineMaximumLength = 42, + MaxNumberOfLines = 2, + MergeLinesShorterThan = 43, + SubtitleMaximumCharactersPerSeconds = 17, + SubtitleOptimalCharactersPerSeconds = 12, + SubtitleMaximumDisplayMilliseconds = 7007, + SubtitleMinimumDisplayMilliseconds = 833, + SubtitleMaximumWordsPerMinute = 204, + CpsLineLengthStrategy = string.Empty, + MinimumMillisecondsBetweenLines = 83, // 2 frames for 23.976 fps videos + DialogStyle = DialogType.DashSecondLineWithoutSpace, + ContinuationStyle = ContinuationStyle.LeadingTrailingEllipsis + }); + profiles.Add(new RulesProfile + { + Name = "Netflix (Simplified Chinese)", + SubtitleLineMaximumLength = 16, + MaxNumberOfLines = 2, + MergeLinesShorterThan = 17, + SubtitleMaximumCharactersPerSeconds = 9, + SubtitleOptimalCharactersPerSeconds = 9, + SubtitleMaximumDisplayMilliseconds = 7007, + SubtitleMinimumDisplayMilliseconds = 833, + SubtitleMaximumWordsPerMinute = 100, + CpsLineLengthStrategy = "CalcAll", + MinimumMillisecondsBetweenLines = 83, // 2 frames for 23.976 fps videos + DialogStyle = DialogType.DashBothLinesWithoutSpace, + ContinuationStyle = ContinuationStyle.LeadingTrailingEllipsis + }); + profiles.Add(new RulesProfile + { + Name = "Amazon Prime (English/Spanish/French)", + SubtitleLineMaximumLength = 42, + MaxNumberOfLines = 2, + MergeLinesShorterThan = 43, + SubtitleMaximumCharactersPerSeconds = 17, + SubtitleOptimalCharactersPerSeconds = 12, + SubtitleMaximumDisplayMilliseconds = 7007, + SubtitleMinimumDisplayMilliseconds = 1000, + SubtitleMaximumWordsPerMinute = 204, + CpsLineLengthStrategy = string.Empty, + MinimumMillisecondsBetweenLines = 83, // 2 frames for 23.976 fps videos + DialogStyle = DialogType.DashBothLinesWithSpace, + ContinuationStyle = ContinuationStyle.NoneLeadingTrailingEllipsis, + }); + profiles.Add(new RulesProfile + { + Name = "Amazon Prime (Arabic)", + SubtitleLineMaximumLength = 42, + MaxNumberOfLines = 2, + MergeLinesShorterThan = 43, + SubtitleMaximumCharactersPerSeconds = 20, + SubtitleOptimalCharactersPerSeconds = 12, + SubtitleMaximumDisplayMilliseconds = 7007, + SubtitleMinimumDisplayMilliseconds = 1000, + SubtitleMaximumWordsPerMinute = 240, + CpsLineLengthStrategy = typeof(CalcAll).Name, + MinimumMillisecondsBetweenLines = 83, // 2 frames for 23.976 fps videos + DialogStyle = DialogType.DashBothLinesWithSpace, + ContinuationStyle = ContinuationStyle.NoneLeadingTrailingEllipsis, + }); + profiles.Add(new RulesProfile + { + Name = "Amazon Prime (Danish)", + SubtitleLineMaximumLength = 42, + MaxNumberOfLines = 2, + MergeLinesShorterThan = 43, + SubtitleMaximumCharactersPerSeconds = 17, + SubtitleOptimalCharactersPerSeconds = 12, + SubtitleMaximumDisplayMilliseconds = 7007, + SubtitleMinimumDisplayMilliseconds = 1000, + SubtitleMaximumWordsPerMinute = 204, + CpsLineLengthStrategy = string.Empty, + MinimumMillisecondsBetweenLines = 83, // 2 frames for 23.976 fps videos + DialogStyle = DialogType.DashBothLinesWithoutSpace, + ContinuationStyle = ContinuationStyle.NoneLeadingTrailingEllipsis, + }); + profiles.Add(new RulesProfile + { + Name = "Amazon Prime (Dutch)", + SubtitleLineMaximumLength = 42, + MaxNumberOfLines = 2, + MergeLinesShorterThan = 43, + SubtitleMaximumCharactersPerSeconds = 17, + SubtitleOptimalCharactersPerSeconds = 12, + SubtitleMaximumDisplayMilliseconds = 7007, + SubtitleMinimumDisplayMilliseconds = 1000, + SubtitleMaximumWordsPerMinute = 204, + CpsLineLengthStrategy = string.Empty, + MinimumMillisecondsBetweenLines = 83, // 2 frames for 23.976 fps videos + DialogStyle = DialogType.DashSecondLineWithoutSpace, + ContinuationStyle = ContinuationStyle.OnlyTrailingEllipsis, + }); + profiles.Add(new RulesProfile + { + Name = "TikTok/YouTube-shorts (9:16)", + SubtitleLineMaximumLength = 24, + MaxNumberOfLines = 2, + MergeLinesShorterThan = 0, + SubtitleMaximumCharactersPerSeconds = 25, + SubtitleOptimalCharactersPerSeconds = 18, + SubtitleMaximumDisplayMilliseconds = 5000, + SubtitleMinimumDisplayMilliseconds = 700, + SubtitleMaximumWordsPerMinute = 300, + CpsLineLengthStrategy = string.Empty, + MinimumMillisecondsBetweenLines = 0, + DialogStyle = DialogType.DashBothLinesWithSpace, + ContinuationStyle = ContinuationStyle.None + }); + profiles.Add(new RulesProfile + { + Name = "Arte (German/English)", + SubtitleLineMaximumLength = 40, + MaxNumberOfLines = 2, + MergeLinesShorterThan = 41, + SubtitleMaximumCharactersPerSeconds = 20, + SubtitleOptimalCharactersPerSeconds = 12, + SubtitleMaximumDisplayMilliseconds = 10000, + SubtitleMinimumDisplayMilliseconds = 1000, + SubtitleMaximumWordsPerMinute = 240, + CpsLineLengthStrategy = string.Empty, + MinimumMillisecondsBetweenLines = 200, // 5 frames for 25 fps videos + DialogStyle = DialogType.DashBothLinesWithSpace, + ContinuationStyle = ContinuationStyle.None + }); + profiles.Add(new RulesProfile + { + Name = "Dutch professional subtitles (23.976/24 fps)", + SubtitleLineMaximumLength = 42, + MaxNumberOfLines = 2, + MergeLinesShorterThan = 43, + SubtitleMaximumCharactersPerSeconds = 15, + SubtitleOptimalCharactersPerSeconds = 11, + SubtitleMaximumDisplayMilliseconds = 7007, + SubtitleMinimumDisplayMilliseconds = 1400, + SubtitleMaximumWordsPerMinute = 180, + CpsLineLengthStrategy = string.Empty, + MinimumMillisecondsBetweenLines = 125, + DialogStyle = DialogType.DashSecondLineWithoutSpace, + ContinuationStyle = ContinuationStyle.OnlyTrailingDots + }); + profiles.Add(new RulesProfile + { + Name = "Dutch professional subtitles (25 fps)", + SubtitleLineMaximumLength = 42, + MaxNumberOfLines = 2, + MergeLinesShorterThan = 43, + SubtitleMaximumCharactersPerSeconds = 15, + SubtitleOptimalCharactersPerSeconds = 11, + SubtitleMaximumDisplayMilliseconds = 7000, + SubtitleMinimumDisplayMilliseconds = 1400, + SubtitleMaximumWordsPerMinute = 180, + CpsLineLengthStrategy = string.Empty, + MinimumMillisecondsBetweenLines = 120, + DialogStyle = DialogType.DashSecondLineWithoutSpace, + ContinuationStyle = ContinuationStyle.OnlyTrailingDots + }); + profiles.Add(new RulesProfile + { + Name = "Dutch fansubs (23.976/24 fps)", + SubtitleLineMaximumLength = 45, + MaxNumberOfLines = 2, + MergeLinesShorterThan = 46, + SubtitleMaximumCharactersPerSeconds = 22.5m, + SubtitleOptimalCharactersPerSeconds = 12, + SubtitleMaximumDisplayMilliseconds = 7007, + SubtitleMinimumDisplayMilliseconds = 1200, + SubtitleMaximumWordsPerMinute = 300, + CpsLineLengthStrategy = string.Empty, + MinimumMillisecondsBetweenLines = 125, + DialogStyle = DialogType.DashSecondLineWithSpace, + ContinuationStyle = ContinuationStyle.OnlyTrailingDots + }); + profiles.Add(new RulesProfile + { + Name = "Dutch fansubs (25 fps)", + SubtitleLineMaximumLength = 45, + MaxNumberOfLines = 2, + MergeLinesShorterThan = 46, + SubtitleMaximumCharactersPerSeconds = 22.5m, + SubtitleOptimalCharactersPerSeconds = 12, + SubtitleMaximumDisplayMilliseconds = 7000, + SubtitleMinimumDisplayMilliseconds = 1200, + SubtitleMaximumWordsPerMinute = 300, + CpsLineLengthStrategy = string.Empty, + MinimumMillisecondsBetweenLines = 120, + DialogStyle = DialogType.DashSecondLineWithSpace, + ContinuationStyle = ContinuationStyle.OnlyTrailingDots + }); + profiles.Add(new RulesProfile + { + Name = "Danish professional subtitles (23.976/24 fps)", + SubtitleLineMaximumLength = 40, + MaxNumberOfLines = 2, + MergeLinesShorterThan = 41, + SubtitleMaximumCharactersPerSeconds = 15, + SubtitleOptimalCharactersPerSeconds = 10, + SubtitleMaximumDisplayMilliseconds = 8008, + SubtitleMinimumDisplayMilliseconds = 2002, + SubtitleMaximumWordsPerMinute = 180, + CpsLineLengthStrategy = string.Empty, + MinimumMillisecondsBetweenLines = 125, + DialogStyle = DialogType.DashBothLinesWithSpace, + ContinuationStyle = ContinuationStyle.LeadingTrailingDashDots + }); + profiles.Add(new RulesProfile + { + Name = "Danish professional subtitles (25 fps)", + SubtitleLineMaximumLength = 40, + MaxNumberOfLines = 2, + MergeLinesShorterThan = 41, + SubtitleMaximumCharactersPerSeconds = 15, + SubtitleOptimalCharactersPerSeconds = 10, + SubtitleMaximumDisplayMilliseconds = 8000, + SubtitleMinimumDisplayMilliseconds = 2000, + SubtitleMaximumWordsPerMinute = 180, + CpsLineLengthStrategy = string.Empty, + MinimumMillisecondsBetweenLines = 120, + DialogStyle = DialogType.DashBothLinesWithSpace, + ContinuationStyle = ContinuationStyle.LeadingTrailingDashDots + }); + profiles.Add(new RulesProfile + { + Name = "SDI (Dutch)", + SubtitleLineMaximumLength = 37, + MaxNumberOfLines = 2, + MergeLinesShorterThan = 38, + SubtitleMaximumCharactersPerSeconds = 18.75m, + SubtitleOptimalCharactersPerSeconds = 12, + SubtitleMaximumDisplayMilliseconds = 7000, + SubtitleMinimumDisplayMilliseconds = 1320, + SubtitleMaximumWordsPerMinute = 225, + CpsLineLengthStrategy = string.Empty, + MinimumMillisecondsBetweenLines = 160, + DialogStyle = DialogType.DashSecondLineWithoutSpace, + ContinuationStyle = ContinuationStyle.OnlyTrailingDots + }); + profiles.Add(new RulesProfile + { + Name = "SW2 (French) (23.976/24 fps)", + SubtitleLineMaximumLength = 40, + MaxNumberOfLines = 2, + MergeLinesShorterThan = 41, + SubtitleMaximumCharactersPerSeconds = 25, + SubtitleOptimalCharactersPerSeconds = 18, + SubtitleMaximumDisplayMilliseconds = 5005, + SubtitleMinimumDisplayMilliseconds = 792, + SubtitleMaximumWordsPerMinute = 300, + CpsLineLengthStrategy = string.Empty, + MinimumMillisecondsBetweenLines = 125, + DialogStyle = DialogType.DashBothLinesWithSpace, + ContinuationStyle = ContinuationStyle.None + }); + profiles.Add(new RulesProfile + { + Name = "SW2 (French) (25 fps)", + SubtitleLineMaximumLength = 40, + MaxNumberOfLines = 2, + MergeLinesShorterThan = 41, + SubtitleMaximumCharactersPerSeconds = 25, + SubtitleOptimalCharactersPerSeconds = 18, + SubtitleMaximumDisplayMilliseconds = 5000, + SubtitleMinimumDisplayMilliseconds = 800, + SubtitleMaximumWordsPerMinute = 300, + CpsLineLengthStrategy = string.Empty, + MinimumMillisecondsBetweenLines = 120, + DialogStyle = DialogType.DashBothLinesWithSpace, + ContinuationStyle = ContinuationStyle.None + }); + profiles.Add(new RulesProfile + { + Name = "SW3 (French) (23.976/24 fps)", + SubtitleLineMaximumLength = 40, + MaxNumberOfLines = 2, + MergeLinesShorterThan = 41, + SubtitleMaximumCharactersPerSeconds = 25, + SubtitleOptimalCharactersPerSeconds = 18, + SubtitleMaximumDisplayMilliseconds = 5005, + SubtitleMinimumDisplayMilliseconds = 792, + SubtitleMaximumWordsPerMinute = 300, + CpsLineLengthStrategy = string.Empty, + MinimumMillisecondsBetweenLines = 167, + DialogStyle = DialogType.DashBothLinesWithSpace, + ContinuationStyle = ContinuationStyle.None + }); + profiles.Add(new RulesProfile + { + Name = "SW3 (French) (25 fps)", + SubtitleLineMaximumLength = 40, + MaxNumberOfLines = 2, + MergeLinesShorterThan = 41, + SubtitleMaximumCharactersPerSeconds = 25, + SubtitleOptimalCharactersPerSeconds = 18, + SubtitleMaximumDisplayMilliseconds = 5000, + SubtitleMinimumDisplayMilliseconds = 800, + SubtitleMaximumWordsPerMinute = 300, + CpsLineLengthStrategy = string.Empty, + MinimumMillisecondsBetweenLines = 160, + DialogStyle = DialogType.DashBothLinesWithSpace, + ContinuationStyle = ContinuationStyle.None + }); + profiles.Add(new RulesProfile + { + Name = "SW4 (French) (23.976/24 fps)", + SubtitleLineMaximumLength = 40, + MaxNumberOfLines = 2, + MergeLinesShorterThan = 41, + SubtitleMaximumCharactersPerSeconds = 25, + SubtitleOptimalCharactersPerSeconds = 18, + SubtitleMaximumDisplayMilliseconds = 5005, + SubtitleMinimumDisplayMilliseconds = 792, + SubtitleMaximumWordsPerMinute = 300, + CpsLineLengthStrategy = string.Empty, + MinimumMillisecondsBetweenLines = 250, + DialogStyle = DialogType.DashBothLinesWithSpace, + ContinuationStyle = ContinuationStyle.None + }); + profiles.Add(new RulesProfile + { + Name = "SW4 (French) (25 fps)", + SubtitleLineMaximumLength = 40, + MaxNumberOfLines = 2, + MergeLinesShorterThan = 41, + SubtitleMaximumCharactersPerSeconds = 25, + SubtitleOptimalCharactersPerSeconds = 18, + SubtitleMaximumDisplayMilliseconds = 5000, + SubtitleMinimumDisplayMilliseconds = 800, + SubtitleMaximumWordsPerMinute = 300, + CpsLineLengthStrategy = string.Empty, + MinimumMillisecondsBetweenLines = 240, + DialogStyle = DialogType.DashBothLinesWithSpace, + ContinuationStyle = ContinuationStyle.None + }); + } + } +} \ No newline at end of file diff --git a/src/libse/Settings/MultipleSearchAndReplaceGroup.cs b/src/libse/Settings/MultipleSearchAndReplaceGroup.cs new file mode 100644 index 000000000..4447b66c5 --- /dev/null +++ b/src/libse/Settings/MultipleSearchAndReplaceGroup.cs @@ -0,0 +1,11 @@ +using System.Collections.Generic; + +namespace Nikse.SubtitleEdit.Core.Settings +{ + public class MultipleSearchAndReplaceGroup + { + public string Name { get; set; } + public bool Enabled { get; set; } + public List Rules { get; set; } + } +} \ No newline at end of file diff --git a/src/libse/Settings/MultipleSearchAndReplaceSetting.cs b/src/libse/Settings/MultipleSearchAndReplaceSetting.cs new file mode 100644 index 000000000..36177891a --- /dev/null +++ b/src/libse/Settings/MultipleSearchAndReplaceSetting.cs @@ -0,0 +1,11 @@ +namespace Nikse.SubtitleEdit.Core.Settings +{ + public class MultipleSearchAndReplaceSetting + { + public bool Enabled { get; set; } + public string FindWhat { get; set; } + public string ReplaceWith { get; set; } + public string SearchType { get; set; } + public string Description { get; set; } + } +} \ No newline at end of file diff --git a/src/libse/Settings/NetworkSettings.cs b/src/libse/Settings/NetworkSettings.cs new file mode 100644 index 000000000..1199579ca --- /dev/null +++ b/src/libse/Settings/NetworkSettings.cs @@ -0,0 +1,21 @@ +using System; + +namespace Nikse.SubtitleEdit.Core.Settings +{ + public class NetworkSettings + { + public string UserName { get; set; } + public string WebApiUrl { get; set; } + public string SessionKey { get; set; } + public int PollIntervalSeconds { get; set; } + public string NewMessageSound { get; set; } + + public NetworkSettings() + { + UserName = string.Empty; + SessionKey = Guid.NewGuid().ToString(); + WebApiUrl = "https://www.nikse.dk/api/SeNet"; + PollIntervalSeconds = 5; + } + } +} \ No newline at end of file diff --git a/src/libse/Settings/ProxySettings.cs b/src/libse/Settings/ProxySettings.cs new file mode 100644 index 000000000..1ff59f735 --- /dev/null +++ b/src/libse/Settings/ProxySettings.cs @@ -0,0 +1,24 @@ +using System; +using System.Text; + +namespace Nikse.SubtitleEdit.Core.Settings +{ + public class ProxySettings + { + public string ProxyAddress { get; set; } + public string AuthType { get; set; } + public bool UseDefaultCredentials { get; set; } + public string UserName { get; set; } + public string Password { get; set; } + public string Domain { get; set; } + + public string DecodePassword() + { + return Encoding.UTF8.GetString(Convert.FromBase64String(Password)); + } + public void EncodePassword(string unencryptedPassword) + { + Password = Convert.ToBase64String(Encoding.UTF8.GetBytes(unencryptedPassword)); + } + } +} \ No newline at end of file diff --git a/src/libse/Settings/RecentFileEntry.cs b/src/libse/Settings/RecentFileEntry.cs new file mode 100644 index 000000000..a10fff400 --- /dev/null +++ b/src/libse/Settings/RecentFileEntry.cs @@ -0,0 +1,14 @@ +namespace Nikse.SubtitleEdit.Core.Settings +{ + public class RecentFileEntry + { + public string FileName { get; set; } + public string OriginalFileName { get; set; } + public string VideoFileName { get; set; } + public int AudioTrack { get; set; } + public int FirstVisibleIndex { get; set; } + public int FirstSelectedIndex { get; set; } + public long VideoOffsetInMs { get; set; } + public bool VideoIsSmpte { get; set; } + } +} \ No newline at end of file diff --git a/src/libse/Settings/RecentFilesSettings.cs b/src/libse/Settings/RecentFilesSettings.cs new file mode 100644 index 000000000..55f77dc20 --- /dev/null +++ b/src/libse/Settings/RecentFilesSettings.cs @@ -0,0 +1,92 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Xml.Serialization; + +namespace Nikse.SubtitleEdit.Core.Settings +{ + public class RecentFilesSettings + { + private const int MaxRecentFiles = 25; + + [XmlArrayItem("FileName")] + public List Files { get; set; } + + public RecentFilesSettings() + { + Files = new List(); + } + + public void Add(string fileName, int firstVisibleIndex, int firstSelectedIndex, string videoFileName, int audioTrack, string originalFileName, long videoOffset, bool isSmpte) + { + Files = Files.Where(p => !string.IsNullOrEmpty(p.FileName)).ToList(); + + if (string.IsNullOrEmpty(fileName) && !string.IsNullOrEmpty(originalFileName)) + { + fileName = originalFileName; + originalFileName = null; + } + + if (string.IsNullOrEmpty(fileName)) + { + Files.Insert(0, new RecentFileEntry { FileName = string.Empty }); + return; + } + + var existingEntry = GetRecentFile(fileName, originalFileName); + if (existingEntry == null) + { + Files.Insert(0, new RecentFileEntry { FileName = fileName ?? string.Empty, FirstVisibleIndex = -1, FirstSelectedIndex = -1, VideoFileName = videoFileName, AudioTrack = audioTrack, OriginalFileName = originalFileName }); + } + else + { + Files.Remove(existingEntry); + existingEntry.FirstSelectedIndex = firstSelectedIndex; + existingEntry.FirstVisibleIndex = firstVisibleIndex; + existingEntry.VideoFileName = videoFileName; + existingEntry.AudioTrack = audioTrack; + existingEntry.OriginalFileName = originalFileName; + existingEntry.VideoOffsetInMs = videoOffset; + existingEntry.VideoIsSmpte = isSmpte; + Files.Insert(0, existingEntry); + } + Files = Files.Take(MaxRecentFiles).ToList(); + } + + public void Add(string fileName, string videoFileName, int audioTrack, string originalFileName) + { + Files = Files.Where(p => !string.IsNullOrEmpty(p.FileName)).ToList(); + + var existingEntry = GetRecentFile(fileName, originalFileName); + if (existingEntry == null) + { + Files.Insert(0, new RecentFileEntry { FileName = fileName ?? string.Empty, FirstVisibleIndex = -1, FirstSelectedIndex = -1, VideoFileName = videoFileName, AudioTrack = audioTrack, OriginalFileName = originalFileName }); + } + else + { + Files.Remove(existingEntry); + Files.Insert(0, existingEntry); + } + Files = Files.Take(MaxRecentFiles).ToList(); + } + + private RecentFileEntry GetRecentFile(string fileName, string originalFileName) + { + RecentFileEntry existingEntry; + if (string.IsNullOrEmpty(originalFileName)) + { + existingEntry = Files.Find(p => !string.IsNullOrEmpty(p.FileName) && + string.IsNullOrEmpty(p.OriginalFileName) && + p.FileName.Equals(fileName, StringComparison.OrdinalIgnoreCase)); + } + else + { + existingEntry = Files.Find(p => !string.IsNullOrEmpty(p.FileName) && + !string.IsNullOrEmpty(p.OriginalFileName) && + p.FileName.Equals(fileName, StringComparison.OrdinalIgnoreCase) && + p.OriginalFileName.Equals(originalFileName, StringComparison.OrdinalIgnoreCase)); + } + return existingEntry; + } + } +} \ No newline at end of file diff --git a/src/libse/Settings/RemoveTextForHearingImpairedSettings.cs b/src/libse/Settings/RemoveTextForHearingImpairedSettings.cs new file mode 100644 index 000000000..03fe9a04e --- /dev/null +++ b/src/libse/Settings/RemoveTextForHearingImpairedSettings.cs @@ -0,0 +1,38 @@ +namespace Nikse.SubtitleEdit.Core.Settings +{ + public class RemoveTextForHearingImpairedSettings + { + public bool RemoveTextBetweenBrackets { get; set; } + public bool RemoveTextBetweenParentheses { get; set; } + public bool RemoveTextBetweenCurlyBrackets { get; set; } + public bool RemoveTextBetweenQuestionMarks { get; set; } + public bool RemoveTextBetweenCustom { get; set; } + public string RemoveTextBetweenCustomBefore { get; set; } + public string RemoveTextBetweenCustomAfter { get; set; } + public bool RemoveTextBetweenOnlySeparateLines { get; set; } + public bool RemoveTextBeforeColon { get; set; } + public bool RemoveTextBeforeColonOnlyIfUppercase { get; set; } + public bool RemoveTextBeforeColonOnlyOnSeparateLine { get; set; } + public bool RemoveInterjections { get; set; } + public bool RemoveInterjectionsOnlyOnSeparateLine { get; set; } + public bool RemoveIfContains { get; set; } + public bool RemoveIfAllUppercase { get; set; } + public string RemoveIfContainsText { get; set; } + public bool RemoveIfOnlyMusicSymbols { get; set; } + + public RemoveTextForHearingImpairedSettings() + { + RemoveTextBetweenBrackets = true; + RemoveTextBetweenParentheses = true; + RemoveTextBetweenCurlyBrackets = true; + RemoveTextBetweenQuestionMarks = true; + RemoveTextBetweenCustom = false; + RemoveTextBetweenCustomBefore = "¶"; + RemoveTextBetweenCustomAfter = "¶"; + RemoveTextBeforeColon = true; + RemoveTextBeforeColonOnlyIfUppercase = true; + RemoveIfContainsText = "¶"; + RemoveIfOnlyMusicSymbols = true; + } + } +} \ No newline at end of file diff --git a/src/libse/Common/Settings.cs b/src/libse/Settings/Settings.cs similarity index 76% rename from src/libse/Common/Settings.cs rename to src/libse/Settings/Settings.cs index d6947b9d9..a256051ac 100644 --- a/src/libse/Common/Settings.cs +++ b/src/libse/Settings/Settings.cs @@ -1,3241 +1,18 @@ -using Nikse.SubtitleEdit.Core.Enums; -using System; +using System; using System.Collections.Generic; using System.Drawing; using System.Globalization; using System.IO; -using System.Linq; using System.Text; using System.Xml; -using System.Xml.Serialization; -using Nikse.SubtitleEdit.Core.Common.TextLengthCalculator; +using Nikse.SubtitleEdit.Core.Common; +using Nikse.SubtitleEdit.Core.Enums; -namespace Nikse.SubtitleEdit.Core.Common +namespace Nikse.SubtitleEdit.Core.Settings { // The settings classes are built for easy xml-serialization (makes save/load code simple) // ...but the built-in serialization is too slow - so a custom (de-)serialization has been used! - public class RecentFileEntry - { - public string FileName { get; set; } - public string OriginalFileName { get; set; } - public string VideoFileName { get; set; } - public int AudioTrack { get; set; } - public int FirstVisibleIndex { get; set; } - public int FirstSelectedIndex { get; set; } - public long VideoOffsetInMs { get; set; } - public bool VideoIsSmpte { get; set; } - } - - public class RecentFilesSettings - { - private const int MaxRecentFiles = 25; - - [XmlArrayItem("FileName")] - public List Files { get; set; } - - public RecentFilesSettings() - { - Files = new List(); - } - - public void Add(string fileName, int firstVisibleIndex, int firstSelectedIndex, string videoFileName, int audioTrack, string originalFileName, long videoOffset, bool isSmpte) - { - Files = Files.Where(p => !string.IsNullOrEmpty(p.FileName)).ToList(); - - if (string.IsNullOrEmpty(fileName) && !string.IsNullOrEmpty(originalFileName)) - { - fileName = originalFileName; - originalFileName = null; - } - - if (string.IsNullOrEmpty(fileName)) - { - Files.Insert(0, new RecentFileEntry { FileName = string.Empty }); - return; - } - - var existingEntry = GetRecentFile(fileName, originalFileName); - if (existingEntry == null) - { - Files.Insert(0, new RecentFileEntry { FileName = fileName ?? string.Empty, FirstVisibleIndex = -1, FirstSelectedIndex = -1, VideoFileName = videoFileName, AudioTrack = audioTrack, OriginalFileName = originalFileName }); - } - else - { - Files.Remove(existingEntry); - existingEntry.FirstSelectedIndex = firstSelectedIndex; - existingEntry.FirstVisibleIndex = firstVisibleIndex; - existingEntry.VideoFileName = videoFileName; - existingEntry.AudioTrack = audioTrack; - existingEntry.OriginalFileName = originalFileName; - existingEntry.VideoOffsetInMs = videoOffset; - existingEntry.VideoIsSmpte = isSmpte; - Files.Insert(0, existingEntry); - } - Files = Files.Take(MaxRecentFiles).ToList(); - } - - public void Add(string fileName, string videoFileName, int audioTrack, string originalFileName) - { - Files = Files.Where(p => !string.IsNullOrEmpty(p.FileName)).ToList(); - - var existingEntry = GetRecentFile(fileName, originalFileName); - if (existingEntry == null) - { - Files.Insert(0, new RecentFileEntry { FileName = fileName ?? string.Empty, FirstVisibleIndex = -1, FirstSelectedIndex = -1, VideoFileName = videoFileName, AudioTrack = audioTrack, OriginalFileName = originalFileName }); - } - else - { - Files.Remove(existingEntry); - Files.Insert(0, existingEntry); - } - Files = Files.Take(MaxRecentFiles).ToList(); - } - - private RecentFileEntry GetRecentFile(string fileName, string originalFileName) - { - RecentFileEntry existingEntry; - if (string.IsNullOrEmpty(originalFileName)) - { - existingEntry = Files.Find(p => !string.IsNullOrEmpty(p.FileName) && - string.IsNullOrEmpty(p.OriginalFileName) && - p.FileName.Equals(fileName, StringComparison.OrdinalIgnoreCase)); - } - else - { - existingEntry = Files.Find(p => !string.IsNullOrEmpty(p.FileName) && - !string.IsNullOrEmpty(p.OriginalFileName) && - p.FileName.Equals(fileName, StringComparison.OrdinalIgnoreCase) && - p.OriginalFileName.Equals(originalFileName, StringComparison.OrdinalIgnoreCase)); - } - return existingEntry; - } - } - - public class ToolsSettings - { - public List AssaTagTemplates { get; set; } - public int StartSceneIndex { get; set; } - public int EndSceneIndex { get; set; } - public int VerifyPlaySeconds { get; set; } - public bool FixShortDisplayTimesAllowMoveStartTime { get; set; } - public bool RemoveEmptyLinesBetweenText { get; set; } - public string MusicSymbol { get; set; } - public string MusicSymbolReplace { get; set; } - public string UnicodeSymbolsToInsert { get; set; } - public bool SpellCheckAutoChangeNameCasing { get; set; } - public bool SpellCheckUseLargerFont { get; set; } - public bool SpellCheckAutoChangeNamesUseSuggestions { get; set; } - public string SpellCheckSearchEngine { get; set; } - public bool CheckOneLetterWords { get; set; } - public bool SpellCheckEnglishAllowInQuoteAsIng { get; set; } - public bool RememberUseAlwaysList { get; set; } - public bool LiveSpellCheck { get; set; } - public bool SpellCheckShowCompletedMessage { get; set; } - public bool OcrFixUseHardcodedRules { get; set; } - public bool OcrGoogleCloudVisionSeHandlesTextMerge { get; set; } - public int OcrBinaryImageCompareRgbThreshold { get; set; } - public int OcrTesseract4RgbThreshold { get; set; } - public string OcrAddLetterRow1 { get; set; } - public string OcrAddLetterRow2 { get; set; } - public string OcrTrainFonts { get; set; } - public string OcrTrainMergedLetters { get; set; } - public string OcrTrainSrtFile { get; set; } - public bool OcrUseWordSplitList { get; set; } - public bool OcrUseWordSplitListAvoidPropercase { get; set; } - public string BDOpenIn { get; set; } - public string MicrosoftBingApiId { get; set; } - public string MicrosoftTranslatorApiKey { get; set; } - public string MicrosoftTranslatorTokenEndpoint { get; set; } - public string MicrosoftTranslatorCategory { get; set; } - public string GoogleApiV2Key { get; set; } - public bool GoogleTranslateNoKeyWarningShow { get; set; } - public int GoogleApiV1ChunkSize { get; set; } - public string GoogleTranslateLastSourceLanguage { get; set; } - public string GoogleTranslateLastTargetLanguage { get; set; } - public string AutoTranslateLastName { get; set; } - public string AutoTranslateLastUrl { get; set; } - public string AutoTranslateNllbApiUrl { get; set; } - public string AutoTranslateNllbServeUrl { get; set; } - public string AutoTranslateNllbServeModel { get; set; } - public string AutoTranslateLibreUrl { get; set; } - public string AutoTranslateLibreApiKey { get; set; } - public string AutoTranslateMyMemoryApiKey { get; set; } - public string AutoTranslateSeamlessM4TUrl { get; set; } - public string AutoTranslateDeepLApiKey { get; set; } - public string AutoTranslateDeepLUrl { get; set; } - public string AutoTranslatePapagoApiKeyId { get; set; } - public string AutoTranslatePapagoApiKey { get; set; } - public string AutoTranslateDeepLFormality { get; set; } - public bool TranslateAllowSplit { get; set; } - public string TranslateLastService { get; set; } - public string TranslateMergeStrategy { get; set; } - public string TranslateViaCopyPasteSeparator { get; set; } - public int TranslateViaCopyPasteMaxSize { get; set; } - public bool TranslateViaCopyPasteAutoCopyToClipboard { get; set; } - public string ChatGptUrl { get; set; } - public string ChatGptPrompt { get; set; } - public string ChatGptApiKey { get; set; } - public string ChatGptModel { get; set; } - public string LmStudioApiUrl { get; set; } - public string LmStudioModel { get; set; } - public string LmStudioPrompt { get; set; } - public string OllamaApiUrl { get; set; } - public string OllamaModels { get; set; } - public string OllamaModel { get; set; } - public string OllamaPrompt { get; set; } - - public string AnthropicApiUrl { get; set; } - public string AnthropicPrompt { get; set; } - public string AnthropicApiKey { get; set; } - public string AnthropicApiModel { get; set; } - public int AutoTranslateDelaySeconds { get; set; } - public int AutoTranslateMaxBytes { get; set; } - public string AutoTranslateStrategy { get; set; } - public string GeminiProApiKey { get; set; } - public string TextToSpeechEngine { get; set; } - public string TextToSpeechLastVoice { get; set; } - public string TextToSpeechElevenLabsApiKey { get; set; } - public string TextToSpeechAzureApiKey { get; set; } - public string TextToSpeechAzureRegion { get; set; } - public bool TextToSpeechPreview { get; set; } - public bool TextToSpeechCustomAudio { get; set; } - public bool TextToSpeechCustomAudioStereo { get; set; } - public string TextToSpeechCustomAudioEncoding { get; set; } - public bool TextToSpeechAddToVideoFile { get; set; } - public bool ListViewSyntaxColorDurationSmall { get; set; } - public bool ListViewSyntaxColorDurationBig { get; set; } - public bool ListViewSyntaxColorOverlap { get; set; } - public bool ListViewSyntaxColorLongLines { get; set; } - public bool ListViewSyntaxColorWideLines { get; set; } - public bool ListViewSyntaxColorGap { get; set; } - public bool ListViewSyntaxMoreThanXLines { get; set; } - public Color ListViewSyntaxErrorColor { get; set; } - public Color ListViewUnfocusedSelectedColor { get; set; } - public Color Color1 { get; set; } - public Color Color2 { get; set; } - public Color Color3 { get; set; } - public Color Color4 { get; set; } - public Color Color5 { get; set; } - public Color Color6 { get; set; } - public Color Color7 { get; set; } - public Color Color8 { get; set; } - public bool ListViewShowColumnStartTime { get; set; } - public bool ListViewShowColumnEndTime { get; set; } - public bool ListViewShowColumnDuration { get; set; } - public bool ListViewShowColumnCharsPerSec { get; set; } - public bool ListViewShowColumnWordsPerMin { get; set; } - public bool ListViewShowColumnGap { get; set; } - public bool ListViewShowColumnActor { get; set; } - public bool ListViewShowColumnRegion { get; set; } - public bool ListViewMultipleReplaceShowColumnRuleInfo { get; set; } - public bool SplitAdvanced { get; set; } - public string SplitOutputFolder { get; set; } - public int SplitNumberOfParts { get; set; } - public string SplitVia { get; set; } - public bool JoinCorrectTimeCodes { get; set; } - public int JoinAddMs { get; set; } - public int SplitLongLinesMax { get; set; } - public string LastShowEarlierOrLaterSelection { get; set; } - public string NewEmptyTranslationText { get; set; } - public string BatchConvertOutputFolder { get; set; } - public bool BatchConvertOverwriteExisting { get; set; } - public bool BatchConvertSaveInSourceFolder { get; set; } - public bool BatchConvertRemoveFormatting { get; set; } - public bool BatchConvertRemoveFormattingAll { get; set; } - public bool BatchConvertRemoveFormattingItalic { get; set; } - public bool BatchConvertRemoveFormattingBold { get; set; } - public bool BatchConvertRemoveFormattingUnderline { get; set; } - public bool BatchConvertRemoveFormattingFontName { get; set; } - public bool BatchConvertRemoveFormattingColor { get; set; } - public bool BatchConvertRemoveFormattingAlignment { get; set; } - public bool BatchConvertRemoveStyle { get; set; } - public bool BatchConvertBridgeGaps { get; set; } - public bool BatchConvertFixCasing { get; set; } - public bool BatchConvertRemoveTextForHI { get; set; } - public bool BatchConvertConvertColorsToDialog { get; set; } - public bool BatchConvertBeautifyTimeCodes { get; set; } - public bool BatchConvertAutoTranslate { get; set; } - public bool BatchConvertFixCommonErrors { get; set; } - public bool BatchConvertMultipleReplace { get; set; } - public bool BatchConvertFixRtl { get; set; } - public string BatchConvertFixRtlMode { get; set; } - public bool BatchConvertSplitLongLines { get; set; } - public bool BatchConvertAutoBalance { get; set; } - public bool BatchConvertSetMinDisplayTimeBetweenSubtitles { get; set; } - public bool BatchConvertMergeShortLines { get; set; } - public bool BatchConvertRemoveLineBreaks { get; set; } - public bool BatchConvertMergeSameText { get; set; } - public bool BatchConvertMergeSameTimeCodes { get; set; } - public bool BatchConvertChangeFrameRate { get; set; } - public bool BatchConvertChangeSpeed { get; set; } - public bool BatchConvertAdjustDisplayDuration { get; set; } - public bool BatchConvertApplyDurationLimits { get; set; } - public bool BatchConvertDeleteLines { get; set; } - public bool BatchConvertAssaChangeRes { get; set; } - public bool BatchConvertSortBy { get; set; } - public string BatchConvertSortByChoice { get; set; } - public bool BatchConvertOffsetTimeCodes { get; set; } - public bool BatchConvertScanFolderIncludeVideo { get; set; } - public string BatchConvertLanguage { get; set; } - public string BatchConvertFormat { get; set; } - public string BatchConvertAssStyles { get; set; } - public string BatchConvertSsaStyles { get; set; } - public bool BatchConvertUseStyleFromSource { get; set; } - public string BatchConvertExportCustomTextTemplate { get; set; } - public bool BatchConvertTsOverrideXPosition { get; set; } - public bool BatchConvertTsOverrideYPosition { get; set; } - public int BatchConvertTsOverrideBottomMargin { get; set; } - public string BatchConvertTsOverrideHAlign { get; set; } - public int BatchConvertTsOverrideHMargin { get; set; } - public bool BatchConvertTsOverrideScreenSize { get; set; } - public int BatchConvertTsScreenWidth { get; set; } - public int BatchConvertTsScreenHeight { get; set; } - public string BatchConvertTsFileNameAppend { get; set; } - public bool BatchConvertTsOnlyTeletext { get; set; } - public string BatchConvertMkvLanguageCodeStyle { get; set; } - public string BatchConvertOcrEngine { get; set; } - public string BatchConvertOcrLanguage { get; set; } - public string WaveformBatchLastFolder { get; set; } - public string ModifySelectionText { get; set; } - public string ModifySelectionRule { get; set; } - public bool ModifySelectionCaseSensitive { get; set; } - public string ExportVobSubFontName { get; set; } - public int ExportVobSubFontSize { get; set; } - public string ExportVobSubVideoResolution { get; set; } - public string ExportVobSubLanguage { get; set; } - public bool ExportVobSubSimpleRendering { get; set; } - public bool ExportVobAntiAliasingWithTransparency { get; set; } - public string ExportBluRayFontName { get; set; } - public int ExportBluRayFontSize { get; set; } - public string ExportFcpFontName { get; set; } - public string ExportFontNameOther { get; set; } - public int ExportFcpFontSize { get; set; } - public string ExportFcpImageType { get; set; } - public string ExportFcpPalNtsc { get; set; } - public string ExportBdnXmlImageType { get; set; } - public int ExportLastFontSize { get; set; } - public int ExportLastLineHeight { get; set; } - public int ExportLastBorderWidth { get; set; } - public bool ExportLastFontBold { get; set; } - public string ExportBluRayVideoResolution { get; set; } - public string ExportFcpVideoResolution { get; set; } - public Color ExportFontColor { get; set; } - public Color ExportBorderColor { get; set; } - public Color ExportShadowColor { get; set; } - public int ExportBoxBorderSize { get; set; } - public string ExportBottomMarginUnit { get; set; } - public int ExportBottomMarginPercent { get; set; } - public int ExportBottomMarginPixels { get; set; } - public string ExportLeftRightMarginUnit { get; set; } - public int ExportLeftRightMarginPercent { get; set; } - public int ExportLeftRightMarginPixels { get; set; } - public int ExportHorizontalAlignment { get; set; } - public int ExportBluRayBottomMarginPercent { get; set; } - public int ExportBluRayBottomMarginPixels { get; set; } - public int ExportBluRayShadow { get; set; } - public bool ExportBluRayRemoveSmallGaps { get; set; } - public string ExportCdgBackgroundImage { get; set; } - public int ExportCdgMarginLeft { get; set; } - public int ExportCdgMarginBottom { get; set; } - public string ExportCdgFormat { get; set; } - public int Export3DType { get; set; } - public int Export3DDepth { get; set; } - public int ExportLastShadowTransparency { get; set; } - public double ExportLastFrameRate { get; set; } - public bool ExportFullFrame { get; set; } - public bool ExportFcpFullPathUrl { get; set; } - public string ExportPenLineJoin { get; set; } - public Color BinEditBackgroundColor { get; set; } - public Color BinEditImageBackgroundColor { get; set; } - public int BinEditTopMargin { get; set; } - public int BinEditBottomMargin { get; set; } - public int BinEditLeftMargin { get; set; } - public int BinEditRightMargin { get; set; } - public string BinEditStartPosition { get; set; } - public string BinEditStartSize { get; set; } - public bool BinEditShowColumnGap { get; set; } - public bool FixCommonErrorsFixOverlapAllowEqualEndStart { get; set; } - public bool FixCommonErrorsSkipStepOne { get; set; } - public string ImportTextSplitting { get; set; } - public string ImportTextSplittingLineMode { get; set; } - public string ImportTextLineBreak { get; set; } - public bool ImportTextMergeShortLines { get; set; } - public bool ImportTextRemoveEmptyLines { get; set; } - public bool ImportTextAutoSplitAtBlank { get; set; } - public bool ImportTextRemoveLinesNoLetters { get; set; } - public bool ImportTextGenerateTimeCodes { get; set; } - public bool ImportTextTakeTimeCodeFromFileName { get; set; } - public bool ImportTextAutoBreak { get; set; } - public bool ImportTextAutoBreakAtEnd { get; set; } - public decimal ImportTextGap { get; set; } - public decimal ImportTextAutoSplitNumberOfLines { get; set; } - public string ImportTextAutoBreakAtEndMarkerText { get; set; } - public bool ImportTextDurationAuto { get; set; } - public decimal ImportTextFixedDuration { get; set; } - public string GenerateTimeCodePatterns { get; set; } - public string MusicSymbolStyle { get; set; } - public int BridgeGapMilliseconds { get; set; } - public int BridgeGapMillisecondsMinGap { get; set; } - public string ExportCustomTemplates { get; set; } - public string ChangeCasingChoice { get; set; } - public bool ChangeCasingNormalFixNames { get; set; } - public bool ChangeCasingNormalOnlyUppercase { get; set; } - public bool UseNoLineBreakAfter { get; set; } - public string NoLineBreakAfterEnglish { get; set; } - public List FindHistory { get; set; } - public string ReplaceIn { get; set; } - public string ExportTextFormatText { get; set; } - public bool ExportTextRemoveStyling { get; set; } - public bool ExportTextShowLineNumbers { get; set; } - public bool ExportTextShowLineNumbersNewLine { get; set; } - public bool ExportTextShowTimeCodes { get; set; } - public bool ExportTextShowTimeCodesNewLine { get; set; } - public bool ExportTextNewLineAfterText { get; set; } - public bool ExportTextNewLineBetweenSubtitles { get; set; } - public string ExportTextTimeCodeFormat { get; set; } - public string ExportTextTimeCodeSeparator { get; set; } - public bool VideoOffsetKeepTimeCodes { get; set; } - public int MoveStartEndMs { get; set; } - public decimal AdjustDurationSeconds { get; set; } - public int AdjustDurationPercent { get; set; } - public string AdjustDurationLast { get; set; } - public bool AdjustDurationExtendOnly { get; set; } - public bool AdjustDurationExtendEnforceDurationLimits { get; set; } - public bool AdjustDurationExtendCheckShotChanges { get; set; } - public bool ChangeSpeedAllowOverlap { get; set; } - public bool AutoBreakCommaBreakEarly { get; set; } - public bool AutoBreakDashEarly { get; set; } - public bool AutoBreakLineEndingEarly { get; set; } - public bool AutoBreakUsePixelWidth { get; set; } - public bool AutoBreakPreferBottomHeavy { get; set; } - public double AutoBreakPreferBottomPercent { get; set; } - public bool ApplyMinimumDurationLimit { get; set; } - public bool ApplyMinimumDurationLimitCheckShotChanges { get; set; } - public bool ApplyMaximumDurationLimit { get; set; } - public int MergeShortLinesMaxGap { get; set; } - public int MergeShortLinesMaxChars { get; set; } - public bool MergeShortLinesOnlyContinuous { get; set; } - public int MergeTextWithSameTimeCodesMaxGap { get; set; } - public bool MergeTextWithSameTimeCodesMakeDialog { get; set; } - public bool MergeTextWithSameTimeCodesReBreakLines { get; set; } - public int MergeLinesWithSameTextMaxMs { get; set; } - public bool MergeLinesWithSameTextIncrement { get; set; } - public bool ConvertColorsToDialogRemoveColorTags { get; set; } - public bool ConvertColorsToDialogAddNewLines { get; set; } - public bool ConvertColorsToDialogReBreakLines { get; set; } - public string ColumnPasteColumn { get; set; } - public string ColumnPasteOverwriteMode { get; set; } - public string AssaAttachmentFontTextPreview { get; set; } - public string AssaSetPositionTarget { get; set; } - public string VisualSyncStartSize { get; set; } - public Color BlankVideoColor { get; set; } - public bool BlankVideoUseCheckeredImage { get; set; } - public int BlankVideoMinutes { get; set; } - public decimal BlankVideoFrameRate { get; set; } - public Color AssaProgressBarForeColor { get; set; } - public Color AssaProgressBarBackColor { get; set; } - public Color AssaProgressBarTextColor { get; set; } - public int AssaProgressBarHeight { get; set; } - public int AssaProgressBarSplitterWidth { get; set; } - public int AssaProgressBarSplitterHeight { get; set; } - public string AssaProgressBarFontName { get; set; } - public int AssaProgressBarFontSize { get; set; } - public bool AssaProgressBarTopAlign { get; set; } - public string AssaProgressBarTextAlign { get; set; } - - - public int AssaBgBoxPaddingLeft { get; set; } - public int AssaBgBoxPaddingRight { get; set; } - public int AssaBgBoxPaddingTop { get; set; } - public int AssaBgBoxPaddingBottom { get; set; } - public int AssaBgBoxDrawingMarginV { get; set; } - public int AssaBgBoxDrawingMarginH { get; set; } - public string AssaBgBoxDrawingAlignment { get; set; } - public Color AssaBgBoxColor { get; set; } - public Color AssaBgBoxOutlineColor { get; set; } - public Color AssaBgBoxShadowColor { get; set; } - public Color AssaBgBoxTransparentColor { get; set; } - public string AssaBgBoxStyle { get; set; } - public int AssaBgBoxStyleRadius { get; set; } - public int AssaBgBoxStyleCircleAdjustY { get; set; } - public int AssaBgBoxStyleSpikesStep { get; set; } - public int AssaBgBoxStyleSpikesHeight { get; set; } - public int AssaBgBoxStyleBubblesStep { get; set; } - public int AssaBgBoxStyleBubblesHeight { get; set; } - public int AssaBgBoxOutlineWidth { get; set; } - public int AssaBgBoxLayer { get; set; } - public string AssaBgBoxDrawing { get; set; } - public bool AssaBgBoxDrawingFileWatch { get; set; } - public bool AssaBgBoxDrawingOnly { get; set; } - - - public string GenVideoFontName { get; set; } - public bool GenVideoFontBold { get; set; } - public decimal GenVideoOutline { get; set; } - public int GenVideoFontSize { get; set; } - public string GenVideoEncoding { get; set; } - public string GenVideoPreset { get; set; } - public string GenVideoCrf { get; set; } - public string GenVideoTune { get; set; } - public string GenVideoAudioEncoding { get; set; } - public bool GenVideoAudioForceStereo { get; set; } - public string GenVideoAudioSampleRate { get; set; } - public bool GenVideoTargetFileSize { get; set; } - public float GenVideoFontSizePercentOfHeight { get; set; } - public bool GenVideoNonAssaBox { get; set; } - public Color GenVideoNonAssaBoxColor { get; set; } - public Color GenVideoNonAssaTextColor { get; set; } - public bool GenVideoNonAssaAlignRight { get; set; } - public bool GenVideoNonAssaFixRtlUnicode { get; set; } - public string GenVideoEmbedOutputExt { get; set; } - public string GenVideoEmbedOutputSuffix { get; set; } - public string GenVideoEmbedOutputReplace { get; set; } - public bool GenVideoDeleteInputVideoFile { get; set; } - public bool GenVideoUseOutputFolder { get; set; } - public string GenVideoOutputFolder { get; set; } - public string GenVideoOutputFileSuffix { get; set; } - - public bool VoskPostProcessing { get; set; } - public string VoskModel { get; set; } - public string WhisperChoice { get; set; } - public bool WhisperIgnoreVersion { get; set; } - - public bool WhisperDeleteTempFiles { get; set; } - public string WhisperModel { get; set; } - public string WhisperLanguageCode { get; set; } - public string WhisperLocation { get; set; } - public string WhisperCtranslate2Location { get; set; } - public string WhisperPurfviewFasterWhisperLocation { get; set; } - public string WhisperPurfviewFasterWhisperDefaultCmd { get; set; } - public string WhisperXLocation { get; set; } - public string WhisperStableTsLocation { get; set; } - public string WhisperCppModelLocation { get; set; } - public string WhisperExtraSettings { get; set; } - public string WhisperExtraSettingsHistory { get; set; } - public bool WhisperAutoAdjustTimings { get; set; } - public bool WhisperUseLineMaxChars { get; set; } - public bool WhisperPostProcessingAddPeriods { get; set; } - public bool WhisperPostProcessingMergeLines { get; set; } - public bool WhisperPostProcessingSplitLines { get; set; } - public bool WhisperPostProcessingFixCasing { get; set; } - public bool WhisperPostProcessingFixShortDuration { get; set; } - public int AudioToTextLineMaxChars { get; set; } - public int AudioToTextLineMaxCharsJp { get; set; } - public int AudioToTextLineMaxCharsCn { get; set; } - public int BreakLinesLongerThan { get; set; } - public int UnbreakLinesLongerThan { get; set; } - - public ToolsSettings() - { - AssaTagTemplates = new List(); - StartSceneIndex = 1; - EndSceneIndex = 1; - VerifyPlaySeconds = 2; - FixShortDisplayTimesAllowMoveStartTime = false; - RemoveEmptyLinesBetweenText = true; - MusicSymbol = "♪"; - MusicSymbolReplace = "♪,â™," + // ♪ + ♫ in UTF-8 opened as ANSI - ",," + // music symbols by subtitle creator - "#,*,¶"; // common music symbols - UnicodeSymbolsToInsert = "♪;♫;°;☺;☹;♥;©;☮;☯;Σ;∞;≡;⇒;π"; - SpellCheckAutoChangeNameCasing = false; - SpellCheckAutoChangeNamesUseSuggestions = false; - OcrFixUseHardcodedRules = true; - OcrGoogleCloudVisionSeHandlesTextMerge = true; - OcrBinaryImageCompareRgbThreshold = 200; - OcrTesseract4RgbThreshold = 200; - OcrAddLetterRow1 = "♪;á;é;í;ó;ö;ő;ú;ü;ű;ç;ñ;å;¿"; - OcrAddLetterRow2 = "♫;Á;É;Í;Ó;Ö;Ő;Ú;Ü;Ű;Ç;Ñ;Å;¡"; - OcrTrainFonts = "Arial;Calibri;Corbel;Futura Std Book;Futura Bis;Helvetica Neue;Lucida Console;Tahoma;Trebuchet MS;Verdana"; - OcrTrainMergedLetters = "ff ft fi fj fy fl rf rt rv rw ry rt rz ryt tt TV tw yt yw wy wf ryt xy"; - OcrUseWordSplitList = true; - OcrUseWordSplitListAvoidPropercase = true; - MicrosoftTranslatorTokenEndpoint = "https://api.cognitive.microsoft.com/sts/v1.0/issueToken"; - GoogleTranslateNoKeyWarningShow = true; - GoogleApiV1ChunkSize = 1500; - GoogleTranslateLastTargetLanguage = "en"; - AutoTranslateNllbServeUrl = "http://127.0.0.1:6060/"; - AutoTranslateNllbApiUrl = "http://localhost:7860/api/v2/"; - AutoTranslateLibreUrl = "http://localhost:5000/"; - AutoTranslateSeamlessM4TUrl = "http://localhost:5000/"; - AutoTranslateDeepLUrl = "https://api-free.deepl.com/"; - ChatGptUrl = "https://api.openai.com/v1/chat/completions"; - ChatGptPrompt = "Translate from {0} to {1}, keep punctuation as input, do not censor the translation, give only the output without comments:"; - ChatGptModel = "gpt-4o"; - LmStudioPrompt = "Translate from {0} to {1}, keep punctuation as input, do not censor the translation, give only the output without comments:"; - OllamaApiUrl = "http://localhost:11434/api/generate"; - OllamaModels = "llama3,llama2,mistral,dolphin-phi,phi,neural-chat,starling-lm,codellama,llama2-uncensored,llama2:13b,llama2:70b,orca-mini,vicuna,llava,gemma:2b,gemma:7b"; - OllamaModel = "llama3"; - OllamaPrompt = "Translate from {0} to {1}, keep punctuation as input, do not censor the translation, give only the output without comments or notes:"; - AnthropicApiUrl = "https://api.anthropic.com/v1/messages"; - AnthropicPrompt = "Translate from {0} to {1}, keep sentences in {1} as they are, do not censor the translation, give only the output without comments:"; - AnthropicApiModel = "claude-3-5-sonnet-20240620"; - TextToSpeechAzureRegion = "westeurope"; - AutoTranslateMaxBytes = 2000; - TextToSpeechAddToVideoFile = true; - TranslateAllowSplit = true; - TranslateViaCopyPasteAutoCopyToClipboard = true; - TranslateViaCopyPasteMaxSize = 5000; - TranslateViaCopyPasteSeparator = "."; - CheckOneLetterWords = true; - SpellCheckEnglishAllowInQuoteAsIng = false; - SpellCheckShowCompletedMessage = true; - ListViewSyntaxColorDurationSmall = true; - ListViewSyntaxColorDurationBig = true; - ListViewSyntaxColorOverlap = true; - ListViewSyntaxColorLongLines = true; - ListViewSyntaxColorWideLines = false; - ListViewSyntaxMoreThanXLines = true; - ListViewSyntaxColorGap = true; - ListViewSyntaxErrorColor = Color.FromArgb(255, 180, 150); - ListViewUnfocusedSelectedColor = Color.LightBlue; - Color1 = Color.Yellow; - Color2 = Color.FromArgb(byte.MaxValue, 0, 0); - Color3 = Color.FromArgb(0, byte.MaxValue, 0); - Color4 = Color.Cyan; - Color5 = Color.Black; - Color6 = Color.White; - Color7 = Color.Orange; - Color8 = Color.Pink; - ListViewShowColumnStartTime = true; - ListViewShowColumnEndTime = true; - ListViewShowColumnDuration = true; - SplitAdvanced = false; - SplitNumberOfParts = 3; - SplitVia = "Lines"; - JoinCorrectTimeCodes = true; - SplitLongLinesMax = 90; - NewEmptyTranslationText = string.Empty; - BatchConvertLanguage = string.Empty; - BatchConvertTsOverrideBottomMargin = 5; // pct - BatchConvertTsScreenWidth = 1920; - BatchConvertTsScreenHeight = 1080; - BatchConvertOcrEngine = "Tesseract"; - BatchConvertOcrLanguage = "en"; - BatchConvertTsOverrideHAlign = "center"; // left center right - BatchConvertTsOverrideHMargin = 5; // pct - BatchConvertTsFileNameAppend = ".{two-letter-country-code}"; - BatchConvertMkvLanguageCodeStyle = "2"; - ModifySelectionRule = "Contains"; - ModifySelectionText = string.Empty; - ImportTextDurationAuto = true; - ImportTextGap = 84; - ImportTextFixedDuration = 2500; - GenerateTimeCodePatterns = "HH:mm:ss;yyyy-MM-dd;dddd dd MMMM yyyy
HH:mm:ss;dddd dd MMMM yyyy
hh:mm:ss tt;s"; - MusicSymbolStyle = "Double"; // 'Double' or 'Single' - ExportFontColor = Color.White; - ExportBorderColor = Color.FromArgb(255, 0, 0, 0); - ExportShadowColor = Color.FromArgb(255, 0, 0, 0); - ExportBoxBorderSize = 8; - ExportBottomMarginUnit = "%"; - ExportBottomMarginPercent = 5; - ExportBottomMarginPixels = 15; - ExportLeftRightMarginUnit = "%"; - ExportLeftRightMarginPercent = 5; - ExportLeftRightMarginPixels = 15; - ExportHorizontalAlignment = 1; // 1=center (0=left, 2=right) - ExportVobSubSimpleRendering = false; - ExportVobAntiAliasingWithTransparency = true; - ExportBluRayBottomMarginPercent = 5; - ExportBluRayBottomMarginPixels = 20; - ExportBluRayShadow = 1; - Export3DType = 0; - Export3DDepth = 0; - ExportCdgMarginLeft = 160; - ExportCdgMarginBottom = 67; - ExportLastShadowTransparency = 200; - ExportLastFrameRate = 24.0d; - ExportFullFrame = false; - ExportPenLineJoin = "Round"; - ExportFcpImageType = "Bmp"; - ExportFcpPalNtsc = "PAL"; - ExportLastBorderWidth = 4; - BinEditBackgroundColor = Color.Black; - BinEditImageBackgroundColor = Color.Blue; - BinEditTopMargin = 10; - BinEditBottomMargin = 10; - BinEditLeftMargin = 10; - BinEditRightMargin = 10; - BridgeGapMilliseconds = 100; - BridgeGapMillisecondsMinGap = 24; - ChangeCasingNormalFixNames = true; - ExportCustomTemplates = "SubRipÆÆ{number}\r\n{start} --> {end}\r\n{text}\r\n\r\nÆhh:mm:ss,zzzÆ[Do not modify]ÆÆsrtæMicroDVDÆÆ{{start}}{{end}}{text}\r\nÆffÆ||ÆÆsub"; - UseNoLineBreakAfter = false; - NoLineBreakAfterEnglish = " Mrs.; Ms.; Mr.; Dr.; a; an; the; my; my own; your; his; our; their; it's; is; are;'s; 're; would;'ll;'ve;'d; will; that; which; who; whom; whose; whichever; whoever; wherever; each; either; every; all; both; few; many; sevaral; all; any; most; been; been doing; none; some; my own; your own; his own; her own; our own; their own; I; she; he; as per; as regards; into; onto; than; where as; abaft; aboard; about; above; across; afore; after; against; along; alongside; amid; amidst; among; amongst; anenst; apropos; apud; around; as; aside; astride; at; athwart; atop; barring; before; behind; below; beneath; beside; besides; between; betwixt; beyond; but; by; circa; ca; concerning; despite; down; during; except; excluding; following; for; forenenst; from; given; in; including; inside; into; lest; like; minus; modulo; near; next; of; off; on; onto; opposite; out; outside; over; pace; past; per; plus; pro; qua; regarding; round; sans; save; since; than; through; thru; throughout; thruout; till; to; toward; towards; under; underneath; unlike; until; unto; up; upon; versus; vs; via; vice; with; within; without; considering; respecting; one; two; another; three; our; five; six; seven; eight; nine; ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen; seventeen; eighteen; nineteen; twenty; thirty; forty; fifty; sixty; seventy; eighty; ninety; hundred; thousand; million; billion; trillion; while; however; what; zero; little; enough; after; although; and; as; if; though; although; because; before; both; but; even; how; than; nor; or; only; unless; until; yet; was; were"; - FindHistory = new List(); - ExportTextFormatText = "None"; - ExportTextRemoveStyling = true; - ExportTextShowLineNumbersNewLine = true; - ExportTextShowTimeCodesNewLine = true; - ExportTextNewLineAfterText = true; - ExportTextNewLineBetweenSubtitles = true; - ImportTextLineBreak = "|"; - ImportTextAutoSplitNumberOfLines = 2; - ImportTextAutoSplitAtBlank = true; - ImportTextAutoBreakAtEndMarkerText = ".!?"; - ImportTextAutoBreakAtEnd = true; - MoveStartEndMs = 100; - AdjustDurationSeconds = 0.1m; - AdjustDurationPercent = 120; - AdjustDurationExtendOnly = true; - AdjustDurationExtendEnforceDurationLimits = true; - AdjustDurationExtendCheckShotChanges = true; - AutoBreakCommaBreakEarly = false; - AutoBreakDashEarly = true; - AutoBreakLineEndingEarly = false; - AutoBreakUsePixelWidth = true; - AutoBreakPreferBottomHeavy = true; - AutoBreakPreferBottomPercent = 5; - ApplyMinimumDurationLimit = true; - ApplyMinimumDurationLimitCheckShotChanges = true; - ApplyMaximumDurationLimit = true; - MergeShortLinesMaxGap = 250; - MergeShortLinesMaxChars = 55; - MergeShortLinesOnlyContinuous = true; - MergeTextWithSameTimeCodesMaxGap = 250; - MergeTextWithSameTimeCodesReBreakLines = false; - MergeLinesWithSameTextMaxMs = 250; - MergeLinesWithSameTextIncrement = true; - MergeTextWithSameTimeCodesMakeDialog = false; - ConvertColorsToDialogRemoveColorTags = true; - ConvertColorsToDialogAddNewLines = true; - ConvertColorsToDialogReBreakLines = false; - ColumnPasteColumn = "all"; - ColumnPasteOverwriteMode = "overwrite"; - AssaAttachmentFontTextPreview = - "Hello World!" + Environment.NewLine + - "こんにちは世界" + Environment.NewLine + - "你好世界!" + Environment.NewLine + - "1234567890"; - BlankVideoColor = Color.CadetBlue; - BlankVideoUseCheckeredImage = true; - BlankVideoMinutes = 2; - BlankVideoFrameRate = 23.976m; - AssaProgressBarForeColor = Color.FromArgb(200, 200, 0, 0); - AssaProgressBarBackColor = Color.FromArgb(150, 80, 80, 80); - AssaProgressBarTextColor = Color.White; - AssaProgressBarHeight = 40; - AssaProgressBarSplitterWidth = 2; - AssaProgressBarSplitterHeight = 40; - AssaProgressBarFontName = "Arial"; - AssaProgressBarFontSize = 30; - AssaProgressBarTextAlign = "left"; - - AssaBgBoxPaddingLeft = 10; - AssaBgBoxPaddingRight = 10; - AssaBgBoxPaddingTop = 6; - AssaBgBoxPaddingBottom = 6; - AssaBgBoxColor = Color.FromArgb(200, 0, 0, 0); - AssaBgBoxOutlineColor = Color.FromArgb(200, 80, 80, 80); - AssaBgBoxShadowColor = Color.FromArgb(100, 0, 0, 0); - AssaBgBoxTransparentColor = Color.Cyan; - AssaBgBoxStyle = "square"; - AssaBgBoxStyleRadius = 30; - AssaBgBoxStyleCircleAdjustY = 30; - AssaBgBoxStyleSpikesStep = 15; - AssaBgBoxStyleSpikesHeight = 30; - AssaBgBoxStyleBubblesStep = 75; - AssaBgBoxStyleBubblesHeight = 40; - AssaBgBoxOutlineWidth = 0; - AssaBgBoxLayer = -11893; - AssaBgBoxDrawingFileWatch = true; - - GenVideoEncoding = "libx264"; - GenVideoPreset = "medium"; - GenVideoCrf = "23"; - GenVideoTune = "film"; - GenVideoAudioEncoding = "copy"; - GenVideoAudioForceStereo = true; - GenVideoAudioSampleRate = "48000"; - GenVideoFontBold = true; - GenVideoOutline = 6; - GenVideoFontSizePercentOfHeight = 0.078f; - GenVideoNonAssaBox = true; - GenVideoNonAssaBoxColor = Color.FromArgb(150, 0, 0, 0); - GenVideoNonAssaTextColor = Color.White; - GenVideoEmbedOutputSuffix = "embed"; - GenVideoEmbedOutputReplace = "embed" + Environment.NewLine + "SoftSub" + Environment.NewLine + "SoftSubbed"; - GenVideoOutputFileSuffix = "_new"; - VoskPostProcessing = true; - WhisperChoice = Configuration.IsRunningOnWindows ? AudioToText.WhisperChoice.PurfviewFasterWhisper : AudioToText.WhisperChoice.OpenAi; - WhisperDeleteTempFiles = true; - WhisperPurfviewFasterWhisperDefaultCmd = "--standard"; - WhisperExtraSettings = ""; - WhisperLanguageCode = "en"; - WhisperAutoAdjustTimings = true; - WhisperPostProcessingAddPeriods = false; - WhisperPostProcessingMergeLines = true; - WhisperPostProcessingSplitLines = true; - WhisperPostProcessingFixCasing = false; - WhisperPostProcessingFixShortDuration = true; - AudioToTextLineMaxChars = 86; - AudioToTextLineMaxCharsJp = 32; - AudioToTextLineMaxCharsCn = 36; - } - } - - public class FcpExportSettings - { - public string FontName { get; set; } - public int FontSize { get; set; } - public string Alignment { get; set; } - public int Baseline { get; set; } - public Color Color { get; set; } - - public FcpExportSettings() - { - FontName = "Lucida Sans"; - FontSize = 36; - Alignment = "center"; - Baseline = 29; - Color = Color.WhiteSmoke; - } - } - - - public class WordListSettings - { - public string LastLanguage { get; set; } - public string NamesUrl { get; set; } - public bool UseOnlineNames { get; set; } - - public WordListSettings() - { - LastLanguage = "en-US"; - NamesUrl = "https://raw.githubusercontent.com/SubtitleEdit/subtitleedit/main/Dictionaries/names.xml"; - } - } - - public class SubtitleSettings - { - public List AssaStyleStorageCategories { get; set; } - public List AssaOverrideTagHistory { get; set; } - public bool AssaResolutionAutoNew { get; set; } - public bool AssaResolutionPromptChange { get; set; } - public bool AssaShowScaledBorderAndShadow { get; set; } - public bool AssaShowPlayDepth { get; set; } - public string DCinemaFontFile { get; set; } - public string DCinemaLoadFontResource { get; set; } - public int DCinemaFontSize { get; set; } - public int DCinemaBottomMargin { get; set; } - public double DCinemaZPosition { get; set; } - public int DCinemaFadeUpTime { get; set; } - public int DCinemaFadeDownTime { get; set; } - public bool DCinemaAutoGenerateSubtitleId { get; set; } - - public string CurrentDCinemaSubtitleId { get; set; } - public string CurrentDCinemaMovieTitle { get; set; } - public string CurrentDCinemaReelNumber { get; set; } - public string CurrentDCinemaIssueDate { get; set; } - public string CurrentDCinemaLanguage { get; set; } - public string CurrentDCinemaEditRate { get; set; } - public string CurrentDCinemaTimeCodeRate { get; set; } - public string CurrentDCinemaStartTime { get; set; } - public string CurrentDCinemaFontId { get; set; } - public string CurrentDCinemaFontUri { get; set; } - public Color CurrentDCinemaFontColor { get; set; } - public string CurrentDCinemaFontEffect { get; set; } - public Color CurrentDCinemaFontEffectColor { get; set; } - public int CurrentDCinemaFontSize { get; set; } - - public int CurrentCavena890LanguageIdLine1 { get; set; } - public int CurrentCavena890LanguageIdLine2 { get; set; } - public string CurrentCavena89Title { get; set; } - public string CurrentCavena890riginalTitle { get; set; } - public string CurrentCavena890Translator { get; set; } - public string CurrentCavena89Comment { get; set; } - public int CurrentCavena89LanguageId { get; set; } - public string Cavena890StartOfMessage { get; set; } - - public bool EbuStlTeletextUseBox { get; set; } - public bool EbuStlTeletextUseDoubleHeight { get; set; } - public int EbuStlMarginTop { get; set; } - public int EbuStlMarginBottom { get; set; } - public int EbuStlNewLineRows { get; set; } - public bool EbuStlRemoveEmptyLines { get; set; } - public int PacVerticalTop { get; set; } - public int PacVerticalCenter { get; set; } - public int PacVerticalBottom { get; set; } - - public string DvdStudioProHeader { get; set; } - - public string TmpegEncXmlFontName { get; set; } - public string TmpegEncXmlFontHeight { get; set; } - public string TmpegEncXmlPosition { get; set; } - - public bool CheetahCaptionAlwayWriteEndTime { get; set; } - - public bool SamiDisplayTwoClassesAsTwoSubtitles { get; set; } - public int SamiHtmlEncodeMode { get; set; } - - public string TimedText10TimeCodeFormat { get; set; } - public string TimedText10TimeCodeFormatSource { get; set; } - public bool TimedText10ShowStyleAndLanguage { get; set; } - public string TimedText10FileExtension { get; set; } - public string TimedTextItunesTopOrigin { get; set; } - public string TimedTextItunesTopExtent { get; set; } - public string TimedTextItunesBottomOrigin { get; set; } - public string TimedTextItunesBottomExtent { get; set; } - public string TimedTextItunesTimeCodeFormat { get; set; } - public string TimedTextItunesStyleAttribute { get; set; } - public string TimedTextImsc11TimeCodeFormat { get; set; } - public string TimedTextImsc11FileExtension { get; set; } - - - public int FcpFontSize { get; set; } - public string FcpFontName { get; set; } - - public string NuendoCharacterListFile { get; set; } - - public bool WebVttUseXTimestampMap { get; set; } - public bool WebVttUseMultipleXTimestampMap { get; set; } - public bool WebVttMergeLinesWithSameText { get; set; } - public long WebVttTimescale { get; set; } - public string WebVttCueAn1 { get; set; } - public string WebVttCueAn2 { get; set; } - public string WebVttCueAn3 { get; set; } - public string WebVttCueAn4 { get; set; } - public string WebVttCueAn5 { get; set; } - public string WebVttCueAn6 { get; set; } - public string WebVttCueAn7 { get; set; } - public string WebVttCueAn8 { get; set; } - public string WebVttCueAn9 { get; set; } - public string MPlayer2Extension { get; set; } - public bool TeletextItalicFix { get; set; } - public bool MccDebug { get; set; } - public bool BluRaySupSkipMerge { get; set; } - public bool BluRaySupForceMergeAll { get; set; } - - public SubtitleSettings() - { - AssaStyleStorageCategories = new List(); - AssaOverrideTagHistory = new List(); - AssaResolutionAutoNew = true; - AssaResolutionPromptChange = true; - AssaShowScaledBorderAndShadow = true; - AssaShowPlayDepth = true; - - DCinemaFontFile = "Arial.ttf"; - DCinemaLoadFontResource = "urn:uuid:3dec6dc0-39d0-498d-97d0-928d2eb78391"; - DCinemaFontSize = 42; - DCinemaBottomMargin = 8; - DCinemaZPosition = 0; - DCinemaFadeUpTime = 0; - DCinemaFadeDownTime = 0; - DCinemaAutoGenerateSubtitleId = true; - - EbuStlTeletextUseBox = true; - EbuStlTeletextUseDoubleHeight = true; - EbuStlMarginTop = 0; - EbuStlMarginBottom = 2; - EbuStlNewLineRows = 2; - - PacVerticalTop = 1; - PacVerticalCenter = 6; - PacVerticalBottom = 11; - - DvdStudioProHeader = @"$VertAlign = Bottom -$Bold = FALSE -$Underlined = FALSE -$Italic = FALSE -$XOffset = 0 -$YOffset = -5 -$TextContrast = 15 -$Outline1Contrast = 15 -$Outline2Contrast = 13 -$BackgroundContrast = 0 -$ForceDisplay = FALSE -$FadeIn = 0 -$FadeOut = 0 -$HorzAlign = Center -"; - - TmpegEncXmlFontName = "Tahoma"; - TmpegEncXmlFontHeight = "0.069"; - TmpegEncXmlPosition = "23"; - - SamiDisplayTwoClassesAsTwoSubtitles = true; - SamiHtmlEncodeMode = 0; - - TimedText10TimeCodeFormat = "Source"; - TimedText10ShowStyleAndLanguage = true; - TimedText10FileExtension = ".xml"; - - TimedTextItunesTopOrigin = "0% 0%"; - TimedTextItunesTopExtent = "100% 15%"; - TimedTextItunesBottomOrigin = "0% 85%"; - TimedTextItunesBottomExtent = "100% 15%"; - TimedTextItunesTimeCodeFormat = "Frames"; - TimedTextItunesStyleAttribute = "tts:fontStyle"; - TimedTextImsc11TimeCodeFormat = "hh:mm:ss.ms"; - TimedTextImsc11FileExtension = ".xml"; - - FcpFontSize = 18; - FcpFontName = "Lucida Grande"; - - Cavena890StartOfMessage = "10:00:00:00"; - - WebVttTimescale = 90000; - WebVttUseXTimestampMap = true; - WebVttUseMultipleXTimestampMap = true; - WebVttCueAn1 = "position:20%"; - WebVttCueAn2 = ""; - WebVttCueAn3 = "position:80%"; - WebVttCueAn4 = "position:20% line:50%"; - WebVttCueAn5 = "line:50%"; - WebVttCueAn6 = "position:80% line:50%"; - WebVttCueAn7 = "position:20% line:20%"; - WebVttCueAn8 = "line:20%"; - WebVttCueAn9 = "position:80% line:20%"; - - MPlayer2Extension = ".txt"; - - TeletextItalicFix = true; - } - - public void InitializeDCinameSettings(bool smpte) - { - if (smpte) - { - CurrentDCinemaSubtitleId = "urn:uuid:" + Guid.NewGuid(); - CurrentDCinemaLanguage = "en"; - CurrentDCinemaFontUri = DCinemaLoadFontResource; - CurrentDCinemaFontId = "theFontId"; - } - else - { - string hex = Guid.NewGuid().ToString().RemoveChar('-').ToLowerInvariant(); - hex = hex.Insert(8, "-").Insert(13, "-").Insert(18, "-").Insert(23, "-"); - CurrentDCinemaSubtitleId = hex; - CurrentDCinemaLanguage = "English"; - CurrentDCinemaFontUri = DCinemaFontFile; - CurrentDCinemaFontId = "Arial"; - } - CurrentDCinemaIssueDate = DateTime.Now.ToString("s"); - CurrentDCinemaMovieTitle = "title"; - CurrentDCinemaReelNumber = "1"; - CurrentDCinemaFontColor = Color.White; - CurrentDCinemaFontEffect = "border"; - CurrentDCinemaFontEffectColor = Color.Black; - CurrentDCinemaFontSize = DCinemaFontSize; - CurrentCavena890LanguageIdLine1 = -1; - CurrentCavena890LanguageIdLine2 = -1; - } - } - - public class ProxySettings - { - public string ProxyAddress { get; set; } - public string AuthType { get; set; } - public bool UseDefaultCredentials { get; set; } - public string UserName { get; set; } - public string Password { get; set; } - public string Domain { get; set; } - - public string DecodePassword() - { - return Encoding.UTF8.GetString(Convert.FromBase64String(Password)); - } - public void EncodePassword(string unencryptedPassword) - { - Password = Convert.ToBase64String(Encoding.UTF8.GetBytes(unencryptedPassword)); - } - } - - public class FixCommonErrorsSettings - { - public string StartPosition { get; set; } - public string StartSize { get; set; } - public bool EmptyLinesTicked { get; set; } - public bool OverlappingDisplayTimeTicked { get; set; } - public bool TooShortDisplayTimeTicked { get; set; } - public bool TooLongDisplayTimeTicked { get; set; } - public bool TooShortGapTicked { get; set; } - public bool InvalidItalicTagsTicked { get; set; } - public bool BreakLongLinesTicked { get; set; } - public bool MergeShortLinesTicked { get; set; } - public bool MergeShortLinesAllTicked { get; set; } - public bool MergeShortLinesPixelWidthTicked { get; set; } - public bool UnneededSpacesTicked { get; set; } - public bool UnneededPeriodsTicked { get; set; } - public bool FixCommasTicked { get; set; } - public bool MissingSpacesTicked { get; set; } - public bool AddMissingQuotesTicked { get; set; } - public bool Fix3PlusLinesTicked { get; set; } - public bool FixHyphensTicked { get; set; } - public bool FixHyphensRemoveSingleLineTicked { get; set; } - public bool UppercaseIInsideLowercaseWordTicked { get; set; } - public bool DoubleApostropheToQuoteTicked { get; set; } - public bool AddPeriodAfterParagraphTicked { get; set; } - public bool StartWithUppercaseLetterAfterParagraphTicked { get; set; } - public bool StartWithUppercaseLetterAfterPeriodInsideParagraphTicked { get; set; } - public bool StartWithUppercaseLetterAfterColonTicked { get; set; } - public bool AloneLowercaseIToUppercaseIEnglishTicked { get; set; } - public bool FixOcrErrorsViaReplaceListTicked { get; set; } - public bool RemoveSpaceBetweenNumberTicked { get; set; } - public bool FixDialogsOnOneLineTicked { get; set; } - public bool RemoveDialogFirstLineInNonDialogs { get; set; } - public bool TurkishAnsiTicked { get; set; } - public bool DanishLetterITicked { get; set; } - public bool SpanishInvertedQuestionAndExclamationMarksTicked { get; set; } - public bool FixDoubleDashTicked { get; set; } - public bool FixDoubleGreaterThanTicked { get; set; } - public bool FixEllipsesStartTicked { get; set; } - public bool FixMissingOpenBracketTicked { get; set; } - public bool FixMusicNotationTicked { get; set; } - public bool FixContinuationStyleTicked { get; set; } - public bool FixUnnecessaryLeadingDotsTicked { get; set; } - public bool NormalizeStringsTicked { get; set; } - public string DefaultFixes { get; set; } - - - public FixCommonErrorsSettings() - { - SetDefaultFixes(); - } - - public void SaveUserDefaultFixes() - { - var sb = new StringBuilder(); - - if (EmptyLinesTicked) - { - sb.Append(nameof(EmptyLinesTicked) + ";"); - } - - if (OverlappingDisplayTimeTicked) - { - sb.Append(nameof(OverlappingDisplayTimeTicked) + ";"); - } - - if (TooShortDisplayTimeTicked) - { - sb.Append(nameof(TooShortDisplayTimeTicked) + ";"); - } - - if (TooLongDisplayTimeTicked) - { - sb.Append(nameof(TooLongDisplayTimeTicked) + ";"); - } - - if (TooShortGapTicked) - { - sb.Append(nameof(TooShortGapTicked) + ";"); - } - - if (InvalidItalicTagsTicked) - { - sb.Append(nameof(InvalidItalicTagsTicked) + ";"); - } - - if (BreakLongLinesTicked) - { - sb.Append(nameof(BreakLongLinesTicked) + ";"); - } - - if (MergeShortLinesTicked) - { - sb.Append(nameof(MergeShortLinesTicked) + ";"); - } - - if (MergeShortLinesAllTicked) - { - sb.Append(nameof(MergeShortLinesAllTicked) + ";"); - } - - if (MergeShortLinesPixelWidthTicked) - { - sb.Append(nameof(MergeShortLinesPixelWidthTicked) + ";"); - } - - if (UnneededSpacesTicked) - { - sb.Append(nameof(UnneededSpacesTicked) + ";"); - } - - if (UnneededPeriodsTicked) - { - sb.Append(nameof(UnneededPeriodsTicked) + ";"); - } - - if (FixCommasTicked) - { - sb.Append(nameof(FixCommasTicked) + ";"); - } - - if (MissingSpacesTicked) - { - sb.Append(nameof(MissingSpacesTicked) + ";"); - } - - if (AddMissingQuotesTicked) - { - sb.Append(nameof(AddMissingQuotesTicked) + ";"); - } - - if (Fix3PlusLinesTicked) - { - sb.Append(nameof(Fix3PlusLinesTicked) + ";"); - } - - if (FixHyphensTicked) - { - sb.Append(nameof(FixHyphensTicked) + ";"); - } - - if (FixHyphensRemoveSingleLineTicked) - { - sb.Append(nameof(FixHyphensRemoveSingleLineTicked) + ";"); - } - - if (UppercaseIInsideLowercaseWordTicked) - { - sb.Append(nameof(UppercaseIInsideLowercaseWordTicked) + ";"); - } - - if (DoubleApostropheToQuoteTicked) - { - sb.Append(nameof(DoubleApostropheToQuoteTicked) + ";"); - } - - if (AddPeriodAfterParagraphTicked) - { - sb.Append(nameof(AddPeriodAfterParagraphTicked) + ";"); - } - - if (StartWithUppercaseLetterAfterParagraphTicked) - { - sb.Append(nameof(StartWithUppercaseLetterAfterParagraphTicked) + ";"); - } - - if (StartWithUppercaseLetterAfterPeriodInsideParagraphTicked) - { - sb.Append(nameof(StartWithUppercaseLetterAfterPeriodInsideParagraphTicked) + ";"); - } - - if (StartWithUppercaseLetterAfterColonTicked) - { - sb.Append(nameof(StartWithUppercaseLetterAfterColonTicked) + ";"); - } - - if (AloneLowercaseIToUppercaseIEnglishTicked) - { - sb.Append(nameof(AloneLowercaseIToUppercaseIEnglishTicked) + ";"); - } - - if (FixOcrErrorsViaReplaceListTicked) - { - sb.Append(nameof(FixOcrErrorsViaReplaceListTicked) + ";"); - } - - if (RemoveSpaceBetweenNumberTicked) - { - sb.Append(nameof(RemoveSpaceBetweenNumberTicked) + ";"); - } - - if (FixDialogsOnOneLineTicked) - { - sb.Append(nameof(FixDialogsOnOneLineTicked) + ";"); - } - - if (RemoveDialogFirstLineInNonDialogs) - { - sb.Append(nameof(RemoveDialogFirstLineInNonDialogs) + ";"); - } - - if (TurkishAnsiTicked) - { - sb.Append(nameof(TurkishAnsiTicked) + ";"); - } - - if (DanishLetterITicked) - { - sb.Append(nameof(DanishLetterITicked) + ";"); - } - - if (SpanishInvertedQuestionAndExclamationMarksTicked) - { - sb.Append(nameof(SpanishInvertedQuestionAndExclamationMarksTicked) + ";"); - } - - if (FixDoubleDashTicked) - { - sb.Append(nameof(FixDoubleDashTicked) + ";"); - } - - if (FixEllipsesStartTicked) - { - sb.Append(nameof(FixEllipsesStartTicked) + ";"); - } - - if (FixMissingOpenBracketTicked) - { - sb.Append(nameof(FixMissingOpenBracketTicked) + ";"); - } - - if (FixMusicNotationTicked) - { - sb.Append(nameof(FixMusicNotationTicked) + ";"); - } - - if (FixContinuationStyleTicked) - { - sb.Append(nameof(FixContinuationStyleTicked) + ";"); - } - - if (FixUnnecessaryLeadingDotsTicked) - { - sb.Append(nameof(FixUnnecessaryLeadingDotsTicked) + ";"); - } - - if (NormalizeStringsTicked) - { - sb.Append(nameof(NormalizeStringsTicked) + ";"); - } - - DefaultFixes = sb.ToString().TrimEnd(';'); - } - - public void LoadUserDefaultFixes(string fixes) - { - var list = fixes.Split(';'); - EmptyLinesTicked = list.Contains(nameof(EmptyLinesTicked)); - OverlappingDisplayTimeTicked = list.Contains(nameof(OverlappingDisplayTimeTicked)); - TooShortDisplayTimeTicked = list.Contains(nameof(TooShortDisplayTimeTicked)); - TooLongDisplayTimeTicked = list.Contains(nameof(TooLongDisplayTimeTicked)); - TooShortGapTicked = list.Contains(nameof(TooShortGapTicked)); - InvalidItalicTagsTicked = list.Contains(nameof(InvalidItalicTagsTicked)); - BreakLongLinesTicked = list.Contains(nameof(BreakLongLinesTicked)); - MergeShortLinesTicked = list.Contains(nameof(MergeShortLinesTicked)); - MergeShortLinesAllTicked = list.Contains(nameof(MergeShortLinesAllTicked)); - MergeShortLinesPixelWidthTicked = list.Contains(nameof(MergeShortLinesPixelWidthTicked)); - UnneededSpacesTicked = list.Contains(nameof(UnneededSpacesTicked)); - UnneededPeriodsTicked = list.Contains(nameof(UnneededPeriodsTicked)); - FixCommasTicked = list.Contains(nameof(FixCommasTicked)); - MissingSpacesTicked = list.Contains(nameof(MissingSpacesTicked)); - AddMissingQuotesTicked = list.Contains(nameof(AddMissingQuotesTicked)); - Fix3PlusLinesTicked = list.Contains(nameof(Fix3PlusLinesTicked)); - FixHyphensTicked = list.Contains(nameof(FixHyphensTicked)); - FixHyphensRemoveSingleLineTicked = list.Contains(nameof(FixHyphensRemoveSingleLineTicked)); - UppercaseIInsideLowercaseWordTicked = list.Contains(nameof(UppercaseIInsideLowercaseWordTicked)); - DoubleApostropheToQuoteTicked = list.Contains(nameof(DoubleApostropheToQuoteTicked)); - AddPeriodAfterParagraphTicked = list.Contains(nameof(AddPeriodAfterParagraphTicked)); - StartWithUppercaseLetterAfterParagraphTicked = list.Contains(nameof(StartWithUppercaseLetterAfterParagraphTicked)); - StartWithUppercaseLetterAfterPeriodInsideParagraphTicked = list.Contains(nameof(StartWithUppercaseLetterAfterPeriodInsideParagraphTicked)); - StartWithUppercaseLetterAfterColonTicked = list.Contains(nameof(StartWithUppercaseLetterAfterColonTicked)); - AloneLowercaseIToUppercaseIEnglishTicked = list.Contains(nameof(AloneLowercaseIToUppercaseIEnglishTicked)); - FixOcrErrorsViaReplaceListTicked = list.Contains(nameof(FixOcrErrorsViaReplaceListTicked)); - RemoveSpaceBetweenNumberTicked = list.Contains(nameof(RemoveSpaceBetweenNumberTicked)); - FixDialogsOnOneLineTicked = list.Contains(nameof(FixDialogsOnOneLineTicked)); - RemoveDialogFirstLineInNonDialogs = list.Contains(nameof(RemoveDialogFirstLineInNonDialogs)); - TurkishAnsiTicked = list.Contains(nameof(TurkishAnsiTicked)); - DanishLetterITicked = list.Contains(nameof(DanishLetterITicked)); - SpanishInvertedQuestionAndExclamationMarksTicked = list.Contains(nameof(SpanishInvertedQuestionAndExclamationMarksTicked)); - FixDoubleDashTicked = list.Contains(nameof(FixDoubleDashTicked)); - FixEllipsesStartTicked = list.Contains(nameof(FixEllipsesStartTicked)); - FixMissingOpenBracketTicked = list.Contains(nameof(FixMissingOpenBracketTicked)); - FixMusicNotationTicked = list.Contains(nameof(FixMusicNotationTicked)); - FixContinuationStyleTicked = list.Contains(nameof(FixContinuationStyleTicked)); - FixUnnecessaryLeadingDotsTicked = list.Contains(nameof(FixUnnecessaryLeadingDotsTicked)); - NormalizeStringsTicked = list.Contains(nameof(NormalizeStringsTicked)); - } - - public void SetDefaultFixes() - { - LoadUserDefaultFixes(string.Empty); - EmptyLinesTicked = true; - OverlappingDisplayTimeTicked = true; - TooShortDisplayTimeTicked = true; - TooLongDisplayTimeTicked = true; - TooShortGapTicked = false; - InvalidItalicTagsTicked = true; - BreakLongLinesTicked = true; - MergeShortLinesTicked = true; - MergeShortLinesPixelWidthTicked = false; - UnneededPeriodsTicked = true; - FixCommasTicked = true; - UnneededSpacesTicked = true; - MissingSpacesTicked = true; - UppercaseIInsideLowercaseWordTicked = true; - DoubleApostropheToQuoteTicked = true; - AddPeriodAfterParagraphTicked = false; - StartWithUppercaseLetterAfterParagraphTicked = true; - StartWithUppercaseLetterAfterPeriodInsideParagraphTicked = false; - StartWithUppercaseLetterAfterColonTicked = false; - AloneLowercaseIToUppercaseIEnglishTicked = false; - TurkishAnsiTicked = false; - DanishLetterITicked = false; - FixDoubleDashTicked = true; - FixDoubleGreaterThanTicked = true; - FixEllipsesStartTicked = true; - FixMissingOpenBracketTicked = true; - FixMusicNotationTicked = true; - FixContinuationStyleTicked = false; - FixUnnecessaryLeadingDotsTicked = true; - NormalizeStringsTicked = false; - SaveUserDefaultFixes(); - } - } - - public class GeneralSettings - { - public List Profiles { get; set; } - public string CurrentProfile { get; set; } - public bool ShowToolbarNew { get; set; } - public bool ShowToolbarOpen { get; set; } - public bool ShowToolbarOpenVideo { get; set; } - public bool ShowToolbarSave { get; set; } - public bool ShowToolbarSaveAs { get; set; } - public bool ShowToolbarFind { get; set; } - public bool ShowToolbarReplace { get; set; } - public bool ShowToolbarFixCommonErrors { get; set; } - public bool ShowToolbarRemoveTextForHi { get; set; } - public bool ShowToolbarToggleSourceView { get; set; } - public bool ShowToolbarVisualSync { get; set; } - public bool ShowToolbarBurnIn { get; set; } - public bool ShowToolbarSpellCheck { get; set; } - public bool ShowToolbarNetflixGlyphCheck { get; set; } - public bool ShowToolbarBeautifyTimeCodes { get; set; } - public bool ShowToolbarSettings { get; set; } - public bool ShowToolbarHelp { get; set; } - - public int LayoutNumber { get; set; } - public string LayoutSizes { get; set; } - public bool ShowVideoPlayer { get; set; } - public bool ShowAudioVisualizer { get; set; } - public bool ShowWaveform { get; set; } - public bool ShowSpectrogram { get; set; } - public bool ShowFrameRate { get; set; } - public bool ShowVideoControls { get; set; } - public bool TextAndOrigianlTextBoxesSwitched { get; set; } - public double DefaultFrameRate { get; set; } - public double CurrentFrameRate { get; set; } - public string DefaultSubtitleFormat { get; set; } - public string DefaultSaveAsFormat { get; set; } - public string FavoriteSubtitleFormats { get; set; } - public string DefaultEncoding { get; set; } - public bool AutoConvertToUtf8 { get; set; } - public bool AutoGuessAnsiEncoding { get; set; } - public string TranslationAutoSuffixes { get; set; } - public string TranslationAutoSuffixDefault { get; set; } - public string SystemSubtitleFontNameOverride { get; set; } - public int SystemSubtitleFontSizeOverride { get; set; } - - public string SubtitleFontName { get; set; } - public int SubtitleTextBoxFontSize { get; set; } - public bool SubtitleTextBoxSyntaxColor { get; set; } - public Color SubtitleTextBoxHtmlColor { get; set; } - public Color SubtitleTextBoxAssColor { get; set; } - public int SubtitleListViewFontSize { get; set; } - public bool SubtitleTextBoxFontBold { get; set; } - public bool SubtitleListViewFontBold { get; set; } - public Color SubtitleFontColor { get; set; } - public Color SubtitleBackgroundColor { get; set; } - public string MeasureFontName { get; set; } - public int MeasureFontSize { get; set; } - public bool MeasureFontBold { get; set; } - public int SubtitleLineMaximumPixelWidth { get; set; } - public bool CenterSubtitleInTextBox { get; set; } - public bool ShowRecentFiles { get; set; } - public bool RememberSelectedLine { get; set; } - public bool StartLoadLastFile { get; set; } - public bool StartRememberPositionAndSize { get; set; } - public string StartPosition { get; set; } - public string StartSize { get; set; } - public bool StartInSourceView { get; set; } - public bool RemoveBlankLinesWhenOpening { get; set; } - public bool RemoveBadCharsWhenOpening { get; set; } - public int SubtitleLineMaximumLength { get; set; } - public int MaxNumberOfLines { get; set; } - public int MaxNumberOfLinesPlusAbort { get; set; } - public int MergeLinesShorterThan { get; set; } - public int SubtitleMinimumDisplayMilliseconds { get; set; } - public int SubtitleMaximumDisplayMilliseconds { get; set; } - public int MinimumMillisecondsBetweenLines { get; set; } - public int SetStartEndHumanDelay { get; set; } - public bool AutoWrapLineWhileTyping { get; set; } - public double SubtitleMaximumCharactersPerSeconds { get; set; } - public double SubtitleOptimalCharactersPerSeconds { get; set; } - public string CpsLineLengthStrategy { get; set; } - public double SubtitleMaximumWordsPerMinute { get; set; } - public DialogType DialogStyle { get; set; } - public ContinuationStyle ContinuationStyle { get; set; } - public int ContinuationPause { get; set; } - public string CustomContinuationStyleSuffix { get; set; } - public bool CustomContinuationStyleSuffixApplyIfComma { get; set; } - public bool CustomContinuationStyleSuffixAddSpace { get; set; } - public bool CustomContinuationStyleSuffixReplaceComma { get; set; } - public string CustomContinuationStylePrefix { get; set; } - public bool CustomContinuationStylePrefixAddSpace { get; set; } - public bool CustomContinuationStyleUseDifferentStyleGap { get; set; } - public string CustomContinuationStyleGapSuffix { get; set; } - public bool CustomContinuationStyleGapSuffixApplyIfComma { get; set; } - public bool CustomContinuationStyleGapSuffixAddSpace { get; set; } - public bool CustomContinuationStyleGapSuffixReplaceComma { get; set; } - public string CustomContinuationStyleGapPrefix { get; set; } - public bool CustomContinuationStyleGapPrefixAddSpace { get; set; } - public bool FixContinuationStyleUncheckInsertsAllCaps { get; set; } - public bool FixContinuationStyleUncheckInsertsItalic { get; set; } - public bool FixContinuationStyleUncheckInsertsLowercase { get; set; } - public bool FixContinuationStyleHideContinuationCandidatesWithoutName { get; set; } - public bool FixContinuationStyleIgnoreLyrics { get; set; } - public string SpellCheckLanguage { get; set; } - public string VideoPlayer { get; set; } - public int VideoPlayerDefaultVolume { get; set; } - public string VideoPlayerPreviewFontName { get; set; } - public int VideoPlayerPreviewFontSize { get; set; } - public bool VideoPlayerPreviewFontBold { get; set; } - public bool VideoPlayerShowStopButton { get; set; } - public bool VideoPlayerShowFullscreenButton { get; set; } - public bool VideoPlayerShowMuteButton { get; set; } - public string Language { get; set; } - public string ListViewLineSeparatorString { get; set; } - public int ListViewDoubleClickAction { get; set; } - public string SaveAsUseFileNameFrom { get; set; } - public string UppercaseLetters { get; set; } - public int DefaultAdjustMilliseconds { get; set; } - public bool AutoRepeatOn { get; set; } - public int AutoRepeatCount { get; set; } - public bool AutoContinueOn { get; set; } - public int AutoContinueDelay { get; set; } - public bool ReturnToStartAfterRepeat { get; set; } - public bool SyncListViewWithVideoWhilePlaying { get; set; } - public int AutoBackupSeconds { get; set; } - public int AutoBackupDeleteAfterMonths { get; set; } - public string SpellChecker { get; set; } - public bool AllowEditOfOriginalSubtitle { get; set; } - public bool PromptDeleteLines { get; set; } - public bool Undocked { get; set; } - public string UndockedVideoPosition { get; set; } - public bool UndockedVideoFullscreen { get; set; } - public string UndockedWaveformPosition { get; set; } - public string UndockedVideoControlsPosition { get; set; } - public bool WaveformCenter { get; set; } - public bool WaveformAutoGenWhenOpeningVideo { get; set; } - public int WaveformUpdateIntervalMs { get; set; } - public int SmallDelayMilliseconds { get; set; } - public int LargeDelayMilliseconds { get; set; } - public bool ShowOriginalAsPreviewIfAvailable { get; set; } - public int LastPacCodePage { get; set; } - public string OpenSubtitleExtraExtensions { get; set; } - public bool ListViewColumnsRememberSize { get; set; } - - public int ListViewNumberWidth { get; set; } - public int ListViewStartWidth { get; set; } - public int ListViewEndWidth { get; set; } - public int ListViewDurationWidth { get; set; } - public int ListViewCpsWidth { get; set; } - public int ListViewWpmWidth { get; set; } - public int ListViewGapWidth { get; set; } - public int ListViewActorWidth { get; set; } - public int ListViewRegionWidth { get; set; } - public int ListViewTextWidth { get; set; } - - public int ListViewNumberDisplayIndex { get; set; } = -1; - public int ListViewStartDisplayIndex { get; set; } = -1; - public int ListViewEndDisplayIndex { get; set; } = -1; - public int ListViewDurationDisplayIndex { get; set; } = -1; - public int ListViewCpsDisplayIndex { get; set; } = -1; - public int ListViewWpmDisplayIndex { get; set; } = -1; - public int ListViewGapDisplayIndex { get; set; } = -1; - public int ListViewActorDisplayIndex { get; set; } = -1; - public int ListViewRegionDisplayIndex { get; set; } = -1; - public int ListViewTextDisplayIndex { get; set; } = -1; - - public bool DirectShowDoubleLoad { get; set; } - public string VlcWaveTranscodeSettings { get; set; } - public string VlcLocation { get; set; } - public string VlcLocationRelative { get; set; } - public string MpvVideoOutputWindows { get; set; } - public string MpvVideoOutputLinux { get; set; } - public string MpvVideoVf { get; set; } - public string MpvVideoAf { get; set; } - public string MpvExtraOptions { get; set; } - public bool MpvLogging { get; set; } - public bool MpvHandlesPreviewText { get; set; } - public Color MpvPreviewTextPrimaryColor { get; set; } - public Color MpvPreviewTextOutlineColor { get; set; } - public Color MpvPreviewTextBackgroundColor { get; set; } - public decimal MpvPreviewTextOutlineWidth { get; set; } - public decimal MpvPreviewTextShadowWidth { get; set; } - public bool MpvPreviewTextOpaqueBox { get; set; } - public string MpvPreviewTextOpaqueBoxStyle { get; set; } - public string MpvPreviewTextAlignment { get; set; } - public int MpvPreviewTextMarginVertical { get; set; } - public string MpcHcLocation { get; set; } - public string MkvMergeLocation { get; set; } - public bool UseFFmpegForWaveExtraction { get; set; } - public bool FFmpegUseCenterChannelOnly { get; set; } - public string FFmpegLocation { get; set; } - public string FFmpegSceneThreshold { get; set; } - public bool UseTimeFormatHHMMSSFF { get; set; } - public int SplitBehavior { get; set; } - public bool SplitRemovesDashes { get; set; } - public int ClearStatusBarAfterSeconds { get; set; } - public string Company { get; set; } - public bool MoveVideo100Or500MsPlaySmallSample { get; set; } - public bool DisableVideoAutoLoading { get; set; } - public bool DisableShowingLoadErrors { get; set; } - public bool AllowVolumeBoost { get; set; } - public int NewEmptyDefaultMs { get; set; } - public bool NewEmptyUseAutoDuration { get; set; } - public bool RightToLeftMode { get; set; } - public string LastSaveAsFormat { get; set; } - public bool CheckForUpdates { get; set; } - public DateTime LastCheckForUpdates { get; set; } - public bool AutoSave { get; set; } - public string PreviewAssaText { get; set; } - public string TagsInToggleHiTags { get; set; } - public string TagsInToggleCustomTags { get; set; } - public bool ShowProgress { get; set; } - public bool ShowNegativeDurationInfoOnSave { get; set; } - public bool ShowFormatRequiresUtf8Warning { get; set; } - public long DefaultVideoOffsetInMs { get; set; } - public string DefaultVideoOffsetInMsList { get; set; } - public long CurrentVideoOffsetInMs { get; set; } - public bool CurrentVideoIsSmpte { get; set; } - public bool AutoSetVideoSmpteForTtml { get; set; } - public bool AutoSetVideoSmpteForTtmlPrompt { 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; } - public string MeasurementConverterCategories { get; set; } - public bool SubtitleTextBoxAutoVerticalScrollBars { get; set; } - public int SubtitleTextBoxMaxHeight { get; set; } - public bool AllowLetterShortcutsInTextBox { get; set; } - public Color DarkThemeForeColor { get; set; } - public Color DarkThemeBackColor { get; set; } - public Color DarkThemeSelectedBackgroundColor { get; set; } - public Color DarkThemeDisabledColor { get; set; } - public Color LastColorPickerColor { get; set; } - public Color LastColorPickerColor1 { get; set; } - public Color LastColorPickerColor2 { get; set; } - public Color LastColorPickerColor3 { get; set; } - public Color LastColorPickerColor4 { get; set; } - public Color LastColorPickerColor5 { get; set; } - public Color LastColorPickerColor6 { get; set; } - public Color LastColorPickerColor7 { get; set; } - public Color LastColorPickerDropper { get; set; } - public string ToolbarIconTheme { get; set; } - public bool UseDarkTheme { get; set; } - public bool DarkThemeShowListViewGridLines { get; set; } - public bool ShowBetaStuff { get; set; } - public bool DebugTranslationSync { get; set; } - public bool UseLegacyDownloader { get; set; } - public bool UseLegacyHtmlColor { get; set; } = true; - public string DefaultLanguages { get; set; } - - public GeneralSettings() - { - ShowToolbarNew = true; - ShowToolbarOpen = true; - ShowToolbarSave = true; - ShowToolbarSaveAs = false; - ShowToolbarFind = true; - ShowToolbarReplace = true; - ShowToolbarFixCommonErrors = false; - ShowToolbarVisualSync = true; - ShowToolbarSpellCheck = true; - ShowToolbarNetflixGlyphCheck = true; - ShowToolbarBeautifyTimeCodes = false; - ShowToolbarSettings = true; - ShowToolbarHelp = true; - ShowToolbarToggleSourceView = false; - ShowVideoPlayer = true; - ShowAudioVisualizer = true; - ShowWaveform = true; - ShowSpectrogram = true; - ShowFrameRate = false; - ShowVideoControls = true; - DefaultFrameRate = 23.976; - CurrentFrameRate = DefaultFrameRate; - SubtitleFontName = "Tahoma"; - SubtitleTextBoxFontSize = 12; - SubtitleListViewFontSize = 10; - SubtitleTextBoxSyntaxColor = false; - SubtitleTextBoxHtmlColor = Color.CornflowerBlue; - SubtitleTextBoxAssColor = Color.BlueViolet; - SubtitleTextBoxFontBold = true; - SubtitleFontColor = Color.Black; - MeasureFontName = "Arial"; - MeasureFontSize = 24; - MeasureFontBold = false; - SubtitleLineMaximumPixelWidth = 576; - SubtitleBackgroundColor = Color.White; - CenterSubtitleInTextBox = false; - DefaultSubtitleFormat = "SubRip"; - DefaultEncoding = TextEncoding.Utf8WithBom; - AutoConvertToUtf8 = false; - AutoGuessAnsiEncoding = true; - TranslationAutoSuffixes = ";.translation;_translation;.en;_en"; - TranslationAutoSuffixDefault = ""; - ShowRecentFiles = true; - RememberSelectedLine = true; - StartLoadLastFile = true; - StartRememberPositionAndSize = true; - SubtitleLineMaximumLength = 43; - MaxNumberOfLines = 2; - MaxNumberOfLinesPlusAbort = 1; - MergeLinesShorterThan = 33; - SubtitleMinimumDisplayMilliseconds = 1000; - SubtitleMaximumDisplayMilliseconds = 8 * 1000; - RemoveBadCharsWhenOpening = true; - MinimumMillisecondsBetweenLines = 24; - SetStartEndHumanDelay = 100; - AutoWrapLineWhileTyping = false; - SubtitleMaximumCharactersPerSeconds = 25.0; - SubtitleOptimalCharactersPerSeconds = 15.0; - SubtitleMaximumWordsPerMinute = 400; - DialogStyle = DialogType.DashBothLinesWithSpace; - ContinuationStyle = ContinuationStyle.None; - ContinuationPause = 300; - CustomContinuationStyleSuffix = ""; - CustomContinuationStyleSuffixApplyIfComma = false; - CustomContinuationStyleSuffixAddSpace = false; - CustomContinuationStyleSuffixReplaceComma = false; - CustomContinuationStylePrefix = ""; - CustomContinuationStylePrefixAddSpace = false; - CustomContinuationStyleUseDifferentStyleGap = true; - CustomContinuationStyleGapSuffix = "..."; - CustomContinuationStyleGapSuffixApplyIfComma = true; - CustomContinuationStyleGapSuffixAddSpace = false; - CustomContinuationStyleGapSuffixReplaceComma = true; - CustomContinuationStyleGapPrefix = "..."; - CustomContinuationStyleGapPrefixAddSpace = false; - FixContinuationStyleUncheckInsertsAllCaps = true; - FixContinuationStyleUncheckInsertsItalic = true; - FixContinuationStyleUncheckInsertsLowercase = true; - FixContinuationStyleHideContinuationCandidatesWithoutName = true; - FixContinuationStyleIgnoreLyrics = true; - SpellCheckLanguage = null; - VideoPlayer = string.Empty; - VideoPlayerDefaultVolume = 75; - VideoPlayerPreviewFontName = "Tahoma"; - VideoPlayerPreviewFontSize = 12; - VideoPlayerPreviewFontBold = true; - VideoPlayerShowStopButton = true; - VideoPlayerShowMuteButton = true; - VideoPlayerShowFullscreenButton = true; - ListViewLineSeparatorString = "
"; - ListViewDoubleClickAction = 1; - SaveAsUseFileNameFrom = "video"; - UppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWZYXÆØÃÅÄÖÉÈÁÂÀÇÊÍÓÔÕÚŁАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯĞİŞÜÙÁÌÑÎΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ"; - DefaultAdjustMilliseconds = 1000; - AutoRepeatOn = true; - AutoRepeatCount = 2; - AutoContinueOn = false; - AutoContinueDelay = 2; - ReturnToStartAfterRepeat = false; - SyncListViewWithVideoWhilePlaying = false; - AutoBackupSeconds = 60 * 5; - AutoBackupDeleteAfterMonths = 3; - SpellChecker = "hunspell"; - AllowEditOfOriginalSubtitle = true; - PromptDeleteLines = true; - Undocked = false; - UndockedVideoPosition = "-32000;-32000"; - UndockedWaveformPosition = "-32000;-32000"; - UndockedVideoControlsPosition = "-32000;-32000"; - WaveformUpdateIntervalMs = 40; - SmallDelayMilliseconds = 500; - LargeDelayMilliseconds = 5000; - OpenSubtitleExtraExtensions = "*.mp4;*.m4v;*.mkv;*.ts"; // matroska/mp4/m4v files (can contain subtitles) - ListViewColumnsRememberSize = true; - DirectShowDoubleLoad = true; - VlcWaveTranscodeSettings = "acodec=s16l"; // "acodec=s16l,channels=1,ab=64,samplerate=8000"; - MpvVideoOutputWindows = string.Empty; // could also be e.g. "gpu" or "directshow" - MpvVideoOutputLinux = "x11"; // could also be e.g. "x11"; - MpvHandlesPreviewText = true; - MpvPreviewTextPrimaryColor = Color.White; - MpvPreviewTextOutlineColor = Color.Black; - MpvPreviewTextBackgroundColor = Color.Black; - MpvPreviewTextOutlineWidth = 1; - MpvPreviewTextShadowWidth = 1; - MpvPreviewTextOpaqueBox = false; - MpvPreviewTextOpaqueBoxStyle = "1"; - MpvPreviewTextAlignment = "2"; - MpvPreviewTextMarginVertical = 10; - FFmpegSceneThreshold = "0.4"; // threshold for generating shot changes - 0.2 is sensitive (more shot changes), 0.6 is less sensitive (fewer shot changes) - UseTimeFormatHHMMSSFF = false; - SplitBehavior = 1; // 0=take gap from left, 1=divide evenly, 2=take gap from right - SplitRemovesDashes = true; - ClearStatusBarAfterSeconds = 10; - MoveVideo100Or500MsPlaySmallSample = false; - DisableVideoAutoLoading = false; - NewEmptyUseAutoDuration = true; - RightToLeftMode = false; - LastSaveAsFormat = string.Empty; - SystemSubtitleFontNameOverride = string.Empty; - CheckForUpdates = true; - LastCheckForUpdates = DateTime.Now; - ShowProgress = false; - ShowNegativeDurationInfoOnSave = true; - ShowFormatRequiresUtf8Warning = true; - DefaultVideoOffsetInMs = 10 * 60 * 60 * 1000; - DefaultVideoOffsetInMsList = "36000000;3600000"; - DarkThemeForeColor = Color.FromArgb(155, 155, 155); - DarkThemeBackColor = Color.FromArgb(30, 30, 30); - DarkThemeSelectedBackgroundColor = Color.FromArgb(24, 52, 75); - DarkThemeDisabledColor = Color.FromArgb(120, 120, 120); - LastColorPickerColor = Color.Yellow; - LastColorPickerColor1 = Color.Red; - LastColorPickerColor2 = Color.Green; - LastColorPickerColor3 = Color.Blue; - LastColorPickerColor4 = Color.White; - LastColorPickerColor5 = Color.Black; - LastColorPickerColor6 = Color.Cyan; - LastColorPickerColor7 = Color.DarkOrange; - LastColorPickerDropper = Color.Transparent; - ToolbarIconTheme = "Auto"; - UseDarkTheme = false; - DarkThemeShowListViewGridLines = false; - AutoSetVideoSmpteForTtml = true; - AutoSetVideoSmpteForTtmlPrompt = true; - TitleBarAsterisk = "before"; - MeasurementConverterCloseOnInsert = true; - MeasurementConverterCategories = "Length;Kilometers;Meters"; - PreviewAssaText = "ABCDEFGHIJKL abcdefghijkl 123"; - TagsInToggleHiTags = "[;]"; - TagsInToggleCustomTags = "(Æ)"; - SubtitleTextBoxMaxHeight = 300; - ShowBetaStuff = false; - DebugTranslationSync = false; - NewEmptyDefaultMs = 2000; - DialogStyle = DialogType.DashBothLinesWithSpace; - ContinuationStyle = ContinuationStyle.None; - - if (Configuration.IsRunningOnLinux) - { - SubtitleFontName = Configuration.DefaultLinuxFontName; - VideoPlayerPreviewFontName = Configuration.DefaultLinuxFontName; - } - - Profiles = new List(); - CurrentProfile = "Default"; - Profiles.Add(new RulesProfile - { - Name = CurrentProfile, - SubtitleLineMaximumLength = SubtitleLineMaximumLength, - MaxNumberOfLines = MaxNumberOfLines, - MergeLinesShorterThan = MergeLinesShorterThan, - SubtitleMaximumCharactersPerSeconds = (decimal)SubtitleMaximumCharactersPerSeconds, - SubtitleOptimalCharactersPerSeconds = (decimal)SubtitleOptimalCharactersPerSeconds, - SubtitleMaximumDisplayMilliseconds = SubtitleMaximumDisplayMilliseconds, - SubtitleMinimumDisplayMilliseconds = SubtitleMinimumDisplayMilliseconds, - SubtitleMaximumWordsPerMinute = (decimal)SubtitleMaximumWordsPerMinute, - CpsLineLengthStrategy = CpsLineLengthStrategy, - MinimumMillisecondsBetweenLines = MinimumMillisecondsBetweenLines, - DialogStyle = DialogStyle, - ContinuationStyle = ContinuationStyle - }); - AddExtraProfiles(Profiles); - } - - internal static void AddExtraProfiles(List profiles) - { - profiles.Add(new RulesProfile - { - Name = "Netflix (English)", - SubtitleLineMaximumLength = 42, - MaxNumberOfLines = 2, - MergeLinesShorterThan = 43, - SubtitleMaximumCharactersPerSeconds = 20, - SubtitleOptimalCharactersPerSeconds = 15, - SubtitleMaximumDisplayMilliseconds = 7007, - SubtitleMinimumDisplayMilliseconds = 833, - SubtitleMaximumWordsPerMinute = 240, - CpsLineLengthStrategy = string.Empty, - MinimumMillisecondsBetweenLines = 83, // 2 frames for 23.976 fps videos - DialogStyle = DialogType.DashBothLinesWithoutSpace, - ContinuationStyle = ContinuationStyle.NoneLeadingTrailingEllipsis - }); - profiles.Add(new RulesProfile - { - Name = "Netflix (Other languages)", - SubtitleLineMaximumLength = 42, - MaxNumberOfLines = 2, - MergeLinesShorterThan = 43, - SubtitleMaximumCharactersPerSeconds = 17, - SubtitleOptimalCharactersPerSeconds = 12, - SubtitleMaximumDisplayMilliseconds = 7007, - SubtitleMinimumDisplayMilliseconds = 833, - SubtitleMaximumWordsPerMinute = 204, - CpsLineLengthStrategy = string.Empty, - MinimumMillisecondsBetweenLines = 83, // 2 frames for 23.976 fps videos - DialogStyle = DialogType.DashBothLinesWithSpace, - ContinuationStyle = ContinuationStyle.NoneLeadingTrailingEllipsis - }); - profiles.Add(new RulesProfile - { - Name = "Netflix (Dutch)", - SubtitleLineMaximumLength = 42, - MaxNumberOfLines = 2, - MergeLinesShorterThan = 43, - SubtitleMaximumCharactersPerSeconds = 17, - SubtitleOptimalCharactersPerSeconds = 12, - SubtitleMaximumDisplayMilliseconds = 7007, - SubtitleMinimumDisplayMilliseconds = 833, - SubtitleMaximumWordsPerMinute = 204, - CpsLineLengthStrategy = string.Empty, - MinimumMillisecondsBetweenLines = 83, // 2 frames for 23.976 fps videos - DialogStyle = DialogType.DashSecondLineWithoutSpace, - ContinuationStyle = ContinuationStyle.LeadingTrailingEllipsis - }); - profiles.Add(new RulesProfile - { - Name = "Netflix (Simplified Chinese)", - SubtitleLineMaximumLength = 16, - MaxNumberOfLines = 2, - MergeLinesShorterThan = 17, - SubtitleMaximumCharactersPerSeconds = 9, - SubtitleOptimalCharactersPerSeconds = 9, - SubtitleMaximumDisplayMilliseconds = 7007, - SubtitleMinimumDisplayMilliseconds = 833, - SubtitleMaximumWordsPerMinute = 100, - CpsLineLengthStrategy = "CalcAll", - MinimumMillisecondsBetweenLines = 83, // 2 frames for 23.976 fps videos - DialogStyle = DialogType.DashBothLinesWithoutSpace, - ContinuationStyle = ContinuationStyle.LeadingTrailingEllipsis - }); - profiles.Add(new RulesProfile - { - Name = "Amazon Prime (English/Spanish/French)", - SubtitleLineMaximumLength = 42, - MaxNumberOfLines = 2, - MergeLinesShorterThan = 43, - SubtitleMaximumCharactersPerSeconds = 17, - SubtitleOptimalCharactersPerSeconds = 12, - SubtitleMaximumDisplayMilliseconds = 7007, - SubtitleMinimumDisplayMilliseconds = 1000, - SubtitleMaximumWordsPerMinute = 204, - CpsLineLengthStrategy = string.Empty, - MinimumMillisecondsBetweenLines = 83, // 2 frames for 23.976 fps videos - DialogStyle = DialogType.DashBothLinesWithSpace, - ContinuationStyle = ContinuationStyle.NoneLeadingTrailingEllipsis, - }); - profiles.Add(new RulesProfile - { - Name = "Amazon Prime (Arabic)", - SubtitleLineMaximumLength = 42, - MaxNumberOfLines = 2, - MergeLinesShorterThan = 43, - SubtitleMaximumCharactersPerSeconds = 20, - SubtitleOptimalCharactersPerSeconds = 12, - SubtitleMaximumDisplayMilliseconds = 7007, - SubtitleMinimumDisplayMilliseconds = 1000, - SubtitleMaximumWordsPerMinute = 240, - CpsLineLengthStrategy = typeof(CalcAll).Name, - MinimumMillisecondsBetweenLines = 83, // 2 frames for 23.976 fps videos - DialogStyle = DialogType.DashBothLinesWithSpace, - ContinuationStyle = ContinuationStyle.NoneLeadingTrailingEllipsis, - }); - profiles.Add(new RulesProfile - { - Name = "Amazon Prime (Danish)", - SubtitleLineMaximumLength = 42, - MaxNumberOfLines = 2, - MergeLinesShorterThan = 43, - SubtitleMaximumCharactersPerSeconds = 17, - SubtitleOptimalCharactersPerSeconds = 12, - SubtitleMaximumDisplayMilliseconds = 7007, - SubtitleMinimumDisplayMilliseconds = 1000, - SubtitleMaximumWordsPerMinute = 204, - CpsLineLengthStrategy = string.Empty, - MinimumMillisecondsBetweenLines = 83, // 2 frames for 23.976 fps videos - DialogStyle = DialogType.DashBothLinesWithoutSpace, - ContinuationStyle = ContinuationStyle.NoneLeadingTrailingEllipsis, - }); - profiles.Add(new RulesProfile - { - Name = "Amazon Prime (Dutch)", - SubtitleLineMaximumLength = 42, - MaxNumberOfLines = 2, - MergeLinesShorterThan = 43, - SubtitleMaximumCharactersPerSeconds = 17, - SubtitleOptimalCharactersPerSeconds = 12, - SubtitleMaximumDisplayMilliseconds = 7007, - SubtitleMinimumDisplayMilliseconds = 1000, - SubtitleMaximumWordsPerMinute = 204, - CpsLineLengthStrategy = string.Empty, - MinimumMillisecondsBetweenLines = 83, // 2 frames for 23.976 fps videos - DialogStyle = DialogType.DashSecondLineWithoutSpace, - ContinuationStyle = ContinuationStyle.OnlyTrailingEllipsis, - }); - profiles.Add(new RulesProfile - { - Name = "TikTok/YouTube-shorts (9:16)", - SubtitleLineMaximumLength = 24, - MaxNumberOfLines = 2, - MergeLinesShorterThan = 0, - SubtitleMaximumCharactersPerSeconds = 25, - SubtitleOptimalCharactersPerSeconds = 18, - SubtitleMaximumDisplayMilliseconds = 5000, - SubtitleMinimumDisplayMilliseconds = 700, - SubtitleMaximumWordsPerMinute = 300, - CpsLineLengthStrategy = string.Empty, - MinimumMillisecondsBetweenLines = 0, - DialogStyle = DialogType.DashBothLinesWithSpace, - ContinuationStyle = ContinuationStyle.None - }); - profiles.Add(new RulesProfile - { - Name = "Arte (German/English)", - SubtitleLineMaximumLength = 40, - MaxNumberOfLines = 2, - MergeLinesShorterThan = 41, - SubtitleMaximumCharactersPerSeconds = 20, - SubtitleOptimalCharactersPerSeconds = 12, - SubtitleMaximumDisplayMilliseconds = 10000, - SubtitleMinimumDisplayMilliseconds = 1000, - SubtitleMaximumWordsPerMinute = 240, - CpsLineLengthStrategy = string.Empty, - MinimumMillisecondsBetweenLines = 200, // 5 frames for 25 fps videos - DialogStyle = DialogType.DashBothLinesWithSpace, - ContinuationStyle = ContinuationStyle.None - }); - profiles.Add(new RulesProfile - { - Name = "Dutch professional subtitles (23.976/24 fps)", - SubtitleLineMaximumLength = 42, - MaxNumberOfLines = 2, - MergeLinesShorterThan = 43, - SubtitleMaximumCharactersPerSeconds = 15, - SubtitleOptimalCharactersPerSeconds = 11, - SubtitleMaximumDisplayMilliseconds = 7007, - SubtitleMinimumDisplayMilliseconds = 1400, - SubtitleMaximumWordsPerMinute = 180, - CpsLineLengthStrategy = string.Empty, - MinimumMillisecondsBetweenLines = 125, - DialogStyle = DialogType.DashSecondLineWithoutSpace, - ContinuationStyle = ContinuationStyle.OnlyTrailingDots - }); - profiles.Add(new RulesProfile - { - Name = "Dutch professional subtitles (25 fps)", - SubtitleLineMaximumLength = 42, - MaxNumberOfLines = 2, - MergeLinesShorterThan = 43, - SubtitleMaximumCharactersPerSeconds = 15, - SubtitleOptimalCharactersPerSeconds = 11, - SubtitleMaximumDisplayMilliseconds = 7000, - SubtitleMinimumDisplayMilliseconds = 1400, - SubtitleMaximumWordsPerMinute = 180, - CpsLineLengthStrategy = string.Empty, - MinimumMillisecondsBetweenLines = 120, - DialogStyle = DialogType.DashSecondLineWithoutSpace, - ContinuationStyle = ContinuationStyle.OnlyTrailingDots - }); - profiles.Add(new RulesProfile - { - Name = "Dutch fansubs (23.976/24 fps)", - SubtitleLineMaximumLength = 45, - MaxNumberOfLines = 2, - MergeLinesShorterThan = 46, - SubtitleMaximumCharactersPerSeconds = 22.5m, - SubtitleOptimalCharactersPerSeconds = 12, - SubtitleMaximumDisplayMilliseconds = 7007, - SubtitleMinimumDisplayMilliseconds = 1200, - SubtitleMaximumWordsPerMinute = 300, - CpsLineLengthStrategy = string.Empty, - MinimumMillisecondsBetweenLines = 125, - DialogStyle = DialogType.DashSecondLineWithSpace, - ContinuationStyle = ContinuationStyle.OnlyTrailingDots - }); - profiles.Add(new RulesProfile - { - Name = "Dutch fansubs (25 fps)", - SubtitleLineMaximumLength = 45, - MaxNumberOfLines = 2, - MergeLinesShorterThan = 46, - SubtitleMaximumCharactersPerSeconds = 22.5m, - SubtitleOptimalCharactersPerSeconds = 12, - SubtitleMaximumDisplayMilliseconds = 7000, - SubtitleMinimumDisplayMilliseconds = 1200, - SubtitleMaximumWordsPerMinute = 300, - CpsLineLengthStrategy = string.Empty, - MinimumMillisecondsBetweenLines = 120, - DialogStyle = DialogType.DashSecondLineWithSpace, - ContinuationStyle = ContinuationStyle.OnlyTrailingDots - }); - profiles.Add(new RulesProfile - { - Name = "Danish professional subtitles (23.976/24 fps)", - SubtitleLineMaximumLength = 40, - MaxNumberOfLines = 2, - MergeLinesShorterThan = 41, - SubtitleMaximumCharactersPerSeconds = 15, - SubtitleOptimalCharactersPerSeconds = 10, - SubtitleMaximumDisplayMilliseconds = 8008, - SubtitleMinimumDisplayMilliseconds = 2002, - SubtitleMaximumWordsPerMinute = 180, - CpsLineLengthStrategy = string.Empty, - MinimumMillisecondsBetweenLines = 125, - DialogStyle = DialogType.DashBothLinesWithSpace, - ContinuationStyle = ContinuationStyle.LeadingTrailingDashDots - }); - profiles.Add(new RulesProfile - { - Name = "Danish professional subtitles (25 fps)", - SubtitleLineMaximumLength = 40, - MaxNumberOfLines = 2, - MergeLinesShorterThan = 41, - SubtitleMaximumCharactersPerSeconds = 15, - SubtitleOptimalCharactersPerSeconds = 10, - SubtitleMaximumDisplayMilliseconds = 8000, - SubtitleMinimumDisplayMilliseconds = 2000, - SubtitleMaximumWordsPerMinute = 180, - CpsLineLengthStrategy = string.Empty, - MinimumMillisecondsBetweenLines = 120, - DialogStyle = DialogType.DashBothLinesWithSpace, - ContinuationStyle = ContinuationStyle.LeadingTrailingDashDots - }); - profiles.Add(new RulesProfile - { - Name = "SDI (Dutch)", - SubtitleLineMaximumLength = 37, - MaxNumberOfLines = 2, - MergeLinesShorterThan = 38, - SubtitleMaximumCharactersPerSeconds = 18.75m, - SubtitleOptimalCharactersPerSeconds = 12, - SubtitleMaximumDisplayMilliseconds = 7000, - SubtitleMinimumDisplayMilliseconds = 1320, - SubtitleMaximumWordsPerMinute = 225, - CpsLineLengthStrategy = string.Empty, - MinimumMillisecondsBetweenLines = 160, - DialogStyle = DialogType.DashSecondLineWithoutSpace, - ContinuationStyle = ContinuationStyle.OnlyTrailingDots - }); - profiles.Add(new RulesProfile - { - Name = "SW2 (French) (23.976/24 fps)", - SubtitleLineMaximumLength = 40, - MaxNumberOfLines = 2, - MergeLinesShorterThan = 41, - SubtitleMaximumCharactersPerSeconds = 25, - SubtitleOptimalCharactersPerSeconds = 18, - SubtitleMaximumDisplayMilliseconds = 5005, - SubtitleMinimumDisplayMilliseconds = 792, - SubtitleMaximumWordsPerMinute = 300, - CpsLineLengthStrategy = string.Empty, - MinimumMillisecondsBetweenLines = 125, - DialogStyle = DialogType.DashBothLinesWithSpace, - ContinuationStyle = ContinuationStyle.None - }); - profiles.Add(new RulesProfile - { - Name = "SW2 (French) (25 fps)", - SubtitleLineMaximumLength = 40, - MaxNumberOfLines = 2, - MergeLinesShorterThan = 41, - SubtitleMaximumCharactersPerSeconds = 25, - SubtitleOptimalCharactersPerSeconds = 18, - SubtitleMaximumDisplayMilliseconds = 5000, - SubtitleMinimumDisplayMilliseconds = 800, - SubtitleMaximumWordsPerMinute = 300, - CpsLineLengthStrategy = string.Empty, - MinimumMillisecondsBetweenLines = 120, - DialogStyle = DialogType.DashBothLinesWithSpace, - ContinuationStyle = ContinuationStyle.None - }); - profiles.Add(new RulesProfile - { - Name = "SW3 (French) (23.976/24 fps)", - SubtitleLineMaximumLength = 40, - MaxNumberOfLines = 2, - MergeLinesShorterThan = 41, - SubtitleMaximumCharactersPerSeconds = 25, - SubtitleOptimalCharactersPerSeconds = 18, - SubtitleMaximumDisplayMilliseconds = 5005, - SubtitleMinimumDisplayMilliseconds = 792, - SubtitleMaximumWordsPerMinute = 300, - CpsLineLengthStrategy = string.Empty, - MinimumMillisecondsBetweenLines = 167, - DialogStyle = DialogType.DashBothLinesWithSpace, - ContinuationStyle = ContinuationStyle.None - }); - profiles.Add(new RulesProfile - { - Name = "SW3 (French) (25 fps)", - SubtitleLineMaximumLength = 40, - MaxNumberOfLines = 2, - MergeLinesShorterThan = 41, - SubtitleMaximumCharactersPerSeconds = 25, - SubtitleOptimalCharactersPerSeconds = 18, - SubtitleMaximumDisplayMilliseconds = 5000, - SubtitleMinimumDisplayMilliseconds = 800, - SubtitleMaximumWordsPerMinute = 300, - CpsLineLengthStrategy = string.Empty, - MinimumMillisecondsBetweenLines = 160, - DialogStyle = DialogType.DashBothLinesWithSpace, - ContinuationStyle = ContinuationStyle.None - }); - profiles.Add(new RulesProfile - { - Name = "SW4 (French) (23.976/24 fps)", - SubtitleLineMaximumLength = 40, - MaxNumberOfLines = 2, - MergeLinesShorterThan = 41, - SubtitleMaximumCharactersPerSeconds = 25, - SubtitleOptimalCharactersPerSeconds = 18, - SubtitleMaximumDisplayMilliseconds = 5005, - SubtitleMinimumDisplayMilliseconds = 792, - SubtitleMaximumWordsPerMinute = 300, - CpsLineLengthStrategy = string.Empty, - MinimumMillisecondsBetweenLines = 250, - DialogStyle = DialogType.DashBothLinesWithSpace, - ContinuationStyle = ContinuationStyle.None - }); - profiles.Add(new RulesProfile - { - Name = "SW4 (French) (25 fps)", - SubtitleLineMaximumLength = 40, - MaxNumberOfLines = 2, - MergeLinesShorterThan = 41, - SubtitleMaximumCharactersPerSeconds = 25, - SubtitleOptimalCharactersPerSeconds = 18, - SubtitleMaximumDisplayMilliseconds = 5000, - SubtitleMinimumDisplayMilliseconds = 800, - SubtitleMaximumWordsPerMinute = 300, - CpsLineLengthStrategy = string.Empty, - MinimumMillisecondsBetweenLines = 240, - DialogStyle = DialogType.DashBothLinesWithSpace, - ContinuationStyle = ContinuationStyle.None - }); - } - } - - public class VideoControlsSettings - { - public string CustomSearchText1 { get; set; } - public string CustomSearchText2 { get; set; } - public string CustomSearchText3 { get; set; } - public string CustomSearchText4 { get; set; } - public string CustomSearchText5 { get; set; } - public string CustomSearchUrl1 { get; set; } - public string CustomSearchUrl2 { get; set; } - public string CustomSearchUrl3 { get; set; } - public string CustomSearchUrl4 { get; set; } - public string CustomSearchUrl5 { get; set; } - public string LastActiveTab { get; set; } - public bool WaveformDrawGrid { get; set; } - public bool WaveformDrawCps { get; set; } - public bool WaveformDrawWpm { get; set; } - public bool WaveformAllowOverlap { get; set; } - public bool WaveformFocusOnMouseEnter { get; set; } - public bool WaveformListViewFocusOnMouseEnter { get; set; } - public bool WaveformSetVideoPositionOnMoveStartEnd { get; set; } - public bool WaveformSingleClickSelect { get; set; } - public bool WaveformSnapToShotChanges { get; set; } - public int WaveformShotChangeStartTimeBeforeMs { get; set; } - public int WaveformShotChangeStartTimeAfterMs { get; set; } - public int WaveformShotChangeEndTimeBeforeMs { get; set; } - public int WaveformShotChangeEndTimeAfterMs { get; set; } - public int WaveformBorderHitMs { get; set; } - public Color WaveformGridColor { get; set; } - public Color WaveformColor { get; set; } - public Color WaveformSelectedColor { get; set; } - public Color WaveformBackgroundColor { get; set; } - public Color WaveformTextColor { get; set; } - public Color WaveformCursorColor { get; set; } - public Color WaveformChaptersColor { get; set; } - public int WaveformTextSize { get; set; } - public bool WaveformTextBold { get; set; } - public string WaveformDoubleClickOnNonParagraphAction { get; set; } - public string WaveformRightClickOnNonParagraphAction { get; set; } - public bool WaveformMouseWheelScrollUpIsForward { get; set; } - public bool WaveformLabelShowCodec { get; set; } - public bool GenerateSpectrogram { get; set; } - public string SpectrogramAppearance { get; set; } - public int WaveformMinimumSampleRate { get; set; } - public double WaveformSeeksSilenceDurationSeconds { get; set; } - public double WaveformSeeksSilenceMaxVolume { get; set; } - public bool WaveformUnwrapText { get; set; } - public bool WaveformHideWpmCpsLabels { get; set; } - - - public VideoControlsSettings() - { - CustomSearchText1 = "The Free Dictionary"; - CustomSearchUrl1 = "https://www.thefreedictionary.com/{0}"; - CustomSearchText2 = "Wikipedia"; - CustomSearchUrl2 = "https://en.wikipedia.org/wiki?search={0}"; - CustomSearchText3 = "DuckDuckGo"; - CustomSearchUrl3 = "https://duckduckgo.com/?q={0}"; - - LastActiveTab = "Translate"; - WaveformDrawGrid = true; - WaveformAllowOverlap = false; - WaveformBorderHitMs = 15; - WaveformGridColor = Color.FromArgb(255, 20, 20, 18); - WaveformColor = Color.FromArgb(255, 160, 240, 30); - WaveformSelectedColor = Color.FromArgb(255, 230, 0, 0); - WaveformBackgroundColor = Color.Black; - WaveformTextColor = Color.Gray; - WaveformCursorColor = Color.Turquoise; - WaveformChaptersColor = Color.FromArgb(255, 104, 33, 122); - WaveformTextSize = 9; - WaveformTextBold = true; - WaveformDoubleClickOnNonParagraphAction = "PlayPause"; - WaveformDoubleClickOnNonParagraphAction = string.Empty; - WaveformMouseWheelScrollUpIsForward = true; - WaveformLabelShowCodec = true; - SpectrogramAppearance = "OneColorGradient"; - WaveformMinimumSampleRate = 126; - WaveformSeeksSilenceDurationSeconds = 0.3; - WaveformSeeksSilenceMaxVolume = 0.1; - WaveformSnapToShotChanges = true; - } - } - - public class VobSubOcrSettings - { - public int XOrMorePixelsMakesSpace { get; set; } - public double AllowDifferenceInPercent { get; set; } - public double BlurayAllowDifferenceInPercent { get; set; } - public string LastImageCompareFolder { get; set; } - public int LastModiLanguageId { get; set; } - public string LastOcrMethod { get; set; } - public string TesseractLastLanguage { get; set; } - public bool UseTesseractFallback { get; set; } - public bool UseItalicsInTesseract { get; set; } - public int TesseractEngineMode { get; set; } - public bool UseMusicSymbolsInTesseract { get; set; } - public bool RightToLeft { get; set; } - public bool TopToBottom { get; set; } - public int DefaultMillisecondsForUnknownDurations { get; set; } - public bool FixOcrErrors { get; set; } - public bool PromptForUnknownWords { get; set; } - public bool GuessUnknownWords { get; set; } - public bool AutoBreakSubtitleIfMoreThanTwoLines { get; set; } - public double ItalicFactor { get; set; } - - public bool LineOcrDraw { get; set; } - public int LineOcrMinHeightSplit { get; set; } - public bool LineOcrAdvancedItalic { get; set; } - public string LineOcrLastLanguages { get; set; } - public string LineOcrLastSpellCheck { get; set; } - public int LineOcrLinesToAutoGuess { get; set; } - public int LineOcrMinLineHeight { get; set; } - public int LineOcrMaxLineHeight { get; set; } - public int LineOcrMaxErrorPixels { get; set; } - public string LastBinaryImageCompareDb { get; set; } - public string LastBinaryImageSpellCheck { get; set; } - public bool BinaryAutoDetectBestDb { get; set; } - public string LastTesseractSpellCheck { get; set; } - public bool CaptureTopAlign { get; set; } - public int UnfocusedAttentionBlinkCount { get; set; } - public int UnfocusedAttentionPlaySoundCount { get; set; } - public string CloudVisionApiKey { get; set; } - public string CloudVisionLanguage { get; set; } - public bool CloudVisionSendOriginalImages { get; set; } - - public VobSubOcrSettings() - { - XOrMorePixelsMakesSpace = 8; - AllowDifferenceInPercent = 1.0; - BlurayAllowDifferenceInPercent = 7.5; - LastImageCompareFolder = "English"; - LastModiLanguageId = 9; - LastOcrMethod = "Tesseract"; - UseItalicsInTesseract = true; - TesseractEngineMode = 3; // Default, based on what is available (T4 docs) - UseMusicSymbolsInTesseract = true; - UseTesseractFallback = true; - RightToLeft = false; - TopToBottom = true; - DefaultMillisecondsForUnknownDurations = 5000; - FixOcrErrors = true; - PromptForUnknownWords = true; - GuessUnknownWords = true; - AutoBreakSubtitleIfMoreThanTwoLines = true; - ItalicFactor = 0.2f; - LineOcrLinesToAutoGuess = 100; - LineOcrMaxErrorPixels = 45; - LastBinaryImageCompareDb = "Latin+Latin"; - BinaryAutoDetectBestDb = true; - CaptureTopAlign = false; - UnfocusedAttentionBlinkCount = 50; - UnfocusedAttentionPlaySoundCount = 1; - CloudVisionApiKey = string.Empty; - CloudVisionLanguage = "en"; - CloudVisionSendOriginalImages = false; - } - } - - public class MultipleSearchAndReplaceSetting - { - public bool Enabled { get; set; } - public string FindWhat { get; set; } - public string ReplaceWith { get; set; } - public string SearchType { get; set; } - public string Description { get; set; } - } - - public class MultipleSearchAndReplaceGroup - { - public string Name { get; set; } - public bool Enabled { get; set; } - public List Rules { get; set; } - } - - public class AssaStorageCategory - { - public string Name { get; set; } - public bool IsDefault { get; set; } - public List Styles { get; set; } - } - - public class NetworkSettings - { - public string UserName { get; set; } - public string WebApiUrl { get; set; } - public string SessionKey { get; set; } - public int PollIntervalSeconds { get; set; } - public string NewMessageSound { get; set; } - - public NetworkSettings() - { - UserName = string.Empty; - SessionKey = Guid.NewGuid().ToString(); - WebApiUrl = "https://www.nikse.dk/api/SeNet"; - PollIntervalSeconds = 5; - } - } - - public class Shortcuts - { - // General - public string GeneralMergeSelectedLines { get; set; } - public string GeneralMergeWithPrevious { get; set; } - public string GeneralMergeWithNext { get; set; } - public string GeneralMergeWithPreviousAndUnbreak { get; set; } - public string GeneralMergeWithNextAndUnbreak { get; set; } - public string GeneralMergeWithPreviousAndBreak { get; set; } - public string GeneralMergeWithNextAndBreak { get; set; } - public string GeneralMergeSelectedLinesAndAutoBreak { get; set; } - public string GeneralMergeSelectedLinesAndUnbreak { get; set; } - public string GeneralMergeSelectedLinesAndUnbreakCjk { get; set; } - public string GeneralMergeSelectedLinesOnlyFirstText { get; set; } - public string GeneralMergeSelectedLinesBilingual { get; set; } - public string GeneralMergeWithPreviousBilingual { get; set; } - public string GeneralMergeWithNextBilingual { get; set; } - public string GeneralMergeOriginalAndTranslation { get; set; } - public string GeneralToggleTranslationMode { get; set; } - public string GeneralSwitchOriginalAndTranslation { get; set; } - public string GeneralSwitchOriginalAndTranslationTextBoxes { get; set; } - public string GeneralLayoutChoose { get; set; } - public string GeneralLayoutChoose1 { get; set; } - public string GeneralLayoutChoose2 { get; set; } - public string GeneralLayoutChoose3 { get; set; } - public string GeneralLayoutChoose4 { get; set; } - public string GeneralLayoutChoose5 { get; set; } - public string GeneralLayoutChoose6 { get; set; } - public string GeneralLayoutChoose7 { get; set; } - public string GeneralLayoutChoose8 { get; set; } - public string GeneralLayoutChoose9 { get; set; } - public string GeneralLayoutChoose10 { get; set; } - public string GeneralLayoutChoose11 { get; set; } - public string GeneralLayoutChoose12 { get; set; } - public string GeneralPlayFirstSelected { get; set; } - public string GeneralGoToFirstSelectedLine { get; set; } - public string GeneralGoToNextEmptyLine { get; set; } - public string GeneralGoToNextSubtitle { get; set; } - public string GeneralGoToNextSubtitlePlayTranslate { get; set; } - public string GeneralGoToNextSubtitleCursorAtEnd { get; set; } - public string GeneralGoToPrevSubtitle { get; set; } - public string GeneralGoToPrevSubtitlePlayTranslate { get; set; } - public string GeneralGoToStartOfCurrentSubtitle { get; set; } - public string GeneralGoToEndOfCurrentSubtitle { get; set; } - public string GeneralGoToPreviousSubtitleAndFocusVideo { get; set; } - public string GeneralGoToNextSubtitleAndFocusVideo { get; set; } - public string GeneralGoToPreviousSubtitleAndFocusWaveform { get; set; } - public string GeneralGoToNextSubtitleAndFocusWaveform { get; set; } - public string GeneralGoToPrevSubtitleAndPlay { get; set; } - public string GeneralGoToNextSubtitleAndPlay { get; set; } - public string GeneralToggleBookmarks { get; set; } - public string GeneralToggleBookmarksWithText { get; set; } - public string GeneralEditBookmarks { get; set; } - public string GeneralClearBookmarks { get; set; } - public string GeneralGoToBookmark { get; set; } - public string GeneralGoToPreviousBookmark { get; set; } - public string GeneralGoToNextBookmark { get; set; } - public string GeneralChooseProfile { get; set; } - public string GeneralDuplicateLine { get; set; } - public string OpenDataFolder { get; set; } - public string OpenContainingFolder { get; set; } - public string GeneralToggleView { get; set; } - public string GeneralToggleMode { get; set; } - public string GeneralTogglePreviewOnVideo { get; set; } - public string GeneralRemoveBlankLines { get; set; } - public string GeneralApplyAssaOverrideTags { get; set; } - public string GeneralSetAssaPosition { get; set; } - public string GeneralSetAssaResolution { get; set; } - public string GeneralSetAssaBgBox { get; set; } - public string GeneralColorPicker { get; set; } - public string GeneralTakeAutoBackup { get; set; } - public string GeneralHelp { get; set; } - public string GeneralFocusTextBox { get; set; } - - // File - public string MainFileNew { get; set; } - public string MainFileOpen { get; set; } - public string MainFileOpenKeepVideo { get; set; } - public string MainFileSave { get; set; } - public string MainFileSaveOriginal { get; set; } - public string MainFileSaveOriginalAs { get; set; } - public string MainFileSaveAs { get; set; } - public string MainFileSaveAll { get; set; } - public string MainFileOpenOriginal { get; set; } - public string MainFileCloseOriginal { get; set; } - public string MainFileCloseTranslation { get; set; } - public string MainFileCompare { get; set; } - public string MainFileVerifyCompleteness { get; set; } - public string MainFileImportPlainText { get; set; } - public string MainFileImportBdSupForEdit { get; set; } - public string MainFileImportTimeCodes { get; set; } - public string MainFileExportEbu { get; set; } - public string MainFileExportPac { get; set; } - public string MainFileExportBdSup { get; set; } - public string MainFileExportEdlClip { get; set; } - public string MainFileExportPlainText { get; set; } - public string MainFileExit { get; set; } - - // Edit - public string MainEditUndo { get; set; } - public string MainEditRedo { get; set; } - public string MainEditFind { get; set; } - public string MainEditFindNext { get; set; } - public string MainEditReplace { get; set; } - public string MainEditMultipleReplace { get; set; } - public string MainEditGoToLineNumber { get; set; } - public string MainEditRightToLeft { get; set; } - public string MainEditFixRTLViaUnicodeChars { get; set; } - public string MainEditRemoveRTLUnicodeChars { get; set; } - public string MainEditReverseStartAndEndingForRTL { get; set; } - public string MainVideoToggleControls { get; set; } - public string MainEditToggleTranslationOriginalInPreviews { get; set; } - public string MainEditInverseSelection { get; set; } - public string MainEditModifySelection { get; set; } - - // Tools - public string MainToolsAdjustDuration { get; set; } - public string MainToolsAdjustDurationLimits { get; set; } - public string MainToolsFixCommonErrors { get; set; } - public string MainToolsFixCommonErrorsPreview { get; set; } - public string MainToolsMergeShortLines { get; set; } - public string MainToolsMergeDuplicateText { get; set; } - public string MainToolsMergeSameTimeCodes { get; set; } - public string MainToolsMakeEmptyFromCurrent { get; set; } - public string MainToolsSplitLongLines { get; set; } - public string MainToolsDurationsBridgeGap { get; set; } - public string MainToolsMinimumDisplayTimeBetweenParagraphs { get; set; } - - public string MainToolsRenumber { get; set; } - public string MainToolsRemoveTextForHI { get; set; } - public string MainToolsConvertColorsToDialog { get; set; } - public string MainToolsChangeCasing { get; set; } - public string MainToolsAutoDuration { get; set; } - public string MainToolsBatchConvert { get; set; } - public string MainToolsMeasurementConverter { get; set; } - public string MainToolsSplit { get; set; } - public string MainToolsAppend { get; set; } - public string MainToolsJoin { get; set; } - public string MainToolsStyleManager { get; set; } - - // Video - public string MainVideoOpen { get; set; } - public string MainVideoClose { get; set; } - public string MainVideoPause { get; set; } - public string MainVideoStop { get; set; } - public string MainVideoPlayFromJustBefore { get; set; } - public string MainVideoPlayFromBeginning { get; set; } - public string MainVideoPlayPauseToggle { get; set; } - public string MainVideoPlay150Speed { get; set; } - public string MainVideoPlay200Speed { get; set; } - public string MainVideoFocusSetVideoPosition { get; set; } - public string MainVideoToggleVideoControls { get; set; } - public string MainVideo1FrameLeft { get; set; } - public string MainVideo1FrameRight { get; set; } - public string MainVideo1FrameLeftWithPlay { get; set; } - public string MainVideo1FrameRightWithPlay { get; set; } - public string MainVideo100MsLeft { get; set; } - public string MainVideo100MsRight { get; set; } - public string MainVideo500MsLeft { get; set; } - public string MainVideo500MsRight { get; set; } - public string MainVideo1000MsLeft { get; set; } - public string MainVideo1000MsRight { get; set; } - public string MainVideo5000MsLeft { get; set; } - public string MainVideo5000MsRight { get; set; } - public string MainVideoXSMsLeft { get; set; } - public string MainVideoXSMsRight { get; set; } - public string MainVideoXLMsLeft { get; set; } - public string MainVideoXLMsRight { get; set; } - public string MainVideo3000MsLeft { get; set; } - public string MainVideo3000MsRight { get; set; } - public string MainVideoGoToStartCurrent { get; set; } - public string MainVideoToggleStartEndCurrent { get; set; } - public string MainVideoPlaySelectedLines { get; set; } - public string MainVideoLoopSelectedLines { get; set; } - public string MainVideoGoToPrevSubtitle { get; set; } - public string MainVideoGoToNextSubtitle { get; set; } - public string MainVideoGoToPrevTimeCode { get; set; } - public string MainVideoGoToNextTimeCode { get; set; } - public string MainVideoGoToPrevChapter { get; set; } - public string MainVideoGoToNextChapter { get; set; } - public string MainVideoSelectNextSubtitle { get; set; } - public string MainVideoFullscreen { get; set; } - public string MainVideoSlower { get; set; } - public string MainVideoFaster { get; set; } - public string MainVideoSpeedToggle { get; set; } - public string MainVideoReset { get; set; } - public string MainVideoToggleBrightness { get; set; } - public string MainVideoToggleContrast { get; set; } - public string MainVideoAudioToTextVosk { get; set; } - public string MainVideoAudioToTextWhisper { get; set; } - public string MainVideoAudioExtractAudioSelectedLines { get; set; } - public string MainVideoTextToSpeech { get; set; } - - // spell check - public string MainSpellCheck { get; set; } - public string MainSpellCheckFindDoubleWords { get; set; } - public string MainSpellCheckAddWordToNames { get; set; } - - // Sync - public string MainSynchronizationAdjustTimes { get; set; } - public string MainSynchronizationVisualSync { get; set; } - public string MainSynchronizationPointSync { get; set; } - public string MainSynchronizationPointSyncViaFile { get; set; } - public string MainSynchronizationChangeFrameRate { get; set; } - - // List view - public string MainListViewItalic { get; set; } - public string MainListViewBold { get; set; } - public string MainListViewUnderline { get; set; } - public string MainListViewBox { get; set; } - public string MainListViewToggleQuotes { get; set; } - public string MainListViewToggleHiTags { get; set; } - public string MainListViewToggleCustomTags { get; set; } - public string MainListViewSplit { get; set; } - public string MainListViewToggleDashes { get; set; } - public string MainListViewToggleMusicSymbols { get; set; } - public string MainListViewAlignment { get; set; } - public string MainListViewAlignmentN1 { get; set; } - public string MainListViewAlignmentN2 { get; set; } - public string MainListViewAlignmentN3 { get; set; } - public string MainListViewAlignmentN4 { get; set; } - public string MainListViewAlignmentN5 { get; set; } - public string MainListViewAlignmentN6 { get; set; } - public string MainListViewAlignmentN7 { get; set; } - public string MainListViewAlignmentN8 { get; set; } - public string MainListViewAlignmentN9 { get; set; } - public string MainListViewColor1 { get; set; } - public string MainListViewColor2 { get; set; } - public string MainListViewColor3 { get; set; } - public string MainListViewColor4 { get; set; } - public string MainListViewColor5 { get; set; } - public string MainListViewColor6 { get; set; } - public string MainListViewColor7 { get; set; } - public string MainListViewColor8 { get; set; } - public string MainListViewSetNewActor { get; set; } - public string MainListViewSetActor1 { get; set; } - public string MainListViewSetActor2 { get; set; } - public string MainListViewSetActor3 { get; set; } - public string MainListViewSetActor4 { get; set; } - public string MainListViewSetActor5 { get; set; } - public string MainListViewSetActor6 { get; set; } - public string MainListViewSetActor7 { get; set; } - public string MainListViewSetActor8 { get; set; } - public string MainListViewSetActor9 { get; set; } - public string MainListViewSetActor10 { get; set; } - public string MainListViewColorChoose { get; set; } - public string MainRemoveFormatting { get; set; } - public string MainListViewCopyText { get; set; } - public string MainListViewCopyPlainText { get; set; } - public string MainListViewCopyTextFromOriginalToCurrent { get; set; } - public string MainListViewAutoDuration { get; set; } - public string MainListViewColumnDeleteText { get; set; } - public string MainListViewColumnDeleteTextAndShiftUp { get; set; } - public string MainListViewColumnInsertText { get; set; } - public string MainListViewColumnPaste { get; set; } - public string MainListViewColumnTextUp { get; set; } - public string MainListViewColumnTextDown { get; set; } - public string MainListViewGoToNextError { get; set; } - public string MainListViewListErrors { get; set; } - public string MainListViewSortByNumber { get; set; } - public string MainListViewSortByStartTime { get; set; } - public string MainListViewSortByEndTime { get; set; } - public string MainListViewSortByDuration { get; set; } - public string MainListViewSortByGap { get; set; } - public string MainListViewSortByText { get; set; } - public string MainListViewSortBySingleLineMaxLen { get; set; } - public string MainListViewSortByTextTotalLength { get; set; } - public string MainListViewSortByCps { get; set; } - public string MainListViewSortByWpm { get; set; } - public string MainListViewSortByNumberOfLines { get; set; } - public string MainListViewSortByActor { get; set; } - public string MainListViewSortByStyle { get; set; } - public string MainListViewRemoveTimeCodes { get; set; } - public string MainTextBoxSplitAtCursor { get; set; } - public string MainTextBoxSplitAtCursorAndAutoBr { get; set; } - public string MainTextBoxSplitAtCursorAndVideoPos { get; set; } - public string MainTextBoxSplitSelectedLineBilingual { get; set; } - public string MainTextBoxMoveLastWordDown { get; set; } - public string MainTextBoxMoveFirstWordFromNextUp { get; set; } - public string MainTextBoxMoveLastWordDownCurrent { get; set; } - public string MainTextBoxMoveFirstWordUpCurrent { get; set; } - public string MainTextBoxMoveFromCursorToNextAndGoToNext { get; set; } - public string MainTextBoxSelectionToLower { get; set; } - public string MainTextBoxSelectionToUpper { get; set; } - public string MainTextBoxSelectionToggleCasing { get; set; } - public string MainTextBoxSelectionToRuby { get; set; } - public string MainTextBoxToggleAutoDuration { get; set; } - public string MainCreateInsertSubAtVideoPos { get; set; } - public string MainCreateInsertSubAtVideoPosMax { get; set; } - public string MainCreateInsertSubAtVideoPosNoTextBoxFocus { get; set; } - public string MainCreateSetStart { get; set; } - public string MainCreateSetEnd { get; set; } - public string MainAdjustVideoSetStartForAppropriateLine { get; set; } - public string MainAdjustVideoSetEndForAppropriateLine { get; set; } - public string MainAdjustSetEndAndPause { get; set; } - public string MainCreateSetEndAddNewAndGoToNew { get; set; } - public string MainCreateStartDownEndUp { get; set; } - public string MainAdjustSetStartAndOffsetTheRest { get; set; } - public string MainAdjustSetStartAndOffsetTheRest2 { get; set; } - public string MainAdjustSetStartAndOffsetTheWholeSubtitle { get; set; } - public string MainAdjustSetEndAndOffsetTheRest { get; set; } - public string MainAdjustSetEndAndOffsetTheRestAndGoToNext { get; set; } - public string MainAdjustSetStartAndGotoNext { get; set; } - public string MainAdjustSetEndAndGotoNext { get; set; } - public string MainAdjustViaEndAutoStart { get; set; } - public string MainAdjustViaEndAutoStartAndGoToNext { get; set; } - public string MainAdjustSetEndMinusGapAndStartNextHere { get; set; } - public string MainSetEndAndStartNextAfterGap { get; set; } - public string MainAdjustSetStartAutoDurationAndGoToNext { get; set; } - public string MainAdjustSetEndNextStartAndGoToNext { get; set; } - public string MainAdjustStartDownEndUpAndGoToNext { get; set; } - public string MainAdjustSetStartAndEndOfPrevious { get; set; } - public string MainAdjustSetStartAndEndOfPreviousAndGoToNext { get; set; } - public string MainAdjustSetStartKeepDuration { get; set; } - public string MainAdjustSelected100MsForward { get; set; } - public string MainAdjustSelected100MsBack { get; set; } - public string MainAdjustStartXMsBack { get; set; } - public string MainAdjustStartXMsForward { get; set; } - public string MainAdjustEndXMsBack { get; set; } - public string MainAdjustEndXMsForward { get; set; } - public string MoveStartOneFrameBack { get; set; } - public string MoveStartOneFrameForward { get; set; } - public string MoveEndOneFrameBack { get; set; } - public string MoveEndOneFrameForward { get; set; } - public string MoveStartOneFrameBackKeepGapPrev { get; set; } - public string MoveStartOneFrameForwardKeepGapPrev { get; set; } - public string MoveEndOneFrameBackKeepGapNext { get; set; } - public string MoveEndOneFrameForwardKeepGapNext { get; set; } - public string MainAdjustSnapStartToNextShotChange { get; set; } - public string MainAdjustSnapEndToPreviousShotChange { get; set; } - public string MainAdjustExtendToNextShotChange { get; set; } - public string MainAdjustExtendToPreviousShotChange { get; set; } - public string MainAdjustExtendToNextSubtitle { get; set; } - public string MainAdjustExtendToPreviousSubtitle { get; set; } - public string MainAdjustExtendToNextSubtitleMinusChainingGap { get; set; } - public string MainAdjustExtendToPreviousSubtitleMinusChainingGap { get; set; } - public string MainAdjustExtendCurrentSubtitle { get; set; } - public string MainAdjustExtendPreviousLineEndToCurrentStart { get; set; } - public string MainAdjustExtendNextLineStartToCurrentEnd { get; set; } - public string MainSetInCueToClosestShotChangeLeftGreenZone { get; set; } - public string MainSetInCueToClosestShotChangeRightGreenZone { get; set; } - public string MainSetOutCueToClosestShotChangeLeftGreenZone { get; set; } - public string MainSetOutCueToClosestShotChangeRightGreenZone { get; set; } - public string GeneralAutoCalcCurrentDuration { get; set; } - public string GeneralAutoCalcCurrentDurationByOptimalReadingSpeed { get; set; } - public string GeneralAutoCalcCurrentDurationByMinReadingSpeed { get; set; } - public string MainInsertAfter { get; set; } - public string MainTextBoxAutoBreak { get; set; } - public string MainTextBoxBreakAtPosition { get; set; } - public string MainTextBoxBreakAtPositionAndGoToNext { get; set; } - public string MainTextBoxRecord { get; set; } - public string MainTextBoxUnbreak { get; set; } - public string MainTextBoxUnbreakNoSpace { get; set; } - public string MainTextBoxAssaIntellisense { get; set; } - public string MainTextBoxAssaRemoveTag { get; set; } - public string MainWaveformInsertAtCurrentPosition { get; set; } - public string MainInsertBefore { get; set; } - public string MainMergeDialog { get; set; } - public string MainMergeDialogWithNext { get; set; } - public string MainMergeDialogWithPrevious { get; set; } - public string MainAutoBalanceSelectedLines { get; set; } - public string MainEvenlyDistributeSelectedLines { get; set; } - public string MainToggleFocus { get; set; } - public string MainToggleFocusWaveform { get; set; } - public string MainToggleFocusWaveformTextBox { get; set; } - public string WaveformAdd { get; set; } - public string WaveformVerticalZoom { get; set; } - public string WaveformVerticalZoomOut { get; set; } - public string WaveformZoomIn { get; set; } - public string WaveformZoomOut { get; set; } - public string WaveformSplit { get; set; } - public string WaveformPlaySelection { get; set; } - public string WaveformPlaySelectionEnd { get; set; } - public string WaveformSearchSilenceForward { get; set; } - public string WaveformSearchSilenceBack { get; set; } - public string WaveformAddTextHere { get; set; } - public string WaveformAddTextHereFromClipboard { get; set; } - public string WaveformSetParagraphAsSelection { get; set; } - public string WaveformGoToPreviousShotChange { get; set; } - public string WaveformGoToNextShotChange { get; set; } - public string WaveformToggleShotChange { get; set; } - public string WaveformListShotChanges { get; set; } - public string WaveformGuessStart { get; set; } - public string Waveform100MsLeft { get; set; } - public string Waveform100MsRight { get; set; } - public string Waveform1000MsLeft { get; set; } - public string Waveform1000MsRight { get; set; } - public string WaveformAudioToTextVosk { get; set; } - public string WaveformAudioToTextWhisper { get; set; } - public string MainCheckFixTimingViaShotChanges { get; set; } - public string MainTranslateGoogleIt { get; set; } - public string MainTranslateGoogleTranslateIt { get; set; } - public string MainTranslateAuto { get; set; } - public string MainTranslateAutoSelectedLines { get; set; } - public string MainTranslateCustomSearch1 { get; set; } - public string MainTranslateCustomSearch2 { get; set; } - public string MainTranslateCustomSearch3 { get; set; } - public string MainTranslateCustomSearch4 { get; set; } - public string MainTranslateCustomSearch5 { get; set; } - public List PluginShortcuts { get; set; } - - - public Shortcuts() - { - GeneralGoToFirstSelectedLine = "Control+L"; - GeneralMergeSelectedLines = "Control+Shift+M"; - GeneralToggleTranslationMode = "Control+Shift+O"; - GeneralMergeOriginalAndTranslation = "Control+Alt+Shift+M"; - GeneralGoToNextSubtitle = "Shift+Return"; - GeneralGoToNextSubtitlePlayTranslate = "Alt+Down"; - GeneralGoToPrevSubtitlePlayTranslate = "Alt+Up"; - GeneralToggleBookmarksWithText = "Control+Shift+B"; - OpenDataFolder = "Control+Alt+Shift+D"; - GeneralToggleView = "F2"; - GeneralHelp = "F1"; - MainFileNew = "Control+N"; - MainFileOpen = "Control+O"; - MainFileSave = "Control+S"; - MainFileSaveAs = "Control+Shift+S"; - MainEditUndo = "Control+Z"; - MainEditRedo = "Control+Y"; - MainEditFind = "Control+F"; - MainEditFindNext = "F3"; - MainEditReplace = "Control+H"; - MainEditMultipleReplace = "Control+Alt+M"; - MainEditGoToLineNumber = "Control+G"; - MainEditRightToLeft = "Control+Shift+Alt+R"; - MainEditInverseSelection = "Control+Shift+I"; - MainToolsFixCommonErrors = "Control+Shift+F"; - MainToolsFixCommonErrorsPreview = "Control+P"; - MainToolsRenumber = "Control+Shift+N"; - MainToolsRemoveTextForHI = "Control+Shift+H"; - MainToolsChangeCasing = "Control+Shift+C"; - MainVideoPlayFromJustBefore = "Shift+F10"; - MainVideoPlayPauseToggle = "Control+P"; - MainVideoPause = "Control+Alt+P"; - MainVideo500MsLeft = "Alt+Left"; - MainVideo500MsRight = "Alt+Right"; - MainVideoFullscreen = "Alt+Return"; - MainVideoReset = "Control+D0"; - MainSpellCheck = "Control+Shift+S"; - MainSpellCheckFindDoubleWords = "Control+Shift+D"; - MainSpellCheckAddWordToNames = "Control+Shift+L"; - MainSynchronizationAdjustTimes = "Control+Shift+A"; - MainSynchronizationVisualSync = "Control+Shift+V"; - MainSynchronizationPointSync = "Control+Shift+P"; - MainListViewItalic = "Control+I"; - MainTextBoxSplitAtCursor = "Control+Alt+V"; - MainTextBoxSelectionToLower = "Control+U"; - MainTextBoxSelectionToUpper = "Control+Shift+U"; - MainTextBoxSelectionToggleCasing = "Control+Shift+F3"; - MainCreateInsertSubAtVideoPos = "Shift+F9"; - MainVideoGoToStartCurrent = "Shift+F11"; - MainVideoToggleStartEndCurrent = "F4"; - MainVideoPlaySelectedLines = "F5"; - MainVideoGoToStartCurrent = "F6"; - MainVideo3000MsLeft = "F7"; - MainListViewGoToNextError = "F8"; - MainListViewListErrors = "Control+F8"; - MainCreateSetStart = "F11"; - MainCreateSetEnd = "F12"; - MainAdjustSetStartAndOffsetTheRest = "Control+Space"; - MainAdjustSetStartAndOffsetTheRest2 = "F9"; - MainAdjustSetEndAndGotoNext = "F10"; - MainInsertAfter = "Alt+Insert"; - MainWaveformInsertAtCurrentPosition = "Insert"; - MainInsertBefore = "Control+Shift+Insert"; - MainTextBoxAutoBreak = "Control+R"; - MainTranslateAuto = "Control+Shift+G"; - MainAdjustExtendToNextSubtitle = "Control+Shift+E"; - MainAdjustExtendToPreviousSubtitle = "Alt+Shift+E"; - MainAdjustExtendToNextSubtitleMinusChainingGap = "Control+Shift+W"; - MainAdjustExtendToPreviousSubtitleMinusChainingGap = "Alt+Shift+W"; - WaveformVerticalZoom = "Shift+Add"; - WaveformVerticalZoomOut = "Shift+Subtract"; - WaveformAddTextHere = "Return"; - Waveform100MsLeft = "Shift+Left"; - Waveform100MsRight = "Shift+Right"; - Waveform1000MsLeft = "Left"; - Waveform1000MsRight = "Right"; - MainCheckFixTimingViaShotChanges = "Control+Shift+D9"; - PluginShortcuts = new List(); - } - - public Shortcuts Clone() - { - var xws = new XmlWriterSettings { Indent = true }; - var sb = new StringBuilder(); - using (var textWriter = XmlWriter.Create(sb, xws)) - { - textWriter.WriteStartDocument(); - textWriter.WriteStartElement("Settings", string.Empty); - Settings.WriteShortcuts(this, textWriter); - textWriter.WriteEndElement(); - textWriter.WriteEndDocument(); - } - - var doc = new XmlDocument { PreserveWhitespace = true }; - doc.LoadXml(sb.ToString().Replace("encoding=\"utf-16\"", "encoding=\"utf-8\"")); - var shortcuts = new Shortcuts(); - Settings.ReadShortcuts(doc, shortcuts); - return shortcuts; - } - - public static void Save(string fileName, Shortcuts shortcuts) - { - var xws = new XmlWriterSettings { Indent = true, Encoding = Encoding.UTF8 }; - var sb = new StringBuilder(); - using (var textWriter = XmlWriter.Create(sb, xws)) - { - textWriter.WriteStartDocument(); - textWriter.WriteStartElement("Settings", string.Empty); - Settings.WriteShortcuts(shortcuts, textWriter); - textWriter.WriteEndElement(); - textWriter.WriteEndDocument(); - } - File.WriteAllText(fileName, sb.ToString().Replace("encoding=\"utf-16\"", "encoding=\"utf-8\""), Encoding.UTF8); - } - - public static Shortcuts Load(string fileName) - { - var doc = new XmlDocument { PreserveWhitespace = true }; - using (var stream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) - { - doc.Load(stream); - var shortcuts = new Shortcuts(); - Settings.ReadShortcuts(doc, shortcuts); - return shortcuts; - } - } - } - - public class RemoveTextForHearingImpairedSettings - { - public bool RemoveTextBetweenBrackets { get; set; } - public bool RemoveTextBetweenParentheses { get; set; } - public bool RemoveTextBetweenCurlyBrackets { get; set; } - public bool RemoveTextBetweenQuestionMarks { get; set; } - public bool RemoveTextBetweenCustom { get; set; } - public string RemoveTextBetweenCustomBefore { get; set; } - public string RemoveTextBetweenCustomAfter { get; set; } - public bool RemoveTextBetweenOnlySeparateLines { get; set; } - public bool RemoveTextBeforeColon { get; set; } - public bool RemoveTextBeforeColonOnlyIfUppercase { get; set; } - public bool RemoveTextBeforeColonOnlyOnSeparateLine { get; set; } - public bool RemoveInterjections { get; set; } - public bool RemoveInterjectionsOnlyOnSeparateLine { get; set; } - public bool RemoveIfContains { get; set; } - public bool RemoveIfAllUppercase { get; set; } - public string RemoveIfContainsText { get; set; } - public bool RemoveIfOnlyMusicSymbols { get; set; } - - public RemoveTextForHearingImpairedSettings() - { - RemoveTextBetweenBrackets = true; - RemoveTextBetweenParentheses = true; - RemoveTextBetweenCurlyBrackets = true; - RemoveTextBetweenQuestionMarks = true; - RemoveTextBetweenCustom = false; - RemoveTextBetweenCustomBefore = "¶"; - RemoveTextBetweenCustomAfter = "¶"; - RemoveTextBeforeColon = true; - RemoveTextBeforeColonOnlyIfUppercase = true; - RemoveIfContainsText = "¶"; - RemoveIfOnlyMusicSymbols = true; - } - } - - public class SubtitleBeaming - { - public string FontName { get; set; } - public int FontSize { get; set; } - public Color FontColor { get; set; } - public Color BorderColor { get; set; } - public int BorderWidth { get; set; } - - public SubtitleBeaming() - { - FontName = "Verdana"; - FontSize = 30; - FontColor = Color.White; - BorderColor = Color.DarkGray; - BorderWidth = 2; - } - } - - public class BeautifyTimeCodesSettings - { - public bool AlignTimeCodes { get; set; } - public bool ExtractExactTimeCodes { get; set; } - public bool SnapToShotChanges { get; set; } - public int OverlapThreshold { get; set; } - public BeautifyTimeCodesProfile Profile { get; set; } - - public BeautifyTimeCodesSettings() - { - AlignTimeCodes = true; - ExtractExactTimeCodes = false; - SnapToShotChanges = true; - OverlapThreshold = 1000; - Profile = new BeautifyTimeCodesProfile(); - } - - public class BeautifyTimeCodesProfile - { - // General - public int Gap { get; set; } - - // In cues - public int InCuesGap { get; set; } - public int InCuesLeftGreenZone { get; set; } - public int InCuesLeftRedZone { get; set; } - public int InCuesRightRedZone { get; set; } - public int InCuesRightGreenZone { get; set; } - - // Out cues - public int OutCuesGap { get; set; } - public int OutCuesLeftGreenZone { get; set; } - public int OutCuesLeftRedZone { get; set; } - public int OutCuesRightRedZone { get; set; } - public int OutCuesRightGreenZone { get; set; } - - // Connected subtitles - public int ConnectedSubtitlesInCueClosestLeftGap { get; set; } - public int ConnectedSubtitlesInCueClosestRightGap { get; set; } - public int ConnectedSubtitlesOutCueClosestLeftGap { get; set; } - public int ConnectedSubtitlesOutCueClosestRightGap { get; set; } - public int ConnectedSubtitlesLeftGreenZone { get; set; } - public int ConnectedSubtitlesLeftRedZone { get; set; } - public int ConnectedSubtitlesRightRedZone { get; set; } - public int ConnectedSubtitlesRightGreenZone { get; set; } - public int ConnectedSubtitlesTreatConnected { get; set; } - - // Chaining - public bool ChainingGeneralUseZones { get; set; } - public int ChainingGeneralMaxGap { get; set; } - public int ChainingGeneralLeftGreenZone { get; set; } - public int ChainingGeneralLeftRedZone { get; set; } - public ChainingShotChangeBehaviorEnum ChainingGeneralShotChangeBehavior { get; set; } - public bool ChainingInCueOnShotUseZones { get; set; } - public int ChainingInCueOnShotMaxGap { get; set; } - public int ChainingInCueOnShotLeftGreenZone { get; set; } - public int ChainingInCueOnShotLeftRedZone { get; set; } - public ChainingShotChangeBehaviorEnum ChainingInCueOnShotShotChangeBehavior { get; set; } - public bool ChainingInCueOnShotCheckGeneral { get; set; } - public bool ChainingOutCueOnShotUseZones { get; set; } - public int ChainingOutCueOnShotMaxGap { get; set; } - public int ChainingOutCueOnShotRightRedZone { get; set; } - public int ChainingOutCueOnShotRightGreenZone { get; set; } - public ChainingShotChangeBehaviorEnum ChainingOutCueOnShotShotChangeBehavior { get; set; } - public bool ChainingOutCueOnShotCheckGeneral { get; set; } - - public enum Preset : int - { - Default = 0, - Netflix = 1, - SDI = 2, - } - - public enum ChainingShotChangeBehaviorEnum : int - { - DontChain = 0, - ExtendCrossingShotChange = 1, - ExtendUntilShotChange = 2 - } - - public BeautifyTimeCodesProfile(Preset preset = Preset.Default) - { - switch (preset) - { - case Preset.Netflix: - Gap = 2; - - InCuesGap = 0; - InCuesLeftGreenZone = 12; - InCuesLeftRedZone = 7; - InCuesRightRedZone = 7; - InCuesRightGreenZone = 12; - - OutCuesGap = 2; - OutCuesLeftGreenZone = 12; - OutCuesLeftRedZone = 7; - OutCuesRightRedZone = 7; - OutCuesRightGreenZone = 12; - - ConnectedSubtitlesInCueClosestLeftGap = 2; - ConnectedSubtitlesInCueClosestRightGap = 0; - ConnectedSubtitlesOutCueClosestLeftGap = 2; - ConnectedSubtitlesOutCueClosestRightGap = 0; - ConnectedSubtitlesLeftGreenZone = 12; - ConnectedSubtitlesLeftRedZone = 7; - ConnectedSubtitlesRightRedZone = 7; - ConnectedSubtitlesRightGreenZone = 12; - ConnectedSubtitlesTreatConnected = 180; - - ChainingGeneralUseZones = false; - ChainingGeneralMaxGap = 500; - ChainingGeneralLeftGreenZone = 12; - ChainingGeneralLeftRedZone = 11; - ChainingGeneralShotChangeBehavior = ChainingShotChangeBehaviorEnum.ExtendUntilShotChange; - ChainingInCueOnShotUseZones = false; - ChainingInCueOnShotMaxGap = 500; - ChainingInCueOnShotLeftGreenZone = 12; - ChainingInCueOnShotLeftRedZone = 11; - ChainingInCueOnShotShotChangeBehavior = ChainingShotChangeBehaviorEnum.ExtendUntilShotChange; - ChainingInCueOnShotCheckGeneral = true; - ChainingOutCueOnShotUseZones = false; - ChainingOutCueOnShotMaxGap = 500; - ChainingOutCueOnShotRightRedZone = 11; - ChainingOutCueOnShotRightGreenZone = 12; - ChainingOutCueOnShotShotChangeBehavior = ChainingShotChangeBehaviorEnum.ExtendUntilShotChange; - ChainingOutCueOnShotCheckGeneral = true; - break; - case Preset.SDI: - Gap = 4; - - InCuesGap = 2; - InCuesLeftGreenZone = 12; - InCuesLeftRedZone = 7; - InCuesRightRedZone = 7; - InCuesRightGreenZone = 12; - - OutCuesGap = 2; - OutCuesLeftGreenZone = 12; - OutCuesLeftRedZone = 7; - OutCuesRightRedZone = 7; - OutCuesRightGreenZone = 12; - - ConnectedSubtitlesInCueClosestLeftGap = 2; - ConnectedSubtitlesInCueClosestRightGap = 2; - ConnectedSubtitlesOutCueClosestLeftGap = 2; - ConnectedSubtitlesOutCueClosestRightGap = 2; - ConnectedSubtitlesLeftGreenZone = 12; - ConnectedSubtitlesLeftRedZone = 7; - ConnectedSubtitlesRightRedZone = 7; - ConnectedSubtitlesRightGreenZone = 12; - ConnectedSubtitlesTreatConnected = 240; - - ChainingGeneralUseZones = false; - ChainingGeneralMaxGap = 1000; - ChainingGeneralLeftGreenZone = 25; - ChainingGeneralLeftRedZone = 24; - ChainingGeneralShotChangeBehavior = ChainingShotChangeBehaviorEnum.ExtendCrossingShotChange; - ChainingInCueOnShotUseZones = false; - ChainingInCueOnShotMaxGap = 1000; - ChainingInCueOnShotLeftGreenZone = 25; - ChainingInCueOnShotLeftRedZone = 24; - ChainingInCueOnShotShotChangeBehavior = ChainingShotChangeBehaviorEnum.ExtendCrossingShotChange; - ChainingInCueOnShotCheckGeneral = true; - ChainingOutCueOnShotUseZones = true; - ChainingOutCueOnShotMaxGap = 500; - ChainingOutCueOnShotRightRedZone = 7; - ChainingOutCueOnShotRightGreenZone = 12; - ChainingOutCueOnShotShotChangeBehavior = ChainingShotChangeBehaviorEnum.ExtendCrossingShotChange; - ChainingOutCueOnShotCheckGeneral = true; - break; - default: - Gap = 3; - - InCuesGap = 0; - InCuesLeftGreenZone = 3; - InCuesLeftRedZone = 3; - InCuesRightRedZone = 5; - InCuesRightGreenZone = 5; - - OutCuesGap = 0; - OutCuesLeftGreenZone = 10; - OutCuesLeftRedZone = 10; - OutCuesRightRedZone = 3; - OutCuesRightGreenZone = 12; - - ConnectedSubtitlesInCueClosestLeftGap = 3; - ConnectedSubtitlesInCueClosestRightGap = 0; - ConnectedSubtitlesOutCueClosestLeftGap = 0; - ConnectedSubtitlesOutCueClosestRightGap = 3; - ConnectedSubtitlesLeftGreenZone = 3; - ConnectedSubtitlesLeftRedZone = 3; - ConnectedSubtitlesRightRedZone = 3; - ConnectedSubtitlesRightGreenZone = 3; - ConnectedSubtitlesTreatConnected = 180; - - ChainingGeneralUseZones = false; - ChainingGeneralMaxGap = 1000; - ChainingGeneralLeftGreenZone = 25; - ChainingGeneralLeftRedZone = 24; - ChainingGeneralShotChangeBehavior = ChainingShotChangeBehaviorEnum.ExtendUntilShotChange; - ChainingInCueOnShotUseZones = false; - ChainingInCueOnShotMaxGap = 1000; - ChainingInCueOnShotLeftGreenZone = 25; - ChainingInCueOnShotLeftRedZone = 24; - ChainingInCueOnShotShotChangeBehavior = ChainingShotChangeBehaviorEnum.ExtendUntilShotChange; - ChainingInCueOnShotCheckGeneral = true; - ChainingOutCueOnShotUseZones = false; - ChainingOutCueOnShotMaxGap = 500; - ChainingOutCueOnShotRightRedZone = 11; - ChainingOutCueOnShotRightGreenZone = 12; - ChainingOutCueOnShotShotChangeBehavior = ChainingShotChangeBehaviorEnum.ExtendUntilShotChange; - ChainingOutCueOnShotCheckGeneral = true; - break; - } - } - } - } - - public class CompareSettings - { - public bool ShowOnlyDifferences { get; set; } - public bool OnlyLookForDifferenceInText { get; set; } - public bool IgnoreLineBreaks { get; set; } - public bool IgnoreWhitespace { get; set; } - public bool IgnoreFormatting { get; set; } - - public CompareSettings() - { - OnlyLookForDifferenceInText = true; - } - } - - public class VerifyCompletenessSettings - { - public ListSortEnum ListSort { get; set; } - - public enum ListSortEnum : int - { - Coverage = 0, - Time = 1, - } - - public VerifyCompletenessSettings() - { - ListSort = ListSortEnum.Coverage; - } - } public class Settings { diff --git a/src/libse/Settings/Shortcuts.cs b/src/libse/Settings/Shortcuts.cs new file mode 100644 index 000000000..da18519f9 --- /dev/null +++ b/src/libse/Settings/Shortcuts.cs @@ -0,0 +1,540 @@ +using System.Collections.Generic; +using System.IO; +using System.Text; +using System.Xml; +using Nikse.SubtitleEdit.Core.Common; + +namespace Nikse.SubtitleEdit.Core.Settings +{ + public class Shortcuts + { + // General + public string GeneralMergeSelectedLines { get; set; } + public string GeneralMergeWithPrevious { get; set; } + public string GeneralMergeWithNext { get; set; } + public string GeneralMergeWithPreviousAndUnbreak { get; set; } + public string GeneralMergeWithNextAndUnbreak { get; set; } + public string GeneralMergeWithPreviousAndBreak { get; set; } + public string GeneralMergeWithNextAndBreak { get; set; } + public string GeneralMergeSelectedLinesAndAutoBreak { get; set; } + public string GeneralMergeSelectedLinesAndUnbreak { get; set; } + public string GeneralMergeSelectedLinesAndUnbreakCjk { get; set; } + public string GeneralMergeSelectedLinesOnlyFirstText { get; set; } + public string GeneralMergeSelectedLinesBilingual { get; set; } + public string GeneralMergeWithPreviousBilingual { get; set; } + public string GeneralMergeWithNextBilingual { get; set; } + public string GeneralMergeOriginalAndTranslation { get; set; } + public string GeneralToggleTranslationMode { get; set; } + public string GeneralSwitchOriginalAndTranslation { get; set; } + public string GeneralSwitchOriginalAndTranslationTextBoxes { get; set; } + public string GeneralLayoutChoose { get; set; } + public string GeneralLayoutChoose1 { get; set; } + public string GeneralLayoutChoose2 { get; set; } + public string GeneralLayoutChoose3 { get; set; } + public string GeneralLayoutChoose4 { get; set; } + public string GeneralLayoutChoose5 { get; set; } + public string GeneralLayoutChoose6 { get; set; } + public string GeneralLayoutChoose7 { get; set; } + public string GeneralLayoutChoose8 { get; set; } + public string GeneralLayoutChoose9 { get; set; } + public string GeneralLayoutChoose10 { get; set; } + public string GeneralLayoutChoose11 { get; set; } + public string GeneralLayoutChoose12 { get; set; } + public string GeneralPlayFirstSelected { get; set; } + public string GeneralGoToFirstSelectedLine { get; set; } + public string GeneralGoToNextEmptyLine { get; set; } + public string GeneralGoToNextSubtitle { get; set; } + public string GeneralGoToNextSubtitlePlayTranslate { get; set; } + public string GeneralGoToNextSubtitleCursorAtEnd { get; set; } + public string GeneralGoToPrevSubtitle { get; set; } + public string GeneralGoToPrevSubtitlePlayTranslate { get; set; } + public string GeneralGoToStartOfCurrentSubtitle { get; set; } + public string GeneralGoToEndOfCurrentSubtitle { get; set; } + public string GeneralGoToPreviousSubtitleAndFocusVideo { get; set; } + public string GeneralGoToNextSubtitleAndFocusVideo { get; set; } + public string GeneralGoToPreviousSubtitleAndFocusWaveform { get; set; } + public string GeneralGoToNextSubtitleAndFocusWaveform { get; set; } + public string GeneralGoToPrevSubtitleAndPlay { get; set; } + public string GeneralGoToNextSubtitleAndPlay { get; set; } + public string GeneralToggleBookmarks { get; set; } + public string GeneralToggleBookmarksWithText { get; set; } + public string GeneralEditBookmarks { get; set; } + public string GeneralClearBookmarks { get; set; } + public string GeneralGoToBookmark { get; set; } + public string GeneralGoToPreviousBookmark { get; set; } + public string GeneralGoToNextBookmark { get; set; } + public string GeneralChooseProfile { get; set; } + public string GeneralDuplicateLine { get; set; } + public string OpenDataFolder { get; set; } + public string OpenContainingFolder { get; set; } + public string GeneralToggleView { get; set; } + public string GeneralToggleMode { get; set; } + public string GeneralTogglePreviewOnVideo { get; set; } + public string GeneralRemoveBlankLines { get; set; } + public string GeneralApplyAssaOverrideTags { get; set; } + public string GeneralSetAssaPosition { get; set; } + public string GeneralSetAssaResolution { get; set; } + public string GeneralSetAssaBgBox { get; set; } + public string GeneralColorPicker { get; set; } + public string GeneralTakeAutoBackup { get; set; } + public string GeneralHelp { get; set; } + public string GeneralFocusTextBox { get; set; } + + // File + public string MainFileNew { get; set; } + public string MainFileOpen { get; set; } + public string MainFileOpenKeepVideo { get; set; } + public string MainFileSave { get; set; } + public string MainFileSaveOriginal { get; set; } + public string MainFileSaveOriginalAs { get; set; } + public string MainFileSaveAs { get; set; } + public string MainFileSaveAll { get; set; } + public string MainFileOpenOriginal { get; set; } + public string MainFileCloseOriginal { get; set; } + public string MainFileCloseTranslation { get; set; } + public string MainFileCompare { get; set; } + public string MainFileVerifyCompleteness { get; set; } + public string MainFileImportPlainText { get; set; } + public string MainFileImportBdSupForEdit { get; set; } + public string MainFileImportTimeCodes { get; set; } + public string MainFileExportEbu { get; set; } + public string MainFileExportPac { get; set; } + public string MainFileExportBdSup { get; set; } + public string MainFileExportEdlClip { get; set; } + public string MainFileExportPlainText { get; set; } + public string MainFileExit { get; set; } + + // Edit + public string MainEditUndo { get; set; } + public string MainEditRedo { get; set; } + public string MainEditFind { get; set; } + public string MainEditFindNext { get; set; } + public string MainEditReplace { get; set; } + public string MainEditMultipleReplace { get; set; } + public string MainEditGoToLineNumber { get; set; } + public string MainEditRightToLeft { get; set; } + public string MainEditFixRTLViaUnicodeChars { get; set; } + public string MainEditRemoveRTLUnicodeChars { get; set; } + public string MainEditReverseStartAndEndingForRTL { get; set; } + public string MainVideoToggleControls { get; set; } + public string MainEditToggleTranslationOriginalInPreviews { get; set; } + public string MainEditInverseSelection { get; set; } + public string MainEditModifySelection { get; set; } + + // Tools + public string MainToolsAdjustDuration { get; set; } + public string MainToolsAdjustDurationLimits { get; set; } + public string MainToolsFixCommonErrors { get; set; } + public string MainToolsFixCommonErrorsPreview { get; set; } + public string MainToolsMergeShortLines { get; set; } + public string MainToolsMergeDuplicateText { get; set; } + public string MainToolsMergeSameTimeCodes { get; set; } + public string MainToolsMakeEmptyFromCurrent { get; set; } + public string MainToolsSplitLongLines { get; set; } + public string MainToolsDurationsBridgeGap { get; set; } + public string MainToolsMinimumDisplayTimeBetweenParagraphs { get; set; } + + public string MainToolsRenumber { get; set; } + public string MainToolsRemoveTextForHI { get; set; } + public string MainToolsConvertColorsToDialog { get; set; } + public string MainToolsChangeCasing { get; set; } + public string MainToolsAutoDuration { get; set; } + public string MainToolsBatchConvert { get; set; } + public string MainToolsMeasurementConverter { get; set; } + public string MainToolsSplit { get; set; } + public string MainToolsAppend { get; set; } + public string MainToolsJoin { get; set; } + public string MainToolsStyleManager { get; set; } + + // Video + public string MainVideoOpen { get; set; } + public string MainVideoClose { get; set; } + public string MainVideoPause { get; set; } + public string MainVideoStop { get; set; } + public string MainVideoPlayFromJustBefore { get; set; } + public string MainVideoPlayFromBeginning { get; set; } + public string MainVideoPlayPauseToggle { get; set; } + public string MainVideoPlay150Speed { get; set; } + public string MainVideoPlay200Speed { get; set; } + public string MainVideoFocusSetVideoPosition { get; set; } + public string MainVideoToggleVideoControls { get; set; } + public string MainVideo1FrameLeft { get; set; } + public string MainVideo1FrameRight { get; set; } + public string MainVideo1FrameLeftWithPlay { get; set; } + public string MainVideo1FrameRightWithPlay { get; set; } + public string MainVideo100MsLeft { get; set; } + public string MainVideo100MsRight { get; set; } + public string MainVideo500MsLeft { get; set; } + public string MainVideo500MsRight { get; set; } + public string MainVideo1000MsLeft { get; set; } + public string MainVideo1000MsRight { get; set; } + public string MainVideo5000MsLeft { get; set; } + public string MainVideo5000MsRight { get; set; } + public string MainVideoXSMsLeft { get; set; } + public string MainVideoXSMsRight { get; set; } + public string MainVideoXLMsLeft { get; set; } + public string MainVideoXLMsRight { get; set; } + public string MainVideo3000MsLeft { get; set; } + public string MainVideo3000MsRight { get; set; } + public string MainVideoGoToStartCurrent { get; set; } + public string MainVideoToggleStartEndCurrent { get; set; } + public string MainVideoPlaySelectedLines { get; set; } + public string MainVideoLoopSelectedLines { get; set; } + public string MainVideoGoToPrevSubtitle { get; set; } + public string MainVideoGoToNextSubtitle { get; set; } + public string MainVideoGoToPrevTimeCode { get; set; } + public string MainVideoGoToNextTimeCode { get; set; } + public string MainVideoGoToPrevChapter { get; set; } + public string MainVideoGoToNextChapter { get; set; } + public string MainVideoSelectNextSubtitle { get; set; } + public string MainVideoFullscreen { get; set; } + public string MainVideoSlower { get; set; } + public string MainVideoFaster { get; set; } + public string MainVideoSpeedToggle { get; set; } + public string MainVideoReset { get; set; } + public string MainVideoToggleBrightness { get; set; } + public string MainVideoToggleContrast { get; set; } + public string MainVideoAudioToTextVosk { get; set; } + public string MainVideoAudioToTextWhisper { get; set; } + public string MainVideoAudioExtractAudioSelectedLines { get; set; } + public string MainVideoTextToSpeech { get; set; } + + // spell check + public string MainSpellCheck { get; set; } + public string MainSpellCheckFindDoubleWords { get; set; } + public string MainSpellCheckAddWordToNames { get; set; } + + // Sync + public string MainSynchronizationAdjustTimes { get; set; } + public string MainSynchronizationVisualSync { get; set; } + public string MainSynchronizationPointSync { get; set; } + public string MainSynchronizationPointSyncViaFile { get; set; } + public string MainSynchronizationChangeFrameRate { get; set; } + + // List view + public string MainListViewItalic { get; set; } + public string MainListViewBold { get; set; } + public string MainListViewUnderline { get; set; } + public string MainListViewBox { get; set; } + public string MainListViewToggleQuotes { get; set; } + public string MainListViewToggleHiTags { get; set; } + public string MainListViewToggleCustomTags { get; set; } + public string MainListViewSplit { get; set; } + public string MainListViewToggleDashes { get; set; } + public string MainListViewToggleMusicSymbols { get; set; } + public string MainListViewAlignment { get; set; } + public string MainListViewAlignmentN1 { get; set; } + public string MainListViewAlignmentN2 { get; set; } + public string MainListViewAlignmentN3 { get; set; } + public string MainListViewAlignmentN4 { get; set; } + public string MainListViewAlignmentN5 { get; set; } + public string MainListViewAlignmentN6 { get; set; } + public string MainListViewAlignmentN7 { get; set; } + public string MainListViewAlignmentN8 { get; set; } + public string MainListViewAlignmentN9 { get; set; } + public string MainListViewColor1 { get; set; } + public string MainListViewColor2 { get; set; } + public string MainListViewColor3 { get; set; } + public string MainListViewColor4 { get; set; } + public string MainListViewColor5 { get; set; } + public string MainListViewColor6 { get; set; } + public string MainListViewColor7 { get; set; } + public string MainListViewColor8 { get; set; } + public string MainListViewSetNewActor { get; set; } + public string MainListViewSetActor1 { get; set; } + public string MainListViewSetActor2 { get; set; } + public string MainListViewSetActor3 { get; set; } + public string MainListViewSetActor4 { get; set; } + public string MainListViewSetActor5 { get; set; } + public string MainListViewSetActor6 { get; set; } + public string MainListViewSetActor7 { get; set; } + public string MainListViewSetActor8 { get; set; } + public string MainListViewSetActor9 { get; set; } + public string MainListViewSetActor10 { get; set; } + public string MainListViewColorChoose { get; set; } + public string MainRemoveFormatting { get; set; } + public string MainListViewCopyText { get; set; } + public string MainListViewCopyPlainText { get; set; } + public string MainListViewCopyTextFromOriginalToCurrent { get; set; } + public string MainListViewAutoDuration { get; set; } + public string MainListViewColumnDeleteText { get; set; } + public string MainListViewColumnDeleteTextAndShiftUp { get; set; } + public string MainListViewColumnInsertText { get; set; } + public string MainListViewColumnPaste { get; set; } + public string MainListViewColumnTextUp { get; set; } + public string MainListViewColumnTextDown { get; set; } + public string MainListViewGoToNextError { get; set; } + public string MainListViewListErrors { get; set; } + public string MainListViewSortByNumber { get; set; } + public string MainListViewSortByStartTime { get; set; } + public string MainListViewSortByEndTime { get; set; } + public string MainListViewSortByDuration { get; set; } + public string MainListViewSortByGap { get; set; } + public string MainListViewSortByText { get; set; } + public string MainListViewSortBySingleLineMaxLen { get; set; } + public string MainListViewSortByTextTotalLength { get; set; } + public string MainListViewSortByCps { get; set; } + public string MainListViewSortByWpm { get; set; } + public string MainListViewSortByNumberOfLines { get; set; } + public string MainListViewSortByActor { get; set; } + public string MainListViewSortByStyle { get; set; } + public string MainListViewRemoveTimeCodes { get; set; } + public string MainTextBoxSplitAtCursor { get; set; } + public string MainTextBoxSplitAtCursorAndAutoBr { get; set; } + public string MainTextBoxSplitAtCursorAndVideoPos { get; set; } + public string MainTextBoxSplitSelectedLineBilingual { get; set; } + public string MainTextBoxMoveLastWordDown { get; set; } + public string MainTextBoxMoveFirstWordFromNextUp { get; set; } + public string MainTextBoxMoveLastWordDownCurrent { get; set; } + public string MainTextBoxMoveFirstWordUpCurrent { get; set; } + public string MainTextBoxMoveFromCursorToNextAndGoToNext { get; set; } + public string MainTextBoxSelectionToLower { get; set; } + public string MainTextBoxSelectionToUpper { get; set; } + public string MainTextBoxSelectionToggleCasing { get; set; } + public string MainTextBoxSelectionToRuby { get; set; } + public string MainTextBoxToggleAutoDuration { get; set; } + public string MainCreateInsertSubAtVideoPos { get; set; } + public string MainCreateInsertSubAtVideoPosMax { get; set; } + public string MainCreateInsertSubAtVideoPosNoTextBoxFocus { get; set; } + public string MainCreateSetStart { get; set; } + public string MainCreateSetEnd { get; set; } + public string MainAdjustVideoSetStartForAppropriateLine { get; set; } + public string MainAdjustVideoSetEndForAppropriateLine { get; set; } + public string MainAdjustSetEndAndPause { get; set; } + public string MainCreateSetEndAddNewAndGoToNew { get; set; } + public string MainCreateStartDownEndUp { get; set; } + public string MainAdjustSetStartAndOffsetTheRest { get; set; } + public string MainAdjustSetStartAndOffsetTheRest2 { get; set; } + public string MainAdjustSetStartAndOffsetTheWholeSubtitle { get; set; } + public string MainAdjustSetEndAndOffsetTheRest { get; set; } + public string MainAdjustSetEndAndOffsetTheRestAndGoToNext { get; set; } + public string MainAdjustSetStartAndGotoNext { get; set; } + public string MainAdjustSetEndAndGotoNext { get; set; } + public string MainAdjustViaEndAutoStart { get; set; } + public string MainAdjustViaEndAutoStartAndGoToNext { get; set; } + public string MainAdjustSetEndMinusGapAndStartNextHere { get; set; } + public string MainSetEndAndStartNextAfterGap { get; set; } + public string MainAdjustSetStartAutoDurationAndGoToNext { get; set; } + public string MainAdjustSetEndNextStartAndGoToNext { get; set; } + public string MainAdjustStartDownEndUpAndGoToNext { get; set; } + public string MainAdjustSetStartAndEndOfPrevious { get; set; } + public string MainAdjustSetStartAndEndOfPreviousAndGoToNext { get; set; } + public string MainAdjustSetStartKeepDuration { get; set; } + public string MainAdjustSelected100MsForward { get; set; } + public string MainAdjustSelected100MsBack { get; set; } + public string MainAdjustStartXMsBack { get; set; } + public string MainAdjustStartXMsForward { get; set; } + public string MainAdjustEndXMsBack { get; set; } + public string MainAdjustEndXMsForward { get; set; } + public string MoveStartOneFrameBack { get; set; } + public string MoveStartOneFrameForward { get; set; } + public string MoveEndOneFrameBack { get; set; } + public string MoveEndOneFrameForward { get; set; } + public string MoveStartOneFrameBackKeepGapPrev { get; set; } + public string MoveStartOneFrameForwardKeepGapPrev { get; set; } + public string MoveEndOneFrameBackKeepGapNext { get; set; } + public string MoveEndOneFrameForwardKeepGapNext { get; set; } + public string MainAdjustSnapStartToNextShotChange { get; set; } + public string MainAdjustSnapEndToPreviousShotChange { get; set; } + public string MainAdjustExtendToNextShotChange { get; set; } + public string MainAdjustExtendToPreviousShotChange { get; set; } + public string MainAdjustExtendToNextSubtitle { get; set; } + public string MainAdjustExtendToPreviousSubtitle { get; set; } + public string MainAdjustExtendToNextSubtitleMinusChainingGap { get; set; } + public string MainAdjustExtendToPreviousSubtitleMinusChainingGap { get; set; } + public string MainAdjustExtendCurrentSubtitle { get; set; } + public string MainAdjustExtendPreviousLineEndToCurrentStart { get; set; } + public string MainAdjustExtendNextLineStartToCurrentEnd { get; set; } + public string MainSetInCueToClosestShotChangeLeftGreenZone { get; set; } + public string MainSetInCueToClosestShotChangeRightGreenZone { get; set; } + public string MainSetOutCueToClosestShotChangeLeftGreenZone { get; set; } + public string MainSetOutCueToClosestShotChangeRightGreenZone { get; set; } + public string GeneralAutoCalcCurrentDuration { get; set; } + public string GeneralAutoCalcCurrentDurationByOptimalReadingSpeed { get; set; } + public string GeneralAutoCalcCurrentDurationByMinReadingSpeed { get; set; } + public string MainInsertAfter { get; set; } + public string MainTextBoxAutoBreak { get; set; } + public string MainTextBoxBreakAtPosition { get; set; } + public string MainTextBoxBreakAtPositionAndGoToNext { get; set; } + public string MainTextBoxRecord { get; set; } + public string MainTextBoxUnbreak { get; set; } + public string MainTextBoxUnbreakNoSpace { get; set; } + public string MainTextBoxAssaIntellisense { get; set; } + public string MainTextBoxAssaRemoveTag { get; set; } + public string MainWaveformInsertAtCurrentPosition { get; set; } + public string MainInsertBefore { get; set; } + public string MainMergeDialog { get; set; } + public string MainMergeDialogWithNext { get; set; } + public string MainMergeDialogWithPrevious { get; set; } + public string MainAutoBalanceSelectedLines { get; set; } + public string MainEvenlyDistributeSelectedLines { get; set; } + public string MainToggleFocus { get; set; } + public string MainToggleFocusWaveform { get; set; } + public string MainToggleFocusWaveformTextBox { get; set; } + public string WaveformAdd { get; set; } + public string WaveformVerticalZoom { get; set; } + public string WaveformVerticalZoomOut { get; set; } + public string WaveformZoomIn { get; set; } + public string WaveformZoomOut { get; set; } + public string WaveformSplit { get; set; } + public string WaveformPlaySelection { get; set; } + public string WaveformPlaySelectionEnd { get; set; } + public string WaveformSearchSilenceForward { get; set; } + public string WaveformSearchSilenceBack { get; set; } + public string WaveformAddTextHere { get; set; } + public string WaveformAddTextHereFromClipboard { get; set; } + public string WaveformSetParagraphAsSelection { get; set; } + public string WaveformGoToPreviousShotChange { get; set; } + public string WaveformGoToNextShotChange { get; set; } + public string WaveformToggleShotChange { get; set; } + public string WaveformListShotChanges { get; set; } + public string WaveformGuessStart { get; set; } + public string Waveform100MsLeft { get; set; } + public string Waveform100MsRight { get; set; } + public string Waveform1000MsLeft { get; set; } + public string Waveform1000MsRight { get; set; } + public string WaveformAudioToTextVosk { get; set; } + public string WaveformAudioToTextWhisper { get; set; } + public string MainCheckFixTimingViaShotChanges { get; set; } + public string MainTranslateGoogleIt { get; set; } + public string MainTranslateGoogleTranslateIt { get; set; } + public string MainTranslateAuto { get; set; } + public string MainTranslateAutoSelectedLines { get; set; } + public string MainTranslateCustomSearch1 { get; set; } + public string MainTranslateCustomSearch2 { get; set; } + public string MainTranslateCustomSearch3 { get; set; } + public string MainTranslateCustomSearch4 { get; set; } + public string MainTranslateCustomSearch5 { get; set; } + public List PluginShortcuts { get; set; } + + + public Shortcuts() + { + GeneralGoToFirstSelectedLine = "Control+L"; + GeneralMergeSelectedLines = "Control+Shift+M"; + GeneralToggleTranslationMode = "Control+Shift+O"; + GeneralMergeOriginalAndTranslation = "Control+Alt+Shift+M"; + GeneralGoToNextSubtitle = "Shift+Return"; + GeneralGoToNextSubtitlePlayTranslate = "Alt+Down"; + GeneralGoToPrevSubtitlePlayTranslate = "Alt+Up"; + GeneralToggleBookmarksWithText = "Control+Shift+B"; + OpenDataFolder = "Control+Alt+Shift+D"; + GeneralToggleView = "F2"; + GeneralHelp = "F1"; + MainFileNew = "Control+N"; + MainFileOpen = "Control+O"; + MainFileSave = "Control+S"; + MainFileSaveAs = "Control+Shift+S"; + MainEditUndo = "Control+Z"; + MainEditRedo = "Control+Y"; + MainEditFind = "Control+F"; + MainEditFindNext = "F3"; + MainEditReplace = "Control+H"; + MainEditMultipleReplace = "Control+Alt+M"; + MainEditGoToLineNumber = "Control+G"; + MainEditRightToLeft = "Control+Shift+Alt+R"; + MainEditInverseSelection = "Control+Shift+I"; + MainToolsFixCommonErrors = "Control+Shift+F"; + MainToolsFixCommonErrorsPreview = "Control+P"; + MainToolsRenumber = "Control+Shift+N"; + MainToolsRemoveTextForHI = "Control+Shift+H"; + MainToolsChangeCasing = "Control+Shift+C"; + MainVideoPlayFromJustBefore = "Shift+F10"; + MainVideoPlayPauseToggle = "Control+P"; + MainVideoPause = "Control+Alt+P"; + MainVideo500MsLeft = "Alt+Left"; + MainVideo500MsRight = "Alt+Right"; + MainVideoFullscreen = "Alt+Return"; + MainVideoReset = "Control+D0"; + MainSpellCheck = "Control+Shift+S"; + MainSpellCheckFindDoubleWords = "Control+Shift+D"; + MainSpellCheckAddWordToNames = "Control+Shift+L"; + MainSynchronizationAdjustTimes = "Control+Shift+A"; + MainSynchronizationVisualSync = "Control+Shift+V"; + MainSynchronizationPointSync = "Control+Shift+P"; + MainListViewItalic = "Control+I"; + MainTextBoxSplitAtCursor = "Control+Alt+V"; + MainTextBoxSelectionToLower = "Control+U"; + MainTextBoxSelectionToUpper = "Control+Shift+U"; + MainTextBoxSelectionToggleCasing = "Control+Shift+F3"; + MainCreateInsertSubAtVideoPos = "Shift+F9"; + MainVideoGoToStartCurrent = "Shift+F11"; + MainVideoToggleStartEndCurrent = "F4"; + MainVideoPlaySelectedLines = "F5"; + MainVideoGoToStartCurrent = "F6"; + MainVideo3000MsLeft = "F7"; + MainListViewGoToNextError = "F8"; + MainListViewListErrors = "Control+F8"; + MainCreateSetStart = "F11"; + MainCreateSetEnd = "F12"; + MainAdjustSetStartAndOffsetTheRest = "Control+Space"; + MainAdjustSetStartAndOffsetTheRest2 = "F9"; + MainAdjustSetEndAndGotoNext = "F10"; + MainInsertAfter = "Alt+Insert"; + MainWaveformInsertAtCurrentPosition = "Insert"; + MainInsertBefore = "Control+Shift+Insert"; + MainTextBoxAutoBreak = "Control+R"; + MainTranslateAuto = "Control+Shift+G"; + MainAdjustExtendToNextSubtitle = "Control+Shift+E"; + MainAdjustExtendToPreviousSubtitle = "Alt+Shift+E"; + MainAdjustExtendToNextSubtitleMinusChainingGap = "Control+Shift+W"; + MainAdjustExtendToPreviousSubtitleMinusChainingGap = "Alt+Shift+W"; + WaveformVerticalZoom = "Shift+Add"; + WaveformVerticalZoomOut = "Shift+Subtract"; + WaveformAddTextHere = "Return"; + Waveform100MsLeft = "Shift+Left"; + Waveform100MsRight = "Shift+Right"; + Waveform1000MsLeft = "Left"; + Waveform1000MsRight = "Right"; + MainCheckFixTimingViaShotChanges = "Control+Shift+D9"; + PluginShortcuts = new List(); + } + + public Shortcuts Clone() + { + var xws = new XmlWriterSettings { Indent = true }; + var sb = new StringBuilder(); + using (var textWriter = XmlWriter.Create(sb, xws)) + { + textWriter.WriteStartDocument(); + textWriter.WriteStartElement("Settings", string.Empty); + Settings.WriteShortcuts(this, textWriter); + textWriter.WriteEndElement(); + textWriter.WriteEndDocument(); + } + + var doc = new XmlDocument { PreserveWhitespace = true }; + doc.LoadXml(sb.ToString().Replace("encoding=\"utf-16\"", "encoding=\"utf-8\"")); + var shortcuts = new Shortcuts(); + Settings.ReadShortcuts(doc, shortcuts); + return shortcuts; + } + + public static void Save(string fileName, Shortcuts shortcuts) + { + var xws = new XmlWriterSettings { Indent = true, Encoding = Encoding.UTF8 }; + var sb = new StringBuilder(); + using (var textWriter = XmlWriter.Create(sb, xws)) + { + textWriter.WriteStartDocument(); + textWriter.WriteStartElement("Settings", string.Empty); + Settings.WriteShortcuts(shortcuts, textWriter); + textWriter.WriteEndElement(); + textWriter.WriteEndDocument(); + } + File.WriteAllText(fileName, sb.ToString().Replace("encoding=\"utf-16\"", "encoding=\"utf-8\""), Encoding.UTF8); + } + + public static Shortcuts Load(string fileName) + { + var doc = new XmlDocument { PreserveWhitespace = true }; + using (var stream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) + { + doc.Load(stream); + var shortcuts = new Shortcuts(); + Settings.ReadShortcuts(doc, shortcuts); + return shortcuts; + } + } + } +} \ No newline at end of file diff --git a/src/libse/Settings/SubtitleBeaming.cs b/src/libse/Settings/SubtitleBeaming.cs new file mode 100644 index 000000000..35d62e4db --- /dev/null +++ b/src/libse/Settings/SubtitleBeaming.cs @@ -0,0 +1,22 @@ +using System.Drawing; + +namespace Nikse.SubtitleEdit.Core.Settings +{ + public class SubtitleBeaming + { + public string FontName { get; set; } + public int FontSize { get; set; } + public Color FontColor { get; set; } + public Color BorderColor { get; set; } + public int BorderWidth { get; set; } + + public SubtitleBeaming() + { + FontName = "Verdana"; + FontSize = 30; + FontColor = Color.White; + BorderColor = Color.DarkGray; + BorderWidth = 2; + } + } +} \ No newline at end of file diff --git a/src/libse/Settings/SubtitleSettings.cs b/src/libse/Settings/SubtitleSettings.cs new file mode 100644 index 000000000..c2f8eb1e8 --- /dev/null +++ b/src/libse/Settings/SubtitleSettings.cs @@ -0,0 +1,224 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using Nikse.SubtitleEdit.Core.Common; + +namespace Nikse.SubtitleEdit.Core.Settings +{ + public class SubtitleSettings + { + public List AssaStyleStorageCategories { get; set; } + public List AssaOverrideTagHistory { get; set; } + public bool AssaResolutionAutoNew { get; set; } + public bool AssaResolutionPromptChange { get; set; } + public bool AssaShowScaledBorderAndShadow { get; set; } + public bool AssaShowPlayDepth { get; set; } + public string DCinemaFontFile { get; set; } + public string DCinemaLoadFontResource { get; set; } + public int DCinemaFontSize { get; set; } + public int DCinemaBottomMargin { get; set; } + public double DCinemaZPosition { get; set; } + public int DCinemaFadeUpTime { get; set; } + public int DCinemaFadeDownTime { get; set; } + public bool DCinemaAutoGenerateSubtitleId { get; set; } + + public string CurrentDCinemaSubtitleId { get; set; } + public string CurrentDCinemaMovieTitle { get; set; } + public string CurrentDCinemaReelNumber { get; set; } + public string CurrentDCinemaIssueDate { get; set; } + public string CurrentDCinemaLanguage { get; set; } + public string CurrentDCinemaEditRate { get; set; } + public string CurrentDCinemaTimeCodeRate { get; set; } + public string CurrentDCinemaStartTime { get; set; } + public string CurrentDCinemaFontId { get; set; } + public string CurrentDCinemaFontUri { get; set; } + public Color CurrentDCinemaFontColor { get; set; } + public string CurrentDCinemaFontEffect { get; set; } + public Color CurrentDCinemaFontEffectColor { get; set; } + public int CurrentDCinemaFontSize { get; set; } + + public int CurrentCavena890LanguageIdLine1 { get; set; } + public int CurrentCavena890LanguageIdLine2 { get; set; } + public string CurrentCavena89Title { get; set; } + public string CurrentCavena890riginalTitle { get; set; } + public string CurrentCavena890Translator { get; set; } + public string CurrentCavena89Comment { get; set; } + public int CurrentCavena89LanguageId { get; set; } + public string Cavena890StartOfMessage { get; set; } + + public bool EbuStlTeletextUseBox { get; set; } + public bool EbuStlTeletextUseDoubleHeight { get; set; } + public int EbuStlMarginTop { get; set; } + public int EbuStlMarginBottom { get; set; } + public int EbuStlNewLineRows { get; set; } + public bool EbuStlRemoveEmptyLines { get; set; } + public int PacVerticalTop { get; set; } + public int PacVerticalCenter { get; set; } + public int PacVerticalBottom { get; set; } + + public string DvdStudioProHeader { get; set; } + + public string TmpegEncXmlFontName { get; set; } + public string TmpegEncXmlFontHeight { get; set; } + public string TmpegEncXmlPosition { get; set; } + + public bool CheetahCaptionAlwayWriteEndTime { get; set; } + + public bool SamiDisplayTwoClassesAsTwoSubtitles { get; set; } + public int SamiHtmlEncodeMode { get; set; } + + public string TimedText10TimeCodeFormat { get; set; } + public string TimedText10TimeCodeFormatSource { get; set; } + public bool TimedText10ShowStyleAndLanguage { get; set; } + public string TimedText10FileExtension { get; set; } + public string TimedTextItunesTopOrigin { get; set; } + public string TimedTextItunesTopExtent { get; set; } + public string TimedTextItunesBottomOrigin { get; set; } + public string TimedTextItunesBottomExtent { get; set; } + public string TimedTextItunesTimeCodeFormat { get; set; } + public string TimedTextItunesStyleAttribute { get; set; } + public string TimedTextImsc11TimeCodeFormat { get; set; } + public string TimedTextImsc11FileExtension { get; set; } + + + public int FcpFontSize { get; set; } + public string FcpFontName { get; set; } + + public string NuendoCharacterListFile { get; set; } + + public bool WebVttUseXTimestampMap { get; set; } + public bool WebVttUseMultipleXTimestampMap { get; set; } + public bool WebVttMergeLinesWithSameText { get; set; } + public long WebVttTimescale { get; set; } + public string WebVttCueAn1 { get; set; } + public string WebVttCueAn2 { get; set; } + public string WebVttCueAn3 { get; set; } + public string WebVttCueAn4 { get; set; } + public string WebVttCueAn5 { get; set; } + public string WebVttCueAn6 { get; set; } + public string WebVttCueAn7 { get; set; } + public string WebVttCueAn8 { get; set; } + public string WebVttCueAn9 { get; set; } + public string MPlayer2Extension { get; set; } + public bool TeletextItalicFix { get; set; } + public bool MccDebug { get; set; } + public bool BluRaySupSkipMerge { get; set; } + public bool BluRaySupForceMergeAll { get; set; } + + public SubtitleSettings() + { + AssaStyleStorageCategories = new List(); + AssaOverrideTagHistory = new List(); + AssaResolutionAutoNew = true; + AssaResolutionPromptChange = true; + AssaShowScaledBorderAndShadow = true; + AssaShowPlayDepth = true; + + DCinemaFontFile = "Arial.ttf"; + DCinemaLoadFontResource = "urn:uuid:3dec6dc0-39d0-498d-97d0-928d2eb78391"; + DCinemaFontSize = 42; + DCinemaBottomMargin = 8; + DCinemaZPosition = 0; + DCinemaFadeUpTime = 0; + DCinemaFadeDownTime = 0; + DCinemaAutoGenerateSubtitleId = true; + + EbuStlTeletextUseBox = true; + EbuStlTeletextUseDoubleHeight = true; + EbuStlMarginTop = 0; + EbuStlMarginBottom = 2; + EbuStlNewLineRows = 2; + + PacVerticalTop = 1; + PacVerticalCenter = 6; + PacVerticalBottom = 11; + + DvdStudioProHeader = @"$VertAlign = Bottom +$Bold = FALSE +$Underlined = FALSE +$Italic = FALSE +$XOffset = 0 +$YOffset = -5 +$TextContrast = 15 +$Outline1Contrast = 15 +$Outline2Contrast = 13 +$BackgroundContrast = 0 +$ForceDisplay = FALSE +$FadeIn = 0 +$FadeOut = 0 +$HorzAlign = Center +"; + + TmpegEncXmlFontName = "Tahoma"; + TmpegEncXmlFontHeight = "0.069"; + TmpegEncXmlPosition = "23"; + + SamiDisplayTwoClassesAsTwoSubtitles = true; + SamiHtmlEncodeMode = 0; + + TimedText10TimeCodeFormat = "Source"; + TimedText10ShowStyleAndLanguage = true; + TimedText10FileExtension = ".xml"; + + TimedTextItunesTopOrigin = "0% 0%"; + TimedTextItunesTopExtent = "100% 15%"; + TimedTextItunesBottomOrigin = "0% 85%"; + TimedTextItunesBottomExtent = "100% 15%"; + TimedTextItunesTimeCodeFormat = "Frames"; + TimedTextItunesStyleAttribute = "tts:fontStyle"; + TimedTextImsc11TimeCodeFormat = "hh:mm:ss.ms"; + TimedTextImsc11FileExtension = ".xml"; + + FcpFontSize = 18; + FcpFontName = "Lucida Grande"; + + Cavena890StartOfMessage = "10:00:00:00"; + + WebVttTimescale = 90000; + WebVttUseXTimestampMap = true; + WebVttUseMultipleXTimestampMap = true; + WebVttCueAn1 = "position:20%"; + WebVttCueAn2 = ""; + WebVttCueAn3 = "position:80%"; + WebVttCueAn4 = "position:20% line:50%"; + WebVttCueAn5 = "line:50%"; + WebVttCueAn6 = "position:80% line:50%"; + WebVttCueAn7 = "position:20% line:20%"; + WebVttCueAn8 = "line:20%"; + WebVttCueAn9 = "position:80% line:20%"; + + MPlayer2Extension = ".txt"; + + TeletextItalicFix = true; + } + + public void InitializeDCinameSettings(bool smpte) + { + if (smpte) + { + CurrentDCinemaSubtitleId = "urn:uuid:" + Guid.NewGuid(); + CurrentDCinemaLanguage = "en"; + CurrentDCinemaFontUri = DCinemaLoadFontResource; + CurrentDCinemaFontId = "theFontId"; + } + else + { + string hex = Guid.NewGuid().ToString().RemoveChar('-').ToLowerInvariant(); + hex = hex.Insert(8, "-").Insert(13, "-").Insert(18, "-").Insert(23, "-"); + CurrentDCinemaSubtitleId = hex; + CurrentDCinemaLanguage = "English"; + CurrentDCinemaFontUri = DCinemaFontFile; + CurrentDCinemaFontId = "Arial"; + } + CurrentDCinemaIssueDate = DateTime.Now.ToString("s"); + CurrentDCinemaMovieTitle = "title"; + CurrentDCinemaReelNumber = "1"; + CurrentDCinemaFontColor = Color.White; + CurrentDCinemaFontEffect = "border"; + CurrentDCinemaFontEffectColor = Color.Black; + CurrentDCinemaFontSize = DCinemaFontSize; + CurrentCavena890LanguageIdLine1 = -1; + CurrentCavena890LanguageIdLine2 = -1; + } + } +} \ No newline at end of file diff --git a/src/libse/Settings/ToolsSettings.cs b/src/libse/Settings/ToolsSettings.cs new file mode 100644 index 000000000..eb4053d2b --- /dev/null +++ b/src/libse/Settings/ToolsSettings.cs @@ -0,0 +1,670 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using Nikse.SubtitleEdit.Core.Common; + +namespace Nikse.SubtitleEdit.Core.Settings +{ + public class ToolsSettings + { + public List AssaTagTemplates { get; set; } + public int StartSceneIndex { get; set; } + public int EndSceneIndex { get; set; } + public int VerifyPlaySeconds { get; set; } + public bool FixShortDisplayTimesAllowMoveStartTime { get; set; } + public bool RemoveEmptyLinesBetweenText { get; set; } + public string MusicSymbol { get; set; } + public string MusicSymbolReplace { get; set; } + public string UnicodeSymbolsToInsert { get; set; } + public bool SpellCheckAutoChangeNameCasing { get; set; } + public bool SpellCheckUseLargerFont { get; set; } + public bool SpellCheckAutoChangeNamesUseSuggestions { get; set; } + public string SpellCheckSearchEngine { get; set; } + public bool CheckOneLetterWords { get; set; } + public bool SpellCheckEnglishAllowInQuoteAsIng { get; set; } + public bool RememberUseAlwaysList { get; set; } + public bool LiveSpellCheck { get; set; } + public bool SpellCheckShowCompletedMessage { get; set; } + public bool OcrFixUseHardcodedRules { get; set; } + public bool OcrGoogleCloudVisionSeHandlesTextMerge { get; set; } + public int OcrBinaryImageCompareRgbThreshold { get; set; } + public int OcrTesseract4RgbThreshold { get; set; } + public string OcrAddLetterRow1 { get; set; } + public string OcrAddLetterRow2 { get; set; } + public string OcrTrainFonts { get; set; } + public string OcrTrainMergedLetters { get; set; } + public string OcrTrainSrtFile { get; set; } + public bool OcrUseWordSplitList { get; set; } + public bool OcrUseWordSplitListAvoidPropercase { get; set; } + public string BDOpenIn { get; set; } + public string MicrosoftBingApiId { get; set; } + public string MicrosoftTranslatorApiKey { get; set; } + public string MicrosoftTranslatorTokenEndpoint { get; set; } + public string MicrosoftTranslatorCategory { get; set; } + public string GoogleApiV2Key { get; set; } + public bool GoogleTranslateNoKeyWarningShow { get; set; } + public int GoogleApiV1ChunkSize { get; set; } + public string GoogleTranslateLastSourceLanguage { get; set; } + public string GoogleTranslateLastTargetLanguage { get; set; } + public string AutoTranslateLastName { get; set; } + public string AutoTranslateLastUrl { get; set; } + public string AutoTranslateNllbApiUrl { get; set; } + public string AutoTranslateNllbServeUrl { get; set; } + public string AutoTranslateNllbServeModel { get; set; } + public string AutoTranslateLibreUrl { get; set; } + public string AutoTranslateLibreApiKey { get; set; } + public string AutoTranslateMyMemoryApiKey { get; set; } + public string AutoTranslateSeamlessM4TUrl { get; set; } + public string AutoTranslateDeepLApiKey { get; set; } + public string AutoTranslateDeepLUrl { get; set; } + public string AutoTranslatePapagoApiKeyId { get; set; } + public string AutoTranslatePapagoApiKey { get; set; } + public string AutoTranslateDeepLFormality { get; set; } + public bool TranslateAllowSplit { get; set; } + public string TranslateLastService { get; set; } + public string TranslateMergeStrategy { get; set; } + public string TranslateViaCopyPasteSeparator { get; set; } + public int TranslateViaCopyPasteMaxSize { get; set; } + public bool TranslateViaCopyPasteAutoCopyToClipboard { get; set; } + public string ChatGptUrl { get; set; } + public string ChatGptPrompt { get; set; } + public string ChatGptApiKey { get; set; } + public string ChatGptModel { get; set; } + public string LmStudioApiUrl { get; set; } + public string LmStudioModel { get; set; } + public string LmStudioPrompt { get; set; } + public string OllamaApiUrl { get; set; } + public string OllamaModels { get; set; } + public string OllamaModel { get; set; } + public string OllamaPrompt { get; set; } + + public string AnthropicApiUrl { get; set; } + public string AnthropicPrompt { get; set; } + public string AnthropicApiKey { get; set; } + public string AnthropicApiModel { get; set; } + public int AutoTranslateDelaySeconds { get; set; } + public int AutoTranslateMaxBytes { get; set; } + public string AutoTranslateStrategy { get; set; } + public string GeminiProApiKey { get; set; } + public string TextToSpeechEngine { get; set; } + public string TextToSpeechLastVoice { get; set; } + public string TextToSpeechElevenLabsApiKey { get; set; } + public string TextToSpeechAzureApiKey { get; set; } + public string TextToSpeechAzureRegion { get; set; } + public bool TextToSpeechPreview { get; set; } + public bool TextToSpeechCustomAudio { get; set; } + public bool TextToSpeechCustomAudioStereo { get; set; } + public string TextToSpeechCustomAudioEncoding { get; set; } + public bool TextToSpeechAddToVideoFile { get; set; } + public bool ListViewSyntaxColorDurationSmall { get; set; } + public bool ListViewSyntaxColorDurationBig { get; set; } + public bool ListViewSyntaxColorOverlap { get; set; } + public bool ListViewSyntaxColorLongLines { get; set; } + public bool ListViewSyntaxColorWideLines { get; set; } + public bool ListViewSyntaxColorGap { get; set; } + public bool ListViewSyntaxMoreThanXLines { get; set; } + public Color ListViewSyntaxErrorColor { get; set; } + public Color ListViewUnfocusedSelectedColor { get; set; } + public Color Color1 { get; set; } + public Color Color2 { get; set; } + public Color Color3 { get; set; } + public Color Color4 { get; set; } + public Color Color5 { get; set; } + public Color Color6 { get; set; } + public Color Color7 { get; set; } + public Color Color8 { get; set; } + public bool ListViewShowColumnStartTime { get; set; } + public bool ListViewShowColumnEndTime { get; set; } + public bool ListViewShowColumnDuration { get; set; } + public bool ListViewShowColumnCharsPerSec { get; set; } + public bool ListViewShowColumnWordsPerMin { get; set; } + public bool ListViewShowColumnGap { get; set; } + public bool ListViewShowColumnActor { get; set; } + public bool ListViewShowColumnRegion { get; set; } + public bool ListViewMultipleReplaceShowColumnRuleInfo { get; set; } + public bool SplitAdvanced { get; set; } + public string SplitOutputFolder { get; set; } + public int SplitNumberOfParts { get; set; } + public string SplitVia { get; set; } + public bool JoinCorrectTimeCodes { get; set; } + public int JoinAddMs { get; set; } + public int SplitLongLinesMax { get; set; } + public string LastShowEarlierOrLaterSelection { get; set; } + public string NewEmptyTranslationText { get; set; } + public string BatchConvertOutputFolder { get; set; } + public bool BatchConvertOverwriteExisting { get; set; } + public bool BatchConvertSaveInSourceFolder { get; set; } + public bool BatchConvertRemoveFormatting { get; set; } + public bool BatchConvertRemoveFormattingAll { get; set; } + public bool BatchConvertRemoveFormattingItalic { get; set; } + public bool BatchConvertRemoveFormattingBold { get; set; } + public bool BatchConvertRemoveFormattingUnderline { get; set; } + public bool BatchConvertRemoveFormattingFontName { get; set; } + public bool BatchConvertRemoveFormattingColor { get; set; } + public bool BatchConvertRemoveFormattingAlignment { get; set; } + public bool BatchConvertRemoveStyle { get; set; } + public bool BatchConvertBridgeGaps { get; set; } + public bool BatchConvertFixCasing { get; set; } + public bool BatchConvertRemoveTextForHI { get; set; } + public bool BatchConvertConvertColorsToDialog { get; set; } + public bool BatchConvertBeautifyTimeCodes { get; set; } + public bool BatchConvertAutoTranslate { get; set; } + public bool BatchConvertFixCommonErrors { get; set; } + public bool BatchConvertMultipleReplace { get; set; } + public bool BatchConvertFixRtl { get; set; } + public string BatchConvertFixRtlMode { get; set; } + public bool BatchConvertSplitLongLines { get; set; } + public bool BatchConvertAutoBalance { get; set; } + public bool BatchConvertSetMinDisplayTimeBetweenSubtitles { get; set; } + public bool BatchConvertMergeShortLines { get; set; } + public bool BatchConvertRemoveLineBreaks { get; set; } + public bool BatchConvertMergeSameText { get; set; } + public bool BatchConvertMergeSameTimeCodes { get; set; } + public bool BatchConvertChangeFrameRate { get; set; } + public bool BatchConvertChangeSpeed { get; set; } + public bool BatchConvertAdjustDisplayDuration { get; set; } + public bool BatchConvertApplyDurationLimits { get; set; } + public bool BatchConvertDeleteLines { get; set; } + public bool BatchConvertAssaChangeRes { get; set; } + public bool BatchConvertSortBy { get; set; } + public string BatchConvertSortByChoice { get; set; } + public bool BatchConvertOffsetTimeCodes { get; set; } + public bool BatchConvertScanFolderIncludeVideo { get; set; } + public string BatchConvertLanguage { get; set; } + public string BatchConvertFormat { get; set; } + public string BatchConvertAssStyles { get; set; } + public string BatchConvertSsaStyles { get; set; } + public bool BatchConvertUseStyleFromSource { get; set; } + public string BatchConvertExportCustomTextTemplate { get; set; } + public bool BatchConvertTsOverrideXPosition { get; set; } + public bool BatchConvertTsOverrideYPosition { get; set; } + public int BatchConvertTsOverrideBottomMargin { get; set; } + public string BatchConvertTsOverrideHAlign { get; set; } + public int BatchConvertTsOverrideHMargin { get; set; } + public bool BatchConvertTsOverrideScreenSize { get; set; } + public int BatchConvertTsScreenWidth { get; set; } + public int BatchConvertTsScreenHeight { get; set; } + public string BatchConvertTsFileNameAppend { get; set; } + public bool BatchConvertTsOnlyTeletext { get; set; } + public string BatchConvertMkvLanguageCodeStyle { get; set; } + public string BatchConvertOcrEngine { get; set; } + public string BatchConvertOcrLanguage { get; set; } + public string WaveformBatchLastFolder { get; set; } + public string ModifySelectionText { get; set; } + public string ModifySelectionRule { get; set; } + public bool ModifySelectionCaseSensitive { get; set; } + public string ExportVobSubFontName { get; set; } + public int ExportVobSubFontSize { get; set; } + public string ExportVobSubVideoResolution { get; set; } + public string ExportVobSubLanguage { get; set; } + public bool ExportVobSubSimpleRendering { get; set; } + public bool ExportVobAntiAliasingWithTransparency { get; set; } + public string ExportBluRayFontName { get; set; } + public int ExportBluRayFontSize { get; set; } + public string ExportFcpFontName { get; set; } + public string ExportFontNameOther { get; set; } + public int ExportFcpFontSize { get; set; } + public string ExportFcpImageType { get; set; } + public string ExportFcpPalNtsc { get; set; } + public string ExportBdnXmlImageType { get; set; } + public int ExportLastFontSize { get; set; } + public int ExportLastLineHeight { get; set; } + public int ExportLastBorderWidth { get; set; } + public bool ExportLastFontBold { get; set; } + public string ExportBluRayVideoResolution { get; set; } + public string ExportFcpVideoResolution { get; set; } + public Color ExportFontColor { get; set; } + public Color ExportBorderColor { get; set; } + public Color ExportShadowColor { get; set; } + public int ExportBoxBorderSize { get; set; } + public string ExportBottomMarginUnit { get; set; } + public int ExportBottomMarginPercent { get; set; } + public int ExportBottomMarginPixels { get; set; } + public string ExportLeftRightMarginUnit { get; set; } + public int ExportLeftRightMarginPercent { get; set; } + public int ExportLeftRightMarginPixels { get; set; } + public int ExportHorizontalAlignment { get; set; } + public int ExportBluRayBottomMarginPercent { get; set; } + public int ExportBluRayBottomMarginPixels { get; set; } + public int ExportBluRayShadow { get; set; } + public bool ExportBluRayRemoveSmallGaps { get; set; } + public string ExportCdgBackgroundImage { get; set; } + public int ExportCdgMarginLeft { get; set; } + public int ExportCdgMarginBottom { get; set; } + public string ExportCdgFormat { get; set; } + public int Export3DType { get; set; } + public int Export3DDepth { get; set; } + public int ExportLastShadowTransparency { get; set; } + public double ExportLastFrameRate { get; set; } + public bool ExportFullFrame { get; set; } + public bool ExportFcpFullPathUrl { get; set; } + public string ExportPenLineJoin { get; set; } + public Color BinEditBackgroundColor { get; set; } + public Color BinEditImageBackgroundColor { get; set; } + public int BinEditTopMargin { get; set; } + public int BinEditBottomMargin { get; set; } + public int BinEditLeftMargin { get; set; } + public int BinEditRightMargin { get; set; } + public string BinEditStartPosition { get; set; } + public string BinEditStartSize { get; set; } + public bool BinEditShowColumnGap { get; set; } + public bool FixCommonErrorsFixOverlapAllowEqualEndStart { get; set; } + public bool FixCommonErrorsSkipStepOne { get; set; } + public string ImportTextSplitting { get; set; } + public string ImportTextSplittingLineMode { get; set; } + public string ImportTextLineBreak { get; set; } + public bool ImportTextMergeShortLines { get; set; } + public bool ImportTextRemoveEmptyLines { get; set; } + public bool ImportTextAutoSplitAtBlank { get; set; } + public bool ImportTextRemoveLinesNoLetters { get; set; } + public bool ImportTextGenerateTimeCodes { get; set; } + public bool ImportTextTakeTimeCodeFromFileName { get; set; } + public bool ImportTextAutoBreak { get; set; } + public bool ImportTextAutoBreakAtEnd { get; set; } + public decimal ImportTextGap { get; set; } + public decimal ImportTextAutoSplitNumberOfLines { get; set; } + public string ImportTextAutoBreakAtEndMarkerText { get; set; } + public bool ImportTextDurationAuto { get; set; } + public decimal ImportTextFixedDuration { get; set; } + public string GenerateTimeCodePatterns { get; set; } + public string MusicSymbolStyle { get; set; } + public int BridgeGapMilliseconds { get; set; } + public int BridgeGapMillisecondsMinGap { get; set; } + public string ExportCustomTemplates { get; set; } + public string ChangeCasingChoice { get; set; } + public bool ChangeCasingNormalFixNames { get; set; } + public bool ChangeCasingNormalOnlyUppercase { get; set; } + public bool UseNoLineBreakAfter { get; set; } + public string NoLineBreakAfterEnglish { get; set; } + public List FindHistory { get; set; } + public string ReplaceIn { get; set; } + public string ExportTextFormatText { get; set; } + public bool ExportTextRemoveStyling { get; set; } + public bool ExportTextShowLineNumbers { get; set; } + public bool ExportTextShowLineNumbersNewLine { get; set; } + public bool ExportTextShowTimeCodes { get; set; } + public bool ExportTextShowTimeCodesNewLine { get; set; } + public bool ExportTextNewLineAfterText { get; set; } + public bool ExportTextNewLineBetweenSubtitles { get; set; } + public string ExportTextTimeCodeFormat { get; set; } + public string ExportTextTimeCodeSeparator { get; set; } + public bool VideoOffsetKeepTimeCodes { get; set; } + public int MoveStartEndMs { get; set; } + public decimal AdjustDurationSeconds { get; set; } + public int AdjustDurationPercent { get; set; } + public string AdjustDurationLast { get; set; } + public bool AdjustDurationExtendOnly { get; set; } + public bool AdjustDurationExtendEnforceDurationLimits { get; set; } + public bool AdjustDurationExtendCheckShotChanges { get; set; } + public bool ChangeSpeedAllowOverlap { get; set; } + public bool AutoBreakCommaBreakEarly { get; set; } + public bool AutoBreakDashEarly { get; set; } + public bool AutoBreakLineEndingEarly { get; set; } + public bool AutoBreakUsePixelWidth { get; set; } + public bool AutoBreakPreferBottomHeavy { get; set; } + public double AutoBreakPreferBottomPercent { get; set; } + public bool ApplyMinimumDurationLimit { get; set; } + public bool ApplyMinimumDurationLimitCheckShotChanges { get; set; } + public bool ApplyMaximumDurationLimit { get; set; } + public int MergeShortLinesMaxGap { get; set; } + public int MergeShortLinesMaxChars { get; set; } + public bool MergeShortLinesOnlyContinuous { get; set; } + public int MergeTextWithSameTimeCodesMaxGap { get; set; } + public bool MergeTextWithSameTimeCodesMakeDialog { get; set; } + public bool MergeTextWithSameTimeCodesReBreakLines { get; set; } + public int MergeLinesWithSameTextMaxMs { get; set; } + public bool MergeLinesWithSameTextIncrement { get; set; } + public bool ConvertColorsToDialogRemoveColorTags { get; set; } + public bool ConvertColorsToDialogAddNewLines { get; set; } + public bool ConvertColorsToDialogReBreakLines { get; set; } + public string ColumnPasteColumn { get; set; } + public string ColumnPasteOverwriteMode { get; set; } + public string AssaAttachmentFontTextPreview { get; set; } + public string AssaSetPositionTarget { get; set; } + public string VisualSyncStartSize { get; set; } + public Color BlankVideoColor { get; set; } + public bool BlankVideoUseCheckeredImage { get; set; } + public int BlankVideoMinutes { get; set; } + public decimal BlankVideoFrameRate { get; set; } + public Color AssaProgressBarForeColor { get; set; } + public Color AssaProgressBarBackColor { get; set; } + public Color AssaProgressBarTextColor { get; set; } + public int AssaProgressBarHeight { get; set; } + public int AssaProgressBarSplitterWidth { get; set; } + public int AssaProgressBarSplitterHeight { get; set; } + public string AssaProgressBarFontName { get; set; } + public int AssaProgressBarFontSize { get; set; } + public bool AssaProgressBarTopAlign { get; set; } + public string AssaProgressBarTextAlign { get; set; } + + + public int AssaBgBoxPaddingLeft { get; set; } + public int AssaBgBoxPaddingRight { get; set; } + public int AssaBgBoxPaddingTop { get; set; } + public int AssaBgBoxPaddingBottom { get; set; } + public int AssaBgBoxDrawingMarginV { get; set; } + public int AssaBgBoxDrawingMarginH { get; set; } + public string AssaBgBoxDrawingAlignment { get; set; } + public Color AssaBgBoxColor { get; set; } + public Color AssaBgBoxOutlineColor { get; set; } + public Color AssaBgBoxShadowColor { get; set; } + public Color AssaBgBoxTransparentColor { get; set; } + public string AssaBgBoxStyle { get; set; } + public int AssaBgBoxStyleRadius { get; set; } + public int AssaBgBoxStyleCircleAdjustY { get; set; } + public int AssaBgBoxStyleSpikesStep { get; set; } + public int AssaBgBoxStyleSpikesHeight { get; set; } + public int AssaBgBoxStyleBubblesStep { get; set; } + public int AssaBgBoxStyleBubblesHeight { get; set; } + public int AssaBgBoxOutlineWidth { get; set; } + public int AssaBgBoxLayer { get; set; } + public string AssaBgBoxDrawing { get; set; } + public bool AssaBgBoxDrawingFileWatch { get; set; } + public bool AssaBgBoxDrawingOnly { get; set; } + + + public string GenVideoFontName { get; set; } + public bool GenVideoFontBold { get; set; } + public decimal GenVideoOutline { get; set; } + public int GenVideoFontSize { get; set; } + public string GenVideoEncoding { get; set; } + public string GenVideoPreset { get; set; } + public string GenVideoCrf { get; set; } + public string GenVideoTune { get; set; } + public string GenVideoAudioEncoding { get; set; } + public bool GenVideoAudioForceStereo { get; set; } + public string GenVideoAudioSampleRate { get; set; } + public bool GenVideoTargetFileSize { get; set; } + public float GenVideoFontSizePercentOfHeight { get; set; } + public bool GenVideoNonAssaBox { get; set; } + public Color GenVideoNonAssaBoxColor { get; set; } + public Color GenVideoNonAssaTextColor { get; set; } + public bool GenVideoNonAssaAlignRight { get; set; } + public bool GenVideoNonAssaFixRtlUnicode { get; set; } + public string GenVideoEmbedOutputExt { get; set; } + public string GenVideoEmbedOutputSuffix { get; set; } + public string GenVideoEmbedOutputReplace { get; set; } + public bool GenVideoDeleteInputVideoFile { get; set; } + public bool GenVideoUseOutputFolder { get; set; } + public string GenVideoOutputFolder { get; set; } + public string GenVideoOutputFileSuffix { get; set; } + + public bool VoskPostProcessing { get; set; } + public string VoskModel { get; set; } + public string WhisperChoice { get; set; } + public bool WhisperIgnoreVersion { get; set; } + + public bool WhisperDeleteTempFiles { get; set; } + public string WhisperModel { get; set; } + public string WhisperLanguageCode { get; set; } + public string WhisperLocation { get; set; } + public string WhisperCtranslate2Location { get; set; } + public string WhisperPurfviewFasterWhisperLocation { get; set; } + public string WhisperPurfviewFasterWhisperDefaultCmd { get; set; } + public string WhisperXLocation { get; set; } + public string WhisperStableTsLocation { get; set; } + public string WhisperCppModelLocation { get; set; } + public string WhisperExtraSettings { get; set; } + public string WhisperExtraSettingsHistory { get; set; } + public bool WhisperAutoAdjustTimings { get; set; } + public bool WhisperUseLineMaxChars { get; set; } + public bool WhisperPostProcessingAddPeriods { get; set; } + public bool WhisperPostProcessingMergeLines { get; set; } + public bool WhisperPostProcessingSplitLines { get; set; } + public bool WhisperPostProcessingFixCasing { get; set; } + public bool WhisperPostProcessingFixShortDuration { get; set; } + public int AudioToTextLineMaxChars { get; set; } + public int AudioToTextLineMaxCharsJp { get; set; } + public int AudioToTextLineMaxCharsCn { get; set; } + public int BreakLinesLongerThan { get; set; } + public int UnbreakLinesLongerThan { get; set; } + + public ToolsSettings() + { + AssaTagTemplates = new List(); + StartSceneIndex = 1; + EndSceneIndex = 1; + VerifyPlaySeconds = 2; + FixShortDisplayTimesAllowMoveStartTime = false; + RemoveEmptyLinesBetweenText = true; + MusicSymbol = "♪"; + MusicSymbolReplace = "♪,â™," + // ♪ + ♫ in UTF-8 opened as ANSI + ",," + // music symbols by subtitle creator + "#,*,¶"; // common music symbols + UnicodeSymbolsToInsert = "♪;♫;°;☺;☹;♥;©;☮;☯;Σ;∞;≡;⇒;π"; + SpellCheckAutoChangeNameCasing = false; + SpellCheckAutoChangeNamesUseSuggestions = false; + OcrFixUseHardcodedRules = true; + OcrGoogleCloudVisionSeHandlesTextMerge = true; + OcrBinaryImageCompareRgbThreshold = 200; + OcrTesseract4RgbThreshold = 200; + OcrAddLetterRow1 = "♪;á;é;í;ó;ö;ő;ú;ü;ű;ç;ñ;å;¿"; + OcrAddLetterRow2 = "♫;Á;É;Í;Ó;Ö;Ő;Ú;Ü;Ű;Ç;Ñ;Å;¡"; + OcrTrainFonts = "Arial;Calibri;Corbel;Futura Std Book;Futura Bis;Helvetica Neue;Lucida Console;Tahoma;Trebuchet MS;Verdana"; + OcrTrainMergedLetters = "ff ft fi fj fy fl rf rt rv rw ry rt rz ryt tt TV tw yt yw wy wf ryt xy"; + OcrUseWordSplitList = true; + OcrUseWordSplitListAvoidPropercase = true; + MicrosoftTranslatorTokenEndpoint = "https://api.cognitive.microsoft.com/sts/v1.0/issueToken"; + GoogleTranslateNoKeyWarningShow = true; + GoogleApiV1ChunkSize = 1500; + GoogleTranslateLastTargetLanguage = "en"; + AutoTranslateNllbServeUrl = "http://127.0.0.1:6060/"; + AutoTranslateNllbApiUrl = "http://localhost:7860/api/v2/"; + AutoTranslateLibreUrl = "http://localhost:5000/"; + AutoTranslateSeamlessM4TUrl = "http://localhost:5000/"; + AutoTranslateDeepLUrl = "https://api-free.deepl.com/"; + ChatGptUrl = "https://api.openai.com/v1/chat/completions"; + ChatGptPrompt = "Translate from {0} to {1}, keep punctuation as input, do not censor the translation, give only the output without comments:"; + ChatGptModel = "gpt-4o"; + LmStudioPrompt = "Translate from {0} to {1}, keep punctuation as input, do not censor the translation, give only the output without comments:"; + OllamaApiUrl = "http://localhost:11434/api/generate"; + OllamaModels = "llama3,llama2,mistral,dolphin-phi,phi,neural-chat,starling-lm,codellama,llama2-uncensored,llama2:13b,llama2:70b,orca-mini,vicuna,llava,gemma:2b,gemma:7b"; + OllamaModel = "llama3"; + OllamaPrompt = "Translate from {0} to {1}, keep punctuation as input, do not censor the translation, give only the output without comments or notes:"; + AnthropicApiUrl = "https://api.anthropic.com/v1/messages"; + AnthropicPrompt = "Translate from {0} to {1}, keep sentences in {1} as they are, do not censor the translation, give only the output without comments:"; + AnthropicApiModel = "claude-3-5-sonnet-20240620"; + TextToSpeechAzureRegion = "westeurope"; + AutoTranslateMaxBytes = 2000; + TextToSpeechAddToVideoFile = true; + TranslateAllowSplit = true; + TranslateViaCopyPasteAutoCopyToClipboard = true; + TranslateViaCopyPasteMaxSize = 5000; + TranslateViaCopyPasteSeparator = "."; + CheckOneLetterWords = true; + SpellCheckEnglishAllowInQuoteAsIng = false; + SpellCheckShowCompletedMessage = true; + ListViewSyntaxColorDurationSmall = true; + ListViewSyntaxColorDurationBig = true; + ListViewSyntaxColorOverlap = true; + ListViewSyntaxColorLongLines = true; + ListViewSyntaxColorWideLines = false; + ListViewSyntaxMoreThanXLines = true; + ListViewSyntaxColorGap = true; + ListViewSyntaxErrorColor = Color.FromArgb(255, 180, 150); + ListViewUnfocusedSelectedColor = Color.LightBlue; + Color1 = Color.Yellow; + Color2 = Color.FromArgb(byte.MaxValue, 0, 0); + Color3 = Color.FromArgb(0, byte.MaxValue, 0); + Color4 = Color.Cyan; + Color5 = Color.Black; + Color6 = Color.White; + Color7 = Color.Orange; + Color8 = Color.Pink; + ListViewShowColumnStartTime = true; + ListViewShowColumnEndTime = true; + ListViewShowColumnDuration = true; + SplitAdvanced = false; + SplitNumberOfParts = 3; + SplitVia = "Lines"; + JoinCorrectTimeCodes = true; + SplitLongLinesMax = 90; + NewEmptyTranslationText = string.Empty; + BatchConvertLanguage = string.Empty; + BatchConvertTsOverrideBottomMargin = 5; // pct + BatchConvertTsScreenWidth = 1920; + BatchConvertTsScreenHeight = 1080; + BatchConvertOcrEngine = "Tesseract"; + BatchConvertOcrLanguage = "en"; + BatchConvertTsOverrideHAlign = "center"; // left center right + BatchConvertTsOverrideHMargin = 5; // pct + BatchConvertTsFileNameAppend = ".{two-letter-country-code}"; + BatchConvertMkvLanguageCodeStyle = "2"; + ModifySelectionRule = "Contains"; + ModifySelectionText = string.Empty; + ImportTextDurationAuto = true; + ImportTextGap = 84; + ImportTextFixedDuration = 2500; + GenerateTimeCodePatterns = "HH:mm:ss;yyyy-MM-dd;dddd dd MMMM yyyy
HH:mm:ss;dddd dd MMMM yyyy
hh:mm:ss tt;s"; + MusicSymbolStyle = "Double"; // 'Double' or 'Single' + ExportFontColor = Color.White; + ExportBorderColor = Color.FromArgb(255, 0, 0, 0); + ExportShadowColor = Color.FromArgb(255, 0, 0, 0); + ExportBoxBorderSize = 8; + ExportBottomMarginUnit = "%"; + ExportBottomMarginPercent = 5; + ExportBottomMarginPixels = 15; + ExportLeftRightMarginUnit = "%"; + ExportLeftRightMarginPercent = 5; + ExportLeftRightMarginPixels = 15; + ExportHorizontalAlignment = 1; // 1=center (0=left, 2=right) + ExportVobSubSimpleRendering = false; + ExportVobAntiAliasingWithTransparency = true; + ExportBluRayBottomMarginPercent = 5; + ExportBluRayBottomMarginPixels = 20; + ExportBluRayShadow = 1; + Export3DType = 0; + Export3DDepth = 0; + ExportCdgMarginLeft = 160; + ExportCdgMarginBottom = 67; + ExportLastShadowTransparency = 200; + ExportLastFrameRate = 24.0d; + ExportFullFrame = false; + ExportPenLineJoin = "Round"; + ExportFcpImageType = "Bmp"; + ExportFcpPalNtsc = "PAL"; + ExportLastBorderWidth = 4; + BinEditBackgroundColor = Color.Black; + BinEditImageBackgroundColor = Color.Blue; + BinEditTopMargin = 10; + BinEditBottomMargin = 10; + BinEditLeftMargin = 10; + BinEditRightMargin = 10; + BridgeGapMilliseconds = 100; + BridgeGapMillisecondsMinGap = 24; + ChangeCasingNormalFixNames = true; + ExportCustomTemplates = "SubRipÆÆ{number}\r\n{start} --> {end}\r\n{text}\r\n\r\nÆhh:mm:ss,zzzÆ[Do not modify]ÆÆsrtæMicroDVDÆÆ{{start}}{{end}}{text}\r\nÆffÆ||ÆÆsub"; + UseNoLineBreakAfter = false; + NoLineBreakAfterEnglish = " Mrs.; Ms.; Mr.; Dr.; a; an; the; my; my own; your; his; our; their; it's; is; are;'s; 're; would;'ll;'ve;'d; will; that; which; who; whom; whose; whichever; whoever; wherever; each; either; every; all; both; few; many; sevaral; all; any; most; been; been doing; none; some; my own; your own; his own; her own; our own; their own; I; she; he; as per; as regards; into; onto; than; where as; abaft; aboard; about; above; across; afore; after; against; along; alongside; amid; amidst; among; amongst; anenst; apropos; apud; around; as; aside; astride; at; athwart; atop; barring; before; behind; below; beneath; beside; besides; between; betwixt; beyond; but; by; circa; ca; concerning; despite; down; during; except; excluding; following; for; forenenst; from; given; in; including; inside; into; lest; like; minus; modulo; near; next; of; off; on; onto; opposite; out; outside; over; pace; past; per; plus; pro; qua; regarding; round; sans; save; since; than; through; thru; throughout; thruout; till; to; toward; towards; under; underneath; unlike; until; unto; up; upon; versus; vs; via; vice; with; within; without; considering; respecting; one; two; another; three; our; five; six; seven; eight; nine; ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen; seventeen; eighteen; nineteen; twenty; thirty; forty; fifty; sixty; seventy; eighty; ninety; hundred; thousand; million; billion; trillion; while; however; what; zero; little; enough; after; although; and; as; if; though; although; because; before; both; but; even; how; than; nor; or; only; unless; until; yet; was; were"; + FindHistory = new List(); + ExportTextFormatText = "None"; + ExportTextRemoveStyling = true; + ExportTextShowLineNumbersNewLine = true; + ExportTextShowTimeCodesNewLine = true; + ExportTextNewLineAfterText = true; + ExportTextNewLineBetweenSubtitles = true; + ImportTextLineBreak = "|"; + ImportTextAutoSplitNumberOfLines = 2; + ImportTextAutoSplitAtBlank = true; + ImportTextAutoBreakAtEndMarkerText = ".!?"; + ImportTextAutoBreakAtEnd = true; + MoveStartEndMs = 100; + AdjustDurationSeconds = 0.1m; + AdjustDurationPercent = 120; + AdjustDurationExtendOnly = true; + AdjustDurationExtendEnforceDurationLimits = true; + AdjustDurationExtendCheckShotChanges = true; + AutoBreakCommaBreakEarly = false; + AutoBreakDashEarly = true; + AutoBreakLineEndingEarly = false; + AutoBreakUsePixelWidth = true; + AutoBreakPreferBottomHeavy = true; + AutoBreakPreferBottomPercent = 5; + ApplyMinimumDurationLimit = true; + ApplyMinimumDurationLimitCheckShotChanges = true; + ApplyMaximumDurationLimit = true; + MergeShortLinesMaxGap = 250; + MergeShortLinesMaxChars = 55; + MergeShortLinesOnlyContinuous = true; + MergeTextWithSameTimeCodesMaxGap = 250; + MergeTextWithSameTimeCodesReBreakLines = false; + MergeLinesWithSameTextMaxMs = 250; + MergeLinesWithSameTextIncrement = true; + MergeTextWithSameTimeCodesMakeDialog = false; + ConvertColorsToDialogRemoveColorTags = true; + ConvertColorsToDialogAddNewLines = true; + ConvertColorsToDialogReBreakLines = false; + ColumnPasteColumn = "all"; + ColumnPasteOverwriteMode = "overwrite"; + AssaAttachmentFontTextPreview = + "Hello World!" + Environment.NewLine + + "こんにちは世界" + Environment.NewLine + + "你好世界!" + Environment.NewLine + + "1234567890"; + BlankVideoColor = Color.CadetBlue; + BlankVideoUseCheckeredImage = true; + BlankVideoMinutes = 2; + BlankVideoFrameRate = 23.976m; + AssaProgressBarForeColor = Color.FromArgb(200, 200, 0, 0); + AssaProgressBarBackColor = Color.FromArgb(150, 80, 80, 80); + AssaProgressBarTextColor = Color.White; + AssaProgressBarHeight = 40; + AssaProgressBarSplitterWidth = 2; + AssaProgressBarSplitterHeight = 40; + AssaProgressBarFontName = "Arial"; + AssaProgressBarFontSize = 30; + AssaProgressBarTextAlign = "left"; + + AssaBgBoxPaddingLeft = 10; + AssaBgBoxPaddingRight = 10; + AssaBgBoxPaddingTop = 6; + AssaBgBoxPaddingBottom = 6; + AssaBgBoxColor = Color.FromArgb(200, 0, 0, 0); + AssaBgBoxOutlineColor = Color.FromArgb(200, 80, 80, 80); + AssaBgBoxShadowColor = Color.FromArgb(100, 0, 0, 0); + AssaBgBoxTransparentColor = Color.Cyan; + AssaBgBoxStyle = "square"; + AssaBgBoxStyleRadius = 30; + AssaBgBoxStyleCircleAdjustY = 30; + AssaBgBoxStyleSpikesStep = 15; + AssaBgBoxStyleSpikesHeight = 30; + AssaBgBoxStyleBubblesStep = 75; + AssaBgBoxStyleBubblesHeight = 40; + AssaBgBoxOutlineWidth = 0; + AssaBgBoxLayer = -11893; + AssaBgBoxDrawingFileWatch = true; + + GenVideoEncoding = "libx264"; + GenVideoPreset = "medium"; + GenVideoCrf = "23"; + GenVideoTune = "film"; + GenVideoAudioEncoding = "copy"; + GenVideoAudioForceStereo = true; + GenVideoAudioSampleRate = "48000"; + GenVideoFontBold = true; + GenVideoOutline = 6; + GenVideoFontSizePercentOfHeight = 0.078f; + GenVideoNonAssaBox = true; + GenVideoNonAssaBoxColor = Color.FromArgb(150, 0, 0, 0); + GenVideoNonAssaTextColor = Color.White; + GenVideoEmbedOutputSuffix = "embed"; + GenVideoEmbedOutputReplace = "embed" + Environment.NewLine + "SoftSub" + Environment.NewLine + "SoftSubbed"; + GenVideoOutputFileSuffix = "_new"; + VoskPostProcessing = true; + WhisperChoice = Configuration.IsRunningOnWindows ? AudioToText.WhisperChoice.PurfviewFasterWhisper : AudioToText.WhisperChoice.OpenAi; + WhisperDeleteTempFiles = true; + WhisperPurfviewFasterWhisperDefaultCmd = "--standard"; + WhisperExtraSettings = ""; + WhisperLanguageCode = "en"; + WhisperAutoAdjustTimings = true; + WhisperPostProcessingAddPeriods = false; + WhisperPostProcessingMergeLines = true; + WhisperPostProcessingSplitLines = true; + WhisperPostProcessingFixCasing = false; + WhisperPostProcessingFixShortDuration = true; + AudioToTextLineMaxChars = 86; + AudioToTextLineMaxCharsJp = 32; + AudioToTextLineMaxCharsCn = 36; + } + } +} \ No newline at end of file diff --git a/src/libse/Settings/VerifyCompletenessSettings.cs b/src/libse/Settings/VerifyCompletenessSettings.cs new file mode 100644 index 000000000..1d95208f2 --- /dev/null +++ b/src/libse/Settings/VerifyCompletenessSettings.cs @@ -0,0 +1,18 @@ +namespace Nikse.SubtitleEdit.Core.Settings +{ + public class VerifyCompletenessSettings + { + public ListSortEnum ListSort { get; set; } + + public enum ListSortEnum : int + { + Coverage = 0, + Time = 1, + } + + public VerifyCompletenessSettings() + { + ListSort = ListSortEnum.Coverage; + } + } +} \ No newline at end of file diff --git a/src/libse/Settings/VideoControlsSettings.cs b/src/libse/Settings/VideoControlsSettings.cs new file mode 100644 index 000000000..06e882acc --- /dev/null +++ b/src/libse/Settings/VideoControlsSettings.cs @@ -0,0 +1,87 @@ +using System.Drawing; + +namespace Nikse.SubtitleEdit.Core.Settings +{ + public class VideoControlsSettings + { + public string CustomSearchText1 { get; set; } + public string CustomSearchText2 { get; set; } + public string CustomSearchText3 { get; set; } + public string CustomSearchText4 { get; set; } + public string CustomSearchText5 { get; set; } + public string CustomSearchUrl1 { get; set; } + public string CustomSearchUrl2 { get; set; } + public string CustomSearchUrl3 { get; set; } + public string CustomSearchUrl4 { get; set; } + public string CustomSearchUrl5 { get; set; } + public string LastActiveTab { get; set; } + public bool WaveformDrawGrid { get; set; } + public bool WaveformDrawCps { get; set; } + public bool WaveformDrawWpm { get; set; } + public bool WaveformAllowOverlap { get; set; } + public bool WaveformFocusOnMouseEnter { get; set; } + public bool WaveformListViewFocusOnMouseEnter { get; set; } + public bool WaveformSetVideoPositionOnMoveStartEnd { get; set; } + public bool WaveformSingleClickSelect { get; set; } + public bool WaveformSnapToShotChanges { get; set; } + public int WaveformShotChangeStartTimeBeforeMs { get; set; } + public int WaveformShotChangeStartTimeAfterMs { get; set; } + public int WaveformShotChangeEndTimeBeforeMs { get; set; } + public int WaveformShotChangeEndTimeAfterMs { get; set; } + public int WaveformBorderHitMs { get; set; } + public Color WaveformGridColor { get; set; } + public Color WaveformColor { get; set; } + public Color WaveformSelectedColor { get; set; } + public Color WaveformBackgroundColor { get; set; } + public Color WaveformTextColor { get; set; } + public Color WaveformCursorColor { get; set; } + public Color WaveformChaptersColor { get; set; } + public int WaveformTextSize { get; set; } + public bool WaveformTextBold { get; set; } + public string WaveformDoubleClickOnNonParagraphAction { get; set; } + public string WaveformRightClickOnNonParagraphAction { get; set; } + public bool WaveformMouseWheelScrollUpIsForward { get; set; } + public bool WaveformLabelShowCodec { get; set; } + public bool GenerateSpectrogram { get; set; } + public string SpectrogramAppearance { get; set; } + public int WaveformMinimumSampleRate { get; set; } + public double WaveformSeeksSilenceDurationSeconds { get; set; } + public double WaveformSeeksSilenceMaxVolume { get; set; } + public bool WaveformUnwrapText { get; set; } + public bool WaveformHideWpmCpsLabels { get; set; } + + + public VideoControlsSettings() + { + CustomSearchText1 = "The Free Dictionary"; + CustomSearchUrl1 = "https://www.thefreedictionary.com/{0}"; + CustomSearchText2 = "Wikipedia"; + CustomSearchUrl2 = "https://en.wikipedia.org/wiki?search={0}"; + CustomSearchText3 = "DuckDuckGo"; + CustomSearchUrl3 = "https://duckduckgo.com/?q={0}"; + + LastActiveTab = "Translate"; + WaveformDrawGrid = true; + WaveformAllowOverlap = false; + WaveformBorderHitMs = 15; + WaveformGridColor = Color.FromArgb(255, 20, 20, 18); + WaveformColor = Color.FromArgb(255, 160, 240, 30); + WaveformSelectedColor = Color.FromArgb(255, 230, 0, 0); + WaveformBackgroundColor = Color.Black; + WaveformTextColor = Color.Gray; + WaveformCursorColor = Color.Turquoise; + WaveformChaptersColor = Color.FromArgb(255, 104, 33, 122); + WaveformTextSize = 9; + WaveformTextBold = true; + WaveformDoubleClickOnNonParagraphAction = "PlayPause"; + WaveformDoubleClickOnNonParagraphAction = string.Empty; + WaveformMouseWheelScrollUpIsForward = true; + WaveformLabelShowCodec = true; + SpectrogramAppearance = "OneColorGradient"; + WaveformMinimumSampleRate = 126; + WaveformSeeksSilenceDurationSeconds = 0.3; + WaveformSeeksSilenceMaxVolume = 0.1; + WaveformSnapToShotChanges = true; + } + } +} \ No newline at end of file diff --git a/src/libse/Settings/VobSubOcrSettings.cs b/src/libse/Settings/VobSubOcrSettings.cs new file mode 100644 index 000000000..6c0a6f0e3 --- /dev/null +++ b/src/libse/Settings/VobSubOcrSettings.cs @@ -0,0 +1,77 @@ +namespace Nikse.SubtitleEdit.Core.Settings +{ + public class VobSubOcrSettings + { + public int XOrMorePixelsMakesSpace { get; set; } + public double AllowDifferenceInPercent { get; set; } + public double BlurayAllowDifferenceInPercent { get; set; } + public string LastImageCompareFolder { get; set; } + public int LastModiLanguageId { get; set; } + public string LastOcrMethod { get; set; } + public string TesseractLastLanguage { get; set; } + public bool UseTesseractFallback { get; set; } + public bool UseItalicsInTesseract { get; set; } + public int TesseractEngineMode { get; set; } + public bool UseMusicSymbolsInTesseract { get; set; } + public bool RightToLeft { get; set; } + public bool TopToBottom { get; set; } + public int DefaultMillisecondsForUnknownDurations { get; set; } + public bool FixOcrErrors { get; set; } + public bool PromptForUnknownWords { get; set; } + public bool GuessUnknownWords { get; set; } + public bool AutoBreakSubtitleIfMoreThanTwoLines { get; set; } + public double ItalicFactor { get; set; } + + public bool LineOcrDraw { get; set; } + public int LineOcrMinHeightSplit { get; set; } + public bool LineOcrAdvancedItalic { get; set; } + public string LineOcrLastLanguages { get; set; } + public string LineOcrLastSpellCheck { get; set; } + public int LineOcrLinesToAutoGuess { get; set; } + public int LineOcrMinLineHeight { get; set; } + public int LineOcrMaxLineHeight { get; set; } + public int LineOcrMaxErrorPixels { get; set; } + public string LastBinaryImageCompareDb { get; set; } + public string LastBinaryImageSpellCheck { get; set; } + public bool BinaryAutoDetectBestDb { get; set; } + public string LastTesseractSpellCheck { get; set; } + public bool CaptureTopAlign { get; set; } + public int UnfocusedAttentionBlinkCount { get; set; } + public int UnfocusedAttentionPlaySoundCount { get; set; } + public string CloudVisionApiKey { get; set; } + public string CloudVisionLanguage { get; set; } + public bool CloudVisionSendOriginalImages { get; set; } + + public VobSubOcrSettings() + { + XOrMorePixelsMakesSpace = 8; + AllowDifferenceInPercent = 1.0; + BlurayAllowDifferenceInPercent = 7.5; + LastImageCompareFolder = "English"; + LastModiLanguageId = 9; + LastOcrMethod = "Tesseract"; + UseItalicsInTesseract = true; + TesseractEngineMode = 3; // Default, based on what is available (T4 docs) + UseMusicSymbolsInTesseract = true; + UseTesseractFallback = true; + RightToLeft = false; + TopToBottom = true; + DefaultMillisecondsForUnknownDurations = 5000; + FixOcrErrors = true; + PromptForUnknownWords = true; + GuessUnknownWords = true; + AutoBreakSubtitleIfMoreThanTwoLines = true; + ItalicFactor = 0.2f; + LineOcrLinesToAutoGuess = 100; + LineOcrMaxErrorPixels = 45; + LastBinaryImageCompareDb = "Latin+Latin"; + BinaryAutoDetectBestDb = true; + CaptureTopAlign = false; + UnfocusedAttentionBlinkCount = 50; + UnfocusedAttentionPlaySoundCount = 1; + CloudVisionApiKey = string.Empty; + CloudVisionLanguage = "en"; + CloudVisionSendOriginalImages = false; + } + } +} \ No newline at end of file diff --git a/src/libse/Settings/WordListSettings.cs b/src/libse/Settings/WordListSettings.cs new file mode 100644 index 000000000..6684fd414 --- /dev/null +++ b/src/libse/Settings/WordListSettings.cs @@ -0,0 +1,15 @@ +namespace Nikse.SubtitleEdit.Core.Settings +{ + public class WordListSettings + { + public string LastLanguage { get; set; } + public string NamesUrl { get; set; } + public bool UseOnlineNames { get; set; } + + public WordListSettings() + { + LastLanguage = "en-US"; + NamesUrl = "https://raw.githubusercontent.com/SubtitleEdit/subtitleedit/main/Dictionaries/names.xml"; + } + } +} \ No newline at end of file diff --git a/src/ui/Controls/SubtitleListView.cs b/src/ui/Controls/SubtitleListView.cs index 2facd79f7..afc6b1944 100644 --- a/src/ui/Controls/SubtitleListView.cs +++ b/src/ui/Controls/SubtitleListView.cs @@ -6,6 +6,7 @@ using System.Drawing; using System.Drawing.Text; using System.Globalization; using System.Windows.Forms; +using Nikse.SubtitleEdit.Core.Settings; namespace Nikse.SubtitleEdit.Controls { diff --git a/src/ui/Controls/VideoPlayerContainer.cs b/src/ui/Controls/VideoPlayerContainer.cs index 95432f5b9..760e14670 100644 --- a/src/ui/Controls/VideoPlayerContainer.cs +++ b/src/ui/Controls/VideoPlayerContainer.cs @@ -8,6 +8,7 @@ using System.Drawing; using System.IO; using System.Text; using System.Windows.Forms; +using Nikse.SubtitleEdit.Core.Settings; namespace Nikse.SubtitleEdit.Controls { diff --git a/src/ui/Forms/Assa/AssaProgressBar.cs b/src/ui/Forms/Assa/AssaProgressBar.cs index a5381d017..205abcc61 100644 --- a/src/ui/Forms/Assa/AssaProgressBar.cs +++ b/src/ui/Forms/Assa/AssaProgressBar.cs @@ -11,6 +11,7 @@ using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Windows.Forms; +using Nikse.SubtitleEdit.Core.Settings; namespace Nikse.SubtitleEdit.Forms.Assa { diff --git a/src/ui/Forms/Assa/AssaStyles.cs b/src/ui/Forms/Assa/AssaStyles.cs index 363f36bc7..4eebec84b 100644 --- a/src/ui/Forms/Assa/AssaStyles.cs +++ b/src/ui/Forms/Assa/AssaStyles.cs @@ -13,6 +13,7 @@ using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Windows.Forms; +using Nikse.SubtitleEdit.Core.Settings; using MessageBox = Nikse.SubtitleEdit.Forms.SeMsgBox.MessageBox; namespace Nikse.SubtitleEdit.Forms.Assa diff --git a/src/ui/Forms/Assa/ReplaceStyleWith.cs b/src/ui/Forms/Assa/ReplaceStyleWith.cs index 1987e5562..7c27a71ad 100644 --- a/src/ui/Forms/Assa/ReplaceStyleWith.cs +++ b/src/ui/Forms/Assa/ReplaceStyleWith.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; +using Nikse.SubtitleEdit.Core.Settings; namespace Nikse.SubtitleEdit.Forms.Assa { diff --git a/src/ui/Forms/Assa/SubStationAlphaStylesCategoriesImportExport.cs b/src/ui/Forms/Assa/SubStationAlphaStylesCategoriesImportExport.cs index 2f8664d93..d38eab9fe 100644 --- a/src/ui/Forms/Assa/SubStationAlphaStylesCategoriesImportExport.cs +++ b/src/ui/Forms/Assa/SubStationAlphaStylesCategoriesImportExport.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Windows.Forms; using System.Xml; using Nikse.SubtitleEdit.Core.Common; +using Nikse.SubtitleEdit.Core.Settings; using Nikse.SubtitleEdit.Logic; namespace Nikse.SubtitleEdit.Forms.Assa diff --git a/src/ui/Forms/Assa/SubStationAlphaStylesCategoriesManager.cs b/src/ui/Forms/Assa/SubStationAlphaStylesCategoriesManager.cs index 963754249..48119b9bb 100644 --- a/src/ui/Forms/Assa/SubStationAlphaStylesCategoriesManager.cs +++ b/src/ui/Forms/Assa/SubStationAlphaStylesCategoriesManager.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Windows.Forms; using System.Xml; using Nikse.SubtitleEdit.Core.Common; +using Nikse.SubtitleEdit.Core.Settings; using Nikse.SubtitleEdit.Logic; using MessageBox = Nikse.SubtitleEdit.Forms.SeMsgBox.MessageBox; diff --git a/src/ui/Forms/BeautifyTimeCodes/BeautifyTimeCodesProfile.cs b/src/ui/Forms/BeautifyTimeCodes/BeautifyTimeCodesProfile.cs index 3a0958ea4..9d5adfb69 100644 --- a/src/ui/Forms/BeautifyTimeCodes/BeautifyTimeCodesProfile.cs +++ b/src/ui/Forms/BeautifyTimeCodes/BeautifyTimeCodesProfile.cs @@ -2,6 +2,7 @@ using System.Drawing; using System.Windows.Forms; using Nikse.SubtitleEdit.Core.Common; +using Nikse.SubtitleEdit.Core.Settings; using Nikse.SubtitleEdit.Logic; namespace Nikse.SubtitleEdit.Forms.BeautifyTimeCodes diff --git a/src/ui/Forms/BeautifyTimeCodes/BeautifyTimeCodesProfileSimple.cs b/src/ui/Forms/BeautifyTimeCodes/BeautifyTimeCodesProfileSimple.cs index 95ec25c96..98b8dbdb8 100644 --- a/src/ui/Forms/BeautifyTimeCodes/BeautifyTimeCodesProfileSimple.cs +++ b/src/ui/Forms/BeautifyTimeCodes/BeautifyTimeCodesProfileSimple.cs @@ -4,6 +4,7 @@ using Nikse.SubtitleEdit.Core.SubtitleFormats; using Nikse.SubtitleEdit.Logic; using System; using System.Windows.Forms; +using Nikse.SubtitleEdit.Core.Settings; namespace Nikse.SubtitleEdit.Forms.BeautifyTimeCodes { diff --git a/src/ui/Forms/DCinema/DCinemaPropertiesInterop.cs b/src/ui/Forms/DCinema/DCinemaPropertiesInterop.cs index bf876dbed..4a6af3aaa 100644 --- a/src/ui/Forms/DCinema/DCinemaPropertiesInterop.cs +++ b/src/ui/Forms/DCinema/DCinemaPropertiesInterop.cs @@ -5,6 +5,7 @@ using System; using System.Globalization; using System.Windows.Forms; using System.Xml.Linq; +using Nikse.SubtitleEdit.Core.Settings; namespace Nikse.SubtitleEdit.Forms.DCinema { diff --git a/src/ui/Forms/DCinema/DCinemaPropertiesSmpte.cs b/src/ui/Forms/DCinema/DCinemaPropertiesSmpte.cs index 735d47fde..02a4d1c6e 100644 --- a/src/ui/Forms/DCinema/DCinemaPropertiesSmpte.cs +++ b/src/ui/Forms/DCinema/DCinemaPropertiesSmpte.cs @@ -5,6 +5,7 @@ using System; using System.Globalization; using System.Windows.Forms; using Nikse.SubtitleEdit.Core.Forms; +using Nikse.SubtitleEdit.Core.Settings; namespace Nikse.SubtitleEdit.Forms.DCinema { diff --git a/src/ui/Forms/ExportPngXml.cs b/src/ui/Forms/ExportPngXml.cs index 3834684de..35f88a47b 100644 --- a/src/ui/Forms/ExportPngXml.cs +++ b/src/ui/Forms/ExportPngXml.cs @@ -22,6 +22,7 @@ using System.Text.RegularExpressions; using System.Threading; using System.Windows.Forms; using System.Xml; +using Nikse.SubtitleEdit.Core.Settings; using MessageBox = Nikse.SubtitleEdit.Forms.SeMsgBox.MessageBox; namespace Nikse.SubtitleEdit.Forms @@ -5861,7 +5862,7 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine + } } - private void SubtitleListView1InitializeLanguage(LanguageStructure.General general, Core.Common.Settings settings) + private void SubtitleListView1InitializeLanguage(LanguageStructure.General general, Settings settings) { var columnIndexNumber = 0; var columnIndexStart = 1; diff --git a/src/ui/Forms/Main.cs b/src/ui/Forms/Main.cs index 62941ad46..dd8e999aa 100644 --- a/src/ui/Forms/Main.cs +++ b/src/ui/Forms/Main.cs @@ -47,6 +47,7 @@ using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; +using Nikse.SubtitleEdit.Core.Settings; using Nikse.SubtitleEdit.Forms.Tts; using CheckForUpdatesHelper = Nikse.SubtitleEdit.Logic.CheckForUpdatesHelper; using MessageBox = Nikse.SubtitleEdit.Forms.SeMsgBox.MessageBox; diff --git a/src/ui/Forms/MultipleReplace.cs b/src/ui/Forms/MultipleReplace.cs index a7ab11a9e..cd64ca38d 100644 --- a/src/ui/Forms/MultipleReplace.cs +++ b/src/ui/Forms/MultipleReplace.cs @@ -9,6 +9,7 @@ using System.Text.RegularExpressions; using System.Windows.Forms; using System.Xml; using Nikse.SubtitleEdit.Controls.Adapters; +using Nikse.SubtitleEdit.Core.Settings; using MessageBox = Nikse.SubtitleEdit.Forms.SeMsgBox.MessageBox; namespace Nikse.SubtitleEdit.Forms diff --git a/src/ui/Forms/MultipleReplaceExportImport.cs b/src/ui/Forms/MultipleReplaceExportImport.cs index 2afd07218..7f221d3e8 100644 --- a/src/ui/Forms/MultipleReplaceExportImport.cs +++ b/src/ui/Forms/MultipleReplaceExportImport.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Linq; using System.Windows.Forms; using System.Xml; +using Nikse.SubtitleEdit.Core.Settings; namespace Nikse.SubtitleEdit.Forms { diff --git a/src/ui/Forms/Ocr/VobSubOcr.cs b/src/ui/Forms/Ocr/VobSubOcr.cs index 4427632f7..0cf4d2f1e 100644 --- a/src/ui/Forms/Ocr/VobSubOcr.cs +++ b/src/ui/Forms/Ocr/VobSubOcr.cs @@ -28,6 +28,7 @@ using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using System.Xml; +using Nikse.SubtitleEdit.Core.Settings; using MessageBox = Nikse.SubtitleEdit.Forms.SeMsgBox.MessageBox; using Timer = System.Windows.Forms.Timer; diff --git a/src/ui/Forms/Options/Settings.cs b/src/ui/Forms/Options/Settings.cs index 4f33b1386..b01b99898 100644 --- a/src/ui/Forms/Options/Settings.cs +++ b/src/ui/Forms/Options/Settings.cs @@ -16,6 +16,7 @@ using System.Linq; using System.Reflection; using System.Text; using System.Windows.Forms; +using Nikse.SubtitleEdit.Core.Settings; using MessageBox = Nikse.SubtitleEdit.Forms.SeMsgBox.MessageBox; namespace Nikse.SubtitleEdit.Forms.Options @@ -131,7 +132,7 @@ namespace Nikse.SubtitleEdit.Forms.Options Init(); _loading = false; - _oldSettings = Core.Common.Settings.CustomSerialize(Configuration.Settings); + _oldSettings = Core.Settings.Settings.CustomSerialize(Configuration.Settings); } public void Init() @@ -2455,7 +2456,7 @@ namespace Nikse.SubtitleEdit.Forms.Options } } - if (_oldSettings == Core.Common.Settings.CustomSerialize(Configuration.Settings)) + if (_oldSettings == Core.Settings.Settings.CustomSerialize(Configuration.Settings)) { DialogResult = DialogResult.Cancel; return; diff --git a/src/ui/Forms/Options/SettingsProfile.cs b/src/ui/Forms/Options/SettingsProfile.cs index d61efaf78..fceb8490c 100644 --- a/src/ui/Forms/Options/SettingsProfile.cs +++ b/src/ui/Forms/Options/SettingsProfile.cs @@ -8,6 +8,7 @@ using System.Globalization; using System.Linq; using System.Text; using System.Windows.Forms; +using Nikse.SubtitleEdit.Core.Settings; using MessageBox = Nikse.SubtitleEdit.Forms.SeMsgBox.MessageBox; namespace Nikse.SubtitleEdit.Forms.Options diff --git a/src/ui/Forms/ProfileChoose.cs b/src/ui/Forms/ProfileChoose.cs index d05b936a0..3ff1f06fd 100644 --- a/src/ui/Forms/ProfileChoose.cs +++ b/src/ui/Forms/ProfileChoose.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Windows.Forms; +using Nikse.SubtitleEdit.Core.Settings; namespace Nikse.SubtitleEdit.Forms { diff --git a/src/ui/Forms/RestoreAutoBackup.cs b/src/ui/Forms/RestoreAutoBackup.cs index f79f02f05..188d0e6e2 100644 --- a/src/ui/Forms/RestoreAutoBackup.cs +++ b/src/ui/Forms/RestoreAutoBackup.cs @@ -9,6 +9,7 @@ using System.Windows.Forms; using Nikse.SubtitleEdit.Core.SubtitleFormats; using MessageBox = Nikse.SubtitleEdit.Forms.SeMsgBox.MessageBox; using System.Threading; +using Nikse.SubtitleEdit.Core.Settings; namespace Nikse.SubtitleEdit.Forms { diff --git a/src/ui/Forms/Translate/AutoTranslateSettings.cs b/src/ui/Forms/Translate/AutoTranslateSettings.cs index 2543d9389..630e19e70 100644 --- a/src/ui/Forms/Translate/AutoTranslateSettings.cs +++ b/src/ui/Forms/Translate/AutoTranslateSettings.cs @@ -2,6 +2,7 @@ using System.Windows.Forms; using Nikse.SubtitleEdit.Core.AutoTranslate; using Nikse.SubtitleEdit.Core.Common; +using Nikse.SubtitleEdit.Core.Settings; using Nikse.SubtitleEdit.Logic; namespace Nikse.SubtitleEdit.Forms.Translate diff --git a/src/ui/Forms/Translate/MergeAndSplitHelper.cs b/src/ui/Forms/Translate/MergeAndSplitHelper.cs index a0153adb5..b19faeb6a 100644 --- a/src/ui/Forms/Translate/MergeAndSplitHelper.cs +++ b/src/ui/Forms/Translate/MergeAndSplitHelper.cs @@ -8,6 +8,7 @@ using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; +using Nikse.SubtitleEdit.Core.Settings; namespace Nikse.SubtitleEdit.Forms.Translate { diff --git a/src/ui/Forms/VerifyCompleteness.cs b/src/ui/Forms/VerifyCompleteness.cs index 9ebd97028..e65a31237 100644 --- a/src/ui/Forms/VerifyCompleteness.cs +++ b/src/ui/Forms/VerifyCompleteness.cs @@ -7,7 +7,7 @@ using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Windows.Forms; -using static Nikse.SubtitleEdit.Core.Common.VerifyCompletenessSettings; +using static Nikse.SubtitleEdit.Core.Settings.VerifyCompletenessSettings; namespace Nikse.SubtitleEdit.Forms { diff --git a/src/ui/Logic/UiUtil.cs b/src/ui/Logic/UiUtil.cs index 7f978693c..18be2a3ea 100644 --- a/src/ui/Logic/UiUtil.cs +++ b/src/ui/Logic/UiUtil.cs @@ -14,6 +14,7 @@ using System.IO; using System.Linq; using System.Text; using System.Windows.Forms; +using Nikse.SubtitleEdit.Core.Settings; namespace Nikse.SubtitleEdit.Logic {