diff --git a/Changelog.txt b/Changelog.txt
index c5fc9add2..6e8601c80 100644
--- a/Changelog.txt
+++ b/Changelog.txt
@@ -12,7 +12,8 @@
* Waveform "Right-click + Ctrl" will toggle select of a subtitle
* Waveform "Right-click + Shift" will select a range of subtitles
* Add a few profiles for Amazon Prime
- * Add new FCE rule: "Remove first dash in non-dialogs"
+ * Add new FCE rule: "Remove first dash in non-dialogs"
+ * Add "Video - Generate blank video" - thx OmrSi
* IMPROVED:
* Update Bulgarian translation - thx Калин
* Update Chinese translation - thx nkh0472
diff --git a/LanguageMaster.xml b/LanguageMaster.xml
index 066777f38..1413ebaca 100644
--- a/LanguageMaster.xml
+++ b/LanguageMaster.xml
@@ -761,6 +761,12 @@ Note: Do check free disk space.
Fix continuation style: {0}
Remove unnecessary leading dots
+
+ Generate blank video file
+ Chekered image
+ Solid color
+ Duration in minutes
+
Need dictionaries?
Subtitle Edit's spell check is based on the NHunspell engine which
@@ -1162,6 +1168,7 @@ To use an API key go to "Options -> Settings -> Tools" to enter your Googl
Set video offset...
SMPTE timing (drop frame)
Generate text from video...
+ Generate blank video...
Import chapters from video
Generate/import scene changes...
Remove scene changes
@@ -1233,7 +1240,7 @@ To use an API key go to "Options -> Settings -> Tools" to enter your Googl
Size all columns to fit
Set style
Set actor
- Set override tags
+ Set override tags etc.
Sub Station Alpha styles...
Advanced Sub Station Alpha styles...
Timed Text - set region
@@ -1298,6 +1305,7 @@ To use an API key go to "Options -> Settings -> Tools" to enter your Googl
Adjust durations for selected lines...
Apply duration limits for selected lines...
Apply custom override tags...
+ Set resolution (PlayResX/PlayResY)
Fix common errors in selected lines...
Change casing for selected lines...
Save selected lines as...
diff --git a/src/ui/Forms/GenerateVideo.Designer.cs b/src/ui/Forms/GenerateVideo.Designer.cs
index 188142ba1..7cafbcb0f 100644
--- a/src/ui/Forms/GenerateVideo.Designer.cs
+++ b/src/ui/Forms/GenerateVideo.Designer.cs
@@ -37,8 +37,8 @@ namespace Nikse.SubtitleEdit.Forms
this.labelDuration = new System.Windows.Forms.Label();
this.numericUpDownWidth = new System.Windows.Forms.NumericUpDown();
this.numericUpDownHeight = new System.Windows.Forms.NumericUpDown();
- this.labelWidth = new System.Windows.Forms.Label();
- this.labelHeight = new System.Windows.Forms.Label();
+ this.labelResolution = new System.Windows.Forms.Label();
+ this.labelX = new System.Windows.Forms.Label();
this.groupBoxBackground = new System.Windows.Forms.GroupBox();
this.radioButtonColor = new System.Windows.Forms.RadioButton();
this.radioButtonCheckeredImage = new System.Windows.Forms.RadioButton();
@@ -56,7 +56,7 @@ namespace Nikse.SubtitleEdit.Forms
this.panelColor.Location = new System.Drawing.Point(169, 81);
this.panelColor.Name = "panelColor";
this.panelColor.Size = new System.Drawing.Size(21, 20);
- this.panelColor.TabIndex = 19;
+ this.panelColor.TabIndex = 3;
this.panelColor.MouseClick += new System.Windows.Forms.MouseEventHandler(this.panelColor_MouseClick);
//
// buttonColor
@@ -64,7 +64,7 @@ namespace Nikse.SubtitleEdit.Forms
this.buttonColor.Location = new System.Drawing.Point(42, 80);
this.buttonColor.Name = "buttonColor";
this.buttonColor.Size = new System.Drawing.Size(121, 23);
- this.buttonColor.TabIndex = 20;
+ this.buttonColor.TabIndex = 2;
this.buttonColor.Text = "Color";
this.buttonColor.UseVisualStyleBackColor = true;
this.buttonColor.Click += new System.EventHandler(this.buttonColor_Click);
@@ -73,10 +73,10 @@ namespace Nikse.SubtitleEdit.Forms
//
this.buttonOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.buttonOK.ImeMode = System.Windows.Forms.ImeMode.NoControl;
- this.buttonOK.Location = new System.Drawing.Point(451, 275);
+ this.buttonOK.Location = new System.Drawing.Point(451, 155);
this.buttonOK.Name = "buttonOK";
this.buttonOK.Size = new System.Drawing.Size(121, 23);
- this.buttonOK.TabIndex = 21;
+ this.buttonOK.TabIndex = 9;
this.buttonOK.Text = "Generate";
this.buttonOK.UseVisualStyleBackColor = true;
this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);
@@ -86,10 +86,10 @@ namespace Nikse.SubtitleEdit.Forms
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.ImeMode = System.Windows.Forms.ImeMode.NoControl;
- this.buttonCancel.Location = new System.Drawing.Point(578, 275);
+ this.buttonCancel.Location = new System.Drawing.Point(578, 155);
this.buttonCancel.Name = "buttonCancel";
this.buttonCancel.Size = new System.Drawing.Size(75, 23);
- this.buttonCancel.TabIndex = 22;
+ this.buttonCancel.TabIndex = 10;
this.buttonCancel.Text = "C&ancel";
this.buttonCancel.UseVisualStyleBackColor = true;
this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
@@ -98,10 +98,10 @@ namespace Nikse.SubtitleEdit.Forms
//
this.progressBar1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
- this.progressBar1.Location = new System.Drawing.Point(12, 275);
+ this.progressBar1.Location = new System.Drawing.Point(12, 155);
this.progressBar1.Name = "progressBar1";
this.progressBar1.Size = new System.Drawing.Size(433, 23);
- this.progressBar1.TabIndex = 23;
+ this.progressBar1.TabIndex = 8;
this.progressBar1.Visible = false;
//
// labelDuration
@@ -110,7 +110,7 @@ namespace Nikse.SubtitleEdit.Forms
this.labelDuration.Location = new System.Drawing.Point(12, 29);
this.labelDuration.Name = "labelDuration";
this.labelDuration.Size = new System.Drawing.Size(97, 13);
- this.labelDuration.TabIndex = 24;
+ this.labelDuration.TabIndex = 0;
this.labelDuration.Text = "Duration in minutes";
//
// numericUpDownWidth
@@ -127,8 +127,8 @@ namespace Nikse.SubtitleEdit.Forms
0,
0});
this.numericUpDownWidth.Name = "numericUpDownWidth";
- this.numericUpDownWidth.Size = new System.Drawing.Size(110, 20);
- this.numericUpDownWidth.TabIndex = 25;
+ this.numericUpDownWidth.Size = new System.Drawing.Size(64, 20);
+ this.numericUpDownWidth.TabIndex = 3;
this.numericUpDownWidth.Value = new decimal(new int[] {
1080,
0,
@@ -137,7 +137,7 @@ namespace Nikse.SubtitleEdit.Forms
//
// numericUpDownHeight
//
- this.numericUpDownHeight.Location = new System.Drawing.Point(165, 82);
+ this.numericUpDownHeight.Location = new System.Drawing.Point(253, 56);
this.numericUpDownHeight.Maximum = new decimal(new int[] {
50000,
0,
@@ -149,31 +149,31 @@ namespace Nikse.SubtitleEdit.Forms
0,
0});
this.numericUpDownHeight.Name = "numericUpDownHeight";
- this.numericUpDownHeight.Size = new System.Drawing.Size(110, 20);
- this.numericUpDownHeight.TabIndex = 26;
+ this.numericUpDownHeight.Size = new System.Drawing.Size(64, 20);
+ this.numericUpDownHeight.TabIndex = 5;
this.numericUpDownHeight.Value = new decimal(new int[] {
720,
0,
0,
0});
//
- // labelWidth
+ // labelResolution
//
- this.labelWidth.AutoSize = true;
- this.labelWidth.Location = new System.Drawing.Point(12, 58);
- this.labelWidth.Name = "labelWidth";
- this.labelWidth.Size = new System.Drawing.Size(35, 13);
- this.labelWidth.TabIndex = 27;
- this.labelWidth.Text = "Width";
+ this.labelResolution.AutoSize = true;
+ this.labelResolution.Location = new System.Drawing.Point(12, 58);
+ this.labelResolution.Name = "labelResolution";
+ this.labelResolution.Size = new System.Drawing.Size(57, 13);
+ this.labelResolution.TabIndex = 2;
+ this.labelResolution.Text = "Resolution";
//
- // labelHeight
+ // labelX
//
- this.labelHeight.AutoSize = true;
- this.labelHeight.Location = new System.Drawing.Point(12, 84);
- this.labelHeight.Name = "labelHeight";
- this.labelHeight.Size = new System.Drawing.Size(38, 13);
- this.labelHeight.TabIndex = 28;
- this.labelHeight.Text = "Height";
+ this.labelX.AutoSize = true;
+ this.labelX.Location = new System.Drawing.Point(235, 58);
+ this.labelX.Name = "labelX";
+ this.labelX.Size = new System.Drawing.Size(12, 13);
+ this.labelX.TabIndex = 4;
+ this.labelX.Text = "x";
//
// groupBoxBackground
//
@@ -181,10 +181,10 @@ namespace Nikse.SubtitleEdit.Forms
this.groupBoxBackground.Controls.Add(this.radioButtonCheckeredImage);
this.groupBoxBackground.Controls.Add(this.buttonColor);
this.groupBoxBackground.Controls.Add(this.panelColor);
- this.groupBoxBackground.Location = new System.Drawing.Point(15, 118);
+ this.groupBoxBackground.Location = new System.Drawing.Point(339, 12);
this.groupBoxBackground.Name = "groupBoxBackground";
this.groupBoxBackground.Size = new System.Drawing.Size(314, 118);
- this.groupBoxBackground.TabIndex = 29;
+ this.groupBoxBackground.TabIndex = 6;
this.groupBoxBackground.TabStop = false;
this.groupBoxBackground.Text = "Background";
//
@@ -194,7 +194,7 @@ namespace Nikse.SubtitleEdit.Forms
this.radioButtonColor.Location = new System.Drawing.Point(18, 57);
this.radioButtonColor.Name = "radioButtonColor";
this.radioButtonColor.Size = new System.Drawing.Size(74, 17);
- this.radioButtonColor.TabIndex = 22;
+ this.radioButtonColor.TabIndex = 1;
this.radioButtonColor.Text = "Solid color";
this.radioButtonColor.UseVisualStyleBackColor = true;
//
@@ -205,7 +205,7 @@ namespace Nikse.SubtitleEdit.Forms
this.radioButtonCheckeredImage.Location = new System.Drawing.Point(18, 34);
this.radioButtonCheckeredImage.Name = "radioButtonCheckeredImage";
this.radioButtonCheckeredImage.Size = new System.Drawing.Size(108, 17);
- this.radioButtonCheckeredImage.TabIndex = 21;
+ this.radioButtonCheckeredImage.TabIndex = 0;
this.radioButtonCheckeredImage.TabStop = true;
this.radioButtonCheckeredImage.Text = "Checkered image";
this.radioButtonCheckeredImage.UseVisualStyleBackColor = true;
@@ -224,8 +224,8 @@ namespace Nikse.SubtitleEdit.Forms
0,
0});
this.numericUpDownDurationMinutes.Name = "numericUpDownDurationMinutes";
- this.numericUpDownDurationMinutes.Size = new System.Drawing.Size(110, 20);
- this.numericUpDownDurationMinutes.TabIndex = 30;
+ this.numericUpDownDurationMinutes.Size = new System.Drawing.Size(64, 20);
+ this.numericUpDownDurationMinutes.TabIndex = 1;
this.numericUpDownDurationMinutes.Value = new decimal(new int[] {
10,
0,
@@ -234,23 +234,24 @@ namespace Nikse.SubtitleEdit.Forms
//
// labelPleaseWait
//
+ this.labelPleaseWait.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.labelPleaseWait.AutoSize = true;
- this.labelPleaseWait.Location = new System.Drawing.Point(12, 259);
+ this.labelPleaseWait.Location = new System.Drawing.Point(12, 135);
this.labelPleaseWait.Name = "labelPleaseWait";
this.labelPleaseWait.Size = new System.Drawing.Size(70, 13);
- this.labelPleaseWait.TabIndex = 31;
+ this.labelPleaseWait.TabIndex = 7;
this.labelPleaseWait.Text = "Please wait...";
//
// GenerateVideo
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(665, 310);
+ this.ClientSize = new System.Drawing.Size(665, 190);
this.Controls.Add(this.labelPleaseWait);
this.Controls.Add(this.numericUpDownDurationMinutes);
this.Controls.Add(this.groupBoxBackground);
- this.Controls.Add(this.labelHeight);
- this.Controls.Add(this.labelWidth);
+ this.Controls.Add(this.labelX);
+ this.Controls.Add(this.labelResolution);
this.Controls.Add(this.numericUpDownHeight);
this.Controls.Add(this.numericUpDownWidth);
this.Controls.Add(this.labelDuration);
@@ -285,8 +286,8 @@ namespace Nikse.SubtitleEdit.Forms
private System.Windows.Forms.Label labelDuration;
private System.Windows.Forms.NumericUpDown numericUpDownWidth;
private System.Windows.Forms.NumericUpDown numericUpDownHeight;
- private System.Windows.Forms.Label labelWidth;
- private System.Windows.Forms.Label labelHeight;
+ private System.Windows.Forms.Label labelResolution;
+ private System.Windows.Forms.Label labelX;
private System.Windows.Forms.GroupBox groupBoxBackground;
private System.Windows.Forms.RadioButton radioButtonColor;
private System.Windows.Forms.RadioButton radioButtonCheckeredImage;
diff --git a/src/ui/Forms/GenerateVideo.cs b/src/ui/Forms/GenerateVideo.cs
index 8f22c7406..a070e06bf 100644
--- a/src/ui/Forms/GenerateVideo.cs
+++ b/src/ui/Forms/GenerateVideo.cs
@@ -1,6 +1,7 @@
using Nikse.SubtitleEdit.Core.Common;
using Nikse.SubtitleEdit.Logic;
using System;
+using System.IO;
using System.Windows.Forms;
namespace Nikse.SubtitleEdit.Forms
@@ -28,12 +29,23 @@ namespace Nikse.SubtitleEdit.Forms
radioButtonColor.Checked = true;
}
- //Text = LanguageSettings.Current.AssaSetPosition.SetPosition;
- //buttonOK.Text = LanguageSettings.Current.General.ge;
+ Text = LanguageSettings.Current.GenerateBlankVideo.Title;
+ radioButtonCheckeredImage.Text = LanguageSettings.Current.GenerateBlankVideo.CheckeredImage;
+ radioButtonColor.Text = LanguageSettings.Current.GenerateBlankVideo.SolidColor;
+ labelDuration.Text = LanguageSettings.Current.GenerateBlankVideo.DurationInMinutes;
+ buttonColor.Text = LanguageSettings.Current.Settings.ChooseColor;
+ buttonOK.Text = LanguageSettings.Current.Watermark.Generate;
+ labelResolution.Text = LanguageSettings.Current.ExportPngXml.VideoResolution;
labelPleaseWait.Text = LanguageSettings.Current.General.PleaseWait;
buttonCancel.Text = LanguageSettings.Current.General.Cancel;
progressBar1.Visible = false;
labelPleaseWait.Visible = false;
+
+ var left = Math.Max(labelResolution.Left + labelResolution.Width, labelDuration.Left + labelDuration.Width) + 5;
+ numericUpDownDurationMinutes.Left = left;
+ numericUpDownWidth.Left = left;
+ labelX.Left = numericUpDownWidth.Left + numericUpDownWidth.Width + 3;
+ numericUpDownHeight.Left = labelX.Left + labelX.Width + 3;
}
private void buttonOK_Click(object sender, EventArgs e)
@@ -50,6 +62,11 @@ namespace Nikse.SubtitleEdit.Forms
VideoFileName = saveDialog.FileName;
}
+ if (File.Exists(VideoFileName))
+ {
+ File.Delete(VideoFileName);
+ }
+
progressBar1.Style = ProgressBarStyle.Marquee;
progressBar1.Visible = true;
labelPleaseWait.Visible = true;
diff --git a/src/ui/Forms/Main.cs b/src/ui/Forms/Main.cs
index 82c4fdad9..54de5de69 100644
--- a/src/ui/Forms/Main.cs
+++ b/src/ui/Forms/Main.cs
@@ -1609,6 +1609,7 @@ namespace Nikse.SubtitleEdit.Forms
closeVideoToolStripMenuItem.Text = _language.Menu.Video.CloseVideo;
openSecondSubtitleToolStripMenuItem.Text = _language.Menu.Video.OpenSecondSubtitle;
generateTextFromCurrentVideoToolStripMenuItem.Text = _language.Menu.Video.GenerateTextFromVideo;
+ generateBlankVideoToolStripMenuItem.Text = _language.Menu.Video.GenerateBlankVideo;
smpteTimeModedropFrameToolStripMenuItem.Text = _language.Menu.Video.SmptTimeMode;
toolStripMenuItemImportChapters.Text = _language.Menu.Video.ImportChaptersFromVideo;
diff --git a/src/ui/Forms/Main.resx b/src/ui/Forms/Main.resx
index cec85446f..3fc079bee 100644
--- a/src/ui/Forms/Main.resx
+++ b/src/ui/Forms/Main.resx
@@ -465,7 +465,7 @@
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAOhSURBVFhH7VddSBVBFN5+7BcqEitD78zulpkUFREEQSJE
- JApBLxVCFIEU3uvOrhRCxO0pooegIKggesqfu4uWIIE9aL0VYUQREkU/u/dGSfRQFhK5nVPHWmf8udef
+ JApBLxVCFIEU3uvOrhRCxO0pooeIIKggesqfu4uWIIE9aL0VYUQREkU/u/dGSfRQFhK5nVPHWmf8udef
tz74uOyeb+Z8nJk9M1f7j8ngYXXVOd8W7VGmbXE91LRZJJk5eIyVJteXDPlWIkw7YiSF2E2ymYNrxq54
Jg979+1VDASOdYdkM4O20tX5N00+gAY6N21QDFx0xFCmoaGM5NMPz2SnMPkwn9UcVExkHHGN5NOLVFnZ
vBaTZ6IG7m7fphhIO0e/ZRKJAho2fUiZ/FA0ObLFLPoQ2NZT2QRU4TQNmz54Ou+VDbgmOwMb77BsILCs
@@ -479,60 +479,60 @@
g3/qKCxcRJKcEYbhLN8Rz2UT8K6RJP8A1+0HsgHo+2cpPGlkGkStbCBw4kFYW5tHElz72A45uVdQMHhr
XfFqkkSBB9FYVADlXvg6Hu+XTbxzRA1Jfm++k3Dn63aNWE/KiN1rNdj9Jp2dh9Bi4BIgrtkKYCGwCBgD
MiCnX3zG9xhHHeqXAnH8glf1cdu34/fgTOiBm1I3Ei6zFyCmAHc7lgYPnOHEK4E4uQ7ETwj/eOBtaDNw
- C/3iM77HuAEsBq4C4imI8+A+wrMgp69puKw4aA4QjeEkSLzxLogQn5EYQ91cII5Djro0f6BpvwB77Ez9
- Qp/xygAAAABJRU5ErkJggg==
+ C/3iM77HuAEsBq4C4imI8+A+wrMgp69puKw4aA4QjeEkSLzxLogQn5EYQ91cII5Djro0f6BpvwBY+Ez5
+ ifBPwwAAAABJRU5ErkJggg==
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAQZSURBVFhH1VdbaBNZGI5avCLIClbxkkmyUFYRRFS2Xmhd
- cWGFRZ98EKEWFEWIM41oH7o2KIg+eEHULtVqd9WttYltsV0tta209qLYi8ZY2zRJm0wmaZsHfRB80O3Z
- /5tMS4mTG5MXP/g48//nnP//zj3RfZdgjM2QQqHCF3397pdv3g5LUug0+WYp1doQCoU4r89f9W7Q8ywm
- Xd5X5XWt7M+HTexGbQsrrWlm/UPuPtW2Cj0jYnU4HM5S0sSGKEm3rWW1rLDEFpeX7zcwEnuZeKbE3qTa
- ZjpP3ahmEKGkiQ1qVKMWIJrn79YzURRrxWCw4hKJUWsTTcyEkiY2khUAnv2rjp27U69ap8aUBNiedrEn
- 7T1pIWKlLOA8jezCP4/TQsRKWQB2eWVjZ1qIWCkL6HG6BsbGxtalg4iVsoDud64+xaUZiPX9CqCzvmJ0
- dLSMWA4Gg8FTk9+JSG13IYYmARRoD65b+Ipv1jCy5RJ2IkIEYmgSQKPY2Otwhdu6nB/aiRS0GyXsRKS+
- fyCGJgHpgCYBeGbpKG2lRydXITftO5fqNlut1ply5xjQJAAb6UlHL/v73zZW0dDOnE7nV5SwwaYXrxlE
- oG37zu1PJYvArliECX9BwVr4AE0CaJS/V7e8ZFdtjay0ulnehChhg3Vtr9j4+Pi2GoNhrfVHw4Tn8CEG
- EaJFKJMDEjQJkCRpPiXdT0IO0EjzyN6GEjZIdftomWbbTdwtIutYvforBEg8/zl0/PgSxNAkIBlUGAyZ
- lPwzBDxa81MRCfgAEYECvhj1zgFPZ1HpQ+by+B7LHeIhWgCNdt2gx9sM9SDtiVsoB9wjLVS3BW3sRq4Y
- ye2mZR9rs7IWSoJwURbA8yGX2TyH+uSIgcA9mrFNaB8XKnvgANYavukXEZ5Z+hbK9fq5NtPyUQiwGbkL
- ch+e54bz8r5EZuFYPnxJQ0XAprcDnh7Y3f1DfWTbUTreu3vp+5cqoz4fyUnIFzvH6eUgBEpeJQuw8K+Z
- TjdDcSdGKnsAge2mVW8goNK0YoyW4tokm7N/boSAiAjLDqVLYqQiwGZctSOy9uoczM+TBfgFvk7pkhgp
- CTBx9UhE5TDxfjS7fvu1AQKe5eT8FzjBJ/5PAEwJcA55aZPtieJuWncO7R5wXJbVxE0oAvbKnaPArNYM
- n0XwRZaCv66442NSwDXa+XiGo/nc4fxIIhZQ0pLIVK/00QgzlO7fgJKfhAD3kSOf6Hr+QXHHhj8QuFLR
- 0DF110ezw+EIVx09urTSyL2v1OvFMm5lIXVbTMStt5S4TClhLy7anq33CsfcI2azf0QwHyRf/BNB12oG
- TXU2jXLqxZsk/TrKbW1tRYJ5xEVEJMLRw/ri8VlP3KCUsOFHfSYR7dEPs5X8sUwSCBiLcaDT/Q+5O/iQ
- ERNf6AAAAABJRU5ErkJggg==
+ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAQaSURBVFhH1VdbaBNZGI5rcb2wIApe8JJJIpRVBBGVrRda
+ FRdcEH3yQYRaUBQhzjSifejaoCD64GVFrVTrdt1da21iW2y3ltpWWlur2IvGWNs0SZtMJmmbB30QfNDt
+ 8f8m01Li5MbkxQ8+zvz/Oef/v3NPdN8lGGPTpFCo4Hlvn/vF6zdDkhQ6Tb7pSrU2hEIhzuvzV74d8DyJ
+ SZf3ZVltK7vxoIndrGlhJdXNrG/Q3avaVqFnWKwKh8OZSprYECXpT2tpDSsotsXl5XsNjMReJp4ptjep
+ tpnKUzerGEQoaWKDGlWrBYjm+X/qmCiKNWIwWH6JxKi1iSZmQkkTG8kKAM/+VcvO/V2nWqfGlATYHney
+ R+3daSFipSzgPI3swt36tBCxUhaAXV7R+CwtRKyUBXQ7Xf2jo6Nr0kHESllA11tXr+LSDMT6fgXQWV86
+ MjJSSiwDg8HgqYnvRKS2vyGGJgEUaA+uW/iKblUzsuUSdiJCBGJoEkCjWN/jcIXbOp3v24kUtAsl7ESk
+ vr8jhiYB6YAmAXhm6ShtpkcnRyE35TuH6jZardYf5M4xoEkANtKjjh525782Vt7QzpxO5xeUsMGm568Y
+ RKBt+46tjyWLwP6wCOP+/PzV8AGaBNAod1W1vGBXbY2spKpZ3oQoYYO1bS/Z2NjYlmqDYbV1hWHcc/gQ
+ gwjRIpTKAQmaBEiSNJuS7ichB2ikuWRvQQkbpLp9tEwz7CbuNpF1rFz5BQIknv8UOn58AWJoEpAMyg2G
+ hZT8EwQ8XPVzIQl4DxGBfL4I9c5+z7PCkgfM5fHVyx3iIVoAjXbNgMfbDPUg7YnbKPvdwy1Utwlt7Eau
+ CMntpsUfajIzf5IE4aIsgOdDLrP5R+qTLQYC/9KMbUD7uFDZAwew1vBNvYjwzNK3UKbXz7SZloxAgM3I
+ XZD78Dw3lJv7OTILx/LgSxoqAja86fd0w+7qG+wl247S8c7dQ9/bKo36PCQnIZ/tHKeXgxAoeaUswMK/
+ YjrdNMWdGKnsAQS2m5a/hoAK09JRWoprE2zO+qURAiIiLNuVLomRigCbcfn2yNqrcyAvVxbgF/hapUti
+ pCTAxNUhEZVDxHvR7Nz5awMEPMnO/j9wgk/8nwCYFOAc9NIm2xPF3bTuHNrd57hMq4kbVwTslTtHgVmt
+ GT6L4IssBX9dccfHhIBrtPPxDEfzqcP5gUTMoaTFkale5qMRZijdvwElPwkB7iNHPtL1PE9xx4Y/ELhS
+ 3tAxeddHs8PhCFcePbqowsi9q9DrxVJuWQF1m0/ErbeIuFgpYc8v3Jql9wrH3MNms39YMB8kX/wTQddq
+ Bk11Fo1y8sWbIP06ymltbUWCWcS5RCTC0cP64vFZS1ynlLDhR/1CItqjH2Yr+WOZJBAwFuNAp/sKsgH4
+ j9uGx+wAAAAASUVORK5CYII=
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
- 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
+ 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
@@ -775,7 +775,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD2
- CAAAAk1TRnQBSQFMAgEBAgEAAcQBKgHEASoBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
+ CAAAAk1TRnQBSQFMAgEBAgEAAcwBKgHMASoBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
diff --git a/src/ui/Logic/Language.cs b/src/ui/Logic/Language.cs
index 08813cdbe..10f77f9be 100644
--- a/src/ui/Logic/Language.cs
+++ b/src/ui/Logic/Language.cs
@@ -54,6 +54,7 @@ namespace Nikse.SubtitleEdit.Logic
public LanguageStructure.FindDialog FindDialog;
public LanguageStructure.FindSubtitleLine FindSubtitleLine;
public LanguageStructure.FixCommonErrors FixCommonErrors;
+ public LanguageStructure.GenerateBlankVideo GenerateBlankVideo;
public LanguageStructure.GetDictionaries GetDictionaries;
public LanguageStructure.GetTesseractDictionaries GetTesseractDictionaries;
public LanguageStructure.GoogleTranslate GoogleTranslate;
@@ -972,6 +973,14 @@ namespace Nikse.SubtitleEdit.Logic
FixUnnecessaryLeadingDots = "Remove unnecessary leading dots",
};
+ GenerateBlankVideo = new LanguageStructure.GenerateBlankVideo
+ {
+ Title = "Generate blank video file",
+ CheckeredImage = "Chekered image",
+ DurationInMinutes = "Duration in minutes",
+ SolidColor = "Solid color",
+ };
+
GetDictionaries = new LanguageStructure.GetDictionaries
{
Title = "Need dictionaries?",
@@ -1676,6 +1685,7 @@ namespace Nikse.SubtitleEdit.Logic
SetVideoOffset = "Set video offset...",
SmptTimeMode = "SMPTE timing (drop frame)",
GenerateTextFromVideo = "Generate text from video...",
+ GenerateBlankVideo = "Generate blank video...",
ImportChaptersFromVideo = "Import chapters from video",
GenerateImportSceneChanges = "Generate/import scene changes...",
RemoveSceneChanges = "Remove scene changes",
diff --git a/src/ui/Logic/LanguageDeserializer.cs b/src/ui/Logic/LanguageDeserializer.cs
index 785868c6e..0f2116cad 100644
--- a/src/ui/Logic/LanguageDeserializer.cs
+++ b/src/ui/Logic/LanguageDeserializer.cs
@@ -2023,6 +2023,18 @@ namespace Nikse.SubtitleEdit.Logic
case "FixCommonErrors/FixUnnecessaryLeadingDots":
language.FixCommonErrors.FixUnnecessaryLeadingDots = reader.Value;
break;
+ case "GenerateBlankVideo/Title":
+ language.GenerateBlankVideo.Title = reader.Value;
+ break;
+ case "GenerateBlankVideo/CheckeredImage":
+ language.GenerateBlankVideo.CheckeredImage = reader.Value;
+ break;
+ case "GenerateBlankVideo/SolidColor":
+ language.GenerateBlankVideo.SolidColor = reader.Value;
+ break;
+ case "GenerateBlankVideo/DurationInMinutes":
+ language.GenerateBlankVideo.DurationInMinutes = reader.Value;
+ break;
case "GetDictionaries/Title":
language.GetDictionaries.Title = reader.Value;
break;
@@ -3910,6 +3922,9 @@ namespace Nikse.SubtitleEdit.Logic
case "Main/Menu/Video/GenerateTextFromVideo":
language.Main.Menu.Video.GenerateTextFromVideo = reader.Value;
break;
+ case "Main/Menu/Video/GenerateBlankVideo":
+ language.Main.Menu.Video.GenerateBlankVideo = reader.Value;
+ break;
case "Main/Menu/Video/ImportChaptersFromVideo":
language.Main.Menu.Video.ImportChaptersFromVideo = reader.Value;
break;
@@ -4075,6 +4090,9 @@ namespace Nikse.SubtitleEdit.Logic
case "Main/Menu/ContextMenu/SetActor":
language.Main.Menu.ContextMenu.SetActor = reader.Value;
break;
+ case "Main/Menu/ContextMenu/SetOverrideTagsEtc":
+ language.Main.Menu.ContextMenu.SetOverrideTagsEtc = reader.Value;
+ break;
case "Main/Menu/ContextMenu/SubStationAlphaStyles":
language.Main.Menu.ContextMenu.SubStationAlphaStyles = reader.Value;
break;
@@ -4267,6 +4285,9 @@ namespace Nikse.SubtitleEdit.Logic
case "Main/Menu/ContextMenu/ApplyCustomOverrideTag":
language.Main.Menu.ContextMenu.ApplyCustomOverrideTag = reader.Value;
break;
+ case "Main/Menu/ContextMenu/SetResolution":
+ language.Main.Menu.ContextMenu.SetResolution = reader.Value;
+ break;
case "Main/Menu/ContextMenu/FixCommonErrorsInSelectedLines":
language.Main.Menu.ContextMenu.FixCommonErrorsInSelectedLines = reader.Value;
break;
diff --git a/src/ui/Logic/LanguageStructure.cs b/src/ui/Logic/LanguageStructure.cs
index 136d219c1..dc4667ade 100644
--- a/src/ui/Logic/LanguageStructure.cs
+++ b/src/ui/Logic/LanguageStructure.cs
@@ -839,6 +839,14 @@
public string FixUnnecessaryLeadingDots { get; set; }
}
+ public class GenerateBlankVideo
+ {
+ public string Title { get; set; }
+ public string CheckeredImage { get; set; }
+ public string SolidColor { get; set; }
+ public string DurationInMinutes { get; set; }
+ }
+
public class GetDictionaries
{
public string Title { get; set; }
@@ -1531,6 +1539,7 @@
public string SetVideoOffset { get; set; }
public string SmptTimeMode { get; set; }
public string GenerateTextFromVideo { get; set; }
+ public string GenerateBlankVideo { get; set; }
public string ImportChaptersFromVideo { get; set; }
public string GenerateImportSceneChanges { get; set; }
public string RemoveSceneChanges { get; set; }