mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-11-26 05:02:36 +01:00
Add new classes for settings
This commit adds new classes for settings including 'MultipleSearchAndReplaceGroup', 'MultipleSearchAndReplaceSetting', 'NetworkSettings', 'AssaStorageCategory', and 'GeneralSettings'. Each class represents different groups of settings. These classes will be utilized to manage the settings in a more organized way. Signed-off-by: Ivandro Jao <ivandrofly@gmail.com>
This commit is contained in:
parent
a9d737aff5
commit
40e4b004c1
11
src/libse/Common/Settings/AssaStorageCategory.cs
Normal file
11
src/libse/Common/Settings/AssaStorageCategory.cs
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Nikse.SubtitleEdit.Core.Common
|
||||||
|
{
|
||||||
|
public class AssaStorageCategory
|
||||||
|
{
|
||||||
|
public string Name { get; set; }
|
||||||
|
public bool IsDefault { get; set; }
|
||||||
|
public List<SsaStyle> Styles { get; set; }
|
||||||
|
}
|
||||||
|
}
|
220
src/libse/Common/Settings/BeautifyTimeCodesSettings.cs
Normal file
220
src/libse/Common/Settings/BeautifyTimeCodesSettings.cs
Normal file
@ -0,0 +1,220 @@
|
|||||||
|
namespace Nikse.SubtitleEdit.Core.Common
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
16
src/libse/Common/Settings/CompareSettings.cs
Normal file
16
src/libse/Common/Settings/CompareSettings.cs
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
namespace Nikse.SubtitleEdit.Core.Common
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
22
src/libse/Common/Settings/FcpExportSettings.cs
Normal file
22
src/libse/Common/Settings/FcpExportSettings.cs
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
using System.Drawing;
|
||||||
|
|
||||||
|
namespace Nikse.SubtitleEdit.Core.Common
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
340
src/libse/Common/Settings/FixCommonErrorsSettings.cs
Normal file
340
src/libse/Common/Settings/FixCommonErrorsSettings.cs
Normal file
@ -0,0 +1,340 @@
|
|||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace Nikse.SubtitleEdit.Core.Common
|
||||||
|
{
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
835
src/libse/Common/Settings/GeneralSettings.cs
Normal file
835
src/libse/Common/Settings/GeneralSettings.cs
Normal file
@ -0,0 +1,835 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Drawing;
|
||||||
|
using Nikse.SubtitleEdit.Core.Common.TextLengthCalculator;
|
||||||
|
using Nikse.SubtitleEdit.Core.Enums;
|
||||||
|
|
||||||
|
namespace Nikse.SubtitleEdit.Core.Common
|
||||||
|
{
|
||||||
|
public class GeneralSettings
|
||||||
|
{
|
||||||
|
public List<RulesProfile> 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 = "<Auto>";
|
||||||
|
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 = "<br />";
|
||||||
|
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<RulesProfile>();
|
||||||
|
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<RulesProfile> 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
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
11
src/libse/Common/Settings/MultipleSearchAndReplaceGroup.cs
Normal file
11
src/libse/Common/Settings/MultipleSearchAndReplaceGroup.cs
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Nikse.SubtitleEdit.Core.Common
|
||||||
|
{
|
||||||
|
public class MultipleSearchAndReplaceGroup
|
||||||
|
{
|
||||||
|
public string Name { get; set; }
|
||||||
|
public bool Enabled { get; set; }
|
||||||
|
public List<MultipleSearchAndReplaceSetting> Rules { get; set; }
|
||||||
|
}
|
||||||
|
}
|
11
src/libse/Common/Settings/MultipleSearchAndReplaceSetting.cs
Normal file
11
src/libse/Common/Settings/MultipleSearchAndReplaceSetting.cs
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
namespace Nikse.SubtitleEdit.Core.Common
|
||||||
|
{
|
||||||
|
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; }
|
||||||
|
}
|
||||||
|
}
|
21
src/libse/Common/Settings/NetworkSettings.cs
Normal file
21
src/libse/Common/Settings/NetworkSettings.cs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace Nikse.SubtitleEdit.Core.Common
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
24
src/libse/Common/Settings/ProxySettings.cs
Normal file
24
src/libse/Common/Settings/ProxySettings.cs
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
using System;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace Nikse.SubtitleEdit.Core.Common
|
||||||
|
{
|
||||||
|
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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
14
src/libse/Common/Settings/RecentFileEntry.cs
Normal file
14
src/libse/Common/Settings/RecentFileEntry.cs
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
namespace Nikse.SubtitleEdit.Core.Common
|
||||||
|
{
|
||||||
|
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; }
|
||||||
|
}
|
||||||
|
}
|
92
src/libse/Common/Settings/RecentFilesSettings.cs
Normal file
92
src/libse/Common/Settings/RecentFilesSettings.cs
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Xml.Serialization;
|
||||||
|
|
||||||
|
namespace Nikse.SubtitleEdit.Core.Common
|
||||||
|
{
|
||||||
|
public class RecentFilesSettings
|
||||||
|
{
|
||||||
|
private const int MaxRecentFiles = 25;
|
||||||
|
|
||||||
|
[XmlArrayItem("FileName")]
|
||||||
|
public List<RecentFileEntry> Files { get; set; }
|
||||||
|
|
||||||
|
public RecentFilesSettings()
|
||||||
|
{
|
||||||
|
Files = new List<RecentFileEntry>();
|
||||||
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
namespace Nikse.SubtitleEdit.Core.Common
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
539
src/libse/Common/Settings/Shortcuts.cs
Normal file
539
src/libse/Common/Settings/Shortcuts.cs
Normal file
@ -0,0 +1,539 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Text;
|
||||||
|
using System.Xml;
|
||||||
|
|
||||||
|
namespace Nikse.SubtitleEdit.Core.Common
|
||||||
|
{
|
||||||
|
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<PluginShortcut> 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<PluginShortcut>();
|
||||||
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
22
src/libse/Common/Settings/SubtitleBeaming.cs
Normal file
22
src/libse/Common/Settings/SubtitleBeaming.cs
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
using System.Drawing;
|
||||||
|
|
||||||
|
namespace Nikse.SubtitleEdit.Core.Common
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
223
src/libse/Common/Settings/SubtitleSettings.cs
Normal file
223
src/libse/Common/Settings/SubtitleSettings.cs
Normal file
@ -0,0 +1,223 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Drawing;
|
||||||
|
|
||||||
|
namespace Nikse.SubtitleEdit.Core.Common
|
||||||
|
{
|
||||||
|
public class SubtitleSettings
|
||||||
|
{
|
||||||
|
public List<AssaStorageCategory> AssaStyleStorageCategories { get; set; }
|
||||||
|
public List<string> 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<AssaStorageCategory>();
|
||||||
|
AssaOverrideTagHistory = new List<string>();
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
669
src/libse/Common/Settings/ToolsSettings.cs
Normal file
669
src/libse/Common/Settings/ToolsSettings.cs
Normal file
@ -0,0 +1,669 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Drawing;
|
||||||
|
|
||||||
|
namespace Nikse.SubtitleEdit.Core.Common
|
||||||
|
{
|
||||||
|
public class ToolsSettings
|
||||||
|
{
|
||||||
|
public List<AssaTemplateItem> 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<string> 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<AssaTemplateItem>();
|
||||||
|
StartSceneIndex = 1;
|
||||||
|
EndSceneIndex = 1;
|
||||||
|
VerifyPlaySeconds = 2;
|
||||||
|
FixShortDisplayTimesAllowMoveStartTime = false;
|
||||||
|
RemoveEmptyLinesBetweenText = true;
|
||||||
|
MusicSymbol = "♪";
|
||||||
|
MusicSymbolReplace = "♪,â™," + // ♪ + ♫ in UTF-8 opened as ANSI
|
||||||
|
"<s M/>,<s m/>," + // 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 <br>HH:mm:ss;dddd dd MMMM yyyy <br>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<string>();
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
18
src/libse/Common/Settings/VerifyCompletenessSettings.cs
Normal file
18
src/libse/Common/Settings/VerifyCompletenessSettings.cs
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
namespace Nikse.SubtitleEdit.Core.Common
|
||||||
|
{
|
||||||
|
public class VerifyCompletenessSettings
|
||||||
|
{
|
||||||
|
public ListSortEnum ListSort { get; set; }
|
||||||
|
|
||||||
|
public enum ListSortEnum : int
|
||||||
|
{
|
||||||
|
Coverage = 0,
|
||||||
|
Time = 1,
|
||||||
|
}
|
||||||
|
|
||||||
|
public VerifyCompletenessSettings()
|
||||||
|
{
|
||||||
|
ListSort = ListSortEnum.Coverage;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
87
src/libse/Common/Settings/VideoControlsSettings.cs
Normal file
87
src/libse/Common/Settings/VideoControlsSettings.cs
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
using System.Drawing;
|
||||||
|
|
||||||
|
namespace Nikse.SubtitleEdit.Core.Common
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
77
src/libse/Common/Settings/VobSubOcrSettings.cs
Normal file
77
src/libse/Common/Settings/VobSubOcrSettings.cs
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
namespace Nikse.SubtitleEdit.Core.Common
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
15
src/libse/Common/Settings/WordListSettings.cs
Normal file
15
src/libse/Common/Settings/WordListSettings.cs
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
namespace Nikse.SubtitleEdit.Core.Common
|
||||||
|
{
|
||||||
|
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";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user