diff --git a/LanguageMaster.xml b/LanguageMaster.xml index de8443a26..7768d29d9 100644 --- a/LanguageMaster.xml +++ b/LanguageMaster.xml @@ -2058,10 +2058,18 @@ can edit in same subtitle file (collaboration) Color duration if too short Color duration if too long Color text if too long + Color text if too wide (pixels) Color text if more than {0} lines Color time code overlap Color gap if too short Error color + Settings... + Line width settings + Maximum line width: + pixels + Measuring font: + Show line widths below subtitle text box + Show line width statistics in File > Statistics Go to first selected line Go to next empty line Merge selected lines @@ -2273,6 +2281,9 @@ Continue? Single line length - minimum: {0} Single line length - maximum: {0} Single line length - average: {0} + Single line width - minimum: {0} pixels + Single line width - maximum: {0} pixels + Single line width - average: {0} pixels Duration - minimum: {0:0.000} seconds Duration - maximum: {0:0.000} seconds Duration - average: {0:0.000} seconds diff --git a/libse/Language.cs b/libse/Language.cs index 208bb4215..d0d400ad1 100644 --- a/libse/Language.cs +++ b/libse/Language.cs @@ -2352,10 +2352,18 @@ can edit in same subtitle file (collaboration)", SyntaxColorDurationIfTooSmall = "Color duration if too short", SyntaxColorDurationIfTooLarge = "Color duration if too long", SyntaxColorTextIfTooLong = "Color text if too long", + SyntaxColorTextIfTooWide = "Color text if too wide (pixels)", SyntaxColorTextMoreThanMaxLines = "Color text if more than {0} lines", SyntaxColorOverlap = "Color time code overlap", SyntaxColorGap = "Color gap if too short", SyntaxErrorColor = "Error color", + SyntaxLineWidthSettings = "Settings...", + LineWidthSettings = "Line width settings", + MaximumLineWidth = "Maximum line width:", + Pixels = "pixels", + MeasureFont = "Measuring font:", + ShowLineWidths = "Show line widths below subtitle text box", + GenerateLineWidthStatistics = "Show line width statistics in File > Statistics", GoToFirstSelectedLine = "Go to first selected line", GoToNextEmptyLine = "Go to next empty line", MergeSelectedLines = "Merge selected lines", @@ -2592,6 +2600,9 @@ can edit in same subtitle file (collaboration)", SingleLineLengthMinimum = "Single line length - minimum: {0}", SingleLineLengthMaximum = "Single line length - maximum: {0}", SingleLineLengthAverage = "Single line length - average: {0}", + SingleLineWidthMinimum = "Single line width - minimum: {0} pixels", + SingleLineWidthMaximum = "Single line width - maximum: {0} pixels", + SingleLineWidthAverage = "Single line width - average: {0} pixels", DurationMinimum = "Duration - minimum: {0:0.000} seconds", DurationMaximum = "Duration - maximum: {0:0.000} seconds", DurationAverage = "Duration - average: {0:0.000} seconds", diff --git a/libse/LanguageDeserializer.cs b/libse/LanguageDeserializer.cs index 2bcda8f31..2262f3289 100644 --- a/libse/LanguageDeserializer.cs +++ b/libse/LanguageDeserializer.cs @@ -5596,6 +5596,9 @@ namespace Nikse.SubtitleEdit.Core case "Settings/SyntaxColorTextIfTooLong": language.Settings.SyntaxColorTextIfTooLong = reader.Value; break; + case "Settings/SyntaxColorTextIfTooWide": + language.Settings.SyntaxColorTextIfTooWide = reader.Value; + break; case "Settings/SyntaxColorTextMoreThanMaxLines": language.Settings.SyntaxColorTextMoreThanMaxLines = reader.Value; break; @@ -5608,6 +5611,27 @@ namespace Nikse.SubtitleEdit.Core case "Settings/SyntaxErrorColor": language.Settings.SyntaxErrorColor = reader.Value; break; + case "Settings/SyntaxLineWidthSettings": + language.Settings.SyntaxLineWidthSettings = reader.Value; + break; + case "Settings/LineWidthSettings": + language.Settings.LineWidthSettings = reader.Value; + break; + case "Settings/MaximumLineWidth": + language.Settings.MaximumLineWidth = reader.Value; + break; + case "Settings/Pixels": + language.Settings.Pixels = reader.Value; + break; + case "Settings/MeasureFont": + language.Settings.MeasureFont = reader.Value; + break; + case "Settings/ShowLineWidths": + language.Settings.ShowLineWidths = reader.Value; + break; + case "Settings/GenerateLineWidthStatistics": + language.Settings.GenerateLineWidthStatistics = reader.Value; + break; case "Settings/GoToFirstSelectedLine": language.Settings.GoToFirstSelectedLine = reader.Value; break; @@ -6157,6 +6181,15 @@ namespace Nikse.SubtitleEdit.Core case "Statistics/SingleLineLengthAverage": language.Statistics.SingleLineLengthAverage = reader.Value; break; + case "Statistics/SingleLineWidthMinimum": + language.Statistics.SingleLineWidthMinimum = reader.Value; + break; + case "Statistics/SingleLineWidthMaximum": + language.Statistics.SingleLineWidthMaximum = reader.Value; + break; + case "Statistics/SingleLineWidthAverage": + language.Statistics.SingleLineWidthAverage = reader.Value; + break; case "Statistics/DurationMinimum": language.Statistics.DurationMinimum = reader.Value; break; diff --git a/libse/LanguageStructure.cs b/libse/LanguageStructure.cs index 731c57dec..1b4b83788 100644 --- a/libse/LanguageStructure.cs +++ b/libse/LanguageStructure.cs @@ -2224,10 +2224,18 @@ public string SyntaxColorDurationIfTooSmall { get; set; } public string SyntaxColorDurationIfTooLarge { get; set; } public string SyntaxColorTextIfTooLong { get; set; } + public string SyntaxColorTextIfTooWide { get; set; } public string SyntaxColorTextMoreThanMaxLines { get; set; } public string SyntaxColorOverlap { get; set; } public string SyntaxColorGap { get; set; } public string SyntaxErrorColor { get; set; } + public string SyntaxLineWidthSettings { get; set; } + public string LineWidthSettings { get; set; } + public string MaximumLineWidth { get; set; } + public string Pixels { get; set; } + public string MeasureFont { get; set; } + public string ShowLineWidths { get; set; } + public string GenerateLineWidthStatistics { get; set; } public string GoToFirstSelectedLine { get; set; } public string GoToNextEmptyLine { get; set; } public string MergeSelectedLines { get; set; } @@ -2461,6 +2469,9 @@ public string SingleLineLengthMinimum { get; set; } public string SingleLineLengthMaximum { get; set; } public string SingleLineLengthAverage { get; set; } + public string SingleLineWidthMinimum { get; set; } + public string SingleLineWidthMaximum { get; set; } + public string SingleLineWidthAverage { get; set; } public string DurationMinimum { get; set; } public string DurationMaximum { get; set; } public string DurationAverage { get; set; } diff --git a/libse/Settings.cs b/libse/Settings.cs index 8467ae70a..f58dda444 100644 --- a/libse/Settings.cs +++ b/libse/Settings.cs @@ -142,6 +142,7 @@ namespace Nikse.SubtitleEdit.Core 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; } @@ -325,6 +326,7 @@ namespace Nikse.SubtitleEdit.Core ListViewSyntaxColorDurationBig = true; ListViewSyntaxColorOverlap = true; ListViewSyntaxColorLongLines = true; + ListViewSyntaxColorWideLines = false; ListViewSyntaxMoreThanXLines = true; ListViewSyntaxColorGap = true; ListViewSyntaxErrorColor = Color.FromArgb(255, 180, 150); @@ -738,6 +740,12 @@ $HorzAlign = Center 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 bool ShowLineWidths { get; set; } + public bool GenerateLineWidthStatistics { get; set; } + public int SubtitleLineMaximumPixelWidth { get; set; } public bool CenterSubtitleInTextBox { get; set; } public bool ShowRecentFiles { get; set; } public bool RememberSelectedLine { get; set; } @@ -877,6 +885,12 @@ $HorzAlign = Center SubtitleListViewFontSize = 10; SubtitleFontBold = false; SubtitleFontColor = Color.Black; + MeasureFontName = "Arial"; + MeasureFontSize = 24; + MeasureFontBold = false; + ShowLineWidths = false; + GenerateLineWidthStatistics = false; + SubtitleLineMaximumPixelWidth = 576; SubtitleBackgroundColor = Color.White; CenterSubtitleInTextBox = false; DefaultSubtitleFormat = "SubRip"; @@ -2286,6 +2300,42 @@ $HorzAlign = Center settings.General.SubtitleBackgroundColor = Color.FromArgb(Convert.ToInt32(subNode.InnerText, CultureInfo.InvariantCulture)); } + subNode = node.SelectSingleNode("MeasureFontName"); + if (subNode != null) + { + settings.General.MeasureFontName = subNode.InnerText; + } + + subNode = node.SelectSingleNode("MeasureFontSize"); + if (subNode != null) + { + settings.General.MeasureFontSize = Convert.ToInt32(subNode.InnerText, CultureInfo.InvariantCulture); + } + + subNode = node.SelectSingleNode("MeasureFontBold"); + if (subNode != null) + { + settings.General.MeasureFontBold = Convert.ToBoolean(subNode.InnerText); + } + + subNode = node.SelectSingleNode("ShowLineWidths"); + if (subNode != null) + { + settings.General.ShowLineWidths = Convert.ToBoolean(subNode.InnerText); + } + + subNode = node.SelectSingleNode("GenerateLineWidthStatistics"); + if (subNode != null) + { + settings.General.GenerateLineWidthStatistics = Convert.ToBoolean(subNode.InnerText); + } + + subNode = node.SelectSingleNode("SubtitleLineMaximumPixelWidth"); + if (subNode != null) + { + settings.General.SubtitleLineMaximumPixelWidth = Convert.ToInt32(subNode.InnerText, CultureInfo.InvariantCulture); + } + subNode = node.SelectSingleNode("CenterSubtitleInTextBox"); if (subNode != null) { @@ -3074,6 +3124,12 @@ $HorzAlign = Center settings.Tools.ListViewSyntaxColorLongLines = Convert.ToBoolean(subNode.InnerText); } + subNode = node.SelectSingleNode("ListViewSyntaxColorWideLines"); + if (subNode != null) + { + settings.Tools.ListViewSyntaxColorWideLines = Convert.ToBoolean(subNode.InnerText); + } + subNode = node.SelectSingleNode("ListViewSyntaxMoreThanXLines"); if (subNode != null) { @@ -6524,6 +6580,12 @@ $HorzAlign = Center textWriter.WriteElementString("SubtitleListViewFontBold", settings.General.SubtitleListViewFontBold.ToString(CultureInfo.InvariantCulture)); textWriter.WriteElementString("SubtitleFontColor", settings.General.SubtitleFontColor.ToArgb().ToString(CultureInfo.InvariantCulture)); textWriter.WriteElementString("SubtitleBackgroundColor", settings.General.SubtitleBackgroundColor.ToArgb().ToString(CultureInfo.InvariantCulture)); + textWriter.WriteElementString("MeasureFontName", settings.General.MeasureFontName); + textWriter.WriteElementString("MeasureFontSize", settings.General.MeasureFontSize.ToString(CultureInfo.InvariantCulture)); + textWriter.WriteElementString("MeasureFontBold", settings.General.MeasureFontBold.ToString(CultureInfo.InvariantCulture)); + textWriter.WriteElementString("ShowLineWidths", settings.General.ShowLineWidths.ToString(CultureInfo.InvariantCulture)); + textWriter.WriteElementString("GenerateLineWidthStatistics", settings.General.GenerateLineWidthStatistics.ToString(CultureInfo.InvariantCulture)); + textWriter.WriteElementString("SubtitleLineMaximumPixelWidth", settings.General.SubtitleLineMaximumPixelWidth.ToString(CultureInfo.InvariantCulture)); textWriter.WriteElementString("CenterSubtitleInTextBox", settings.General.CenterSubtitleInTextBox.ToString(CultureInfo.InvariantCulture)); textWriter.WriteElementString("ShowRecentFiles", settings.General.ShowRecentFiles.ToString(CultureInfo.InvariantCulture)); textWriter.WriteElementString("RememberSelectedLine", settings.General.RememberSelectedLine.ToString(CultureInfo.InvariantCulture)); @@ -6658,6 +6720,7 @@ $HorzAlign = Center textWriter.WriteElementString("ListViewSyntaxColorDurationSmall", settings.Tools.ListViewSyntaxColorDurationSmall.ToString(CultureInfo.InvariantCulture)); textWriter.WriteElementString("ListViewSyntaxColorDurationBig", settings.Tools.ListViewSyntaxColorDurationBig.ToString(CultureInfo.InvariantCulture)); textWriter.WriteElementString("ListViewSyntaxColorLongLines", settings.Tools.ListViewSyntaxColorLongLines.ToString(CultureInfo.InvariantCulture)); + textWriter.WriteElementString("ListViewSyntaxColorWideLines", settings.Tools.ListViewSyntaxColorWideLines.ToString(CultureInfo.InvariantCulture)); textWriter.WriteElementString("ListViewSyntaxMoreThanXLines", settings.Tools.ListViewSyntaxMoreThanXLines.ToString(CultureInfo.InvariantCulture)); textWriter.WriteElementString("ListViewSyntaxColorOverlap", settings.Tools.ListViewSyntaxColorOverlap.ToString(CultureInfo.InvariantCulture)); textWriter.WriteElementString("ListViewSyntaxColorGap", settings.Tools.ListViewSyntaxColorGap.ToString(CultureInfo.InvariantCulture)); diff --git a/src/Controls/SubtitleListView.cs b/src/Controls/SubtitleListView.cs index 167becba2..f11d2f6ff 100644 --- a/src/Controls/SubtitleListView.cs +++ b/src/Controls/SubtitleListView.cs @@ -1,4 +1,5 @@ using Nikse.SubtitleEdit.Core; +using Nikse.SubtitleEdit.Logic; using System; using System.Collections.Generic; using System.Drawing; @@ -1404,6 +1405,18 @@ namespace Nikse.SubtitleEdit.Controls item.SubItems[ColumnIndexText].BackColor = Configuration.Settings.Tools.ListViewSyntaxErrorColor; } } + if (_settings.Tools.ListViewSyntaxColorWideLines) + { + string s = HtmlUtil.RemoveHtmlTags(paragraph.Text, true); + foreach (string line in s.SplitToLines()) + { + if (TextWidth.CalcPixelWidth(line) > Configuration.Settings.General.SubtitleLineMaximumPixelWidth) + { + item.SubItems[ColumnIndexText].BackColor = Configuration.Settings.Tools.ListViewSyntaxErrorColor; + return; + } + } + } if (_settings.Tools.ListViewSyntaxMoreThanXLines && item.SubItems[ColumnIndexText].BackColor != Configuration.Settings.Tools.ListViewSyntaxErrorColor) { diff --git a/src/Forms/Main.Designer.cs b/src/Forms/Main.Designer.cs index 37d1f88ba..59e3e9482 100644 --- a/src/Forms/Main.Designer.cs +++ b/src/Forms/Main.Designer.cs @@ -38,9 +38,9 @@ { this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Main)); - Nikse.SubtitleEdit.Core.TimeCode timeCode11 = new Nikse.SubtitleEdit.Core.TimeCode(); - Nikse.SubtitleEdit.Core.TimeCode timeCode10 = new Nikse.SubtitleEdit.Core.TimeCode(); - Nikse.SubtitleEdit.Core.TimeCode timeCode12 = new Nikse.SubtitleEdit.Core.TimeCode(); + Nikse.SubtitleEdit.Core.TimeCode timeCode1 = new Nikse.SubtitleEdit.Core.TimeCode(); + Nikse.SubtitleEdit.Core.TimeCode timeCode2 = new Nikse.SubtitleEdit.Core.TimeCode(); + Nikse.SubtitleEdit.Core.TimeCode timeCode3 = new Nikse.SubtitleEdit.Core.TimeCode(); this.statusStrip1 = new System.Windows.Forms.StatusStrip(); this.labelStatus = new System.Windows.Forms.ToolStripStatusLabel(); this.toolStripSelected = new System.Windows.Forms.ToolStripStatusLabel(); @@ -325,6 +325,7 @@ this.colorDialog1 = new System.Windows.Forms.ColorDialog(); this.groupBoxVideo = new System.Windows.Forms.GroupBox(); this.labelNextWord = new System.Windows.Forms.Label(); + this.audioVisualizer = new Nikse.SubtitleEdit.Controls.AudioVisualizer(); this.checkBoxSyncListViewWithVideoWhilePlaying = new System.Windows.Forms.CheckBox(); this.labelVideoInfo = new System.Windows.Forms.Label(); this.trackBarWaveformPosition = new System.Windows.Forms.TrackBar(); @@ -360,6 +361,7 @@ this.buttonPlayCurrent = new System.Windows.Forms.Button(); this.buttonPlayNext = new System.Windows.Forms.Button(); this.tabPageCreate = new System.Windows.Forms.TabPage(); + this.timeUpDownVideoPosition = new Nikse.SubtitleEdit.Controls.TimeUpDown(); this.buttonGotoSub = new System.Windows.Forms.Button(); this.buttonBeforeText = new System.Windows.Forms.Button(); this.buttonSetEnd = new System.Windows.Forms.Button(); @@ -377,6 +379,7 @@ this.labelVideoPosition = new System.Windows.Forms.Label(); this.buttonSecBack1 = new System.Windows.Forms.Button(); this.tabPageAdjust = new System.Windows.Forms.TabPage(); + this.timeUpDownVideoPositionAdjust = new Nikse.SubtitleEdit.Controls.TimeUpDown(); this.buttonAdjustSetEndTime = new System.Windows.Forms.Button(); this.buttonSetEndAndGoToNext = new System.Windows.Forms.Button(); this.buttonSetStartAndOffsetRest = new System.Windows.Forms.Button(); @@ -425,6 +428,7 @@ this.tabControlSubtitle = new System.Windows.Forms.TabControl(); this.tabPage1 = new System.Windows.Forms.TabPage(); this.splitContainerListViewAndText = new System.Windows.Forms.SplitContainer(); + this.SubtitleListview1 = new Nikse.SubtitleEdit.Controls.SubtitleListView(); this.imageListBookmarks = new System.Windows.Forms.ImageList(this.components); this.groupBoxEdit = new System.Windows.Forms.GroupBox(); this.panelBookmark = new System.Windows.Forms.Panel(); @@ -440,6 +444,7 @@ this.labelTextAlternateLineLengths = new System.Windows.Forms.Label(); this.labelAlternateText = new System.Windows.Forms.Label(); this.labelText = new System.Windows.Forms.Label(); + this.textBoxListViewTextAlternate = new Nikse.SubtitleEdit.Controls.SETextBox(); this.contextMenuStripTextBoxListView = new System.Windows.Forms.ContextMenuStrip(this.components); this.toolStripMenuItemWebVttVoice = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparatorWebVTT = new System.Windows.Forms.ToolStripSeparator(); @@ -487,28 +492,25 @@ this.labelTextLineTotal = new System.Windows.Forms.Label(); this.labelCharactersPerSecond = new System.Windows.Forms.Label(); this.buttonUnBreak = new System.Windows.Forms.Button(); + this.timeUpDownStartTime = new Nikse.SubtitleEdit.Controls.TimeUpDown(); this.numericUpDownDuration = new System.Windows.Forms.NumericUpDown(); this.buttonPrevious = new System.Windows.Forms.Button(); this.buttonNext = new System.Windows.Forms.Button(); this.labelStartTime = new System.Windows.Forms.Label(); + this.textBoxListViewText = new Nikse.SubtitleEdit.Controls.SETextBox(); this.labelDuration = new System.Windows.Forms.Label(); this.labelAutoDuration = new System.Windows.Forms.Label(); this.tabPage2 = new System.Windows.Forms.TabPage(); this.textBoxSource = new System.Windows.Forms.TextBox(); this.panelVideoPlayer = new System.Windows.Forms.Panel(); + this.mediaPlayer = new Nikse.SubtitleEdit.Controls.VideoPlayerContainer(); this.contextMenuStripEmpty = new System.Windows.Forms.ContextMenuStrip(this.components); this.insertLineToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.imageListPlayRate = new System.Windows.Forms.ImageList(this.components); this.timerTextUndo = new System.Windows.Forms.Timer(this.components); this.timerAlternateTextUndo = new System.Windows.Forms.Timer(this.components); - this.SubtitleListview1 = new Nikse.SubtitleEdit.Controls.SubtitleListView(); - this.textBoxListViewTextAlternate = new Nikse.SubtitleEdit.Controls.SETextBox(); - this.timeUpDownStartTime = new Nikse.SubtitleEdit.Controls.TimeUpDown(); - this.textBoxListViewText = new Nikse.SubtitleEdit.Controls.SETextBox(); - this.mediaPlayer = new Nikse.SubtitleEdit.Controls.VideoPlayerContainer(); - this.audioVisualizer = new Nikse.SubtitleEdit.Controls.AudioVisualizer(); - this.timeUpDownVideoPosition = new Nikse.SubtitleEdit.Controls.TimeUpDown(); - this.timeUpDownVideoPositionAdjust = new Nikse.SubtitleEdit.Controls.TimeUpDown(); + this.labelSingleLinePixels = new System.Windows.Forms.Label(); + this.labelAlternateSingleLinePixels = new System.Windows.Forms.Label(); this.statusStrip1.SuspendLayout(); this.toolStrip1.SuspendLayout(); this.menuStrip1.SuspendLayout(); @@ -2919,6 +2921,47 @@ this.labelNextWord.Text = "Next: xxx"; this.labelNextWord.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // + // audioVisualizer + // + this.audioVisualizer.AllowDrop = true; + this.audioVisualizer.AllowNewSelection = true; + this.audioVisualizer.AllowOverlap = false; + this.audioVisualizer.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.audioVisualizer.BackColor = System.Drawing.Color.Black; + this.audioVisualizer.BackgroundColor = System.Drawing.Color.Black; + this.audioVisualizer.ClosenessForBorderSelection = 15; + this.audioVisualizer.Color = System.Drawing.Color.GreenYellow; + this.audioVisualizer.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F); + this.audioVisualizer.GridColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(18))))); + this.audioVisualizer.InsertAtVideoPositionShortcut = System.Windows.Forms.Keys.Insert; + this.audioVisualizer.Location = new System.Drawing.Point(472, 32); + this.audioVisualizer.Margin = new System.Windows.Forms.Padding(0); + this.audioVisualizer.MouseWheelScrollUpIsForward = true; + this.audioVisualizer.Name = "audioVisualizer"; + this.audioVisualizer.NewSelectionParagraph = null; + this.audioVisualizer.ParagraphColor = System.Drawing.Color.LimeGreen; + this.audioVisualizer.SceneChanges = ((System.Collections.Generic.List)(resources.GetObject("audioVisualizer.SceneChanges"))); + this.audioVisualizer.SelectedColor = System.Drawing.Color.Red; + this.audioVisualizer.ShowGridLines = true; + this.audioVisualizer.ShowSpectrogram = false; + this.audioVisualizer.ShowWaveform = true; + this.audioVisualizer.Size = new System.Drawing.Size(499, 229); + this.audioVisualizer.StartPositionSeconds = 0D; + this.audioVisualizer.TabIndex = 6; + this.audioVisualizer.TextBold = true; + this.audioVisualizer.TextColor = System.Drawing.Color.Gray; + this.audioVisualizer.TextSize = 9F; + this.audioVisualizer.VerticalZoomFactor = 1D; + this.audioVisualizer.WaveformNotLoadedText = "Click to add waveform"; + this.audioVisualizer.WavePeaks = null; + this.audioVisualizer.ZoomFactor = 1D; + this.audioVisualizer.Click += new System.EventHandler(this.AudioWaveform_Click); + this.audioVisualizer.DragDrop += new System.Windows.Forms.DragEventHandler(this.AudioWaveformDragDrop); + this.audioVisualizer.DragEnter += new System.Windows.Forms.DragEventHandler(this.AudioWaveformDragEnter); + this.audioVisualizer.MouseEnter += new System.EventHandler(this.audioVisualizer_MouseEnter); + // // checkBoxSyncListViewWithVideoWhilePlaying // this.checkBoxSyncListViewWithVideoWhilePlaying.AutoSize = true; @@ -3344,6 +3387,26 @@ this.tabPageCreate.Text = "Create"; this.tabPageCreate.UseVisualStyleBackColor = true; // + // timeUpDownVideoPosition + // + this.timeUpDownVideoPosition.AutoSize = true; + this.timeUpDownVideoPosition.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.timeUpDownVideoPosition.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F); + this.timeUpDownVideoPosition.Location = new System.Drawing.Point(96, 191); + this.timeUpDownVideoPosition.Margin = new System.Windows.Forms.Padding(4); + this.timeUpDownVideoPosition.Name = "timeUpDownVideoPosition"; + this.timeUpDownVideoPosition.Size = new System.Drawing.Size(111, 27); + this.timeUpDownVideoPosition.TabIndex = 12; + timeCode1.Hours = 0; + timeCode1.Milliseconds = 0; + timeCode1.Minutes = 0; + timeCode1.Seconds = 0; + timeCode1.TimeSpan = System.TimeSpan.Parse("00:00:00"); + timeCode1.TotalMilliseconds = 0D; + timeCode1.TotalSeconds = 0D; + this.timeUpDownVideoPosition.TimeCode = timeCode1; + this.timeUpDownVideoPosition.UseVideoOffset = false; + // // buttonGotoSub // this.buttonGotoSub.Location = new System.Drawing.Point(6, 58); @@ -3398,7 +3461,7 @@ this.buttonSetStartTime.UseVisualStyleBackColor = true; this.buttonSetStartTime.Click += new System.EventHandler(this.buttonSetStartTime_Click); this.buttonSetStartTime.MouseEnter += new System.EventHandler(this.buttonSetStartTime_MouseEnter); - // + // // labelCreateF12 // this.labelCreateF12.AutoSize = true; @@ -3564,6 +3627,26 @@ this.tabPageAdjust.Text = "Adjust"; this.tabPageAdjust.UseVisualStyleBackColor = true; // + // timeUpDownVideoPositionAdjust + // + this.timeUpDownVideoPositionAdjust.AutoSize = true; + this.timeUpDownVideoPositionAdjust.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.timeUpDownVideoPositionAdjust.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F); + this.timeUpDownVideoPositionAdjust.Location = new System.Drawing.Point(96, 213); + this.timeUpDownVideoPositionAdjust.Margin = new System.Windows.Forms.Padding(4); + this.timeUpDownVideoPositionAdjust.Name = "timeUpDownVideoPositionAdjust"; + this.timeUpDownVideoPositionAdjust.Size = new System.Drawing.Size(111, 27); + this.timeUpDownVideoPositionAdjust.TabIndex = 13; + timeCode2.Hours = 0; + timeCode2.Milliseconds = 0; + timeCode2.Minutes = 0; + timeCode2.Seconds = 0; + timeCode2.TimeSpan = System.TimeSpan.Parse("00:00:00"); + timeCode2.TotalMilliseconds = 0D; + timeCode2.TotalSeconds = 0D; + this.timeUpDownVideoPositionAdjust.TimeCode = timeCode2; + this.timeUpDownVideoPositionAdjust.UseVideoOffset = false; + // // buttonAdjustSetEndTime // this.buttonAdjustSetEndTime.Location = new System.Drawing.Point(6, 84); @@ -3608,7 +3691,6 @@ this.buttonAdjustSetStartTime.Click += new System.EventHandler(this.buttonSetStartTime_Click); this.buttonAdjustSetStartTime.MouseEnter += new System.EventHandler(this.buttonAdjustSetStartTime_MouseEnter); // - // // labelAdjustF12 // this.labelAdjustF12.AutoSize = true; @@ -4041,6 +4123,37 @@ this.splitContainerListViewAndText.SplitterDistance = 91; this.splitContainerListViewAndText.TabIndex = 2; // + // SubtitleListview1 + // + this.SubtitleListview1.AllowColumnReorder = true; + this.SubtitleListview1.AllowDrop = true; + this.SubtitleListview1.ContextMenuStrip = this.contextMenuStripListview; + this.SubtitleListview1.Dock = System.Windows.Forms.DockStyle.Fill; + this.SubtitleListview1.FirstVisibleIndex = -1; + this.SubtitleListview1.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.SubtitleListview1.FullRowSelect = true; + this.SubtitleListview1.GridLines = true; + this.SubtitleListview1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.SubtitleListview1.HideSelection = false; + this.SubtitleListview1.Location = new System.Drawing.Point(0, 0); + this.SubtitleListview1.Name = "SubtitleListview1"; + this.SubtitleListview1.OwnerDraw = true; + this.SubtitleListview1.Size = new System.Drawing.Size(724, 91); + this.SubtitleListview1.StateImageList = this.imageListBookmarks; + this.SubtitleListview1.SubtitleFontBold = false; + this.SubtitleListview1.SubtitleFontName = "Tahoma"; + this.SubtitleListview1.SubtitleFontSize = 8; + this.SubtitleListview1.TabIndex = 0; + this.SubtitleListview1.UseCompatibleStateImageBehavior = false; + this.SubtitleListview1.UseSyntaxColoring = true; + this.SubtitleListview1.View = System.Windows.Forms.View.Details; + this.SubtitleListview1.SelectedIndexChanged += new System.EventHandler(this.SubtitleListview1_SelectedIndexChanged); + this.SubtitleListview1.DragDrop += new System.Windows.Forms.DragEventHandler(this.SubtitleListview1_DragDrop); + this.SubtitleListview1.DragEnter += new System.Windows.Forms.DragEventHandler(this.SubtitleListview1_DragEnter); + this.SubtitleListview1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SubtitleListview1KeyDown); + this.SubtitleListview1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.SubtitleListview1_MouseDoubleClick); + this.SubtitleListview1.MouseEnter += new System.EventHandler(this.SubtitleListview1_MouseEnter); + // // imageListBookmarks // this.imageListBookmarks.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit; @@ -4049,6 +4162,8 @@ // // groupBoxEdit // + this.groupBoxEdit.Controls.Add(this.labelAlternateSingleLinePixels); + this.groupBoxEdit.Controls.Add(this.labelSingleLinePixels); this.groupBoxEdit.Controls.Add(this.panelBookmark); this.groupBoxEdit.Controls.Add(this.pictureBoxBookmark); this.groupBoxEdit.Controls.Add(this.labelSingleLine); @@ -4216,6 +4331,28 @@ this.labelText.TabIndex = 5; this.labelText.Text = "Text"; // + // textBoxListViewTextAlternate + // + this.textBoxListViewTextAlternate.AllowDrop = true; + this.textBoxListViewTextAlternate.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.textBoxListViewTextAlternate.ContextMenuStrip = this.contextMenuStripTextBoxListView; + this.textBoxListViewTextAlternate.Enabled = false; + this.textBoxListViewTextAlternate.HideSelection = false; + this.textBoxListViewTextAlternate.Location = new System.Drawing.Point(946, 28); + this.textBoxListViewTextAlternate.Multiline = true; + this.textBoxListViewTextAlternate.Name = "textBoxListViewTextAlternate"; + this.textBoxListViewTextAlternate.Size = new System.Drawing.Size(0, 63); + this.textBoxListViewTextAlternate.TabIndex = 33; + this.textBoxListViewTextAlternate.Visible = false; + this.textBoxListViewTextAlternate.MouseClick += new System.Windows.Forms.MouseEventHandler(this.TextBoxListViewTextAlternateMouseClick); + this.textBoxListViewTextAlternate.TextChanged += new System.EventHandler(this.textBoxListViewTextAlternate_TextChanged); + this.textBoxListViewTextAlternate.Enter += new System.EventHandler(this.TextBoxListViewTextAlternateEnter); + this.textBoxListViewTextAlternate.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TextBoxListViewTextAlternateKeyDown); + this.textBoxListViewTextAlternate.KeyUp += new System.Windows.Forms.KeyEventHandler(this.TextBoxListViewTextAlternateKeyUp); + this.textBoxListViewTextAlternate.MouseMove += new System.Windows.Forms.MouseEventHandler(this.TextBoxListViewTextAlternateMouseMove); + // // contextMenuStripTextBoxListView // this.contextMenuStripTextBoxListView.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -4600,6 +4737,26 @@ this.buttonUnBreak.UseVisualStyleBackColor = true; this.buttonUnBreak.Click += new System.EventHandler(this.ButtonUnBreakClick); // + // timeUpDownStartTime + // + this.timeUpDownStartTime.AutoSize = true; + this.timeUpDownStartTime.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.timeUpDownStartTime.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F); + this.timeUpDownStartTime.Location = new System.Drawing.Point(8, 26); + this.timeUpDownStartTime.Margin = new System.Windows.Forms.Padding(4); + this.timeUpDownStartTime.Name = "timeUpDownStartTime"; + this.timeUpDownStartTime.Size = new System.Drawing.Size(111, 27); + this.timeUpDownStartTime.TabIndex = 0; + timeCode3.Hours = 0; + timeCode3.Milliseconds = 0; + timeCode3.Minutes = 0; + timeCode3.Seconds = 0; + timeCode3.TimeSpan = System.TimeSpan.Parse("00:00:00"); + timeCode3.TotalMilliseconds = 0D; + timeCode3.TotalSeconds = 0D; + this.timeUpDownStartTime.TimeCode = timeCode3; + this.timeUpDownStartTime.UseVideoOffset = false; + // // numericUpDownDuration // this.numericUpDownDuration.DecimalPlaces = 3; @@ -4653,6 +4810,28 @@ this.labelStartTime.TabIndex = 3; this.labelStartTime.Text = "Start time"; // + // textBoxListViewText + // + this.textBoxListViewText.AllowDrop = true; + this.textBoxListViewText.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.textBoxListViewText.ContextMenuStrip = this.contextMenuStripTextBoxListView; + this.textBoxListViewText.Enabled = false; + this.textBoxListViewText.HideSelection = false; + this.textBoxListViewText.Location = new System.Drawing.Point(236, 28); + this.textBoxListViewText.Multiline = true; + this.textBoxListViewText.Name = "textBoxListViewText"; + this.textBoxListViewText.Size = new System.Drawing.Size(362, 63); + this.textBoxListViewText.TabIndex = 5; + this.textBoxListViewText.MouseClick += new System.Windows.Forms.MouseEventHandler(this.TextBoxListViewTextMouseClick); + this.textBoxListViewText.TextChanged += new System.EventHandler(this.TextBoxListViewTextTextChanged); + this.textBoxListViewText.Enter += new System.EventHandler(this.TextBoxListViewTextEnter); + this.textBoxListViewText.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TextBoxListViewTextKeyDown); + this.textBoxListViewText.KeyUp += new System.Windows.Forms.KeyEventHandler(this.textBoxListViewText_KeyUp); + this.textBoxListViewText.Leave += new System.EventHandler(this.textBoxListViewText_Leave); + this.textBoxListViewText.MouseMove += new System.Windows.Forms.MouseEventHandler(this.textBoxListViewText_MouseMove); + // // labelDuration // this.labelDuration.AutoSize = true; @@ -4714,6 +4893,34 @@ this.panelVideoPlayer.Size = new System.Drawing.Size(220, 246); this.panelVideoPlayer.TabIndex = 5; // + // mediaPlayer + // + this.mediaPlayer.AllowDrop = true; + this.mediaPlayer.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.mediaPlayer.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(18)))), ((int)(((byte)(18))))); + this.mediaPlayer.CurrentPosition = 0D; + this.mediaPlayer.FontSizeFactor = 1F; + this.mediaPlayer.LastParagraph = null; + this.mediaPlayer.Location = new System.Drawing.Point(0, 0); + this.mediaPlayer.Margin = new System.Windows.Forms.Padding(0); + this.mediaPlayer.Name = "mediaPlayer"; + this.mediaPlayer.ShowFullscreenButton = true; + this.mediaPlayer.ShowMuteButton = true; + this.mediaPlayer.ShowStopButton = true; + this.mediaPlayer.Size = new System.Drawing.Size(219, 246); + this.mediaPlayer.SmpteMode = false; + this.mediaPlayer.SubtitleText = ""; + this.mediaPlayer.TabIndex = 5; + this.mediaPlayer.TextRightToLeft = System.Windows.Forms.RightToLeft.No; + this.mediaPlayer.VideoHeight = 0; + this.mediaPlayer.VideoPlayer = null; + this.mediaPlayer.VideoWidth = 0; + this.mediaPlayer.Volume = 0D; + this.mediaPlayer.DragDrop += new System.Windows.Forms.DragEventHandler(this.mediaPlayer_DragDrop); + this.mediaPlayer.DragEnter += new System.Windows.Forms.DragEventHandler(this.mediaPlayer_DragEnter); + // // contextMenuStripEmpty // this.contextMenuStripEmpty.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -4745,209 +4952,25 @@ this.timerAlternateTextUndo.Interval = 700; this.timerAlternateTextUndo.Tick += new System.EventHandler(this.TimerAlternateTextUndoTick); // - // SubtitleListview1 + // labelSingleLinePixels // - this.SubtitleListview1.AllowColumnReorder = true; - this.SubtitleListview1.AllowDrop = true; - this.SubtitleListview1.ContextMenuStrip = this.contextMenuStripListview; - this.SubtitleListview1.Dock = System.Windows.Forms.DockStyle.Fill; - this.SubtitleListview1.FirstVisibleIndex = -1; - this.SubtitleListview1.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.SubtitleListview1.FullRowSelect = true; - this.SubtitleListview1.GridLines = true; - this.SubtitleListview1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; - this.SubtitleListview1.HideSelection = false; - this.SubtitleListview1.Location = new System.Drawing.Point(0, 0); - this.SubtitleListview1.Name = "SubtitleListview1"; - this.SubtitleListview1.OwnerDraw = true; - this.SubtitleListview1.Size = new System.Drawing.Size(724, 91); - this.SubtitleListview1.StateImageList = this.imageListBookmarks; - this.SubtitleListview1.SubtitleFontBold = false; - this.SubtitleListview1.SubtitleFontName = "Tahoma"; - this.SubtitleListview1.SubtitleFontSize = 8; - this.SubtitleListview1.TabIndex = 0; - this.SubtitleListview1.UseCompatibleStateImageBehavior = false; - this.SubtitleListview1.UseSyntaxColoring = true; - this.SubtitleListview1.View = System.Windows.Forms.View.Details; - this.SubtitleListview1.SelectedIndexChanged += new System.EventHandler(this.SubtitleListview1_SelectedIndexChanged); - this.SubtitleListview1.DragDrop += new System.Windows.Forms.DragEventHandler(this.SubtitleListview1_DragDrop); - this.SubtitleListview1.DragEnter += new System.Windows.Forms.DragEventHandler(this.SubtitleListview1_DragEnter); - this.SubtitleListview1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SubtitleListview1KeyDown); - this.SubtitleListview1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.SubtitleListview1_MouseDoubleClick); - this.SubtitleListview1.MouseEnter += new System.EventHandler(this.SubtitleListview1_MouseEnter); + this.labelSingleLinePixels.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.labelSingleLinePixels.AutoSize = true; + this.labelSingleLinePixels.Location = new System.Drawing.Point(427, 94); + this.labelSingleLinePixels.Name = "labelSingleLinePixels"; + this.labelSingleLinePixels.Size = new System.Drawing.Size(105, 13); + this.labelSingleLinePixels.TabIndex = 42; + this.labelSingleLinePixels.Text = "labelSingleLinePixels"; // - // textBoxListViewTextAlternate + // labelAlternateSingleLinePixels // - this.textBoxListViewTextAlternate.AllowDrop = true; - this.textBoxListViewTextAlternate.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.textBoxListViewTextAlternate.ContextMenuStrip = this.contextMenuStripTextBoxListView; - this.textBoxListViewTextAlternate.Enabled = false; - this.textBoxListViewTextAlternate.HideSelection = false; - this.textBoxListViewTextAlternate.Location = new System.Drawing.Point(946, 28); - this.textBoxListViewTextAlternate.Multiline = true; - this.textBoxListViewTextAlternate.Name = "textBoxListViewTextAlternate"; - this.textBoxListViewTextAlternate.Size = new System.Drawing.Size(0, 63); - this.textBoxListViewTextAlternate.TabIndex = 33; - this.textBoxListViewTextAlternate.Visible = false; - this.textBoxListViewTextAlternate.MouseClick += new System.Windows.Forms.MouseEventHandler(this.TextBoxListViewTextAlternateMouseClick); - this.textBoxListViewTextAlternate.TextChanged += new System.EventHandler(this.textBoxListViewTextAlternate_TextChanged); - this.textBoxListViewTextAlternate.Enter += new System.EventHandler(this.TextBoxListViewTextAlternateEnter); - this.textBoxListViewTextAlternate.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TextBoxListViewTextAlternateKeyDown); - this.textBoxListViewTextAlternate.KeyUp += new System.Windows.Forms.KeyEventHandler(this.TextBoxListViewTextAlternateKeyUp); - this.textBoxListViewTextAlternate.MouseMove += new System.Windows.Forms.MouseEventHandler(this.TextBoxListViewTextAlternateMouseMove); - // - // timeUpDownStartTime - // - this.timeUpDownStartTime.AutoSize = true; - this.timeUpDownStartTime.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.timeUpDownStartTime.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F); - this.timeUpDownStartTime.Location = new System.Drawing.Point(8, 26); - this.timeUpDownStartTime.Margin = new System.Windows.Forms.Padding(4); - this.timeUpDownStartTime.Name = "timeUpDownStartTime"; - this.timeUpDownStartTime.Size = new System.Drawing.Size(111, 27); - this.timeUpDownStartTime.TabIndex = 0; - timeCode11.Hours = 0; - timeCode11.Milliseconds = 0; - timeCode11.Minutes = 0; - timeCode11.Seconds = 0; - timeCode11.TimeSpan = System.TimeSpan.Parse("00:00:00"); - timeCode11.TotalMilliseconds = 0D; - timeCode11.TotalSeconds = 0D; - this.timeUpDownStartTime.TimeCode = timeCode11; - this.timeUpDownStartTime.UseVideoOffset = false; - // - // textBoxListViewText - // - this.textBoxListViewText.AllowDrop = true; - this.textBoxListViewText.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.textBoxListViewText.ContextMenuStrip = this.contextMenuStripTextBoxListView; - this.textBoxListViewText.Enabled = false; - this.textBoxListViewText.HideSelection = false; - this.textBoxListViewText.Location = new System.Drawing.Point(236, 28); - this.textBoxListViewText.Multiline = true; - this.textBoxListViewText.Name = "textBoxListViewText"; - this.textBoxListViewText.Size = new System.Drawing.Size(362, 63); - this.textBoxListViewText.TabIndex = 5; - this.textBoxListViewText.MouseClick += new System.Windows.Forms.MouseEventHandler(this.TextBoxListViewTextMouseClick); - this.textBoxListViewText.TextChanged += new System.EventHandler(this.TextBoxListViewTextTextChanged); - this.textBoxListViewText.Enter += new System.EventHandler(this.TextBoxListViewTextEnter); - this.textBoxListViewText.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TextBoxListViewTextKeyDown); - this.textBoxListViewText.KeyUp += new System.Windows.Forms.KeyEventHandler(this.textBoxListViewText_KeyUp); - this.textBoxListViewText.Leave += new System.EventHandler(this.textBoxListViewText_Leave); - this.textBoxListViewText.MouseMove += new System.Windows.Forms.MouseEventHandler(this.textBoxListViewText_MouseMove); - // - // mediaPlayer - // - this.mediaPlayer.AllowDrop = true; - this.mediaPlayer.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.mediaPlayer.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(18)))), ((int)(((byte)(18))))); - this.mediaPlayer.CurrentPosition = 0D; - this.mediaPlayer.FontSizeFactor = 1F; - this.mediaPlayer.LastParagraph = null; - this.mediaPlayer.Location = new System.Drawing.Point(0, 0); - this.mediaPlayer.Margin = new System.Windows.Forms.Padding(0); - this.mediaPlayer.Name = "mediaPlayer"; - this.mediaPlayer.ShowFullscreenButton = true; - this.mediaPlayer.ShowMuteButton = true; - this.mediaPlayer.ShowStopButton = true; - this.mediaPlayer.Size = new System.Drawing.Size(219, 246); - this.mediaPlayer.SmpteMode = false; - this.mediaPlayer.SubtitleText = ""; - this.mediaPlayer.TabIndex = 5; - this.mediaPlayer.TextRightToLeft = System.Windows.Forms.RightToLeft.No; - this.mediaPlayer.VideoHeight = 0; - this.mediaPlayer.VideoPlayer = null; - this.mediaPlayer.VideoWidth = 0; - this.mediaPlayer.Volume = 0D; - this.mediaPlayer.DragDrop += new System.Windows.Forms.DragEventHandler(this.mediaPlayer_DragDrop); - this.mediaPlayer.DragEnter += new System.Windows.Forms.DragEventHandler(this.mediaPlayer_DragEnter); - // - // audioVisualizer - // - this.audioVisualizer.AllowDrop = true; - this.audioVisualizer.AllowNewSelection = true; - this.audioVisualizer.AllowOverlap = false; - this.audioVisualizer.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.audioVisualizer.BackColor = System.Drawing.Color.Black; - this.audioVisualizer.BackgroundColor = System.Drawing.Color.Black; - this.audioVisualizer.ClosenessForBorderSelection = 15; - this.audioVisualizer.Color = System.Drawing.Color.GreenYellow; - this.audioVisualizer.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F); - this.audioVisualizer.GridColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(18))))); - this.audioVisualizer.InsertAtVideoPositionShortcut = System.Windows.Forms.Keys.Insert; - this.audioVisualizer.Location = new System.Drawing.Point(472, 32); - this.audioVisualizer.Margin = new System.Windows.Forms.Padding(0); - this.audioVisualizer.MouseWheelScrollUpIsForward = true; - this.audioVisualizer.Name = "audioVisualizer"; - this.audioVisualizer.NewSelectionParagraph = null; - this.audioVisualizer.ParagraphColor = System.Drawing.Color.LimeGreen; - this.audioVisualizer.SceneChanges = ((System.Collections.Generic.List)(resources.GetObject("audioVisualizer.SceneChanges"))); - this.audioVisualizer.SelectedColor = System.Drawing.Color.Red; - this.audioVisualizer.ShowGridLines = true; - this.audioVisualizer.ShowSpectrogram = false; - this.audioVisualizer.ShowWaveform = true; - this.audioVisualizer.Size = new System.Drawing.Size(499, 229); - this.audioVisualizer.StartPositionSeconds = 0D; - this.audioVisualizer.TabIndex = 6; - this.audioVisualizer.TextBold = true; - this.audioVisualizer.TextColor = System.Drawing.Color.Gray; - this.audioVisualizer.TextSize = 9F; - this.audioVisualizer.VerticalZoomFactor = 1D; - this.audioVisualizer.WaveformNotLoadedText = "Click to add waveform"; - this.audioVisualizer.WavePeaks = null; - this.audioVisualizer.ZoomFactor = 1D; - this.audioVisualizer.Click += new System.EventHandler(this.AudioWaveform_Click); - this.audioVisualizer.DragDrop += new System.Windows.Forms.DragEventHandler(this.AudioWaveformDragDrop); - this.audioVisualizer.DragEnter += new System.Windows.Forms.DragEventHandler(this.AudioWaveformDragEnter); - this.audioVisualizer.MouseEnter += new System.EventHandler(this.audioVisualizer_MouseEnter); - // - // timeUpDownVideoPosition - // - this.timeUpDownVideoPosition.AutoSize = true; - this.timeUpDownVideoPosition.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.timeUpDownVideoPosition.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F); - this.timeUpDownVideoPosition.Location = new System.Drawing.Point(96, 191); - this.timeUpDownVideoPosition.Margin = new System.Windows.Forms.Padding(4); - this.timeUpDownVideoPosition.Name = "timeUpDownVideoPosition"; - this.timeUpDownVideoPosition.Size = new System.Drawing.Size(111, 27); - this.timeUpDownVideoPosition.TabIndex = 12; - timeCode10.Hours = 0; - timeCode10.Milliseconds = 0; - timeCode10.Minutes = 0; - timeCode10.Seconds = 0; - timeCode10.TimeSpan = System.TimeSpan.Parse("00:00:00"); - timeCode10.TotalMilliseconds = 0D; - timeCode10.TotalSeconds = 0D; - this.timeUpDownVideoPosition.TimeCode = timeCode10; - this.timeUpDownVideoPosition.UseVideoOffset = false; - // - // timeUpDownVideoPositionAdjust - // - this.timeUpDownVideoPositionAdjust.AutoSize = true; - this.timeUpDownVideoPositionAdjust.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.timeUpDownVideoPositionAdjust.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F); - this.timeUpDownVideoPositionAdjust.Location = new System.Drawing.Point(96, 213); - this.timeUpDownVideoPositionAdjust.Margin = new System.Windows.Forms.Padding(4); - this.timeUpDownVideoPositionAdjust.Name = "timeUpDownVideoPositionAdjust"; - this.timeUpDownVideoPositionAdjust.Size = new System.Drawing.Size(111, 27); - this.timeUpDownVideoPositionAdjust.TabIndex = 13; - timeCode12.Hours = 0; - timeCode12.Milliseconds = 0; - timeCode12.Minutes = 0; - timeCode12.Seconds = 0; - timeCode12.TimeSpan = System.TimeSpan.Parse("00:00:00"); - timeCode12.TotalMilliseconds = 0D; - timeCode12.TotalSeconds = 0D; - this.timeUpDownVideoPositionAdjust.TimeCode = timeCode12; - this.timeUpDownVideoPositionAdjust.UseVideoOffset = false; + this.labelAlternateSingleLinePixels.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.labelAlternateSingleLinePixels.AutoSize = true; + this.labelAlternateSingleLinePixels.Location = new System.Drawing.Point(870, 94); + this.labelAlternateSingleLinePixels.Name = "labelAlternateSingleLinePixels"; + this.labelAlternateSingleLinePixels.Size = new System.Drawing.Size(62, 13); + this.labelAlternateSingleLinePixels.TabIndex = 43; + this.labelAlternateSingleLinePixels.Text = "AltSinLinPix"; // // Main // @@ -5502,5 +5525,7 @@ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemHorizontalDigits; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemSetParagraphAsSelection; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemRuby; + private System.Windows.Forms.Label labelSingleLinePixels; + private System.Windows.Forms.Label labelAlternateSingleLinePixels; } } \ No newline at end of file diff --git a/src/Forms/Main.cs b/src/Forms/Main.cs index 6afa6dffe..c91c50261 100644 --- a/src/Forms/Main.cs +++ b/src/Forms/Main.cs @@ -292,6 +292,7 @@ namespace Nikse.SubtitleEdit.Forms labelAlternateCharactersPerSecond.Visible = false; labelTextAlternateLineLengths.Visible = false; labelAlternateSingleLine.Visible = false; + labelAlternateSingleLinePixels.Visible = false; labelTextAlternateLineTotal.Visible = false; labelNextWord.Visible = false; @@ -304,6 +305,7 @@ namespace Nikse.SubtitleEdit.Forms labelDurationWarning.Text = string.Empty; labelVideoInfo.Text = string.Empty; labelSingleLine.Text = string.Empty; + labelSingleLinePixels.Text = string.Empty; Text = Title; timeUpDownStartTime.TimeCode = new TimeCode(); timeUpDownStartTime.UseVideoOffset = true; @@ -719,7 +721,7 @@ namespace Nikse.SubtitleEdit.Forms if (_subtitleListViewIndex >= 0) { - UpdateListViewTextInfo(labelTextLineLengths, labelSingleLine, labelTextLineTotal, labelCharactersPerSecond, _subtitle.Paragraphs[_subtitleListViewIndex], textBoxListViewText); + UpdateListViewTextInfo(labelTextLineLengths, labelSingleLine, labelSingleLinePixels, labelTextLineTotal, labelCharactersPerSecond, _subtitle.Paragraphs[_subtitleListViewIndex], textBoxListViewText); } else { @@ -1595,9 +1597,9 @@ namespace Nikse.SubtitleEdit.Forms labelStartTime.Text = _languageGeneral.StartTime; labelDuration.Text = _languageGeneral.Duration; labelText.Text = _languageGeneral.Text; - UpdateListViewTextInfo(labelTextLineLengths, labelSingleLine, labelTextLineTotal, labelCharactersPerSecond, _subtitle?.GetParagraphOrDefault(_subtitleListViewIndex), textBoxListViewText); + UpdateListViewTextInfo(labelTextLineLengths, labelSingleLine, labelSingleLinePixels, labelTextLineTotal, labelCharactersPerSecond, _subtitle?.GetParagraphOrDefault(_subtitleListViewIndex), textBoxListViewText); labelAlternateText.Text = _languageGeneral.OriginalText; - UpdateListViewTextInfo(labelTextAlternateLineLengths, labelAlternateSingleLine, labelTextAlternateLineTotal, labelAlternateCharactersPerSecond, _subtitleAlternate?.GetParagraphOrDefault(_subtitleListViewIndex), textBoxListViewTextAlternate); + UpdateListViewTextInfo(labelTextAlternateLineLengths, labelAlternateSingleLine, labelAlternateSingleLinePixels, labelTextAlternateLineTotal, labelAlternateCharactersPerSecond, _subtitleAlternate?.GetParagraphOrDefault(_subtitleListViewIndex), textBoxListViewTextAlternate); buttonPrevious.Text = _language.Controls.Previous; buttonNext.Text = _language.Controls.Next; buttonAutoBreak.Text = _language.Controls.AutoBreak; @@ -4022,6 +4024,7 @@ namespace Nikse.SubtitleEdit.Forms Text = Title; _oldSubtitleFormat = null; labelSingleLine.Text = string.Empty; + labelSingleLinePixels.Text = string.Empty; RemoveAlternate(true, false); _splitDualSami = false; @@ -4634,6 +4637,7 @@ namespace Nikse.SubtitleEdit.Forms labelAlternateCharactersPerSecond.Visible = true; labelTextAlternateLineLengths.Visible = true; labelAlternateSingleLine.Visible = true; + labelAlternateSingleLinePixels.Visible = true; labelTextAlternateLineTotal.Visible = true; } @@ -8118,10 +8122,12 @@ namespace Nikse.SubtitleEdit.Forms labelTextLineTotal.Text = string.Empty; textBoxListViewText.Enabled = false; labelSingleLine.Text = string.Empty; + labelSingleLinePixels.Text = string.Empty; timeUpDownStartTime.TimeCode = new TimeCode(); numericUpDownDuration.Value = 0; ShowHideBookmark(new Paragraph()); labelAlternateSingleLine.Text = string.Empty; + labelAlternateSingleLinePixels.Text = string.Empty; textBoxListViewTextAlternate.Enabled = false; labelAlternateCharactersPerSecond.Text = string.Empty; labelTextAlternateLineLengths.Text = string.Empty; @@ -8568,7 +8574,7 @@ namespace Nikse.SubtitleEdit.Forms InitializeListViewEditBox(p); _subtitleListViewIndex = firstSelectedIndex; _oldSelectedParagraph = new Paragraph(p); - UpdateListViewTextInfo(labelTextLineLengths, labelSingleLine, labelTextLineTotal, labelCharactersPerSecond, p, textBoxListViewText); + UpdateListViewTextInfo(labelTextLineLengths, labelSingleLine, labelSingleLinePixels, labelTextLineTotal, labelCharactersPerSecond, p, textBoxListViewText); FixVerticalScrollBars(textBoxListViewText, ref _lastNumberOfNewLines); if (Configuration.Settings.General.AllowEditOfOriginalSubtitle && _subtitleAlternate != null && _subtitleAlternate.Paragraphs.Count > 0) @@ -8704,7 +8710,7 @@ namespace Nikse.SubtitleEdit.Forms } } - private void UpdateListViewTextInfo(Label lineLengths, Label singleLine, Label lineTotal, Label charactersPerSecond, Paragraph paragraph, TextBox textBox) + private void UpdateListViewTextInfo(Label lineLengths, Label singleLine, Label singleLinePixels, Label lineTotal, Label charactersPerSecond, Paragraph paragraph, TextBox textBox) { if (paragraph == null) { @@ -8715,10 +8721,21 @@ namespace Nikse.SubtitleEdit.Forms string text = paragraph.Text; lineLengths.Text = _languageGeneral.SingleLineLengths.Trim(); singleLine.Left = lineLengths.Left + lineLengths.Width - 3; + singleLinePixels.Left = lineLengths.Left + lineLengths.Width + 50; text = HtmlUtil.RemoveHtmlTags(text, true); text = NetflixImsc11Japanese.RemoveTags(text); UiUtil.GetLineLengths(singleLine, text); + if (Configuration.Settings.General.ShowLineWidths) + { + UiUtil.GetLinePixelWidths(singleLinePixels, text); + labelSingleLinePixels.Visible = true; + } + else + { + labelSingleLinePixels.Visible = false; + } + buttonSplitLine.Visible = false; // remove unicode control characters @@ -8981,7 +8998,7 @@ namespace Nikse.SubtitleEdit.Forms if (textBoxListViewText.Text == string.Empty) { _subtitle.Paragraphs[idx].Text = string.Empty; - UpdateListViewTextInfo(labelTextLineLengths, labelSingleLine, labelTextLineTotal, labelCharactersPerSecond, _subtitle.Paragraphs[idx], textBoxListViewText); + UpdateListViewTextInfo(labelTextLineLengths, labelSingleLine, labelSingleLinePixels, labelTextLineTotal, labelCharactersPerSecond, _subtitle.Paragraphs[idx], textBoxListViewText); SubtitleListview1.SetText(idx, string.Empty); _listViewTextUndoIndex = idx; labelStatus.Text = string.Empty; @@ -9010,7 +9027,7 @@ namespace Nikse.SubtitleEdit.Forms } _subtitle.Paragraphs[idx].Text = text; - UpdateListViewTextInfo(labelTextLineLengths, labelSingleLine, labelTextLineTotal, labelCharactersPerSecond, _subtitle.Paragraphs[idx], textBoxListViewText); + UpdateListViewTextInfo(labelTextLineLengths, labelSingleLine, labelSingleLinePixels, labelTextLineTotal, labelCharactersPerSecond, _subtitle.Paragraphs[idx], textBoxListViewText); SubtitleListview1.SetText(idx, text); _listViewTextUndoIndex = _subtitleListViewIndex; @@ -9074,7 +9091,7 @@ namespace Nikse.SubtitleEdit.Forms { if (textBoxListViewTextAlternate.Text == string.Empty) { - UpdateListViewTextInfo(labelTextAlternateLineLengths, labelAlternateSingleLine, labelTextAlternateLineTotal, labelAlternateCharactersPerSecond, original, textBoxListViewTextAlternate); + UpdateListViewTextInfo(labelTextAlternateLineLengths, labelAlternateSingleLine, labelAlternateSingleLinePixels, labelTextAlternateLineTotal, labelAlternateCharactersPerSecond, original, textBoxListViewTextAlternate); SubtitleListview1.SetAlternateText(_subtitleListViewIndex, string.Empty); _listViewTextUndoIndex = _subtitleListViewIndex; labelStatus.Text = string.Empty; @@ -9095,7 +9112,7 @@ namespace Nikse.SubtitleEdit.Forms } original.Text = text; - UpdateListViewTextInfo(labelTextAlternateLineLengths, labelAlternateSingleLine, labelTextAlternateLineTotal, labelAlternateCharactersPerSecond, original, textBoxListViewTextAlternate); + UpdateListViewTextInfo(labelTextAlternateLineLengths, labelAlternateSingleLine, labelAlternateSingleLinePixels, labelTextAlternateLineTotal, labelAlternateCharactersPerSecond, original, textBoxListViewTextAlternate); SubtitleListview1.SetAlternateText(_subtitleListViewIndex, text); _listViewTextUndoIndex = _subtitleListViewIndex; } @@ -15995,7 +16012,7 @@ namespace Nikse.SubtitleEdit.Forms if (_subtitleListViewIndex >= 0) { - UpdateListViewTextInfo(labelTextLineLengths, labelSingleLine, labelTextLineTotal, labelCharactersPerSecond, _subtitle.Paragraphs[_subtitleListViewIndex], textBoxListViewText); + UpdateListViewTextInfo(labelTextLineLengths, labelSingleLine, labelSingleLinePixels, labelTextLineTotal, labelCharactersPerSecond, _subtitle.Paragraphs[_subtitleListViewIndex], textBoxListViewText); } else { @@ -17283,6 +17300,7 @@ namespace Nikse.SubtitleEdit.Forms labelAlternateCharactersPerSecond.Visible = true; labelTextAlternateLineLengths.Visible = true; labelAlternateSingleLine.Visible = true; + labelAlternateSingleLinePixels.Visible = true; labelTextAlternateLineTotal.Visible = true; labelCharactersPerSecond.Left = textBoxListViewText.Left + (textBoxListViewText.Width - labelCharactersPerSecond.Width); @@ -17882,6 +17900,7 @@ namespace Nikse.SubtitleEdit.Forms labelAlternateCharactersPerSecond.Left = tbOriginal.Left + (tbOriginal.Width - labelAlternateCharactersPerSecond.Width); lbSingleLineOriginal.Left = tbOriginal.Left; labelAlternateSingleLine.Left = labelTextAlternateLineLengths.Left + labelTextAlternateLineLengths.Width; + labelAlternateSingleLinePixels.Left = labelAlternateSingleLine.Left + labelAlternateSingleLine.Width + 10; labelTextAlternateLineTotal.Left = tbOriginal.Left + (tbOriginal.Width - labelTextAlternateLineTotal.Width); if (textBoxListViewText.Width / 2.1 < labelTextLineLengths.Width) { @@ -21118,6 +21137,7 @@ namespace Nikse.SubtitleEdit.Forms labelAlternateCharactersPerSecond.Visible = true; labelTextAlternateLineLengths.Visible = true; labelAlternateSingleLine.Visible = true; + labelAlternateSingleLinePixels.Visible = true; labelTextAlternateLineTotal.Visible = true; labelCharactersPerSecond.Left = textBoxListViewText.Left + (textBoxListViewText.Width - labelCharactersPerSecond.Width); @@ -22175,7 +22195,7 @@ namespace Nikse.SubtitleEdit.Forms // update _subtitle + listview original.Text = text; - UpdateListViewTextInfo(labelTextAlternateLineLengths, labelAlternateSingleLine, labelTextAlternateLineTotal, labelAlternateCharactersPerSecond, original, textBoxListViewTextAlternate); + UpdateListViewTextInfo(labelTextAlternateLineLengths, labelAlternateSingleLine, labelAlternateSingleLinePixels, labelTextAlternateLineTotal, labelAlternateCharactersPerSecond, original, textBoxListViewTextAlternate); SubtitleListview1.SetAlternateText(_subtitleListViewIndex, text); FixVerticalScrollBars(textBoxListViewTextAlternate, ref _lastNumberOfNewLinesAlternate); } @@ -22412,6 +22432,7 @@ namespace Nikse.SubtitleEdit.Forms labelAlternateCharactersPerSecond.Visible = false; labelTextAlternateLineLengths.Visible = false; labelAlternateSingleLine.Visible = false; + labelAlternateSingleLinePixels.Visible = false; labelTextAlternateLineTotal.Visible = false; textBoxListViewText.Width = (groupBoxEdit.Width - (textBoxListViewText.Left + 8 + buttonUnBreak.Width)); textBoxListViewText.Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Bottom; @@ -25882,7 +25903,7 @@ namespace Nikse.SubtitleEdit.Forms SubtitleListview1.EndUpdate(); if (_subtitleListViewIndex >= 0) { - UpdateListViewTextInfo(labelTextLineLengths, labelSingleLine, labelTextLineTotal, labelCharactersPerSecond, _subtitle.Paragraphs[_subtitleListViewIndex], textBoxListViewText); + UpdateListViewTextInfo(labelTextLineLengths, labelSingleLine, labelSingleLinePixels, labelTextLineTotal, labelCharactersPerSecond, _subtitle.Paragraphs[_subtitleListViewIndex], textBoxListViewText); } ShowLineInformationListView(); diff --git a/src/Forms/Main.resx b/src/Forms/Main.resx index 6e9cfe72b..7643a0c8d 100644 --- a/src/Forms/Main.resx +++ b/src/Forms/Main.resx @@ -338,36 +338,36 @@ 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 - /wEfCUTMgsMrSwAAAABJRU5ErkJggg== + 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 + RGFPzKWfAAAAAElFTkSuQmCC @@ -596,9 +596,6 @@ 650, 56 - - 650, 56 - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 @@ -708,7 +705,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD2 - CAAAAk1TRnQBSQFMAgEBAgEAATABJwEwAScBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CAAAAk1TRnQBSQFMAgEBAgEAATgBJwE4AScBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA diff --git a/src/Forms/Settings.Designer.cs b/src/Forms/Settings.Designer.cs index f66c82ddc..f98a60543 100644 --- a/src/Forms/Settings.Designer.cs +++ b/src/Forms/Settings.Designer.cs @@ -372,6 +372,8 @@ this.labelStatus = new System.Windows.Forms.Label(); this.openFileDialogFFmpeg = new System.Windows.Forms.OpenFileDialog(); this.buttonReset = new System.Windows.Forms.Button(); + this.checkBoxSyntaxColorTextTooWide = new System.Windows.Forms.CheckBox(); + this.buttonLineWidthSettings = new System.Windows.Forms.Button(); this.tabControlSettings.SuspendLayout(); this.tabPageGeneral.SuspendLayout(); this.groupBoxMiscellaneous.SuspendLayout(); @@ -1577,6 +1579,8 @@ this.groupBoxListViewSyntaxColoring.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.groupBoxListViewSyntaxColoring.Controls.Add(this.buttonLineWidthSettings); + this.groupBoxListViewSyntaxColoring.Controls.Add(this.checkBoxSyntaxColorTextTooWide); this.groupBoxListViewSyntaxColoring.Controls.Add(this.checkBoxSyntaxColorGapTooSmall); this.groupBoxListViewSyntaxColoring.Controls.Add(this.checkBoxSyntaxColorTextMoreThanTwoLines); this.groupBoxListViewSyntaxColoring.Controls.Add(this.checkBoxSyntaxOverlap); @@ -1595,30 +1599,30 @@ // checkBoxSyntaxColorGapTooSmall // this.checkBoxSyntaxColorGapTooSmall.AutoSize = true; - this.checkBoxSyntaxColorGapTooSmall.Location = new System.Drawing.Point(20, 186); + this.checkBoxSyntaxColorGapTooSmall.Location = new System.Drawing.Point(20, 209); this.checkBoxSyntaxColorGapTooSmall.Name = "checkBoxSyntaxColorGapTooSmall"; this.checkBoxSyntaxColorGapTooSmall.Size = new System.Drawing.Size(132, 17); - this.checkBoxSyntaxColorGapTooSmall.TabIndex = 6; + this.checkBoxSyntaxColorGapTooSmall.TabIndex = 7; this.checkBoxSyntaxColorGapTooSmall.Text = "Gap - color if too small"; this.checkBoxSyntaxColorGapTooSmall.UseVisualStyleBackColor = true; // // checkBoxSyntaxColorTextMoreThanTwoLines // this.checkBoxSyntaxColorTextMoreThanTwoLines.AutoSize = true; - this.checkBoxSyntaxColorTextMoreThanTwoLines.Location = new System.Drawing.Point(20, 116); + this.checkBoxSyntaxColorTextMoreThanTwoLines.Location = new System.Drawing.Point(20, 139); this.checkBoxSyntaxColorTextMoreThanTwoLines.Name = "checkBoxSyntaxColorTextMoreThanTwoLines"; this.checkBoxSyntaxColorTextMoreThanTwoLines.Size = new System.Drawing.Size(170, 17); - this.checkBoxSyntaxColorTextMoreThanTwoLines.TabIndex = 3; + this.checkBoxSyntaxColorTextMoreThanTwoLines.TabIndex = 5; this.checkBoxSyntaxColorTextMoreThanTwoLines.Text = "Text - color if more than lines:"; this.checkBoxSyntaxColorTextMoreThanTwoLines.UseVisualStyleBackColor = true; // // checkBoxSyntaxOverlap // this.checkBoxSyntaxOverlap.AutoSize = true; - this.checkBoxSyntaxOverlap.Location = new System.Drawing.Point(20, 151); + this.checkBoxSyntaxOverlap.Location = new System.Drawing.Point(20, 174); this.checkBoxSyntaxOverlap.Name = "checkBoxSyntaxOverlap"; this.checkBoxSyntaxOverlap.Size = new System.Drawing.Size(129, 17); - this.checkBoxSyntaxOverlap.TabIndex = 5; + this.checkBoxSyntaxOverlap.TabIndex = 6; this.checkBoxSyntaxOverlap.Text = "Time - color if overlap"; this.checkBoxSyntaxOverlap.UseVisualStyleBackColor = true; // @@ -1634,10 +1638,10 @@ // // buttonListViewSyntaxColorError // - this.buttonListViewSyntaxColorError.Location = new System.Drawing.Point(20, 224); + this.buttonListViewSyntaxColorError.Location = new System.Drawing.Point(20, 247); this.buttonListViewSyntaxColorError.Name = "buttonListViewSyntaxColorError"; this.buttonListViewSyntaxColorError.Size = new System.Drawing.Size(112, 23); - this.buttonListViewSyntaxColorError.TabIndex = 7; + this.buttonListViewSyntaxColorError.TabIndex = 8; this.buttonListViewSyntaxColorError.Text = "Error color"; this.buttonListViewSyntaxColorError.UseVisualStyleBackColor = true; this.buttonListViewSyntaxColorError.Click += new System.EventHandler(this.buttonListViewSyntaxColorError_Click); @@ -1665,7 +1669,7 @@ // panelListViewSyntaxColorError // this.panelListViewSyntaxColorError.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.panelListViewSyntaxColorError.Location = new System.Drawing.Point(142, 224); + this.panelListViewSyntaxColorError.Location = new System.Drawing.Point(142, 247); this.panelListViewSyntaxColorError.Name = "panelListViewSyntaxColorError"; this.panelListViewSyntaxColorError.Size = new System.Drawing.Size(21, 20); this.panelListViewSyntaxColorError.TabIndex = 8; @@ -4512,6 +4516,26 @@ this.buttonReset.UseVisualStyleBackColor = true; this.buttonReset.Click += new System.EventHandler(this.buttonReset_Click); // + // checkBoxSyntaxColorTextTooWide + // + this.checkBoxSyntaxColorTextTooWide.AutoSize = true; + this.checkBoxSyntaxColorTextTooWide.Location = new System.Drawing.Point(20, 116); + this.checkBoxSyntaxColorTextTooWide.Name = "checkBoxSyntaxColorTextTooWide"; + this.checkBoxSyntaxColorTextTooWide.Size = new System.Drawing.Size(134, 17); + this.checkBoxSyntaxColorTextTooWide.TabIndex = 3; + this.checkBoxSyntaxColorTextTooWide.Text = "Text - color if too wide"; + this.checkBoxSyntaxColorTextTooWide.UseVisualStyleBackColor = true; + // + // buttonLineWidthSettings + // + this.buttonLineWidthSettings.Location = new System.Drawing.Point(160, 112); + this.buttonLineWidthSettings.Name = "buttonLineWidthSettings"; + this.buttonLineWidthSettings.Size = new System.Drawing.Size(112, 23); + this.buttonLineWidthSettings.TabIndex = 4; + this.buttonLineWidthSettings.Text = "Settings..."; + this.buttonLineWidthSettings.UseVisualStyleBackColor = true; + this.buttonLineWidthSettings.Click += new System.EventHandler(this.buttonLineWidthSettings_Click); + // // Settings // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -4995,5 +5019,7 @@ private System.Windows.Forms.ComboBox comboBoxDialogStyle; private System.Windows.Forms.ContextMenuStrip contextMenuStripShortcuts; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemShortcutsCollapse; + private System.Windows.Forms.Button buttonLineWidthSettings; + private System.Windows.Forms.CheckBox checkBoxSyntaxColorTextTooWide; } } \ No newline at end of file diff --git a/src/Forms/Settings.cs b/src/Forms/Settings.cs index 917e7799a..f8f136ad1 100644 --- a/src/Forms/Settings.cs +++ b/src/Forms/Settings.cs @@ -316,6 +316,7 @@ namespace Nikse.SubtitleEdit.Forms checkBoxSyntaxColorDurationTooSmall.Checked = Configuration.Settings.Tools.ListViewSyntaxColorDurationSmall; checkBoxSyntaxColorDurationTooLarge.Checked = Configuration.Settings.Tools.ListViewSyntaxColorDurationBig; checkBoxSyntaxColorTextTooLong.Checked = Configuration.Settings.Tools.ListViewSyntaxColorLongLines; + checkBoxSyntaxColorTextTooWide.Checked = Configuration.Settings.Tools.ListViewSyntaxColorWideLines; checkBoxSyntaxColorTextMoreThanTwoLines.Checked = Configuration.Settings.Tools.ListViewSyntaxMoreThanXLines; if (Configuration.Settings.General.MaxNumberOfLines >= numericUpDownMaxNumberOfLines.Minimum && Configuration.Settings.General.MaxNumberOfLines <= numericUpDownMaxNumberOfLines.Maximum) @@ -924,6 +925,8 @@ namespace Nikse.SubtitleEdit.Forms checkBoxSyntaxColorDurationTooSmall.Text = language.SyntaxColorDurationIfTooSmall; checkBoxSyntaxColorDurationTooLarge.Text = language.SyntaxColorDurationIfTooLarge; checkBoxSyntaxColorTextTooLong.Text = language.SyntaxColorTextIfTooLong; + checkBoxSyntaxColorTextTooWide.Text = language.SyntaxColorTextIfTooWide; + buttonLineWidthSettings.Text = language.SyntaxLineWidthSettings; checkBoxSyntaxColorTextMoreThanTwoLines.Text = string.Format(language.SyntaxColorTextMoreThanMaxLines, Configuration.Settings.General.MaxNumberOfLines); checkBoxSyntaxOverlap.Text = language.SyntaxColorOverlap; checkBoxSyntaxColorGapTooSmall.Text = language.SyntaxColorGap; @@ -938,6 +941,7 @@ namespace Nikse.SubtitleEdit.Forms comboBoxShortcutKey.Left = labelShortcutKey.Left + labelShortcutKey.Width + 2; buttonUpdateShortcut.Left = comboBoxShortcutKey.Left + comboBoxShortcutKey.Width + 15; buttonClearShortcut.Left = buttonUpdateShortcut.Left + buttonUpdateShortcut.Width + 15; + buttonLineWidthSettings.Left = checkBoxSyntaxColorTextTooWide.Left + checkBoxSyntaxColorTextTooWide.Width + 9; _oldVlcLocation = gs.VlcLocation; _oldVlcLocationRelative = gs.VlcLocationRelative; @@ -1739,6 +1743,7 @@ namespace Nikse.SubtitleEdit.Forms Configuration.Settings.Tools.ListViewSyntaxColorDurationSmall = checkBoxSyntaxColorDurationTooSmall.Checked; Configuration.Settings.Tools.ListViewSyntaxColorDurationBig = checkBoxSyntaxColorDurationTooLarge.Checked; Configuration.Settings.Tools.ListViewSyntaxColorLongLines = checkBoxSyntaxColorTextTooLong.Checked; + Configuration.Settings.Tools.ListViewSyntaxColorWideLines = checkBoxSyntaxColorTextTooWide.Checked; Configuration.Settings.Tools.ListViewSyntaxMoreThanXLines = checkBoxSyntaxColorTextMoreThanTwoLines.Checked; Configuration.Settings.Tools.ListViewSyntaxColorOverlap = checkBoxSyntaxOverlap.Checked; Configuration.Settings.Tools.ListViewSyntaxColorGap = checkBoxSyntaxColorGapTooSmall.Checked; @@ -3222,5 +3227,16 @@ namespace Nikse.SubtitleEdit.Forms } } } + + private void buttonLineWidthSettings_Click(object sender, EventArgs e) + { + using (var form = new SettingsLineWidth()) + { + if (form.ShowDialog(this) == DialogResult.OK) + { + + } + } + } } } diff --git a/src/Forms/SettingsLineWidth.Designer.cs b/src/Forms/SettingsLineWidth.Designer.cs new file mode 100644 index 000000000..ab502ee54 --- /dev/null +++ b/src/Forms/SettingsLineWidth.Designer.cs @@ -0,0 +1,227 @@ +namespace Nikse.SubtitleEdit.Forms +{ + partial class SettingsLineWidth + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.buttonCancel = new System.Windows.Forms.Button(); + this.buttonOK = new System.Windows.Forms.Button(); + this.labelMaximumLineWidth = new System.Windows.Forms.Label(); + this.numericUpDownMaxLineWidth = new System.Windows.Forms.NumericUpDown(); + this.labelPixelsSuffix = new System.Windows.Forms.Label(); + this.comboBoxMeasureFontName = new System.Windows.Forms.ComboBox(); + this.labelMeasureFont = new System.Windows.Forms.Label(); + this.checkBoxMeasureFontBold = new System.Windows.Forms.CheckBox(); + this.checkBoxShowLineWidths = new System.Windows.Forms.CheckBox(); + this.numericUpDownMeasureFontSize = new System.Windows.Forms.NumericUpDown(); + this.checkBoxGenerateLineWidthStatistics = new System.Windows.Forms.CheckBox(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownMaxLineWidth)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownMeasureFontSize)).BeginInit(); + this.SuspendLayout(); + // + // buttonCancel + // + 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(374, 129); + this.buttonCancel.Name = "buttonCancel"; + this.buttonCancel.Size = new System.Drawing.Size(75, 23); + this.buttonCancel.TabIndex = 8; + this.buttonCancel.Text = "C&ancel"; + this.buttonCancel.UseVisualStyleBackColor = true; + this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click); + // + // buttonOK + // + 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(293, 129); + this.buttonOK.Name = "buttonOK"; + this.buttonOK.Size = new System.Drawing.Size(75, 23); + this.buttonOK.TabIndex = 7; + this.buttonOK.Text = "&OK"; + this.buttonOK.UseVisualStyleBackColor = true; + this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click); + // + // labelMaximumLineWidth + // + this.labelMaximumLineWidth.AutoSize = true; + this.labelMaximumLineWidth.Location = new System.Drawing.Point(12, 14); + this.labelMaximumLineWidth.Name = "labelMaximumLineWidth"; + this.labelMaximumLineWidth.Size = new System.Drawing.Size(101, 13); + this.labelMaximumLineWidth.TabIndex = 208; + this.labelMaximumLineWidth.Text = "Maximum line width:"; + // + // numericUpDownMaxLineWidth + // + this.numericUpDownMaxLineWidth.Location = new System.Drawing.Point(119, 12); + this.numericUpDownMaxLineWidth.Maximum = new decimal(new int[] { + 5000, + 0, + 0, + 0}); + this.numericUpDownMaxLineWidth.Name = "numericUpDownMaxLineWidth"; + this.numericUpDownMaxLineWidth.Size = new System.Drawing.Size(56, 20); + this.numericUpDownMaxLineWidth.TabIndex = 1; + this.numericUpDownMaxLineWidth.Value = new decimal(new int[] { + 576, + 0, + 0, + 0}); + // + // labelPixelsSuffix + // + this.labelPixelsSuffix.AutoSize = true; + this.labelPixelsSuffix.Location = new System.Drawing.Point(181, 14); + this.labelPixelsSuffix.Name = "labelPixelsSuffix"; + this.labelPixelsSuffix.Size = new System.Drawing.Size(33, 13); + this.labelPixelsSuffix.TabIndex = 210; + this.labelPixelsSuffix.Text = "pixels"; + // + // comboBoxMeasureFontName + // + this.comboBoxMeasureFontName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.comboBoxMeasureFontName.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBoxMeasureFontName.FormattingEnabled = true; + this.comboBoxMeasureFontName.Location = new System.Drawing.Point(119, 38); + this.comboBoxMeasureFontName.Name = "comboBoxMeasureFontName"; + this.comboBoxMeasureFontName.Size = new System.Drawing.Size(205, 21); + this.comboBoxMeasureFontName.TabIndex = 2; + // + // labelMeasureFont + // + this.labelMeasureFont.AutoSize = true; + this.labelMeasureFont.Location = new System.Drawing.Point(12, 41); + this.labelMeasureFont.Name = "labelMeasureFont"; + this.labelMeasureFont.Size = new System.Drawing.Size(72, 13); + this.labelMeasureFont.TabIndex = 213; + this.labelMeasureFont.Text = "Measure font:"; + // + // checkBoxMeasureFontBold + // + this.checkBoxMeasureFontBold.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.checkBoxMeasureFontBold.AutoSize = true; + this.checkBoxMeasureFontBold.Location = new System.Drawing.Point(392, 40); + this.checkBoxMeasureFontBold.Name = "checkBoxMeasureFontBold"; + this.checkBoxMeasureFontBold.Size = new System.Drawing.Size(47, 17); + this.checkBoxMeasureFontBold.TabIndex = 4; + this.checkBoxMeasureFontBold.Text = "Bold"; + this.checkBoxMeasureFontBold.UseVisualStyleBackColor = true; + // + // checkBoxShowLineWidths + // + this.checkBoxShowLineWidths.AutoSize = true; + this.checkBoxShowLineWidths.Location = new System.Drawing.Point(15, 78); + this.checkBoxShowLineWidths.Name = "checkBoxShowLineWidths"; + this.checkBoxShowLineWidths.Size = new System.Drawing.Size(212, 17); + this.checkBoxShowLineWidths.TabIndex = 5; + this.checkBoxShowLineWidths.Text = "Show line widths below subtitle text box"; + this.checkBoxShowLineWidths.UseVisualStyleBackColor = true; + // + // numericUpDownMeasureFontSize + // + this.numericUpDownMeasureFontSize.Location = new System.Drawing.Point(330, 38); + this.numericUpDownMeasureFontSize.Maximum = new decimal(new int[] { + 200, + 0, + 0, + 0}); + this.numericUpDownMeasureFontSize.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.numericUpDownMeasureFontSize.Name = "numericUpDownMeasureFontSize"; + this.numericUpDownMeasureFontSize.Size = new System.Drawing.Size(56, 20); + this.numericUpDownMeasureFontSize.TabIndex = 3; + this.numericUpDownMeasureFontSize.Value = new decimal(new int[] { + 24, + 0, + 0, + 0}); + // + // checkBoxGenerateLineWidthStatistics + // + this.checkBoxGenerateLineWidthStatistics.AutoSize = true; + this.checkBoxGenerateLineWidthStatistics.Location = new System.Drawing.Point(15, 101); + this.checkBoxGenerateLineWidthStatistics.Name = "checkBoxGenerateLineWidthStatistics"; + this.checkBoxGenerateLineWidthStatistics.Size = new System.Drawing.Size(227, 17); + this.checkBoxGenerateLineWidthStatistics.TabIndex = 6; + this.checkBoxGenerateLineWidthStatistics.Text = "Show line width statistics in File > Statistics"; + this.checkBoxGenerateLineWidthStatistics.UseVisualStyleBackColor = true; + // + // SettingsLineWidth + // + this.AcceptButton = this.buttonOK; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.buttonCancel; + this.ClientSize = new System.Drawing.Size(461, 164); + this.Controls.Add(this.checkBoxGenerateLineWidthStatistics); + this.Controls.Add(this.numericUpDownMeasureFontSize); + this.Controls.Add(this.checkBoxShowLineWidths); + this.Controls.Add(this.checkBoxMeasureFontBold); + this.Controls.Add(this.labelMeasureFont); + this.Controls.Add(this.comboBoxMeasureFontName); + this.Controls.Add(this.labelPixelsSuffix); + this.Controls.Add(this.numericUpDownMaxLineWidth); + this.Controls.Add(this.labelMaximumLineWidth); + this.Controls.Add(this.buttonCancel); + this.Controls.Add(this.buttonOK); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "SettingsLineWidth"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "SettingsLineWidth"; + this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SettingsLineWidth_KeyDown); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownMaxLineWidth)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownMeasureFontSize)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button buttonCancel; + private System.Windows.Forms.Button buttonOK; + private System.Windows.Forms.Label labelMaximumLineWidth; + private System.Windows.Forms.NumericUpDown numericUpDownMaxLineWidth; + private System.Windows.Forms.Label labelPixelsSuffix; + private System.Windows.Forms.ComboBox comboBoxMeasureFontName; + private System.Windows.Forms.Label labelMeasureFont; + private System.Windows.Forms.CheckBox checkBoxMeasureFontBold; + private System.Windows.Forms.CheckBox checkBoxShowLineWidths; + private System.Windows.Forms.NumericUpDown numericUpDownMeasureFontSize; + private System.Windows.Forms.CheckBox checkBoxGenerateLineWidthStatistics; + } +} \ No newline at end of file diff --git a/src/Forms/SettingsLineWidth.cs b/src/Forms/SettingsLineWidth.cs new file mode 100644 index 000000000..c7c579041 --- /dev/null +++ b/src/Forms/SettingsLineWidth.cs @@ -0,0 +1,91 @@ +using Nikse.SubtitleEdit.Core; +using Nikse.SubtitleEdit.Logic; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace Nikse.SubtitleEdit.Forms +{ + public partial class SettingsLineWidth : Form + { + public SettingsLineWidth() + { + UiUtil.PreInitialize(this); + InitializeComponent(); + UiUtil.FixFonts(this); + + var language = Configuration.Settings.Language.Settings; + var settings = Configuration.Settings.General; + Text = language.LineWidthSettings; + labelMaximumLineWidth.Text = language.MaximumLineWidth; + labelPixelsSuffix.Text = language.Pixels; + labelMeasureFont.Text = language.MeasureFont; + checkBoxMeasureFontBold.Text = language.SubtitleBold; + checkBoxShowLineWidths.Text = language.ShowLineWidths; + checkBoxGenerateLineWidthStatistics.Text = language.GenerateLineWidthStatistics; + + comboBoxMeasureFontName.BeginUpdate(); + comboBoxMeasureFontName.Items.Clear(); + var comboBoxFontNameList = new List(); + var comboBoxSubtitleFontList = new List(); + var comboBoxSubtitleFontIndex = 0; + foreach (var x in FontFamily.Families.OrderBy(p => p.Name)) + { + comboBoxSubtitleFontList.Add(x.Name); + if (x.Name.Equals(settings.MeasureFontName, StringComparison.OrdinalIgnoreCase)) + { + comboBoxSubtitleFontIndex = comboBoxSubtitleFontList.Count - 1; + } + } + comboBoxMeasureFontName.Items.AddRange(comboBoxSubtitleFontList.ToArray()); + comboBoxMeasureFontName.SelectedIndex = comboBoxSubtitleFontIndex; + comboBoxMeasureFontName.EndUpdate(); + + numericUpDownMaxLineWidth.Value = settings.SubtitleLineMaximumPixelWidth; + numericUpDownMeasureFontSize.Value = settings.MeasureFontSize; + checkBoxMeasureFontBold.Checked = settings.MeasureFontBold; + checkBoxShowLineWidths.Checked = settings.ShowLineWidths; + checkBoxGenerateLineWidthStatistics.Checked = settings.GenerateLineWidthStatistics; + + numericUpDownMaxLineWidth.Left = labelMaximumLineWidth.Left + labelMaximumLineWidth.Width + 6; + labelPixelsSuffix.Left = numericUpDownMaxLineWidth.Left + numericUpDownMaxLineWidth.Width + 6; + checkBoxMeasureFontBold.Left = numericUpDownMeasureFontSize.Left + numericUpDownMeasureFontSize.Width + 6; + comboBoxMeasureFontName.Left = numericUpDownMaxLineWidth.Left; + comboBoxMeasureFontName.Width = numericUpDownMeasureFontSize.Left - numericUpDownMaxLineWidth.Left - 6; + + buttonOK.Text = Configuration.Settings.Language.General.Ok; + buttonCancel.Text = Configuration.Settings.Language.General.Cancel; + UiUtil.FixLargeFonts(this, buttonOK); + } + + private void buttonOK_Click(object sender, EventArgs e) + { + Configuration.Settings.General.SubtitleLineMaximumPixelWidth = Convert.ToInt32(numericUpDownMaxLineWidth.Value); + Configuration.Settings.General.MeasureFontName = comboBoxMeasureFontName.Text; + Configuration.Settings.General.MeasureFontSize = Convert.ToInt32(numericUpDownMeasureFontSize.Value); + Configuration.Settings.General.MeasureFontBold = checkBoxMeasureFontBold.Checked; + Configuration.Settings.General.ShowLineWidths = checkBoxShowLineWidths.Checked; + Configuration.Settings.General.GenerateLineWidthStatistics = checkBoxGenerateLineWidthStatistics.Checked; + + DialogResult = DialogResult.OK; + } + + private void buttonCancel_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.Cancel; + } + + private void SettingsLineWidth_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Escape) + { + DialogResult = DialogResult.Cancel; + } + } + } +} diff --git a/src/Forms/SettingsLineWidth.resx b/src/Forms/SettingsLineWidth.resx new file mode 100644 index 000000000..1af7de150 --- /dev/null +++ b/src/Forms/SettingsLineWidth.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/src/Forms/Statistics.cs b/src/Forms/Statistics.cs index 3afb18e9d..e1c126108 100644 --- a/src/Forms/Statistics.cs +++ b/src/Forms/Statistics.cs @@ -104,6 +104,9 @@ https://github.com/SubtitleEdit/subtitleedit int maximumSingleLineLength = 0; long totalSingleLineLength = 0; long totalSingleLines = 0; + int minimumSingleLineWidth = 99999999; + int maximumSingleLineWidth = 0; + long totalSingleLineWidth = 0; double minimumDuration = 100000000; double maximumDuration = 0; double totalDuration = 0; @@ -135,6 +138,15 @@ https://github.com/SubtitleEdit/subtitleedit minimumSingleLineLength = Math.Min(l, minimumSingleLineLength); maximumSingleLineLength = Math.Max(l, maximumSingleLineLength); totalSingleLineLength += l; + + if (Configuration.Settings.General.GenerateLineWidthStatistics) + { + var w = GetSingleLineWidth(line); + minimumSingleLineWidth = Math.Min(w, minimumSingleLineWidth); + maximumSingleLineWidth = Math.Max(w, maximumSingleLineWidth); + totalSingleLineWidth += w; + } + totalSingleLines++; } } @@ -164,6 +176,15 @@ https://github.com/SubtitleEdit/subtitleedit sb.AppendLine(string.Format(_l.SingleLineLengthMaximum, maximumSingleLineLength) + " (" + GetIndicesWithSingleLineLength(maximumSingleLineLength) + ")"); sb.AppendLine(string.Format(_l.SingleLineLengthAverage, totalSingleLineLength / totalSingleLines)); sb.AppendLine(); + + if (Configuration.Settings.General.GenerateLineWidthStatistics) + { + sb.AppendLine(string.Format(_l.SingleLineWidthMinimum, minimumSingleLineWidth) + " (" + GetIndicesWithSingleLineWidth(minimumSingleLineWidth) + ")"); + sb.AppendLine(string.Format(_l.SingleLineWidthMaximum, maximumSingleLineWidth) + " (" + GetIndicesWithSingleLineWidth(maximumSingleLineWidth) + ")"); + sb.AppendLine(string.Format(_l.SingleLineWidthAverage, totalSingleLineWidth / totalSingleLines)); + sb.AppendLine(); + } + sb.AppendLine(string.Format(_l.DurationMinimum, minimumDuration / TimeCode.BaseUnit) + " (" + GetIndicesWithDuration(minimumDuration) + ")"); sb.AppendLine(string.Format(_l.DurationMaximum, maximumDuration / TimeCode.BaseUnit) + " (" + GetIndicesWithDuration(maximumDuration) + ")"); sb.AppendLine(string.Format(_l.DurationAverage, totalDuration / _subtitle.Paragraphs.Count / TimeCode.BaseUnit)); @@ -185,6 +206,11 @@ https://github.com/SubtitleEdit/subtitleedit return HtmlUtil.RemoveHtmlTags(s, true).Length; } + private static int GetSingleLineWidth(string s) + { + return TextWidth.CalcPixelWidth(HtmlUtil.RemoveHtmlTags(s, true)); + } + private const int NumberOfLinesToShow = 10; private string GetIndicesWithDuration(double duration) @@ -267,6 +293,29 @@ https://github.com/SubtitleEdit/subtitleedit return string.Join(", ", indices); } + private string GetIndicesWithSingleLineWidth(int width) + { + var indices = new List(); + for (int i = 0; i < _subtitle.Paragraphs.Count; i++) + { + var p = _subtitle.Paragraphs[i]; + foreach (var line in p.Text.SplitToLines()) + { + if (GetSingleLineWidth(line) == width) + { + if (indices.Count >= NumberOfLinesToShow) + { + indices.Add("..."); + return string.Join(", ", indices); + } + indices.Add("#" + (i + 1).ToString(CultureInfo.InvariantCulture)); + break; + } + } + } + return string.Join(", ", indices); + } + private void Statistics_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Escape) diff --git a/src/Logic/TextWidth.cs b/src/Logic/TextWidth.cs new file mode 100644 index 000000000..cd4bbb701 --- /dev/null +++ b/src/Logic/TextWidth.cs @@ -0,0 +1,26 @@ +using Nikse.SubtitleEdit.Core; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Drawing; +using System.Drawing.Imaging; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace Nikse.SubtitleEdit.Logic +{ + class TextWidth + { + public static int CalcPixelWidth(string text) + { + if (text != "") + { + Font measureFont = new Font(Configuration.Settings.General.MeasureFontName, Configuration.Settings.General.MeasureFontSize, Configuration.Settings.General.MeasureFontBold ? FontStyle.Bold : FontStyle.Regular); + return (int) Math.Round(TextRenderer.MeasureText(text, measureFont, Size.Empty, TextFormatFlags.NoPadding).Width * 0.969f /* Correction value to remove extra padding */) + 1 /* Border */; + } + + return 0; + } + } +} diff --git a/src/Logic/UiUtil.cs b/src/Logic/UiUtil.cs index 15341f5e2..00399ab9e 100644 --- a/src/Logic/UiUtil.cs +++ b/src/Logic/UiUtil.cs @@ -660,6 +660,38 @@ namespace Nikse.SubtitleEdit.Logic label.Text = sb.ToString(); } + public static void GetLinePixelWidths(Label label, string text) + { + label.ForeColor = ForeColor; + var lines = text.SplitToLines(); + const int max = 3; + var sb = new StringBuilder(); + for (int i = 0; i < lines.Count; i++) + { + string line = lines[i]; + if (i > 0) + { + sb.Append('/'); + } + + if (i > max) + { + label.ForeColor = Color.Red; + sb.Append("..."); + label.Text = sb.ToString(); + return; + } + + int lineWidth = TextWidth.CalcPixelWidth(line); + sb.Append(lineWidth); + if (lineWidth > Configuration.Settings.General.SubtitleLineMaximumPixelWidth) + { + label.ForeColor = Color.Red; + } + } + label.Text = sb.ToString(); + } + public static void InitializeSubtitleFormatComboBox(ToolStripComboBox comboBox, SubtitleFormat format) { InitializeSubtitleFormatComboBox(comboBox.ComboBox, format); diff --git a/src/SubtitleEdit.csproj b/src/SubtitleEdit.csproj index 4afe5915d..cf6f3ff2d 100644 --- a/src/SubtitleEdit.csproj +++ b/src/SubtitleEdit.csproj @@ -725,6 +725,12 @@ Settings.cs + + Form + + + SettingsLineWidth.cs + Form @@ -1038,6 +1044,7 @@ + @@ -1397,6 +1404,9 @@ Settings.cs Designer + + SettingsLineWidth.cs + SettingsMpv.cs