Merge branch 'master' into feature/waveform-improvements

# Conflicts:
#	src/Forms/Settings.Designer.cs
This commit is contained in:
Martijn van Berkel (Flitskikker) 2020-03-31 13:17:23 +02:00
commit a859083d0f
8 changed files with 102 additions and 29 deletions

View File

@ -1861,6 +1861,10 @@ can edit in same subtitle file (collaboration)</Information>
<TimeCodeMode>Time code mode</TimeCodeMode>
<TimeCodeModeHHMMSSMS>HH:MM:SS.MS (00:00:01.500)</TimeCodeModeHHMMSSMS>
<TimeCodeModeHHMMSSFF>HH:MM:SS:FF (00:00:01:12)</TimeCodeModeHHMMSSFF>
<SplitBehavior>Split behavior</SplitBehavior>
<SplitBehaviorPrevious>Add gap to the left of split point</SplitBehaviorPrevious>
<SplitBehaviorHalf>Add gap in the center of split point</SplitBehaviorHalf>
<SplitBehaviorNext>Add gap to the right of split point</SplitBehaviorNext>
<VideoEngine>Video engine</VideoEngine>
<DirectShow>DirectShow</DirectShow>
<DirectShowDescription>quartz.dll in system32 folder</DirectShowDescription>

View File

@ -2157,6 +2157,10 @@ can edit in same subtitle file (collaboration)",
TimeCodeMode = "Time code mode",
TimeCodeModeHHMMSSMS = "HH:MM:SS.MS (00:00:01.500)",
TimeCodeModeHHMMSSFF = "HH:MM:SS:FF (00:00:01:12)",
SplitBehavior = "Split behavior",
SplitBehaviorPrevious = "Add gap to the left of split point",
SplitBehaviorHalf = "Add gap in the center of split point",
SplitBehaviorNext = "Add gap to the right of split point",
VideoEngine = "Video engine",
DirectShow = "DirectShow",
DirectShowDescription = "quartz.dll in system32 folder",

View File

@ -5005,6 +5005,18 @@ namespace Nikse.SubtitleEdit.Core
case "Settings/TimeCodeModeHHMMSSFF":
language.Settings.TimeCodeModeHHMMSSFF = reader.Value;
break;
case "Settings/SplitBehavior":
language.Settings.SplitBehavior = reader.Value;
break;
case "Settings/SplitBehaviorPrevious":
language.Settings.SplitBehaviorPrevious = reader.Value;
break;
case "Settings/SplitBehaviorHalf":
language.Settings.SplitBehaviorHalf = reader.Value;
break;
case "Settings/SplitBehaviorNext":
language.Settings.SplitBehaviorNext = reader.Value;
break;
case "Settings/VideoEngine":
language.Settings.VideoEngine = reader.Value;
break;

View File

@ -2026,6 +2026,10 @@
public string TimeCodeMode { get; set; }
public string TimeCodeModeHHMMSSMS { get; set; }
public string TimeCodeModeHHMMSSFF { get; set; }
public string SplitBehavior { get; set; }
public string SplitBehaviorPrevious { get; set; }
public string SplitBehaviorHalf { get; set; }
public string SplitBehaviorNext { get; set; }
public string VideoEngine { get; set; }
public string DirectShow { get; set; }
public string DirectShowDescription { get; set; }

View File

@ -829,6 +829,7 @@ $HorzAlign = Center
public string FFmpegLocation { get; set; }
public string FFmpegSceneThreshold { get; set; }
public bool UseTimeFormatHHMMSSFF { get; set; }
public int SplitBehavior { get; set; }
public int ClearStatusBarAfterSeconds { get; set; }
public string Company { get; set; }
public bool MoveVideo100Or500MsPlaySmallSample { get; set; }
@ -949,6 +950,7 @@ $HorzAlign = Center
MpvHandlesPreviewText = true;
FFmpegSceneThreshold = "0.4"; // threshold for generating scene changes - 0.2 is sensitive (more scene change), 0.6 is less sensitive (fewer scene changes)
UseTimeFormatHHMMSSFF = false;
SplitBehavior = 0;
ClearStatusBarAfterSeconds = 10;
MoveVideo100Or500MsPlaySmallSample = false;
DisableVideoAutoLoading = false;
@ -2833,6 +2835,12 @@ $HorzAlign = Center
settings.General.UseTimeFormatHHMMSSFF = Convert.ToBoolean(subNode.InnerText.Trim());
}
subNode = node.SelectSingleNode("SplitBehavior");
if (subNode != null)
{
settings.General.SplitBehavior = Convert.ToInt32(subNode.InnerText.Trim());
}
subNode = node.SelectSingleNode("ClearStatusBarAfterSeconds");
if (subNode != null)
{
@ -6667,6 +6675,7 @@ $HorzAlign = Center
textWriter.WriteElementString("FFmpegLocation", settings.General.FFmpegLocation);
textWriter.WriteElementString("FFmpegSceneThreshold", settings.General.FFmpegSceneThreshold);
textWriter.WriteElementString("UseTimeFormatHHMMSSFF", settings.General.UseTimeFormatHHMMSSFF.ToString(CultureInfo.InvariantCulture));
textWriter.WriteElementString("SplitBehavior", settings.General.SplitBehavior.ToString(CultureInfo.InvariantCulture));
textWriter.WriteElementString("ClearStatusBarAfterSeconds", settings.General.ClearStatusBarAfterSeconds.ToString(CultureInfo.InvariantCulture));
textWriter.WriteElementString("Company", settings.General.Company);
textWriter.WriteElementString("MoveVideo100Or500MsPlaySmallSample", settings.General.MoveVideo100Or500MsPlaySmallSample.ToString(CultureInfo.InvariantCulture));

View File

@ -9907,12 +9907,16 @@ namespace Nikse.SubtitleEdit.Forms
newParagraph.StartTime.TotalMilliseconds = currentParagraph.EndTime.TotalMilliseconds + 1;
if (Configuration.Settings.General.MinimumMillisecondsBetweenLines > 0)
{
if (splitSeconds == null)
if (splitSeconds == null || Configuration.Settings.General.SplitBehavior == 1)
{
// SE decides split point (not user), so split gap time evenly
var halfGap = (int)Math.Round(Configuration.Settings.General.MinimumMillisecondsBetweenLines / 2.0);
currentParagraph.EndTime.TotalMilliseconds = currentParagraph.EndTime.TotalMilliseconds - halfGap;
}
else if (Configuration.Settings.General.SplitBehavior == 0)
{
currentParagraph.EndTime.TotalMilliseconds = currentParagraph.EndTime.TotalMilliseconds - Configuration.Settings.General.MinimumMillisecondsBetweenLines;
}
newParagraph.StartTime.TotalMilliseconds = currentParagraph.EndTime.TotalMilliseconds + Configuration.Settings.General.MinimumMillisecondsBetweenLines;
}
}

View File

@ -374,6 +374,8 @@
this.labelStatus = new System.Windows.Forms.Label();
this.openFileDialogFFmpeg = new System.Windows.Forms.OpenFileDialog();
this.buttonReset = new System.Windows.Forms.Button();
this.comboBoxSplitBehavior = new System.Windows.Forms.ComboBox();
this.labelSplitBehavior = new System.Windows.Forms.Label();
this.checkBoxSyntaxColorTextTooWide = new System.Windows.Forms.CheckBox();
this.buttonLineWidthSettings = new System.Windows.Forms.Button();
this.tabControlSettings.SuspendLayout();
@ -461,7 +463,7 @@
//
this.buttonOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.buttonOK.DialogResult = System.Windows.Forms.DialogResult.OK;
this.buttonOK.Location = new System.Drawing.Point(506, 531);
this.buttonOK.Location = new System.Drawing.Point(506, 540);
this.buttonOK.Name = "buttonOK";
this.buttonOK.Size = new System.Drawing.Size(75, 23);
this.buttonOK.TabIndex = 0;
@ -473,7 +475,7 @@
//
this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.buttonCancel.Location = new System.Drawing.Point(587, 531);
this.buttonCancel.Location = new System.Drawing.Point(587, 540);
this.buttonCancel.Name = "buttonCancel";
this.buttonCancel.Size = new System.Drawing.Size(75, 23);
this.buttonCancel.TabIndex = 1;
@ -500,7 +502,7 @@
this.tabControlSettings.Location = new System.Drawing.Point(13, 13);
this.tabControlSettings.Name = "tabControlSettings";
this.tabControlSettings.SelectedIndex = 0;
this.tabControlSettings.Size = new System.Drawing.Size(840, 514);
this.tabControlSettings.Size = new System.Drawing.Size(840, 523);
this.tabControlSettings.TabIndex = 2;
this.tabControlSettings.SelectedIndexChanged += new System.EventHandler(this.TabControlSettingsSelectedIndexChanged);
//
@ -510,7 +512,7 @@
this.tabPageGeneral.Location = new System.Drawing.Point(4, 22);
this.tabPageGeneral.Name = "tabPageGeneral";
this.tabPageGeneral.Padding = new System.Windows.Forms.Padding(3);
this.tabPageGeneral.Size = new System.Drawing.Size(832, 488);
this.tabPageGeneral.Size = new System.Drawing.Size(832, 497);
this.tabPageGeneral.TabIndex = 0;
this.tabPageGeneral.Text = "General";
this.tabPageGeneral.UseVisualStyleBackColor = true;
@ -520,6 +522,8 @@
this.groupBoxMiscellaneous.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.groupBoxMiscellaneous.Controls.Add(this.labelSplitBehavior);
this.groupBoxMiscellaneous.Controls.Add(this.comboBoxSplitBehavior);
this.groupBoxMiscellaneous.Controls.Add(this.checkBoxAutoSave);
this.groupBoxMiscellaneous.Controls.Add(this.comboBoxSaveAsFileNameFrom);
this.groupBoxMiscellaneous.Controls.Add(this.labelSaveAsFileNameFrom);
@ -554,7 +558,7 @@
this.groupBoxMiscellaneous.Controls.Add(this.labelDefaultFrameRate);
this.groupBoxMiscellaneous.Location = new System.Drawing.Point(6, 6);
this.groupBoxMiscellaneous.Name = "groupBoxMiscellaneous";
this.groupBoxMiscellaneous.Size = new System.Drawing.Size(819, 476);
this.groupBoxMiscellaneous.Size = new System.Drawing.Size(819, 485);
this.groupBoxMiscellaneous.TabIndex = 0;
this.groupBoxMiscellaneous.TabStop = false;
this.groupBoxMiscellaneous.Text = "Miscellaneous";
@ -562,10 +566,10 @@
// checkBoxAutoSave
//
this.checkBoxAutoSave.AutoSize = true;
this.checkBoxAutoSave.Location = new System.Drawing.Point(441, 426);
this.checkBoxAutoSave.Location = new System.Drawing.Point(441, 453);
this.checkBoxAutoSave.Name = "checkBoxAutoSave";
this.checkBoxAutoSave.Size = new System.Drawing.Size(75, 17);
this.checkBoxAutoSave.TabIndex = 28;
this.checkBoxAutoSave.TabIndex = 30;
this.checkBoxAutoSave.Text = "Auto save";
this.checkBoxAutoSave.UseVisualStyleBackColor = true;
//
@ -573,18 +577,18 @@
//
this.comboBoxSaveAsFileNameFrom.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBoxSaveAsFileNameFrom.FormattingEnabled = true;
this.comboBoxSaveAsFileNameFrom.Location = new System.Drawing.Point(442, 359);
this.comboBoxSaveAsFileNameFrom.Location = new System.Drawing.Point(441, 386);
this.comboBoxSaveAsFileNameFrom.Name = "comboBoxSaveAsFileNameFrom";
this.comboBoxSaveAsFileNameFrom.Size = new System.Drawing.Size(332, 21);
this.comboBoxSaveAsFileNameFrom.TabIndex = 23;
this.comboBoxSaveAsFileNameFrom.TabIndex = 25;
//
// labelSaveAsFileNameFrom
//
this.labelSaveAsFileNameFrom.AutoSize = true;
this.labelSaveAsFileNameFrom.Location = new System.Drawing.Point(439, 343);
this.labelSaveAsFileNameFrom.Location = new System.Drawing.Point(438, 370);
this.labelSaveAsFileNameFrom.Name = "labelSaveAsFileNameFrom";
this.labelSaveAsFileNameFrom.Size = new System.Drawing.Size(160, 13);
this.labelSaveAsFileNameFrom.TabIndex = 22;
this.labelSaveAsFileNameFrom.TabIndex = 24;
this.labelSaveAsFileNameFrom.Text = "\"Save as...\" will take name from";
//
// groupBoxGeneralRules
@ -964,27 +968,27 @@
"1 month",
"3 months",
"6 months"});
this.comboBoxAutoBackupDeleteAfter.Location = new System.Drawing.Point(707, 394);
this.comboBoxAutoBackupDeleteAfter.Location = new System.Drawing.Point(707, 421);
this.comboBoxAutoBackupDeleteAfter.Name = "comboBoxAutoBackupDeleteAfter";
this.comboBoxAutoBackupDeleteAfter.Size = new System.Drawing.Size(88, 21);
this.comboBoxAutoBackupDeleteAfter.TabIndex = 27;
this.comboBoxAutoBackupDeleteAfter.TabIndex = 29;
//
// labelAutoBackupDeleteAfter
//
this.labelAutoBackupDeleteAfter.AutoSize = true;
this.labelAutoBackupDeleteAfter.Location = new System.Drawing.Point(639, 397);
this.labelAutoBackupDeleteAfter.Location = new System.Drawing.Point(639, 424);
this.labelAutoBackupDeleteAfter.Name = "labelAutoBackupDeleteAfter";
this.labelAutoBackupDeleteAfter.Size = new System.Drawing.Size(65, 13);
this.labelAutoBackupDeleteAfter.TabIndex = 26;
this.labelAutoBackupDeleteAfter.TabIndex = 28;
this.labelAutoBackupDeleteAfter.Text = "Delete after";
//
// checkBoxCheckForUpdates
//
this.checkBoxCheckForUpdates.AutoSize = true;
this.checkBoxCheckForUpdates.Location = new System.Drawing.Point(522, 426);
this.checkBoxCheckForUpdates.Location = new System.Drawing.Point(522, 453);
this.checkBoxCheckForUpdates.Name = "checkBoxCheckForUpdates";
this.checkBoxCheckForUpdates.Size = new System.Drawing.Size(114, 17);
this.checkBoxCheckForUpdates.TabIndex = 29;
this.checkBoxCheckForUpdates.TabIndex = 31;
this.checkBoxCheckForUpdates.Text = "Check for updates";
this.checkBoxCheckForUpdates.UseVisualStyleBackColor = true;
//
@ -1102,18 +1106,18 @@
"Every minute",
"Every 5 minutes",
"Every 15 minutes"});
this.comboBoxAutoBackup.Location = new System.Drawing.Point(512, 394);
this.comboBoxAutoBackup.Location = new System.Drawing.Point(512, 421);
this.comboBoxAutoBackup.Name = "comboBoxAutoBackup";
this.comboBoxAutoBackup.Size = new System.Drawing.Size(121, 21);
this.comboBoxAutoBackup.TabIndex = 25;
this.comboBoxAutoBackup.TabIndex = 27;
//
// labelAutoBackup
//
this.labelAutoBackup.AutoSize = true;
this.labelAutoBackup.Location = new System.Drawing.Point(438, 397);
this.labelAutoBackup.Location = new System.Drawing.Point(438, 424);
this.labelAutoBackup.Name = "labelAutoBackup";
this.labelAutoBackup.Size = new System.Drawing.Size(68, 13);
this.labelAutoBackup.TabIndex = 24;
this.labelAutoBackup.TabIndex = 26;
this.labelAutoBackup.Text = "Auto-backup";
//
// checkBoxRememberSelectedLine
@ -1154,18 +1158,18 @@
"UTF-7",
"UTF-8",
"Unicode"});
this.comboBoxListViewDoubleClickEvent.Location = new System.Drawing.Point(441, 310);
this.comboBoxListViewDoubleClickEvent.Location = new System.Drawing.Point(441, 337);
this.comboBoxListViewDoubleClickEvent.Name = "comboBoxListViewDoubleClickEvent";
this.comboBoxListViewDoubleClickEvent.Size = new System.Drawing.Size(332, 21);
this.comboBoxListViewDoubleClickEvent.TabIndex = 21;
this.comboBoxListViewDoubleClickEvent.TabIndex = 23;
//
// labelListViewDoubleClickEvent
//
this.labelListViewDoubleClickEvent.AutoSize = true;
this.labelListViewDoubleClickEvent.Location = new System.Drawing.Point(438, 294);
this.labelListViewDoubleClickEvent.Location = new System.Drawing.Point(438, 321);
this.labelListViewDoubleClickEvent.Name = "labelListViewDoubleClickEvent";
this.labelListViewDoubleClickEvent.Size = new System.Drawing.Size(227, 13);
this.labelListViewDoubleClickEvent.TabIndex = 20;
this.labelListViewDoubleClickEvent.TabIndex = 22;
this.labelListViewDoubleClickEvent.Text = "Double-click on line in main window listview will";
//
// labelShowLineBreaksAs
@ -4519,7 +4523,7 @@
//
this.labelStatus.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.labelStatus.AutoSize = true;
this.labelStatus.Location = new System.Drawing.Point(12, 541);
this.labelStatus.Location = new System.Drawing.Point(12, 550);
this.labelStatus.Name = "labelStatus";
this.labelStatus.Size = new System.Drawing.Size(60, 13);
this.labelStatus.TabIndex = 3;
@ -4532,7 +4536,7 @@
// buttonReset
//
this.buttonReset.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.buttonReset.Location = new System.Drawing.Point(668, 531);
this.buttonReset.Location = new System.Drawing.Point(668, 540);
this.buttonReset.Name = "buttonReset";
this.buttonReset.Size = new System.Drawing.Size(185, 23);
this.buttonReset.TabIndex = 2;
@ -4540,6 +4544,26 @@
this.buttonReset.UseVisualStyleBackColor = true;
this.buttonReset.Click += new System.EventHandler(this.buttonReset_Click);
//
// comboBoxSplitBehavior
//
this.comboBoxSplitBehavior.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBoxSplitBehavior.FormattingEnabled = true;
this.comboBoxSplitBehavior.Items.AddRange(new object[] {
"HH:MM:SS:MSEC (00:00:00.000)",
"HH:MM:SS:FF (00:00:00.00)"});
this.comboBoxSplitBehavior.Location = new System.Drawing.Point(528, 288);
this.comboBoxSplitBehavior.Name = "comboBoxSplitBehavior";
this.comboBoxSplitBehavior.Size = new System.Drawing.Size(207, 21);
this.comboBoxSplitBehavior.TabIndex = 21;
//
// labelSplitBehavior
//
this.labelSplitBehavior.AutoSize = true;
this.labelSplitBehavior.Location = new System.Drawing.Point(438, 291);
this.labelSplitBehavior.Name = "labelSplitBehavior";
this.labelSplitBehavior.Size = new System.Drawing.Size(72, 13);
this.labelSplitBehavior.TabIndex = 20;
this.labelSplitBehavior.Text = "Split behavior";
// checkBoxSyntaxColorTextTooWide
//
this.checkBoxSyntaxColorTextTooWide.AutoSize = true;
@ -4564,7 +4588,7 @@
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(865, 566);
this.ClientSize = new System.Drawing.Size(865, 575);
this.Controls.Add(this.buttonReset);
this.Controls.Add(this.labelStatus);
this.Controls.Add(this.tabControlSettings);
@ -5045,6 +5069,8 @@
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemShortcutsCollapse;
private System.Windows.Forms.CheckBox checkBoxWaveformSnapToSceneChanges;
private System.Windows.Forms.CheckBox checkBoxWaveformSingleClickSelect;
private System.Windows.Forms.Label labelSplitBehavior;
private System.Windows.Forms.ComboBox comboBoxSplitBehavior;
private System.Windows.Forms.Button buttonLineWidthSettings;
private System.Windows.Forms.CheckBox checkBoxSyntaxColorTextTooWide;
}

View File

@ -465,6 +465,14 @@ namespace Nikse.SubtitleEdit.Forms
labelTimeCodeMode.Text = language.TimeCodeMode;
comboBoxTimeCodeMode.Left = labelTimeCodeMode.Left + labelTimeCodeMode.Width + 4;
comboBoxSplitBehavior.Items.Clear();
comboBoxSplitBehavior.Items.Add(language.SplitBehaviorPrevious);
comboBoxSplitBehavior.Items.Add(language.SplitBehaviorHalf);
comboBoxSplitBehavior.Items.Add(language.SplitBehaviorNext);
comboBoxSplitBehavior.SelectedIndex = gs.SplitBehavior;
labelSplitBehavior.Text = language.SplitBehavior;
comboBoxSplitBehavior.Left = labelTimeCodeMode.Left + labelTimeCodeMode.Width + 4;
comboBoxAutoBackup.Items[0] = Configuration.Settings.Language.General.None;
comboBoxAutoBackup.Items[1] = language.AutoBackupEveryMinute;
comboBoxAutoBackup.Items[2] = language.AutoBackupEveryFiveMinutes;
@ -1598,6 +1606,8 @@ namespace Nikse.SubtitleEdit.Forms
gs.UseTimeFormatHHMMSSFF = comboBoxTimeCodeMode.SelectedIndex == 1;
}
gs.SplitBehavior = comboBoxSplitBehavior.SelectedIndex;
gs.SpellChecker = comboBoxSpellChecker.SelectedIndex == 1 ? "word" : "hunspell";
gs.AllowEditOfOriginalSubtitle = checkBoxAllowEditOfOriginalSubtitle.Checked;