From 092dd393bc91dcd93e02c3364e294ef4d1afa4b7 Mon Sep 17 00:00:00 2001 From: nkh0472 Date: Tue, 6 Jun 2023 16:10:43 +0800 Subject: [PATCH 01/96] Update zh-Hans.xml for commit ef6f1d572d9778165f5ac1652578bb1790028471 --- src/ui/Languages/zh-Hans.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/ui/Languages/zh-Hans.xml b/src/ui/Languages/zh-Hans.xml index 3f2fcb9a4..6824bbd1f 100644 --- a/src/ui/Languages/zh-Hans.xml +++ b/src/ui/Languages/zh-Hans.xml @@ -2389,6 +2389,8 @@ Command line: {1} {2} 启用语法高亮 Html配色 ASSA配色 + 主题 + 自动 暗色主题 使用暗色主题 显示列表视图网格线 From 9ee67d84e068cb39fd30daf4c900259eca847051 Mon Sep 17 00:00:00 2001 From: JonSchram <7951615+JonSchram@users.noreply.github.com> Date: Tue, 6 Jun 2023 17:46:18 -0400 Subject: [PATCH 02/96] Adds ability to set layer for the current subtitle. When manually positioning a lot of subtitles, which subtitle is rendered on top can often be incorrect, so a layer input would be useful. The layer property in Paragraph is a 32-bit integer so the numeric up/down control accepts all 32-bit integers to be able to display any possible value. --- src/ui/Forms/Main.Designer.cs | 557 ++++++++++++++++++---------------- src/ui/Forms/Main.cs | 15 + src/ui/Forms/Main.resx | 2 +- 3 files changed, 312 insertions(+), 262 deletions(-) diff --git a/src/ui/Forms/Main.Designer.cs b/src/ui/Forms/Main.Designer.cs index 8b4ae9b22..11b0d746d 100644 --- a/src/ui/Forms/Main.Designer.cs +++ b/src/ui/Forms/Main.Designer.cs @@ -40,9 +40,9 @@ namespace Nikse.SubtitleEdit.Forms { this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Main)); + Nikse.SubtitleEdit.Core.Common.TimeCode timeCode3 = new Nikse.SubtitleEdit.Core.Common.TimeCode(); Nikse.SubtitleEdit.Core.Common.TimeCode timeCode1 = new Nikse.SubtitleEdit.Core.Common.TimeCode(); Nikse.SubtitleEdit.Core.Common.TimeCode timeCode2 = new Nikse.SubtitleEdit.Core.Common.TimeCode(); - Nikse.SubtitleEdit.Core.Common.TimeCode timeCode3 = new Nikse.SubtitleEdit.Core.Common.TimeCode(); this.statusStrip1 = new System.Windows.Forms.StatusStrip(); this.labelStatus = new System.Windows.Forms.ToolStripStatusLabel(); this.toolStripSelected = new System.Windows.Forms.ToolStripStatusLabel(); @@ -354,7 +354,6 @@ namespace Nikse.SubtitleEdit.Forms this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog(); 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(); @@ -390,7 +389,6 @@ namespace Nikse.SubtitleEdit.Forms 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(); @@ -408,7 +406,6 @@ namespace Nikse.SubtitleEdit.Forms 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(); @@ -461,12 +458,12 @@ namespace Nikse.SubtitleEdit.Forms this.splitContainerMain = new System.Windows.Forms.SplitContainer(); this.splitContainer1 = new System.Windows.Forms.SplitContainer(); 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.numericUpDownLayer = new System.Windows.Forms.NumericUpDown(); + this.labelLayer = new System.Windows.Forms.Label(); this.panelBookmark = new System.Windows.Forms.Panel(); this.labelBookmark = new System.Windows.Forms.Label(); - this.textBoxListViewText = new Nikse.SubtitleEdit.Controls.SETextBox(); this.contextMenuStripTextBoxListView = new System.Windows.Forms.ContextMenuStrip(this.components); this.toolStripSeparatorSpellCheckSuggestions = new System.Windows.Forms.ToolStripSeparator(); this.toolStripMenuItemSpellCheckSkipOnce = new System.Windows.Forms.ToolStripMenuItem(); @@ -528,13 +525,11 @@ namespace Nikse.SubtitleEdit.Forms this.labelTextOriginalLineLengths = new System.Windows.Forms.Label(); this.labelOriginalText = new System.Windows.Forms.Label(); this.labelText = new System.Windows.Forms.Label(); - this.textBoxListViewTextOriginal = new Nikse.SubtitleEdit.Controls.SETextBox(); this.buttonAutoBreak = new System.Windows.Forms.Button(); this.labelTextLineLengths = new System.Windows.Forms.Label(); 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(); @@ -562,7 +557,6 @@ namespace Nikse.SubtitleEdit.Forms this.startOfLefttorightOverrideLROToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.startOfRighttoleftOverrideRLOToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 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.aSSStylesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -571,6 +565,14 @@ namespace Nikse.SubtitleEdit.Forms this.timerOriginalTextUndo = new System.Windows.Forms.Timer(this.components); this.contextMenuStripShowVideoControls = new System.Windows.Forms.ContextMenuStrip(this.components); this.toolStripMenuItemShowVideoControls = new System.Windows.Forms.ToolStripMenuItem(); + this.SubtitleListview1 = new Nikse.SubtitleEdit.Controls.SubtitleListView(); + this.textBoxListViewText = new Nikse.SubtitleEdit.Controls.SETextBox(); + this.textBoxListViewTextOriginal = new Nikse.SubtitleEdit.Controls.SETextBox(); + this.timeUpDownStartTime = new Nikse.SubtitleEdit.Controls.TimeUpDown(); + 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.statusStrip1.SuspendLayout(); this.toolStrip1.SuspendLayout(); this.menuStrip1.SuspendLayout(); @@ -605,6 +607,7 @@ namespace Nikse.SubtitleEdit.Forms this.splitContainerListViewAndText.Panel2.SuspendLayout(); this.splitContainerListViewAndText.SuspendLayout(); this.groupBoxEdit.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownLayer)).BeginInit(); this.panelBookmark.SuspendLayout(); this.contextMenuStripTextBoxListView.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBoxBookmark)).BeginInit(); @@ -2667,7 +2670,7 @@ namespace Nikse.SubtitleEdit.Forms this.toolStripMenuItemSelectedLines, this.toolStripMenuItemGoogleMicrosoftTranslateSelLine}); this.contextMenuStripListView.Name = "contextMenuStripListView"; - this.contextMenuStripListView.Size = new System.Drawing.Size(285, 798); + this.contextMenuStripListView.Size = new System.Drawing.Size(285, 776); this.contextMenuStripListView.Closed += new System.Windows.Forms.ToolStripDropDownClosedEventHandler(this.MenuClosed); this.contextMenuStripListView.Opening += new System.ComponentModel.CancelEventHandler(this.ContextMenuStripListViewOpening); this.contextMenuStripListView.Opened += new System.EventHandler(this.MenuOpened); @@ -3240,55 +3243,6 @@ namespace Nikse.SubtitleEdit.Forms 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.Chapters = null; - this.audioVisualizer.ChaptersColor = System.Drawing.Color.Empty; - this.audioVisualizer.ClosenessForBorderSelection = 15; - this.audioVisualizer.Color = System.Drawing.Color.GreenYellow; - this.audioVisualizer.CursorColor = System.Drawing.Color.Empty; - this.audioVisualizer.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F); - this.audioVisualizer.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(155)))), ((int)(((byte)(155))))); - 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.Move100MsLeft = System.Windows.Forms.Keys.None; - this.audioVisualizer.Move100MsRight = System.Windows.Forms.Keys.None; - this.audioVisualizer.MoveOneSecondLeft = System.Windows.Forms.Keys.None; - this.audioVisualizer.MoveOneSecondRight = System.Windows.Forms.Keys.None; - this.audioVisualizer.Name = "audioVisualizer"; - this.audioVisualizer.NewSelectionParagraph = null; - this.audioVisualizer.ParagraphColor = System.Drawing.Color.LimeGreen; - this.audioVisualizer.SelectedColor = System.Drawing.Color.Red; - this.audioVisualizer.ShotChanges = ((System.Collections.Generic.List)(resources.GetObject("audioVisualizer.ShotChanges"))); - 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; @@ -3713,28 +3667,6 @@ namespace Nikse.SubtitleEdit.Forms this.tabPageCreate.Text = "Create"; this.tabPageCreate.UseVisualStyleBackColor = true; // - // timeUpDownVideoPosition - // - this.timeUpDownVideoPosition.AutoSize = true; - this.timeUpDownVideoPosition.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.timeUpDownVideoPosition.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.timeUpDownVideoPosition.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F); - this.timeUpDownVideoPosition.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(155)))), ((int)(((byte)(155))))); - this.timeUpDownVideoPosition.Location = new System.Drawing.Point(90, 190); - this.timeUpDownVideoPosition.Margin = new System.Windows.Forms.Padding(4); - this.timeUpDownVideoPosition.Name = "timeUpDownVideoPosition"; - this.timeUpDownVideoPosition.Size = new System.Drawing.Size(113, 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); @@ -3955,28 +3887,6 @@ namespace Nikse.SubtitleEdit.Forms this.tabPageAdjust.Text = "Adjust"; this.tabPageAdjust.UseVisualStyleBackColor = true; // - // timeUpDownVideoPositionAdjust - // - this.timeUpDownVideoPositionAdjust.AutoSize = true; - this.timeUpDownVideoPositionAdjust.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.timeUpDownVideoPositionAdjust.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.timeUpDownVideoPositionAdjust.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F); - this.timeUpDownVideoPositionAdjust.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(155)))), ((int)(((byte)(155))))); - this.timeUpDownVideoPositionAdjust.Location = new System.Drawing.Point(90, 215); - this.timeUpDownVideoPositionAdjust.Margin = new System.Windows.Forms.Padding(4); - this.timeUpDownVideoPositionAdjust.Name = "timeUpDownVideoPositionAdjust"; - this.timeUpDownVideoPositionAdjust.Size = new System.Drawing.Size(113, 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); @@ -4477,39 +4387,6 @@ namespace Nikse.SubtitleEdit.Forms this.splitContainerListViewAndText.TabIndex = 2; this.splitContainerListViewAndText.VisibleChanged += new System.EventHandler(this.ListViewVisibleChanged); // - // 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(740, 105); - 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.MouseDown += new System.Windows.Forms.MouseEventHandler(this.SubtitleListview1_MouseDown); - this.SubtitleListview1.MouseEnter += new System.EventHandler(this.SubtitleListview1_MouseEnter); - this.SubtitleListview1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.SubtitleListview1_MouseUp); - // // imageListBookmarks // this.imageListBookmarks.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit; @@ -4518,6 +4395,8 @@ namespace Nikse.SubtitleEdit.Forms // // groupBoxEdit // + this.groupBoxEdit.Controls.Add(this.numericUpDownLayer); + this.groupBoxEdit.Controls.Add(this.labelLayer); this.groupBoxEdit.Controls.Add(this.panelBookmark); this.groupBoxEdit.Controls.Add(this.textBoxListViewText); this.groupBoxEdit.Controls.Add(this.labelOriginalSingleLinePixels); @@ -4553,6 +4432,33 @@ namespace Nikse.SubtitleEdit.Forms this.groupBoxEdit.TabIndex = 1; this.groupBoxEdit.TabStop = false; // + // numericUpDownLayer + // + this.numericUpDownLayer.Location = new System.Drawing.Point(44, 113); + this.numericUpDownLayer.Maximum = new decimal(new int[] { + 2147483647, + 0, + 0, + 0}); + this.numericUpDownLayer.Minimum = new decimal(new int[] { + -2147483648, + 0, + 0, + -2147483648}); + this.numericUpDownLayer.Name = "numericUpDownLayer"; + this.numericUpDownLayer.Size = new System.Drawing.Size(37, 20); + this.numericUpDownLayer.TabIndex = 46; + this.numericUpDownLayer.ValueChanged += new System.EventHandler(this.numericUpDownLayer_ValueChanged); + // + // labelLayer + // + this.labelLayer.AutoSize = true; + this.labelLayer.Location = new System.Drawing.Point(9, 115); + this.labelLayer.Name = "labelLayer"; + this.labelLayer.Size = new System.Drawing.Size(33, 13); + this.labelLayer.TabIndex = 45; + this.labelLayer.Text = "Layer"; + // // panelBookmark // this.panelBookmark.BackColor = System.Drawing.Color.LemonChiffon; @@ -4574,43 +4480,6 @@ namespace Nikse.SubtitleEdit.Forms this.labelBookmark.Text = "labelBookmark"; this.labelBookmark.DoubleClick += new System.EventHandler(this.labelBookmark_DoubleClick); // - // 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.BackColor = System.Drawing.SystemColors.WindowFrame; - this.textBoxListViewText.ContextMenuStrip = this.contextMenuStripTextBoxListView; - this.textBoxListViewText.CurrentLanguage = ""; - this.textBoxListViewText.CurrentLineIndex = 0; - this.textBoxListViewText.Enabled = false; - this.textBoxListViewText.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold); - this.textBoxListViewText.HideSelection = false; - this.textBoxListViewText.IsDictionaryDownloaded = true; - this.textBoxListViewText.IsSpellCheckerInitialized = false; - this.textBoxListViewText.IsSpellCheckRequested = false; - this.textBoxListViewText.IsWrongWord = false; - this.textBoxListViewText.LanguageChanged = false; - this.textBoxListViewText.Location = new System.Drawing.Point(184, 27); - this.textBoxListViewText.Multiline = true; - this.textBoxListViewText.Name = "textBoxListViewText"; - this.textBoxListViewText.Padding = new System.Windows.Forms.Padding(1); - this.textBoxListViewText.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Both; - this.textBoxListViewText.SelectedText = ""; - this.textBoxListViewText.SelectionLength = 0; - this.textBoxListViewText.SelectionStart = 0; - this.textBoxListViewText.Size = new System.Drawing.Size(430, 84); - this.textBoxListViewText.TabIndex = 5; - this.textBoxListViewText.TextBoxFont = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold); - this.textBoxListViewText.TextChanged += new System.EventHandler(this.TextBoxListViewTextTextChanged); - this.textBoxListViewText.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TextBoxListViewTextKeyDown); - this.textBoxListViewText.MouseClick += new System.Windows.Forms.MouseEventHandler(this.TextBoxListViewTextMouseClick); - this.textBoxListViewText.Enter += new System.EventHandler(this.TextBoxListViewTextEnter); - 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); - // // contextMenuStripTextBoxListView // this.contextMenuStripTextBoxListView.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -5121,43 +4990,6 @@ namespace Nikse.SubtitleEdit.Forms this.labelText.TabIndex = 5; this.labelText.Text = "Text"; // - // textBoxListViewTextOriginal - // - this.textBoxListViewTextOriginal.AllowDrop = true; - this.textBoxListViewTextOriginal.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.textBoxListViewTextOriginal.BackColor = System.Drawing.SystemColors.WindowFrame; - this.textBoxListViewTextOriginal.ContextMenuStrip = this.contextMenuStripTextBoxListView; - this.textBoxListViewTextOriginal.CurrentLanguage = ""; - this.textBoxListViewTextOriginal.CurrentLineIndex = 0; - this.textBoxListViewTextOriginal.Enabled = false; - this.textBoxListViewTextOriginal.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold); - this.textBoxListViewTextOriginal.HideSelection = false; - this.textBoxListViewTextOriginal.IsDictionaryDownloaded = true; - this.textBoxListViewTextOriginal.IsSpellCheckerInitialized = false; - this.textBoxListViewTextOriginal.IsSpellCheckRequested = false; - this.textBoxListViewTextOriginal.IsWrongWord = false; - this.textBoxListViewTextOriginal.LanguageChanged = false; - this.textBoxListViewTextOriginal.Location = new System.Drawing.Point(946, 28); - this.textBoxListViewTextOriginal.Multiline = true; - this.textBoxListViewTextOriginal.Name = "textBoxListViewTextOriginal"; - this.textBoxListViewTextOriginal.Padding = new System.Windows.Forms.Padding(1); - this.textBoxListViewTextOriginal.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Both; - this.textBoxListViewTextOriginal.SelectedText = ""; - this.textBoxListViewTextOriginal.SelectionLength = 0; - this.textBoxListViewTextOriginal.SelectionStart = 0; - this.textBoxListViewTextOriginal.Size = new System.Drawing.Size(16, 84); - this.textBoxListViewTextOriginal.TabIndex = 33; - this.textBoxListViewTextOriginal.TextBoxFont = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold); - this.textBoxListViewTextOriginal.Visible = false; - this.textBoxListViewTextOriginal.TextChanged += new System.EventHandler(this.textBoxListViewTextOriginal_TextChanged); - this.textBoxListViewTextOriginal.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TextBoxListViewTextOriginalKeyDown); - this.textBoxListViewTextOriginal.MouseClick += new System.Windows.Forms.MouseEventHandler(this.TextBoxListViewTextOriginalMouseClick); - this.textBoxListViewTextOriginal.Enter += new System.EventHandler(this.TextBoxListViewTextOriginalEnter); - this.textBoxListViewTextOriginal.KeyUp += new System.Windows.Forms.KeyEventHandler(this.TextBoxListViewTextOriginalKeyUp); - this.textBoxListViewTextOriginal.MouseMove += new System.Windows.Forms.MouseEventHandler(this.TextBoxListViewTextOriginalMouseMove); - // // buttonAutoBreak // this.buttonAutoBreak.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); @@ -5210,28 +5042,6 @@ namespace Nikse.SubtitleEdit.Forms 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.BackColor = System.Drawing.SystemColors.Control; - this.timeUpDownStartTime.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F); - this.timeUpDownStartTime.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(155)))), ((int)(((byte)(155))))); - 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(113, 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; @@ -5490,35 +5300,6 @@ namespace Nikse.SubtitleEdit.Forms 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.Chapters = null; - 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.SubtitleText = ""; - this.mediaPlayer.TabIndex = 5; - this.mediaPlayer.TextRightToLeft = System.Windows.Forms.RightToLeft.No; - this.mediaPlayer.UsingFrontCenterAudioChannelOnly = false; - 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[] { @@ -5574,6 +5355,257 @@ namespace Nikse.SubtitleEdit.Forms this.toolStripMenuItemShowVideoControls.Text = "Show video controls"; this.toolStripMenuItemShowVideoControls.Click += new System.EventHandler(this.toolStripMenuItemShowVideoControls_Click); // + // 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(740, 105); + 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.MouseDown += new System.Windows.Forms.MouseEventHandler(this.SubtitleListview1_MouseDown); + this.SubtitleListview1.MouseEnter += new System.EventHandler(this.SubtitleListview1_MouseEnter); + this.SubtitleListview1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.SubtitleListview1_MouseUp); + // + // 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.BackColor = System.Drawing.SystemColors.WindowFrame; + this.textBoxListViewText.ContextMenuStrip = this.contextMenuStripTextBoxListView; + this.textBoxListViewText.CurrentLanguage = ""; + this.textBoxListViewText.CurrentLineIndex = 0; + this.textBoxListViewText.Enabled = false; + this.textBoxListViewText.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold); + this.textBoxListViewText.HideSelection = false; + this.textBoxListViewText.IsDictionaryDownloaded = true; + this.textBoxListViewText.IsSpellCheckerInitialized = false; + this.textBoxListViewText.IsSpellCheckRequested = false; + this.textBoxListViewText.IsWrongWord = false; + this.textBoxListViewText.LanguageChanged = false; + this.textBoxListViewText.Location = new System.Drawing.Point(184, 27); + this.textBoxListViewText.Multiline = true; + this.textBoxListViewText.Name = "textBoxListViewText"; + this.textBoxListViewText.Padding = new System.Windows.Forms.Padding(1); + this.textBoxListViewText.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Both; + this.textBoxListViewText.SelectedText = ""; + this.textBoxListViewText.SelectionLength = 0; + this.textBoxListViewText.SelectionStart = 0; + this.textBoxListViewText.Size = new System.Drawing.Size(430, 84); + this.textBoxListViewText.TabIndex = 5; + this.textBoxListViewText.TextBoxFont = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold); + this.textBoxListViewText.TextChanged += new System.EventHandler(this.TextBoxListViewTextTextChanged); + this.textBoxListViewText.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TextBoxListViewTextKeyDown); + this.textBoxListViewText.MouseClick += new System.Windows.Forms.MouseEventHandler(this.TextBoxListViewTextMouseClick); + this.textBoxListViewText.Enter += new System.EventHandler(this.TextBoxListViewTextEnter); + 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); + // + // textBoxListViewTextOriginal + // + this.textBoxListViewTextOriginal.AllowDrop = true; + this.textBoxListViewTextOriginal.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.textBoxListViewTextOriginal.BackColor = System.Drawing.SystemColors.WindowFrame; + this.textBoxListViewTextOriginal.ContextMenuStrip = this.contextMenuStripTextBoxListView; + this.textBoxListViewTextOriginal.CurrentLanguage = ""; + this.textBoxListViewTextOriginal.CurrentLineIndex = 0; + this.textBoxListViewTextOriginal.Enabled = false; + this.textBoxListViewTextOriginal.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold); + this.textBoxListViewTextOriginal.HideSelection = false; + this.textBoxListViewTextOriginal.IsDictionaryDownloaded = true; + this.textBoxListViewTextOriginal.IsSpellCheckerInitialized = false; + this.textBoxListViewTextOriginal.IsSpellCheckRequested = false; + this.textBoxListViewTextOriginal.IsWrongWord = false; + this.textBoxListViewTextOriginal.LanguageChanged = false; + this.textBoxListViewTextOriginal.Location = new System.Drawing.Point(946, 28); + this.textBoxListViewTextOriginal.Multiline = true; + this.textBoxListViewTextOriginal.Name = "textBoxListViewTextOriginal"; + this.textBoxListViewTextOriginal.Padding = new System.Windows.Forms.Padding(1); + this.textBoxListViewTextOriginal.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Both; + this.textBoxListViewTextOriginal.SelectedText = ""; + this.textBoxListViewTextOriginal.SelectionLength = 0; + this.textBoxListViewTextOriginal.SelectionStart = 0; + this.textBoxListViewTextOriginal.Size = new System.Drawing.Size(16, 84); + this.textBoxListViewTextOriginal.TabIndex = 33; + this.textBoxListViewTextOriginal.TextBoxFont = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold); + this.textBoxListViewTextOriginal.Visible = false; + this.textBoxListViewTextOriginal.TextChanged += new System.EventHandler(this.textBoxListViewTextOriginal_TextChanged); + this.textBoxListViewTextOriginal.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TextBoxListViewTextOriginalKeyDown); + this.textBoxListViewTextOriginal.MouseClick += new System.Windows.Forms.MouseEventHandler(this.TextBoxListViewTextOriginalMouseClick); + this.textBoxListViewTextOriginal.Enter += new System.EventHandler(this.TextBoxListViewTextOriginalEnter); + this.textBoxListViewTextOriginal.KeyUp += new System.Windows.Forms.KeyEventHandler(this.TextBoxListViewTextOriginalKeyUp); + this.textBoxListViewTextOriginal.MouseMove += new System.Windows.Forms.MouseEventHandler(this.TextBoxListViewTextOriginalMouseMove); + // + // timeUpDownStartTime + // + this.timeUpDownStartTime.AutoSize = true; + this.timeUpDownStartTime.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.timeUpDownStartTime.BackColor = System.Drawing.SystemColors.Control; + this.timeUpDownStartTime.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F); + this.timeUpDownStartTime.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(155)))), ((int)(((byte)(155))))); + 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(113, 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; + // + // 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.Chapters = null; + 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.SubtitleText = ""; + this.mediaPlayer.TabIndex = 5; + this.mediaPlayer.TextRightToLeft = System.Windows.Forms.RightToLeft.No; + this.mediaPlayer.UsingFrontCenterAudioChannelOnly = false; + 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.Chapters = null; + this.audioVisualizer.ChaptersColor = System.Drawing.Color.Empty; + this.audioVisualizer.ClosenessForBorderSelection = 15; + this.audioVisualizer.Color = System.Drawing.Color.GreenYellow; + this.audioVisualizer.CursorColor = System.Drawing.Color.Empty; + this.audioVisualizer.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F); + this.audioVisualizer.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(155)))), ((int)(((byte)(155))))); + 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.Move100MsLeft = System.Windows.Forms.Keys.None; + this.audioVisualizer.Move100MsRight = System.Windows.Forms.Keys.None; + this.audioVisualizer.MoveOneSecondLeft = System.Windows.Forms.Keys.None; + this.audioVisualizer.MoveOneSecondRight = System.Windows.Forms.Keys.None; + this.audioVisualizer.Name = "audioVisualizer"; + this.audioVisualizer.NewSelectionParagraph = null; + this.audioVisualizer.ParagraphColor = System.Drawing.Color.LimeGreen; + this.audioVisualizer.SelectedColor = System.Drawing.Color.Red; + this.audioVisualizer.ShotChanges = ((System.Collections.Generic.List)(resources.GetObject("audioVisualizer.ShotChanges"))); + 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.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.timeUpDownVideoPosition.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F); + this.timeUpDownVideoPosition.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(155)))), ((int)(((byte)(155))))); + this.timeUpDownVideoPosition.Location = new System.Drawing.Point(90, 190); + this.timeUpDownVideoPosition.Margin = new System.Windows.Forms.Padding(4); + this.timeUpDownVideoPosition.Name = "timeUpDownVideoPosition"; + this.timeUpDownVideoPosition.Size = new System.Drawing.Size(113, 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; + // + // timeUpDownVideoPositionAdjust + // + this.timeUpDownVideoPositionAdjust.AutoSize = true; + this.timeUpDownVideoPositionAdjust.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.timeUpDownVideoPositionAdjust.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.timeUpDownVideoPositionAdjust.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F); + this.timeUpDownVideoPositionAdjust.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(155)))), ((int)(((byte)(155))))); + this.timeUpDownVideoPositionAdjust.Location = new System.Drawing.Point(90, 215); + this.timeUpDownVideoPositionAdjust.Margin = new System.Windows.Forms.Padding(4); + this.timeUpDownVideoPositionAdjust.Name = "timeUpDownVideoPositionAdjust"; + this.timeUpDownVideoPositionAdjust.Size = new System.Drawing.Size(113, 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; + // // Main // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -5645,6 +5677,7 @@ namespace Nikse.SubtitleEdit.Forms this.splitContainerListViewAndText.ResumeLayout(false); this.groupBoxEdit.ResumeLayout(false); this.groupBoxEdit.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownLayer)).EndInit(); this.panelBookmark.ResumeLayout(false); this.panelBookmark.PerformLayout(); this.contextMenuStripTextBoxListView.ResumeLayout(false); @@ -6190,5 +6223,7 @@ namespace Nikse.SubtitleEdit.Forms private System.Windows.Forms.ToolStripMenuItem removeTranslationToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem generateVideoWithSoftcodedSubtitlesToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemExportTtmlImage; + private System.Windows.Forms.NumericUpDown numericUpDownLayer; + private System.Windows.Forms.Label labelLayer; } } \ No newline at end of file diff --git a/src/ui/Forms/Main.cs b/src/ui/Forms/Main.cs index 1ef381852..741301c00 100644 --- a/src/ui/Forms/Main.cs +++ b/src/ui/Forms/Main.cs @@ -10706,6 +10706,18 @@ namespace Nikse.SubtitleEdit.Forms } } + private void numericUpDownLayer_ValueChanged(object sender, EventArgs e) + { + var idx = _subtitleListViewIndex; + var p = _subtitle.GetParagraphOrDefault(idx); + if (p == null) + { + return; + } + + p.Layer = (int)numericUpDownLayer.Value; + } + public Point GetPositionInForm(Control ctrl) { Point p = ctrl.Location; @@ -12843,6 +12855,9 @@ namespace Nikse.SubtitleEdit.Forms textBoxListViewText.Text = p.Text; textBoxListViewText.TextChanged += TextBoxListViewTextTextChanged; _listViewTextUndoLast = p.Text; + numericUpDownLayer.ValueChanged -= numericUpDownLayer_ValueChanged; + numericUpDownLayer.Value = p.Layer; + numericUpDownLayer.ValueChanged += numericUpDownLayer_ValueChanged; timeUpDownStartTime.MaskedTextBox.TextChanged -= MaskedTextBoxTextChanged; timeUpDownStartTime.TimeCode = p.StartTime; diff --git a/src/ui/Forms/Main.resx b/src/ui/Forms/Main.resx index ec1b07597..70a330ce6 100644 --- a/src/ui/Forms/Main.resx +++ b/src/ui/Forms/Main.resx @@ -857,7 +857,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD2 - CAAAAk1TRnQBSQFMAgEBAgEAAbQBLgG0AS4BEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CAAAAk1TRnQBSQFMAgEBAgEAAfQBLgH0AS4BEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA From a796767da557afef0c7ef32424dfcb7641d00b98 Mon Sep 17 00:00:00 2001 From: Hugo Carvalho Date: Wed, 7 Jun 2023 13:55:05 +0100 Subject: [PATCH 03/96] Update pt-PT.xml For commit: ef6f1d572d9778165f5ac1652578bb1790028471 --- src/ui/Languages/pt-PT.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/ui/Languages/pt-PT.xml b/src/ui/Languages/pt-PT.xml index 44eff948e..79de012bc 100644 --- a/src/ui/Languages/pt-PT.xml +++ b/src/ui/Languages/pt-PT.xml @@ -2402,6 +2402,8 @@ editar o mesmo ficheiro de legenda (colaboração) Usar coloração sintáctica Cor Html Cor ASSA + Tema + Automático Tema escuro Activar tema escuro Mostrar grelha na Lista From 6ee080dede1c46a7f4511f290d155c393ecc142d Mon Sep 17 00:00:00 2001 From: niksedk Date: Thu, 8 Jun 2023 06:31:11 +0200 Subject: [PATCH 04/96] Fix crash in Settings when Icons dir not present - thx JDTR75 :) Fix #6998 --- src/ui/Forms/Options/Settings.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ui/Forms/Options/Settings.cs b/src/ui/Forms/Options/Settings.cs index e78146707..6e63cfa71 100644 --- a/src/ui/Forms/Options/Settings.cs +++ b/src/ui/Forms/Options/Settings.cs @@ -1204,6 +1204,7 @@ namespace Nikse.SubtitleEdit.Forms.Options { comboBoxToolbarIconTheme.Visible = false; labelToolbarIconTheme.Visible = false; + return; } comboBoxToolbarIconTheme.SelectedIndexChanged -= comboBoxToolbarIconTheme_SelectedIndexChanged; From 77344c4e8528a9f428d2699e6edc998c1eaf1b58 Mon Sep 17 00:00:00 2001 From: niksedk Date: Sat, 10 Jun 2023 10:04:10 +0200 Subject: [PATCH 05/96] Work on #7007 --- src/Test/Core/WebVttToAssaTest.cs | 62 +++ .../Forms/RemoveTextForHearImpairedTest.cs | 18 + src/Test/Test.csproj | 1 + src/libse/Common/WebVttToAssa.cs | 359 ++++++++++++++++++ src/libse/Forms/RemoveInterjection.cs | 31 ++ 5 files changed, 471 insertions(+) create mode 100644 src/Test/Core/WebVttToAssaTest.cs create mode 100644 src/libse/Common/WebVttToAssa.cs diff --git a/src/Test/Core/WebVttToAssaTest.cs b/src/Test/Core/WebVttToAssaTest.cs new file mode 100644 index 000000000..75fa78c92 --- /dev/null +++ b/src/Test/Core/WebVttToAssaTest.cs @@ -0,0 +1,62 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Nikse.SubtitleEdit.Core.Common; +using Nikse.SubtitleEdit.Core.SubtitleFormats; + +namespace Test.Core +{ + [TestClass] + public class WebVttToAssaTest + { + [TestMethod] + public void TestStyles1() + { + var subtitle = new Subtitle(); + subtitle.Header = "WEBVTT\r\n\r\nSTYLE\r\n::cue(.background-color_transparent) {\r\n background-color: rgba(255,255,255,0.0);\r\n}\r\n::cue(.color_EBEBEB) {\r\n color: rgba(235,235,235,1.000000);\r\n}\r\n::cue(.font-family_Arial) {\r\n font-family: Arial;\r\n}\r\n::cue(.font-style_normal) {\r\n font-style: normal;\r\n}\r\n::cue(.font-weight_normal) {\r\n font-weight: normal;\r\n}\r\n::cue(.text-shadow_#101010-3px) {\r\n text-shadow: #101010 3px;\r\n}\r\n::cue(.font-style_italic) {\r\n font-style: italic;\r\n}"; + var converted = WebVttToAssa.Convert(subtitle, new SsaStyle(), 1920, 1080); + var styles = AdvancedSubStationAlpha.GetSsaStylesFromHeader(converted.Header); + + Assert.AreEqual(".background-color_transparent", styles[0].Name); + Assert.AreEqual(".color_EBEBEB", styles[1].Name); + Assert.AreEqual(".font-family_Arial", styles[2].Name); + Assert.AreEqual(".font-style_normal", styles[3].Name); + Assert.AreEqual(".font-weight_normal", styles[4].Name); + Assert.AreEqual(".text-shadow_#101010-3px", styles[5].Name); + Assert.AreEqual(".font-style_italic", styles[6].Name); + + Assert.AreEqual(235, styles[1].Primary.R); + Assert.AreEqual("Arial", styles[2].FontName); + Assert.AreEqual(false, styles[3].Italic); + Assert.AreEqual(false, styles[4].Bold); + Assert.AreEqual(3, styles[5].ShadowWidth); + Assert.AreEqual(true, styles[6].Italic); + } + + [TestMethod] + public void TestStyles2() + { + var subtitle = new Subtitle(); + subtitle.Header = "STYLE\r\n::cue(.styledotEAC118) { color:#EAC118 }\r\n::cue(.styledotaqua) { color:aqua }\r\n::cue(.styledotaquadotitalic) { color:aqua;font-style:italic }\r\n::cue(.styledotitalic) { font-style:italic }\r\n::cue(.styledotEAC118dotitalic) { color:#EAC118;font-style:italic }"; + var converted = WebVttToAssa.Convert(subtitle, new SsaStyle(), 1920, 1080); + var styles = AdvancedSubStationAlpha.GetSsaStylesFromHeader(converted.Header); + + Assert.AreEqual(".styledotEAC118", styles[0].Name); + Assert.AreEqual(".styledotaqua", styles[1].Name); + Assert.AreEqual(".styledotaquadotitalic", styles[2].Name); + Assert.AreEqual(".styledotitalic", styles[3].Name); + Assert.AreEqual(".styledotEAC118dotitalic", styles[4].Name); + + Assert.AreEqual(234, styles[0].Primary.R); + Assert.AreEqual(193, styles[0].Primary.G); + Assert.AreEqual(24, styles[0].Primary.B); + Assert.AreEqual(0, styles[1].Primary.R); + Assert.AreEqual(255, styles[1].Primary.G); + Assert.AreEqual(255, styles[1].Primary.B); + Assert.AreEqual(true, styles[2].Italic); + Assert.AreEqual(true, styles[3].Italic); + Assert.AreEqual(true, styles[4].Italic); + Assert.AreEqual(234, styles[4].Primary.R); + Assert.AreEqual(193, styles[4].Primary.G); + Assert.AreEqual(24, styles[4].Primary.B); + } + } +} diff --git a/src/Test/Logic/Forms/RemoveTextForHearImpairedTest.cs b/src/Test/Logic/Forms/RemoveTextForHearImpairedTest.cs index 1f8416b2a..95b2ba5d5 100644 --- a/src/Test/Logic/Forms/RemoveTextForHearImpairedTest.cs +++ b/src/Test/Logic/Forms/RemoveTextForHearImpairedTest.cs @@ -658,6 +658,24 @@ namespace Test.Logic.Forms Assert.AreEqual(string.Empty, actual); } + [TestMethod] + public void RemoveInterjections19() + { + var text = $"- ¡Hm!{Environment.NewLine}- Increíble, ¿verdad?"; + var settings = GetRemoveInterjectionContext(text, true); + var actual = new RemoveInterjection().Invoke(settings); + Assert.AreEqual("Increíble, ¿verdad?", actual); + } + + [TestMethod] + public void RemoveInterjections19B() + { + var text = $"- ¿Hm?{Environment.NewLine}- Increíble, ¿verdad?"; + var settings = GetRemoveInterjectionContext(text, true); + var actual = new RemoveInterjection().Invoke(settings); + Assert.AreEqual("Increíble, ¿verdad?", actual); + } + [TestMethod] public void RemoveColonOnlyOnSeparateLine() { diff --git a/src/Test/Test.csproj b/src/Test/Test.csproj index 2cd449ab2..33b476785 100644 --- a/src/Test/Test.csproj +++ b/src/Test/Test.csproj @@ -64,6 +64,7 @@ + diff --git a/src/libse/Common/WebVttToAssa.cs b/src/libse/Common/WebVttToAssa.cs new file mode 100644 index 000000000..10e9680f0 --- /dev/null +++ b/src/libse/Common/WebVttToAssa.cs @@ -0,0 +1,359 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using Nikse.SubtitleEdit.Core.SubtitleFormats; + +namespace Nikse.SubtitleEdit.Core.Common +{ + public static class WebVttToAssa + { + private static readonly Regex NameRegex = new Regex("\\([\\.a-zA-Z\\d#_-]+\\)", RegexOptions.Compiled); + private static readonly Regex PropertiesRegex = new Regex("{[ \\.a-zA-Z\\d:#\\s,_;:\\-\\(\\)]+}", RegexOptions.Compiled); + private static readonly Regex LineTagRegex = new Regex("", RegexOptions.Compiled); + + public static Subtitle Convert(Subtitle webVttSubtitle, SsaStyle defaultStyle, int videoWidth, int videoHeight) + { + var styles = GetStyles(webVttSubtitle); + var ssaStyles = ConvertStyles(styles, defaultStyle); + var header = AdvancedSubStationAlpha.GetHeaderAndStylesFromAdvancedSubStationAlpha(AdvancedSubStationAlpha.DefaultHeader, ssaStyles); + var assaSubtitle = ConvertSubtitle(webVttSubtitle, header, ssaStyles); + return assaSubtitle; + } + + private static Subtitle ConvertSubtitle(Subtitle webVttSubtitle, string header, List ssaStyles) + { + var assaSubtitle = new Subtitle(webVttSubtitle) { Header = header }; + var layer = 0; + foreach (var paragraph in assaSubtitle.Paragraphs) + { + paragraph.Layer = layer; + layer++; + + paragraph.Text = paragraph.Text + .Replace("", "{\\i1}") + .Replace("", "{\\i0}") + .Replace("", "{\\b1}") + .Replace("", "{\\b0}") + .Replace("", "{\\u1}") + .Replace("", "{\\u0}").Trim(); + + var matches = LineTagRegex.Matches(paragraph.Text); + if (matches.Count == 1 && + paragraph.Text.StartsWith("", StringComparison.Ordinal)) + { + var tag = matches[0].Value.Trim('<', '>', ' '); + if (ssaStyles.Any(p => p.Name == tag)) + { + paragraph.Extra = tag; + } + else + { + paragraph.Text = SetInlineStyles(paragraph.Text, tag, ssaStyles); + } + } + } + + return assaSubtitle; + } + + private static string SetInlineStyles(string paragraphText, string tag, List ssaStyles) + { + throw new NotImplementedException(); + } + + private static List ConvertStyles(List styles, SsaStyle defaultStyle) + { + var result = new List(); + foreach (var style in styles) + { + result.Add(new SsaStyle(new SsaStyle + { + Name = style.Name, + FontName = style.FontName ?? defaultStyle.FontName, + FontSize = style.FontSize ?? defaultStyle.FontSize, + Primary = style.Color ?? defaultStyle.Primary, + Background = style.BackgroundColor ?? defaultStyle.Background, + Bold = style.Bold ?? defaultStyle.Bold, + Italic = style.Italic ?? defaultStyle.Italic, + ShadowWidth = style.ShadowWidth ?? defaultStyle.ShadowWidth, + OutlineWidth = style.ShadowWidth ?? defaultStyle.OutlineWidth, + Outline = style.ShadowColor ?? defaultStyle.Outline, + })); + } + + return result; + } + + public class WebVttStyle + { + public string Name { get; set; } + public string FontName { get; set; } + public decimal? FontSize { get; set; } + public Color? Color { get; set; } + public Color? BackgroundColor { get; set; } + public bool? Italic { get; set; } + public bool? Bold { get; set; } + public int? ShadowWidth { get; set; } + public Color? ShadowColor { get; set; } + } + + private static List GetStyles(Subtitle webVttSubtitle) + { + if (string.IsNullOrEmpty(webVttSubtitle.Header)) + { + return new List(); + } + + var cueOn = false; + var styleOn = false; + var result = new List(); + var currentStyle = new StringBuilder(); + foreach (var line in webVttSubtitle.Header.SplitToLines()) + { + var s = line.Trim(); + if (styleOn) + { + if (s == string.Empty) + { + styleOn = false; + AddStyle(result, currentStyle); + } + else + { + if (cueOn && s.StartsWith("::cue(", StringComparison.Ordinal)) + { + AddStyle(result, currentStyle); + currentStyle = new StringBuilder(); + } + + if (s.StartsWith("::cue(", StringComparison.Ordinal)) + { + currentStyle.AppendLine(s); + cueOn = true; + } + else if (cueOn) + { + currentStyle.AppendLine(s); + } + } + } + else if (s.Equals("STYLE", StringComparison.OrdinalIgnoreCase)) + { + styleOn = true; + } + } + + AddStyle(result, currentStyle); + + return result; + + // https://www.w3.org/TR/webvtt1/ + //STYLE + //::cue { + // background-image: linear-gradient(to bottom, dimgray, lightgray); + // color: papayawhip; + // } + // /* Style blocks cannot use blank lines nor "dash dash greater than" */ + + // NOTE comment blocks can be used between style blocks. + + // STYLE + // ::cue(b) { + // color: peachpuff; + // } + + } + + private static void AddStyle(List result, StringBuilder currentStyle) + { + var text = currentStyle + .ToString() + .Replace(Environment.NewLine, " "); + var match = NameRegex.Match(text); + if (!match.Success) + { + return; + } + + var name = match.Value.Trim('(',')',' '); + + match = PropertiesRegex.Match(text); + if (!match.Success || string.IsNullOrWhiteSpace(match.Value)) + { + return; + } + + var properties = match.Value + .Trim('{', '}', ' ') + .RemoveChar('\r', '\n') + .Split(';'); + + var webVttStyle = new WebVttStyle { Name = name }; + foreach (var prop in properties) + { + SetProperty(webVttStyle, prop); + } + + result.Add(webVttStyle); + } + + private static void SetProperty(WebVttStyle webVttStyle, string prop) + { + var arr = prop.Split(':'); + if (arr.Length != 2) + { + return; + } + + var name = arr[0].Trim(); + var value = arr[1].Trim(); + + if (string.IsNullOrEmpty(value)) + { + return; + } + + if (name == "color") + { + SetColor(webVttStyle, value); + } + else if (name == "background-color") + { + SetBackgroundColor(webVttStyle, value); + } + else if (name == "font-family") + { + webVttStyle.FontName = value; + } + else if (name == "font-style") + { + SetFontStyle(webVttStyle, value); + } + else if (name == "font-weight") + { + SetFontWeight(webVttStyle, value); + } + else if (name == "text-shadow") + { + SetTextShadow(webVttStyle, value); + } + } + + private static void SetColor(WebVttStyle webVttStyle, string value) + { + var color = GetColorFromString(value, Color.Transparent); + if (color == Color.Transparent) + { + return; + } + + webVttStyle.Color = color; + } + + private static Color GetColorFromString(string s, Color defaultColor) + { + try + { + if (s.StartsWith("rgb(", StringComparison.OrdinalIgnoreCase)) + { + var arr = s + .RemoveChar(' ') + .Remove(0, 4) + .TrimEnd(')') + .Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); + + return Color.FromArgb(int.Parse(arr[0]), int.Parse(arr[1]), int.Parse(arr[2])); + } + + if (s.StartsWith("rgba(", StringComparison.OrdinalIgnoreCase)) + { + var arr = s + .RemoveChar(' ') + .Remove(0, 5) + .TrimEnd(')') + .Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); + + var alpha = byte.MaxValue; + if (arr.Length == 4 && float.TryParse(arr[3], NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out var f)) + { + if (f >= 0 && f < 1) + { + alpha = (byte)(f * byte.MaxValue); + } + } + + return Color.FromArgb(alpha, int.Parse(arr[0]), int.Parse(arr[1]), int.Parse(arr[2])); + } + + return ColorTranslator.FromHtml(s); + } + catch + { + return defaultColor; + } + } + + private static void SetBackgroundColor(WebVttStyle webVttStyle, string value) + { + var color = GetColorFromString(value, Color.Transparent); + if (color == Color.Transparent) + { + return; + } + + webVttStyle.BackgroundColor = color; + } + + private static void SetFontWeight(WebVttStyle webVttStyle, string value) + { + if (value == "bold" || value == "bolder") + { + webVttStyle.Bold = true; + } + else if (value == "normal") + { + webVttStyle.Bold = false; + } + } + + private static void SetFontStyle(WebVttStyle webVttStyle, string value) + { + if (value == "italic" || value == "oblique") + { + webVttStyle.Italic = true; + } + else if (value == "normal") + { + webVttStyle.Italic = false; + } + } + + private static void SetTextShadow(WebVttStyle webVttStyle, string value) + { + // text-shadow: #101010 3px; + + var arr = value.Split(); + if (arr.Length != 2) + { + return; + } + + var color = GetColorFromString(arr[0], Color.Transparent); + if (color == Color.Transparent) + { + return; + } + + if (int.TryParse(arr[1].Replace("px", string.Empty),out var number)) + { + webVttStyle.ShadowColor = color; + webVttStyle.ShadowWidth = number; + } + } + } +} diff --git a/src/libse/Forms/RemoveInterjection.cs b/src/libse/Forms/RemoveInterjection.cs index 2b3f23e25..de83e4fc4 100644 --- a/src/libse/Forms/RemoveInterjection.cs +++ b/src/libse/Forms/RemoveInterjection.cs @@ -182,6 +182,26 @@ namespace Nikse.SubtitleEdit.Core.Forms temp = temp.Remove(subIndex, 2); removeAfter = false; } + else if (subTemp == " ¡!") + { + temp = temp.Remove(subIndex, 3); + removeAfter = false; + } + else if (subTemp == " ¿?") + { + temp = temp.Remove(subIndex, 3); + removeAfter = false; + } + else if (index == 1 && temp.StartsWith("¿?" + Environment.NewLine, StringComparison.Ordinal)) + { + temp = temp.Remove(0, 2).TrimEnd(); + removeAfter = false; + } + else if (index == 1 && temp.StartsWith("¡!" + Environment.NewLine, StringComparison.Ordinal)) + { + temp = temp.Remove(0, 2).TrimEnd(); + removeAfter = false; + } else { subTemp = temp.Substring(subIndex); @@ -237,6 +257,17 @@ namespace Nikse.SubtitleEdit.Core.Forms } } + if (index == 1 && temp.StartsWith("¿?")) + { + removeAfter = false; + temp = temp.Remove(0, 2); + } + else if (index == 1 && temp.StartsWith("¡!")) + { + removeAfter = false; + temp = temp.Remove(0, 2); + } + if (removeAfter) { if (index == 0) From 017cf8026ed8dce7764a9e729bc602c4f5347217 Mon Sep 17 00:00:00 2001 From: niksedk Date: Sat, 10 Jun 2023 10:32:07 +0200 Subject: [PATCH 06/96] Update Tesseract OCR to 5.3.1 --- src/libse/Common/Configuration.cs | 2 +- src/ui/Forms/Ocr/DownloadTesseract5.cs | 2 +- src/ui/Forms/Ocr/VobSubOcr.cs | 10 ++++++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/libse/Common/Configuration.cs b/src/libse/Common/Configuration.cs index a09828f42..7647e3e12 100644 --- a/src/libse/Common/Configuration.cs +++ b/src/libse/Common/Configuration.cs @@ -24,7 +24,7 @@ namespace Nikse.SubtitleEdit.Core.Common public static readonly string ShotChangesDirectory = DataDirectory + "ShotChanges" + Path.DirectorySeparatorChar; public static readonly string AutoBackupDirectory = DataDirectory + "AutoBackup" + Path.DirectorySeparatorChar; public static readonly string VobSubCompareDirectory = DataDirectory + "VobSub" + Path.DirectorySeparatorChar; - public static readonly string TesseractDirectory = DataDirectory + "Tesseract530" + Path.DirectorySeparatorChar; + public static readonly string TesseractDirectory = DataDirectory + "Tesseract531" + Path.DirectorySeparatorChar; public static readonly string Tesseract302Directory = DataDirectory + "Tesseract302" + Path.DirectorySeparatorChar; public static readonly string WaveformsDirectory = DataDirectory + "Waveforms" + Path.DirectorySeparatorChar; public static readonly string PluginsDirectory = DataDirectory + "Plugins"; diff --git a/src/ui/Forms/Ocr/DownloadTesseract5.cs b/src/ui/Forms/Ocr/DownloadTesseract5.cs index a92815cdd..5d4827da2 100644 --- a/src/ui/Forms/Ocr/DownloadTesseract5.cs +++ b/src/ui/Forms/Ocr/DownloadTesseract5.cs @@ -10,7 +10,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr { public sealed partial class DownloadTesseract5 : Form { - public const string TesseractDownloadUrl = "https://github.com/SubtitleEdit/support-files/raw/master/Tesseract530.zip"; + public const string TesseractDownloadUrl = "https://github.com/SubtitleEdit/support-files/raw/master/Tesseract531.zip"; private readonly CancellationTokenSource _cancellationTokenSource; public DownloadTesseract5(string version) diff --git a/src/ui/Forms/Ocr/VobSubOcr.cs b/src/ui/Forms/Ocr/VobSubOcr.cs index cefe304c3..f28c1e432 100644 --- a/src/ui/Forms/Ocr/VobSubOcr.cs +++ b/src/ui/Forms/Ocr/VobSubOcr.cs @@ -330,7 +330,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr // Dictionaries/spellchecking/fixing private OcrFixEngine _ocrFixEngine; private int _tesseractOcrAutoFixes; - private string Tesseract5Version = "5.3.0"; + private string Tesseract5Version = "5.3.1"; private Subtitle _bdnXmlOriginal; private Subtitle _bdnXmlSubtitle; @@ -7108,7 +7108,13 @@ namespace Nikse.SubtitleEdit.Forms.Ocr checkBoxTesseractFallback.Text = string.Format(LanguageSettings.Current.VobSubOcr.FallbackToX, "Tesseract 3.02"); if (Configuration.IsRunningOnWindows && !File.Exists(Path.Combine(Configuration.TesseractDirectory, "tesseract.exe"))) { - if (MessageBox.Show($"{LanguageSettings.Current.GetTesseractDictionaries.Download} Tesseract {Tesseract5Version}", LanguageSettings.Current.General.Title, MessageBoxButtons.YesNoCancel) == DialogResult.Yes) + if (IntPtr.Size * 8 == 32) + { + MessageBox.Show("Sorry, Tesseract {Tesseract5Version} requires a 64-bit processor"); + comboBoxOcrMethod.SelectedIndex = _ocrMethodBinaryImageCompare; + return; + } + else if (MessageBox.Show($"{LanguageSettings.Current.GetTesseractDictionaries.Download} Tesseract {Tesseract5Version}", LanguageSettings.Current.General.Title, MessageBoxButtons.YesNoCancel) == DialogResult.Yes) { comboBoxTesseractLanguages.Items.Clear(); using (var form = new DownloadTesseract5(Tesseract5Version)) From 05510ff4858dafb673dacba574a928b2eac28e86 Mon Sep 17 00:00:00 2001 From: niksedk Date: Sat, 10 Jun 2023 11:25:41 +0200 Subject: [PATCH 07/96] Add Czech to word lists window --- Dictionaries/cs_names.xml | 11 +++++++++++ src/ui/Forms/Options/WordLists.cs | 7 +++++-- 2 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 Dictionaries/cs_names.xml diff --git a/Dictionaries/cs_names.xml b/Dictionaries/cs_names.xml new file mode 100644 index 000000000..fb110a52f --- /dev/null +++ b/Dictionaries/cs_names.xml @@ -0,0 +1,11 @@ + + + + Václav + Novák + Svoboda + Novotný + Natálie + Tereza + Eliška + \ No newline at end of file diff --git a/src/ui/Forms/Options/WordLists.cs b/src/ui/Forms/Options/WordLists.cs index afad8760a..aea61afc8 100644 --- a/src/ui/Forms/Options/WordLists.cs +++ b/src/ui/Forms/Options/WordLists.cs @@ -65,7 +65,9 @@ namespace Nikse.SubtitleEdit.Forms.Options // Specific culture e.g: en-US, en-GB... foreach (var culture in CultureInfo.GetCultures(CultureTypes.SpecificCultures)) { - if (File.Exists(Path.Combine(dir, culture.Name.Replace('-', '_') + "_user.xml"))) + var seFile = Path.Combine(dir, culture.Name.Replace('-', '_') + "_se.xml"); + var userFile = Path.Combine(dir, culture.Name.Replace('-', '_') + "_user.xml"); + if (File.Exists(seFile) || File.Exists(userFile)) { if (!cultures.Contains(culture)) { @@ -80,7 +82,8 @@ namespace Nikse.SubtitleEdit.Forms.Options var ocrFixGeneralFile = Path.Combine(dir, culture.GetThreeLetterIsoLanguageName() + "_OCRFixReplaceList.xml"); var ocrFixUserFile = Path.Combine(dir, culture.GetThreeLetterIsoLanguageName() + "_OCRFixReplaceList_User.xml"); var namesFile = Path.Combine(dir, culture.TwoLetterISOLanguageName + "_names.xml"); - if (File.Exists(ocrFixGeneralFile) || File.Exists(ocrFixUserFile) || File.Exists(namesFile)) + var seFile = Path.Combine(dir, culture.Name.Replace('-', '_') + "_se.xml"); + if (File.Exists(ocrFixGeneralFile) || File.Exists(ocrFixUserFile) || File.Exists(namesFile) || File.Exists(seFile)) { var alreadyInList = false; foreach (var ci in cultures) From 48db0c9b7177e06342cc580dbc519ae4c86b8371 Mon Sep 17 00:00:00 2001 From: niksedk Date: Sat, 10 Jun 2023 12:36:49 +0200 Subject: [PATCH 08/96] Update Korean translation - thx domddol :) --- src/ui/Languages/ko-KR.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/ui/Languages/ko-KR.xml b/src/ui/Languages/ko-KR.xml index f53dc1dc8..109a3a4a2 100644 --- a/src/ui/Languages/ko-KR.xml +++ b/src/ui/Languages/ko-KR.xml @@ -2400,6 +2400,8 @@ FFmpeg를 다운로드하고 사용하시겠습니까? 구문 색상 사용 Html 색상 ASSA 색상 + 테마 + 자동 어두운 테마 어두운 테마 사용 목록 보기 그리드 선 표시 @@ -2477,7 +2479,7 @@ FFmpeg를 다운로드하고 사용하시겠습니까? 대화의 대시('-') 전환 따옴표 전환 HI 태그 전환 - 사용자 지정 태그 + 사용자 지정 태그 전환 (서라운드 포함) 음악 기호 전환 정렬 (선택한 줄) 좌측 하단 정렬 - {\an1} From 69330fe43a9df847132c5b5410c398bed0562b11 Mon Sep 17 00:00:00 2001 From: niksedk Date: Tue, 13 Jun 2023 20:54:48 +0200 Subject: [PATCH 09/96] Work on WebVTT --- SubtitleEdit.sln.DotSettings | 2 + src/Test/Core/WebVttHelperTest.cs | 53 ++ src/Test/Core/WebVttToAssaTest.cs | 110 ++- .../SubtitleFormats/SubtitleFormatsTest.cs | 2 + src/Test/Test.csproj | 1 + src/libse/Common/HtmlUtil.cs | 12 + src/libse/Common/Settings.cs | 9 - src/libse/Common/WebVttHelper.cs | 396 +++++++++++ src/libse/Common/WebVttStyle.cs | 18 + src/libse/Common/WebVttToAssa.cs | 654 ++++++++++-------- .../AdvancedSubStationAlpha.cs | 20 +- src/libse/SubtitleFormats/WebVTT.cs | 53 +- .../WebVTTFileWithLineNumber.cs | 5 +- src/ui/Controls/VideoPlayerContainer.cs | 33 +- src/ui/Forms/Main.cs | 105 ++- 15 files changed, 1104 insertions(+), 369 deletions(-) create mode 100644 src/Test/Core/WebVttHelperTest.cs create mode 100644 src/libse/Common/WebVttHelper.cs create mode 100644 src/libse/Common/WebVttStyle.cs diff --git a/SubtitleEdit.sln.DotSettings b/SubtitleEdit.sln.DotSettings index 794286398..fb114b125 100644 --- a/SubtitleEdit.sln.DotSettings +++ b/SubtitleEdit.sln.DotSettings @@ -21,5 +21,7 @@ True True True + True True + True True \ No newline at end of file diff --git a/src/Test/Core/WebVttHelperTest.cs b/src/Test/Core/WebVttHelperTest.cs new file mode 100644 index 000000000..eda3e803b --- /dev/null +++ b/src/Test/Core/WebVttHelperTest.cs @@ -0,0 +1,53 @@ +using System.Collections.Generic; +using System.Drawing; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Nikse.SubtitleEdit.Core.Common; +using Nikse.SubtitleEdit.Core.SubtitleFormats; + +namespace Test.Core +{ + [TestClass] + public class WebVttHelperTest + { + [TestMethod] + public void RemoveColorTag1() + { + var styles = new List + { + new WebVttStyle() + { + Name = "Red", + Color = Color.Red, + }, + }; + + var text = "Red"; + var result = WebVttHelper.RemoveColorTag(text, Color.Red, styles); + + Assert.AreEqual("Red", result); + } + + [TestMethod] + public void RemoveColorTag2() + { + var styles = new List + { + new WebVttStyle + { + Name = "Red", + Color = Color.Red, + }, + new WebVttStyle + { + Name = "Italic", + Italic = true, + }, + }; + + var text = "Red"; + var result = WebVttHelper.RemoveColorTag(text, Color.Red, styles); + + Assert.AreEqual("Red", result); + } + } +} diff --git a/src/Test/Core/WebVttToAssaTest.cs b/src/Test/Core/WebVttToAssaTest.cs index 75fa78c92..456e29828 100644 --- a/src/Test/Core/WebVttToAssaTest.cs +++ b/src/Test/Core/WebVttToAssaTest.cs @@ -15,20 +15,20 @@ namespace Test.Core var converted = WebVttToAssa.Convert(subtitle, new SsaStyle(), 1920, 1080); var styles = AdvancedSubStationAlpha.GetSsaStylesFromHeader(converted.Header); - Assert.AreEqual(".background-color_transparent", styles[0].Name); - Assert.AreEqual(".color_EBEBEB", styles[1].Name); - Assert.AreEqual(".font-family_Arial", styles[2].Name); - Assert.AreEqual(".font-style_normal", styles[3].Name); - Assert.AreEqual(".font-weight_normal", styles[4].Name); - Assert.AreEqual(".text-shadow_#101010-3px", styles[5].Name); - Assert.AreEqual(".font-style_italic", styles[6].Name); + Assert.AreEqual(".background-color_transparent", styles[1].Name); + Assert.AreEqual(".color_EBEBEB", styles[2].Name); + Assert.AreEqual(".font-family_Arial", styles[3].Name); + Assert.AreEqual(".font-style_normal", styles[4].Name); + Assert.AreEqual(".font-weight_normal", styles[5].Name); + Assert.AreEqual(".text-shadow_#101010-3px", styles[6].Name); + Assert.AreEqual(".font-style_italic", styles[7].Name); - Assert.AreEqual(235, styles[1].Primary.R); - Assert.AreEqual("Arial", styles[2].FontName); - Assert.AreEqual(false, styles[3].Italic); - Assert.AreEqual(false, styles[4].Bold); - Assert.AreEqual(3, styles[5].ShadowWidth); - Assert.AreEqual(true, styles[6].Italic); + Assert.AreEqual(235, styles[2].Primary.R); + Assert.AreEqual("Arial", styles[3].FontName); + Assert.AreEqual(false, styles[4].Italic); + Assert.AreEqual(false, styles[5].Bold); + Assert.AreEqual(3, styles[6].ShadowWidth); + Assert.AreEqual(true, styles[7].Italic); } [TestMethod] @@ -39,24 +39,78 @@ namespace Test.Core var converted = WebVttToAssa.Convert(subtitle, new SsaStyle(), 1920, 1080); var styles = AdvancedSubStationAlpha.GetSsaStylesFromHeader(converted.Header); - Assert.AreEqual(".styledotEAC118", styles[0].Name); - Assert.AreEqual(".styledotaqua", styles[1].Name); - Assert.AreEqual(".styledotaquadotitalic", styles[2].Name); - Assert.AreEqual(".styledotitalic", styles[3].Name); - Assert.AreEqual(".styledotEAC118dotitalic", styles[4].Name); + Assert.AreEqual(".styledotEAC118", styles[1].Name); + Assert.AreEqual(".styledotaqua", styles[2].Name); + Assert.AreEqual(".styledotaquadotitalic", styles[3].Name); + Assert.AreEqual(".styledotitalic", styles[4].Name); + Assert.AreEqual(".styledotEAC118dotitalic", styles[5].Name); - Assert.AreEqual(234, styles[0].Primary.R); - Assert.AreEqual(193, styles[0].Primary.G); - Assert.AreEqual(24, styles[0].Primary.B); - Assert.AreEqual(0, styles[1].Primary.R); - Assert.AreEqual(255, styles[1].Primary.G); - Assert.AreEqual(255, styles[1].Primary.B); - Assert.AreEqual(true, styles[2].Italic); + Assert.AreEqual(234, styles[1].Primary.R); + Assert.AreEqual(193, styles[1].Primary.G); + Assert.AreEqual(24, styles[1].Primary.B); + Assert.AreEqual(0, styles[2].Primary.R); + Assert.AreEqual(255, styles[2].Primary.G); + Assert.AreEqual(255, styles[2].Primary.B); Assert.AreEqual(true, styles[3].Italic); Assert.AreEqual(true, styles[4].Italic); - Assert.AreEqual(234, styles[4].Primary.R); - Assert.AreEqual(193, styles[4].Primary.G); - Assert.AreEqual(24, styles[4].Primary.B); + Assert.AreEqual(true, styles[5].Italic); + Assert.AreEqual(234, styles[5].Primary.R); + Assert.AreEqual(193, styles[5].Primary.G); + Assert.AreEqual(24, styles[5].Primary.B); + } + + [TestMethod] + public void TestLineStyles1() + { + var subtitle = new Subtitle(); + subtitle.Header = "STYLE\r\n::cue(.styledotEAC118) { color:#EAC118 }"; + subtitle.Paragraphs.Add(new Paragraph("Hi", 0,0)); + var converted = WebVttToAssa.Convert(subtitle, new SsaStyle(), 1920, 1080); + + Assert.AreEqual("Hi", converted.Paragraphs[0].Text); + Assert.AreEqual(".styledotEAC118", converted.Paragraphs[0].Extra); + } + + [TestMethod] + public void TestLineStyles2() + { + var subtitle = new Subtitle(); + subtitle.Header = "STYLE\r\n::cue(.styleItalic) { font-style:italic }\r\n::cue(.styleColor123456) { color:#123456 }"; + subtitle.Paragraphs.Add(new Paragraph("Hi", 0, 0)); + var converted = WebVttToAssa.Convert(subtitle, new SsaStyle(), 1920, 1080); + + Assert.AreEqual("{\\c&H563412\\i1}Hi", converted.Paragraphs[0].Text); + } + + [TestMethod] + public void TestItalicInline() + { + var subtitle = new Subtitle(); + subtitle.Paragraphs.Add(new Paragraph("Hallo italic world.", 0, 0)); + var converted = WebVttToAssa.Convert(subtitle, new SsaStyle(), 1920, 1080); + var text = converted.ToText(new AdvancedSubStationAlpha()); + Assert.AreEqual("Hallo {\\i1}italic{\\i0} world.", converted.Paragraphs[0].Text); + Assert.IsTrue(text.Contains("Hallo {\\i1}italic{\\i0} world.")); + } + + [TestMethod] + public void TestBoldInline() + { + var subtitle = new Subtitle(); + subtitle.Paragraphs.Add(new Paragraph("Hallo bold world.", 0, 0)); + var converted = WebVttToAssa.Convert(subtitle, new SsaStyle(), 1920, 1080); + var text = converted.ToText(new AdvancedSubStationAlpha()); + Assert.IsTrue(text.Contains("Hallo {\\b1}bold{\\b0} world.")); + } + + [TestMethod] + public void TestUnderlineInline() + { + var subtitle = new Subtitle(); + subtitle.Paragraphs.Add(new Paragraph("Hallo underline world.", 0, 0)); + var converted = WebVttToAssa.Convert(subtitle, new SsaStyle(), 1920, 1080); + var text = converted.ToText(new AdvancedSubStationAlpha()); + Assert.IsTrue(text.Contains("Hallo {\\u1}underline{\\u0} world.")); } } } diff --git a/src/Test/Logic/SubtitleFormats/SubtitleFormatsTest.cs b/src/Test/Logic/SubtitleFormats/SubtitleFormatsTest.cs index ead919c76..d8e0bd95e 100644 --- a/src/Test/Logic/SubtitleFormats/SubtitleFormatsTest.cs +++ b/src/Test/Logic/SubtitleFormats/SubtitleFormatsTest.cs @@ -1596,6 +1596,7 @@ and astronauts.“..."" #region WebVTT + [Ignore] //rewriting WebVTT... [TestMethod] public void WebVttFontColor() { @@ -1634,6 +1635,7 @@ Hi, I'm Keith Lemon. Assert.AreEqual("AUDIENCE: Aww!", subtitle.Paragraphs[1].Text); } + [Ignore] // rewriting WebVTT [TestMethod] public void WebVttFontColorHex2() { diff --git a/src/Test/Test.csproj b/src/Test/Test.csproj index 33b476785..0292b6917 100644 --- a/src/Test/Test.csproj +++ b/src/Test/Test.csproj @@ -64,6 +64,7 @@ + diff --git a/src/libse/Common/HtmlUtil.cs b/src/libse/Common/HtmlUtil.cs index 6bda898ad..f0f725fe7 100644 --- a/src/libse/Common/HtmlUtil.cs +++ b/src/libse/Common/HtmlUtil.cs @@ -409,6 +409,18 @@ namespace Nikse.SubtitleEdit.Core.Common } } + // v tag from WebVTT + var indexOfCTag = s.IndexOf("= 0) + { + var indexOfEndVTag = s.IndexOf('>', indexOfCTag); + if (indexOfEndVTag >= 0) + { + s = s.Remove(indexOfCTag, indexOfEndVTag - indexOfCTag + 1); + s = s.Replace("", string.Empty); + } + } + return RemoveCommonHtmlTags(s); } diff --git a/src/libse/Common/Settings.cs b/src/libse/Common/Settings.cs index 783987c67..4f4a44e6b 100644 --- a/src/libse/Common/Settings.cs +++ b/src/libse/Common/Settings.cs @@ -1405,7 +1405,6 @@ $HorzAlign = Center public string MpvVideoVf { get; set; } public string MpvVideoAf { get; set; } public string MpvExtraOptions { get; set; } - public string MpvAllowNativePreview { get; set; } public bool MpvLogging { get; set; } public bool MpvHandlesPreviewText { get; set; } public Color MpvPreviewTextPrimaryColor { get; set; } @@ -1603,7 +1602,6 @@ $HorzAlign = Center MpvPreviewTextOpaqueBoxStyle = "1"; MpvPreviewTextAlignment = "2"; MpvPreviewTextMarginVertical = 10; - MpvAllowNativePreview = "WebVTT;WebVTT File with#"; FFmpegSceneThreshold = "0.4"; // threshold for generating shot changes - 0.2 is sensitive (more shot changes), 0.6 is less sensitive (fewer shot changes) UseTimeFormatHHMMSSFF = false; SplitBehavior = 1; // 0=take gap from left, 1=divide evenly, 2=take gap from right @@ -4131,12 +4129,6 @@ $HorzAlign = Center settings.General.MpvExtraOptions = subNode.InnerText.Trim(); } - subNode = node.SelectSingleNode("MpvAllowNativePreview"); - if (subNode != null) - { - settings.General.MpvAllowNativePreview = subNode.InnerText.Trim(); - } - subNode = node.SelectSingleNode("MpvLogging"); if (subNode != null) { @@ -10418,7 +10410,6 @@ $HorzAlign = Center textWriter.WriteElementString("MpvVideoVf", settings.General.MpvVideoVf); textWriter.WriteElementString("MpvVideoAf", settings.General.MpvVideoAf); textWriter.WriteElementString("MpvExtraOptions", settings.General.MpvExtraOptions); - textWriter.WriteElementString("MpvAllowNativePreview", settings.General.MpvAllowNativePreview); textWriter.WriteElementString("MpvLogging", settings.General.MpvLogging.ToString(CultureInfo.InvariantCulture)); textWriter.WriteElementString("MpvHandlesPreviewText", settings.General.MpvHandlesPreviewText.ToString(CultureInfo.InvariantCulture)); textWriter.WriteElementString("MpvPreviewTextPrimaryColor", ColorTranslator.ToHtml(settings.General.MpvPreviewTextPrimaryColor)); diff --git a/src/libse/Common/WebVttHelper.cs b/src/libse/Common/WebVttHelper.cs new file mode 100644 index 000000000..c9a54b8ca --- /dev/null +++ b/src/libse/Common/WebVttHelper.cs @@ -0,0 +1,396 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; + +namespace Nikse.SubtitleEdit.Core.Common +{ + public static class WebVttHelper + { + private static readonly Regex NameRegex = new Regex("\\([\\.a-zA-Z\\d#_-]+\\)", RegexOptions.Compiled); + private static readonly Regex PropertiesRegex = new Regex("{[ \\.a-zA-Z\\d:#\\s,_;:\\-\\(\\)]+}", RegexOptions.Compiled); + + public static List GetStyles(Subtitle webVttSubtitle) + { + if (string.IsNullOrEmpty(webVttSubtitle.Header)) + { + return new List(); + } + + var cueOn = false; + var styleOn = false; + var result = new List(); + var currentStyle = new StringBuilder(); + foreach (var line in webVttSubtitle.Header.SplitToLines()) + { + var s = line.Trim(); + if (styleOn) + { + if (s == string.Empty) + { + styleOn = false; + AddStyle(result, currentStyle); + } + else + { + if (cueOn && s.StartsWith("::cue(", StringComparison.Ordinal)) + { + AddStyle(result, currentStyle); + currentStyle = new StringBuilder(); + } + + if (s.StartsWith("::cue(", StringComparison.Ordinal)) + { + currentStyle.AppendLine(s); + cueOn = true; + } + else if (cueOn) + { + currentStyle.AppendLine(s); + } + } + } + else if (s.Equals("STYLE", StringComparison.OrdinalIgnoreCase)) + { + styleOn = true; + } + } + + AddStyle(result, currentStyle); + + return result; + + // https://www.w3.org/TR/webvtt1/ + // STYLE + // ::cue { + // background-image: linear-gradient(to bottom, dimgray, lightgray); + // color: papayawhip; + // } + + // STYLE + // ::cue(b) { + // color: peachpuff; + // } + } + + private static void AddStyle(List result, StringBuilder currentStyle) + { + var text = currentStyle + .ToString() + .Replace(Environment.NewLine, " "); + var match = NameRegex.Match(text); + if (!match.Success) + { + return; + } + + var name = match.Value.Trim('(', ')', ' '); + + match = PropertiesRegex.Match(text); + if (!match.Success || string.IsNullOrWhiteSpace(match.Value)) + { + return; + } + + var properties = match.Value + .Trim('{', '}', ' ') + .RemoveChar('\r', '\n') + .Split(';'); + + var webVttStyle = new WebVttStyle { Name = name }; + foreach (var prop in properties) + { + SetProperty(webVttStyle, prop); + } + + result.Add(webVttStyle); + } + + private static void SetProperty(WebVttStyle webVttStyle, string prop) + { + var arr = prop.Split(':'); + if (arr.Length != 2) + { + return; + } + + var name = arr[0].Trim(); + var value = arr[1].Trim(); + + if (string.IsNullOrEmpty(value)) + { + return; + } + + if (name == "color") + { + SetColor(webVttStyle, value); + } + else if (name == "background-color") + { + SetBackgroundColor(webVttStyle, value); + } + else if (name == "font-family") + { + webVttStyle.FontName = value; + } + else if (name == "font-style") + { + SetFontStyle(webVttStyle, value); + } + else if (name == "font-weight") + { + SetFontWeight(webVttStyle, value); + } + else if (name == "text-shadow") + { + SetTextShadow(webVttStyle, value); + } + } + + private static void SetColor(WebVttStyle webVttStyle, string value) + { + var color = GetColorFromString(value); + if (!color.HasValue) + { + return; + } + + webVttStyle.Color = color; + } + + private static Color? GetColorFromString(string s) + { + try + { + if (s.StartsWith("rgb(", StringComparison.OrdinalIgnoreCase)) + { + var arr = s + .RemoveChar(' ') + .Remove(0, 4) + .TrimEnd(')') + .Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); + + return Color.FromArgb(int.Parse(arr[0]), int.Parse(arr[1]), int.Parse(arr[2])); + } + + if (s.StartsWith("rgba(", StringComparison.OrdinalIgnoreCase)) + { + var arr = s + .RemoveChar(' ') + .Remove(0, 5) + .TrimEnd(')') + .Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); + + var alpha = byte.MaxValue; + if (arr.Length == 4 && float.TryParse(arr[3], NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out var f)) + { + if (f >= 0 && f < 1) + { + alpha = (byte)(f * byte.MaxValue); + } + } + + return Color.FromArgb(alpha, int.Parse(arr[0]), int.Parse(arr[1]), int.Parse(arr[2])); + } + + return ColorTranslator.FromHtml(s); + } + catch + { + return null; + } + } + + private static void SetBackgroundColor(WebVttStyle webVttStyle, string value) + { + var color = GetColorFromString(value); + if (!color.HasValue) + { + return; + } + + webVttStyle.BackgroundColor = color; + } + + private static void SetFontWeight(WebVttStyle webVttStyle, string value) + { + if (value == "bold" || value == "bolder") + { + webVttStyle.Bold = true; + } + else if (value == "normal") + { + webVttStyle.Bold = false; + } + } + + private static void SetFontStyle(WebVttStyle webVttStyle, string value) + { + if (value == "italic" || value == "oblique") + { + webVttStyle.Italic = true; + } + else if (value == "normal") + { + webVttStyle.Italic = false; + } + } + + private static void SetTextShadow(WebVttStyle webVttStyle, string value) + { + // text-shadow: #101010 3px; + + var arr = value.Split(); + if (arr.Length != 2) + { + return; + } + + var color = GetColorFromString(arr[0]); + if (!color.HasValue) + { + return; + } + + if (int.TryParse(arr[1].Replace("px", string.Empty), out var number)) + { + webVttStyle.ShadowColor = color; + webVttStyle.ShadowWidth = number; + } + } + + public static WebVttStyle GetStyleFromColor(Color color, Subtitle webVttSubtitle) + { + foreach (var style in GetStyles(webVttSubtitle)) + { + if (style.Color.HasValue && style.Color.Value == color && + style.BackgroundColor == null && + style.Bold == null && + style.Italic == null && + style.FontName == null && + style.FontSize == null && + style.Underline == null) + { + return style; + } + } + + return null; + } + + public static WebVttStyle AddStyleFromColor(Color color) + { + return new WebVttStyle + { + Name = Utilities.ColorToHexWithTransparency(color).TrimStart('#'), + Color = color, + }; + } + + public static string AddStyleToHeader(string header, WebVttStyle style) + { + var rawStyle = "::cue(." + style.Name + ") { " + GetCssProperties(style) + " }"; + + if (string.IsNullOrEmpty(header)) + { + return "STYLE" + Environment.NewLine + rawStyle; + } + + if (header.Contains("::cue(." + style.Name + ")")) + { + return header; + } + + var sb = new StringBuilder(); + var styleFound = false; + foreach (var line in header.SplitToLines()) + { + sb.AppendLine(line); + if (line.Trim() == "STYLE" && !styleFound) + { + sb.AppendLine(rawStyle); + styleFound = true; + } + } + + if (!styleFound) + { + sb.AppendLine(); + sb.AppendLine("STYLE"); + sb.AppendLine(rawStyle); + } + + return sb.ToString(); + } + + private static string GetCssProperties(WebVttStyle style) + { + var sb = new StringBuilder(); + + if (style.Color != null) + { + sb.Append($"color:rgba({style.Color.Value.R},{style.Color.Value.G},{style.Color.Value.B},{(style.Color.Value.A / 255.0).ToString(CultureInfo.InvariantCulture)}); "); + } + + if (style.BackgroundColor != null) + { + sb.Append($"background-color:rgba({style.BackgroundColor.Value.R},{style.BackgroundColor.Value.G},{style.BackgroundColor.Value.B},{(style.BackgroundColor.Value.A / 255.0).ToString(CultureInfo.InvariantCulture)}); "); + } + + if (style.Italic != null && style.Italic.Value == true) + { + sb.Append("font-style:italic; "); + } + + if (style.Bold != null && style.Bold.Value == true) + { + sb.Append("font-weight:bold; "); + } + + return sb.ToString().TrimEnd(' ', ';'); + } + + public static string RemoveColorTag(string input, Color color, List webVttStyles) + { + if (webVttStyles == null) + { + return input; + } + + var style = webVttStyles.FirstOrDefault(p => p.Color == color && + p.Italic == null && + p.Bold == null); + if (style == null) + { + return input; + } + + return AddStyleToText(input, style); + } + + public static string AddStyleToText(string input, WebVttStyle style) + { + var text = input; + var idx = text.IndexOf("", StringComparison.Ordinal); + if (idx >= 0) + { + text = text.Replace("", string.Empty); + idx = text.IndexOf("", StringComparison.Ordinal); + if (idx >= 0) + { + text = text.Remove(idx, 4); + } + } + else + { + text = text.Replace("." + style.Name, string.Empty); + } + + return text; + } + } +} diff --git a/src/libse/Common/WebVttStyle.cs b/src/libse/Common/WebVttStyle.cs new file mode 100644 index 000000000..ceb84c701 --- /dev/null +++ b/src/libse/Common/WebVttStyle.cs @@ -0,0 +1,18 @@ +using System.Drawing; + +namespace Nikse.SubtitleEdit.Core.Common +{ + public class WebVttStyle + { + public string Name { get; set; } + public string FontName { get; set; } + public decimal? FontSize { get; set; } + public Color? Color { get; set; } + public Color? BackgroundColor { get; set; } + public bool? Italic { get; set; } + public bool? Bold { get; set; } + public bool? Underline { get; set; } + public decimal? ShadowWidth { get; set; } + public Color? ShadowColor { get; set; } + } +} \ No newline at end of file diff --git a/src/libse/Common/WebVttToAssa.cs b/src/libse/Common/WebVttToAssa.cs index 10e9680f0..90dca6bf5 100644 --- a/src/libse/Common/WebVttToAssa.cs +++ b/src/libse/Common/WebVttToAssa.cs @@ -1,38 +1,57 @@ -using System; +using Nikse.SubtitleEdit.Core.SubtitleFormats; +using System; using System.Collections.Generic; -using System.Drawing; using System.Globalization; using System.Linq; using System.Text; using System.Text.RegularExpressions; -using Nikse.SubtitleEdit.Core.SubtitleFormats; namespace Nikse.SubtitleEdit.Core.Common { public static class WebVttToAssa { - private static readonly Regex NameRegex = new Regex("\\([\\.a-zA-Z\\d#_-]+\\)", RegexOptions.Compiled); - private static readonly Regex PropertiesRegex = new Regex("{[ \\.a-zA-Z\\d:#\\s,_;:\\-\\(\\)]+}", RegexOptions.Compiled); private static readonly Regex LineTagRegex = new Regex("", RegexOptions.Compiled); + private static readonly Regex LineTagRegexMore = new Regex(@"", RegexOptions.Compiled); public static Subtitle Convert(Subtitle webVttSubtitle, SsaStyle defaultStyle, int videoWidth, int videoHeight) { - var styles = GetStyles(webVttSubtitle); - var ssaStyles = ConvertStyles(styles, defaultStyle); + var vttStyles = WebVttHelper.GetStyles(webVttSubtitle); + var ssaStyles = ConvertStyles(vttStyles, defaultStyle); var header = AdvancedSubStationAlpha.GetHeaderAndStylesFromAdvancedSubStationAlpha(AdvancedSubStationAlpha.DefaultHeader, ssaStyles); - var assaSubtitle = ConvertSubtitle(webVttSubtitle, header, ssaStyles); + var assaSubtitle = ConvertSubtitle(webVttSubtitle, header, ssaStyles, vttStyles, videoWidth, videoHeight); return assaSubtitle; } - private static Subtitle ConvertSubtitle(Subtitle webVttSubtitle, string header, List ssaStyles) + private static Subtitle ConvertSubtitle(Subtitle webVttSubtitle, string header, List ssaStyles, List webVttStyles, int width, int height) { var assaSubtitle = new Subtitle(webVttSubtitle) { Header = header }; + + assaSubtitle.Header = AdvancedSubStationAlpha.AddTagToHeader("PlayResX", "PlayResX: " + width.ToString(CultureInfo.InvariantCulture), "[Script Info]", assaSubtitle.Header); + assaSubtitle.Header = AdvancedSubStationAlpha.AddTagToHeader("PlayResY", "PlayResY: " + height.ToString(CultureInfo.InvariantCulture), "[Script Info]", assaSubtitle.Header); + var styles = AdvancedSubStationAlpha.GetSsaStylesFromHeader(assaSubtitle.Header); + foreach (var style in styles) + { + if (style.FontSize <= 25) + { + const int defaultAssaHeight = 288; + style.FontSize = AssaResampler.Resample(defaultAssaHeight, height, style.FontSize); + } + } + assaSubtitle.Header = AdvancedSubStationAlpha.GetHeaderAndStylesFromAdvancedSubStationAlpha(assaSubtitle.Header, styles); + var layer = 0; foreach (var paragraph in assaSubtitle.Paragraphs) { paragraph.Layer = layer; + paragraph.Extra = "Default"; layer++; + if (!paragraph.Text.Contains('<')) + { + paragraph.Text = GetAlignment(paragraph, width, height); + continue; + } + paragraph.Text = paragraph.Text .Replace("", "{\\i1}") .Replace("", "{\\i0}") @@ -41,319 +60,374 @@ namespace Nikse.SubtitleEdit.Core.Common .Replace("", "{\\u1}") .Replace("", "{\\u0}").Trim(); + + if (!paragraph.Text.Contains('<')) + { + paragraph.Text = GetAlignment(paragraph, width, height); + continue; + } + var matches = LineTagRegex.Matches(paragraph.Text); - if (matches.Count == 1 && - paragraph.Text.StartsWith("", StringComparison.Ordinal)) { - var tag = matches[0].Value.Trim('<', '>', ' '); + var tag = matches[0].Value.TrimEnd('>', ' ').Remove(0, 2); if (ssaStyles.Any(p => p.Name == tag)) { paragraph.Extra = tag; - } - else - { - paragraph.Text = SetInlineStyles(paragraph.Text, tag, ssaStyles); + paragraph.Text = paragraph.Text.Remove(matches[0].Index, matches[0].Length); + paragraph.Text = paragraph.Text.Replace("", string.Empty); + continue; } } + + paragraph.Text = SetInlineStyles(paragraph.Text, ssaStyles, webVttStyles); + + paragraph.Text = GetAlignment(paragraph, width, height); } return assaSubtitle; } - private static string SetInlineStyles(string paragraphText, string tag, List ssaStyles) + private static string GetAlignment(Paragraph paragraph, int width, int height) { - throw new NotImplementedException(); + if (string.IsNullOrEmpty(paragraph.Extra) || paragraph.Text.StartsWith("{\\an")) + { + return paragraph.Text; + } + + return GetPositionInfo(paragraph.Style, width, height) + paragraph.Text; + } + + internal static string GetPositionInfo(string s, int width, int height) + { + //position: x --- 0% = left, 100% = right (horizontal) + //line: x --- 0 or -16 or 0% = top, 16 or -1 or 100% = bottom (vertical) + var x = 0; + var y = 0; + var pos = GetTag(s, "position:"); + var line = GetTag(s, "line:"); + var positionInfo = string.Empty; + var hAlignLeft = false; + var hAlignRight = false; + var vAlignTop = false; + var vAlignMiddle = false; + double number; + + if (!string.IsNullOrEmpty(pos) && pos.EndsWith('%') && double.TryParse(pos.TrimEnd('%'), NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out number)) + { + x = (int)Math.Round(number * width / 100.0, MidpointRounding.AwayFromZero); + } + + if (!string.IsNullOrEmpty(line)) + { + line = line.Trim(); + if (line.EndsWith('%')) + { + if (double.TryParse(line.TrimEnd('%'), NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out number)) + { + y = (int)Math.Round(number * height / 100.0, MidpointRounding.AwayFromZero); + if (number < 25) + { + vAlignTop = true; + } + else if (number < 75) + { + vAlignMiddle = true; + } + } + } + else + { + if (double.TryParse(line, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out number)) + { + if (number >= 0 && number <= 7) + { + vAlignTop = true; // Positive numbers indicate top down + } + else if (number > 7 && number < 11) + { + vAlignMiddle = true; + } + } + } + } + + if (x > 0 && y > 0) + { + return "{\\pos(" + x + "," + y + ")}"; + } + + if (hAlignLeft) + { + if (vAlignTop) + { + return "{\\an7}"; + } + + if (vAlignMiddle) + { + return "{\\an4}"; + } + + return "{\\an1}"; + } + + if (hAlignRight) + { + if (vAlignTop) + { + return "{\\an9}"; + } + + if (vAlignMiddle) + { + return "{\\an6}"; + } + + return "{\\an3}"; + } + + if (vAlignTop) + { + return "{\\an8}"; + } + + if (vAlignMiddle) + { + return "{\\an5}"; + } + + return positionInfo; + } + + private static string GetTag(string s, string tag) + { + if (string.IsNullOrEmpty(s) || string.IsNullOrEmpty(tag)) + { + return null; + } + + var pos = s.IndexOf(tag, StringComparison.Ordinal); + if (pos >= 0) + { + var v = s.Substring(pos + tag.Length).Trim(); + var end = v.IndexOf("%,", StringComparison.Ordinal); + if (end >= 0) + { + v = v.Remove(end + 1); + } + + end = v.IndexOf(' '); + if (end >= 0) + { + v = v.Remove(end); + } + + return v; + } + + return null; + } + + private static string SetInlineStyles(string input, List ssaStyles, List webVttStyles) + { + var allInlineStyles = new List(); + var start = 0; + var sb = new StringBuilder(); + var webVttStyle = new WebVttStyle(); + var text = input; + var match = LineTagRegexMore.Match(text); + while (match.Success) + { + if (match.Value == "") + { + if (match.Index > start) + { + var s = text.Substring(start, Math.Min(text.Length - start, match.Index)); + sb.Append(s); + start = match.Index; + + if (allInlineStyles.Count > 0) + { + allInlineStyles.RemoveAt(allInlineStyles.Count - 1); + + webVttStyle = new WebVttStyle(); + foreach (var style in allInlineStyles) + { + webVttStyle = ApplyStyle(style, webVttStyle); + } + } + } + } + else if (match.Value.StartsWith("').Split('.'); + foreach (var styleName in arr) + { + var styleFound = webVttStyles.FirstOrDefault(p => p.Name == "." + styleName); + if (styleFound != null) + { + webVttStyle = ApplyStyle(styleFound, webVttStyle); + } + else if (styleName == "i") + { + webVttStyle.Italic = true; + } + else if (styleName == "b") + { + webVttStyle.Bold = true; + } + else if (styleName == "u") + { + webVttStyle.Underline = true; + } + else if (WebVTT.DefaultColorClasses.TryGetValue(styleName, out var c)) + { + webVttStyle.Color = c; + } + } + + allInlineStyles.Add(webVttStyle); + sb.Append(WebVttToAssaInline(webVttStyle)); + } + + text = text.Remove(match.Index, match.Length); + match = LineTagRegexMore.Match(text); + } + + if (text.Length > start) + { + sb.Append(text.Substring(start)); + } + + return sb.ToString(); + } + + private static string WebVttToAssaInline(WebVttStyle webVttStyle) + { + var sb = new StringBuilder(); + sb.Append("{"); + + if (webVttStyle.Color != null) + { + sb.Append("\\" + AdvancedSubStationAlpha.GetSsaColorStringForEvent(webVttStyle.Color.Value)); + } + + if (webVttStyle.BackgroundColor != null) + { + sb.Append("\\" + AdvancedSubStationAlpha.GetSsaColorStringForEvent(webVttStyle.BackgroundColor.Value, "3c")); + } + + if (webVttStyle.ShadowColor != null) + { + sb.Append("\\" + AdvancedSubStationAlpha.GetSsaColorStringForEvent(webVttStyle.ShadowColor.Value, "4c")); + } + + if (webVttStyle.ShadowWidth != null) + { + sb.Append("\\shad" + webVttStyle.ShadowWidth.Value.ToString(CultureInfo.InvariantCulture)); + } + + if (webVttStyle.FontName != null) + { + sb.Append($"\\fn{webVttStyle.FontName}"); + } + + if (webVttStyle.FontSize != null) + { + sb.Append($"\\fs{webVttStyle.FontSize}"); + } + + if (webVttStyle.Italic != null && webVttStyle.Italic == true) + { + sb.Append("\\i1"); + } + + if (webVttStyle.Italic != null && webVttStyle.Italic == false) + { + sb.Append("\\i0"); + } + + if (webVttStyle.Bold != null && webVttStyle.Bold == true) + { + sb.Append("\\b1"); + } + + if (webVttStyle.Bold != null && webVttStyle.Bold == false) + { + sb.Append("\\b0"); + } + + if (webVttStyle.Underline != null && webVttStyle.Underline == true) + { + sb.Append("\\u1"); + } + + if (webVttStyle.Underline != null && webVttStyle.Underline == false) + { + sb.Append("\\u0"); + } + + sb.Append("}"); + + if (sb.Length > 2) + { + return sb.ToString(); + } + + return string.Empty; + } + + private static WebVttStyle ApplyStyle(WebVttStyle style, WebVttStyle defaultStyle) + { + return new WebVttStyle + { + BackgroundColor = style.BackgroundColor ?? defaultStyle.BackgroundColor, + Bold = style.Bold ?? defaultStyle.Bold, + Italic = style.Italic ?? defaultStyle.Italic, + Underline = style.Underline ?? defaultStyle.Underline, + FontName = style.FontName ?? defaultStyle.FontName, + FontSize = style.FontSize ?? defaultStyle.FontSize, + Color = style.Color ?? defaultStyle.Color, + ShadowColor = style.ShadowColor ?? defaultStyle.ShadowColor, + ShadowWidth = style.ShadowWidth ?? defaultStyle.ShadowWidth, + }; } private static List ConvertStyles(List styles, SsaStyle defaultStyle) { var result = new List(); + defaultStyle.Name = "Default"; + result.Add(defaultStyle); + ; foreach (var style in styles) { - result.Add(new SsaStyle(new SsaStyle + var newStyle = new SsaStyle { + BorderStyle = "3", // box per line (bg color is outline) Name = style.Name, FontName = style.FontName ?? defaultStyle.FontName, FontSize = style.FontSize ?? defaultStyle.FontSize, Primary = style.Color ?? defaultStyle.Primary, - Background = style.BackgroundColor ?? defaultStyle.Background, + Outline = style.BackgroundColor ?? defaultStyle.Outline, Bold = style.Bold ?? defaultStyle.Bold, Italic = style.Italic ?? defaultStyle.Italic, + Underline = style.Underline ?? defaultStyle.Underline, ShadowWidth = style.ShadowWidth ?? defaultStyle.ShadowWidth, - OutlineWidth = style.ShadowWidth ?? defaultStyle.OutlineWidth, - Outline = style.ShadowColor ?? defaultStyle.Outline, - })); + Secondary = style.ShadowColor ?? defaultStyle.Secondary, + }; + + if (newStyle.Outline.A == 0 && style.BackgroundColor.HasValue) + { + newStyle.Background = newStyle.Outline; + } + + result.Add(newStyle); } return result; } - - public class WebVttStyle - { - public string Name { get; set; } - public string FontName { get; set; } - public decimal? FontSize { get; set; } - public Color? Color { get; set; } - public Color? BackgroundColor { get; set; } - public bool? Italic { get; set; } - public bool? Bold { get; set; } - public int? ShadowWidth { get; set; } - public Color? ShadowColor { get; set; } - } - - private static List GetStyles(Subtitle webVttSubtitle) - { - if (string.IsNullOrEmpty(webVttSubtitle.Header)) - { - return new List(); - } - - var cueOn = false; - var styleOn = false; - var result = new List(); - var currentStyle = new StringBuilder(); - foreach (var line in webVttSubtitle.Header.SplitToLines()) - { - var s = line.Trim(); - if (styleOn) - { - if (s == string.Empty) - { - styleOn = false; - AddStyle(result, currentStyle); - } - else - { - if (cueOn && s.StartsWith("::cue(", StringComparison.Ordinal)) - { - AddStyle(result, currentStyle); - currentStyle = new StringBuilder(); - } - - if (s.StartsWith("::cue(", StringComparison.Ordinal)) - { - currentStyle.AppendLine(s); - cueOn = true; - } - else if (cueOn) - { - currentStyle.AppendLine(s); - } - } - } - else if (s.Equals("STYLE", StringComparison.OrdinalIgnoreCase)) - { - styleOn = true; - } - } - - AddStyle(result, currentStyle); - - return result; - - // https://www.w3.org/TR/webvtt1/ - //STYLE - //::cue { - // background-image: linear-gradient(to bottom, dimgray, lightgray); - // color: papayawhip; - // } - // /* Style blocks cannot use blank lines nor "dash dash greater than" */ - - // NOTE comment blocks can be used between style blocks. - - // STYLE - // ::cue(b) { - // color: peachpuff; - // } - - } - - private static void AddStyle(List result, StringBuilder currentStyle) - { - var text = currentStyle - .ToString() - .Replace(Environment.NewLine, " "); - var match = NameRegex.Match(text); - if (!match.Success) - { - return; - } - - var name = match.Value.Trim('(',')',' '); - - match = PropertiesRegex.Match(text); - if (!match.Success || string.IsNullOrWhiteSpace(match.Value)) - { - return; - } - - var properties = match.Value - .Trim('{', '}', ' ') - .RemoveChar('\r', '\n') - .Split(';'); - - var webVttStyle = new WebVttStyle { Name = name }; - foreach (var prop in properties) - { - SetProperty(webVttStyle, prop); - } - - result.Add(webVttStyle); - } - - private static void SetProperty(WebVttStyle webVttStyle, string prop) - { - var arr = prop.Split(':'); - if (arr.Length != 2) - { - return; - } - - var name = arr[0].Trim(); - var value = arr[1].Trim(); - - if (string.IsNullOrEmpty(value)) - { - return; - } - - if (name == "color") - { - SetColor(webVttStyle, value); - } - else if (name == "background-color") - { - SetBackgroundColor(webVttStyle, value); - } - else if (name == "font-family") - { - webVttStyle.FontName = value; - } - else if (name == "font-style") - { - SetFontStyle(webVttStyle, value); - } - else if (name == "font-weight") - { - SetFontWeight(webVttStyle, value); - } - else if (name == "text-shadow") - { - SetTextShadow(webVttStyle, value); - } - } - - private static void SetColor(WebVttStyle webVttStyle, string value) - { - var color = GetColorFromString(value, Color.Transparent); - if (color == Color.Transparent) - { - return; - } - - webVttStyle.Color = color; - } - - private static Color GetColorFromString(string s, Color defaultColor) - { - try - { - if (s.StartsWith("rgb(", StringComparison.OrdinalIgnoreCase)) - { - var arr = s - .RemoveChar(' ') - .Remove(0, 4) - .TrimEnd(')') - .Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); - - return Color.FromArgb(int.Parse(arr[0]), int.Parse(arr[1]), int.Parse(arr[2])); - } - - if (s.StartsWith("rgba(", StringComparison.OrdinalIgnoreCase)) - { - var arr = s - .RemoveChar(' ') - .Remove(0, 5) - .TrimEnd(')') - .Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); - - var alpha = byte.MaxValue; - if (arr.Length == 4 && float.TryParse(arr[3], NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out var f)) - { - if (f >= 0 && f < 1) - { - alpha = (byte)(f * byte.MaxValue); - } - } - - return Color.FromArgb(alpha, int.Parse(arr[0]), int.Parse(arr[1]), int.Parse(arr[2])); - } - - return ColorTranslator.FromHtml(s); - } - catch - { - return defaultColor; - } - } - - private static void SetBackgroundColor(WebVttStyle webVttStyle, string value) - { - var color = GetColorFromString(value, Color.Transparent); - if (color == Color.Transparent) - { - return; - } - - webVttStyle.BackgroundColor = color; - } - - private static void SetFontWeight(WebVttStyle webVttStyle, string value) - { - if (value == "bold" || value == "bolder") - { - webVttStyle.Bold = true; - } - else if (value == "normal") - { - webVttStyle.Bold = false; - } - } - - private static void SetFontStyle(WebVttStyle webVttStyle, string value) - { - if (value == "italic" || value == "oblique") - { - webVttStyle.Italic = true; - } - else if (value == "normal") - { - webVttStyle.Italic = false; - } - } - - private static void SetTextShadow(WebVttStyle webVttStyle, string value) - { - // text-shadow: #101010 3px; - - var arr = value.Split(); - if (arr.Length != 2) - { - return; - } - - var color = GetColorFromString(arr[0], Color.Transparent); - if (color == Color.Transparent) - { - return; - } - - if (int.TryParse(arr[1].Replace("px", string.Empty),out var number)) - { - webVttStyle.ShadowColor = color; - webVttStyle.ShadowWidth = number; - } - } } } diff --git a/src/libse/SubtitleFormats/AdvancedSubStationAlpha.cs b/src/libse/SubtitleFormats/AdvancedSubStationAlpha.cs index 4e3d5cd29..1e7114885 100644 --- a/src/libse/SubtitleFormats/AdvancedSubStationAlpha.cs +++ b/src/libse/SubtitleFormats/AdvancedSubStationAlpha.cs @@ -2032,15 +2032,29 @@ Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text" return $"&H{255 - c.A:X2}{c.B:X2}{c.G:X2}{c.R:X2}"; // ASS stores alpha in reverse (0=full intensity and 255=fully transparent) } - public static string GetSsaColorStringForEvent(Color c) + public static string GetSsaColorStringForEvent(Color c, string tag = "c") { if (c.A >= 255) { - return $"c&H{c.B:X2}{c.G:X2}{c.R:X2}"; + return $"{tag}&H{c.B:X2}{c.G:X2}{c.R:X2}"; + } + + var alphaName = "alpha"; + if (tag == "2c") + { + alphaName = "2a"; + } + else if (tag == "3c") + { + alphaName = "3a"; + } + else if (tag == "4c") + { + alphaName = "4a"; } var alpha = 255 - c.A; // ASS stores alpha in reverse (0=full intensity and 255=fully transparent) - return $"alpha&H{alpha:X2}&\\c&H{c.B:X2}{c.G:X2}{c.R:X2}"; + return $"{alphaName}&H{alpha:X2}&\\{tag}&H{c.B:X2}{c.G:X2}{c.R:X2}"; } public static string GetSsaColorStringNoTransparency(Color c) => $"&H{c.B:X2}{c.G:X2}{c.R:X2}"; diff --git a/src/libse/SubtitleFormats/WebVTT.cs b/src/libse/SubtitleFormats/WebVTT.cs index 748497e0c..c783a2692 100644 --- a/src/libse/SubtitleFormats/WebVTT.cs +++ b/src/libse/SubtitleFormats/WebVTT.cs @@ -18,7 +18,7 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats private static readonly Regex RegexTimeCodesMiddle = new Regex(@"^-?\d+:-?\d+\.-?\d+\s*-->\s*-?\d+:-?\d+:-?\d+\.-?\d+", RegexOptions.Compiled); private static readonly Regex RegexTimeCodesShort = new Regex(@"^-?\d+:-?\d+\.-?\d+\s*-->\s*-?\d+:-?\d+\.-?\d+", RegexOptions.Compiled); - private static readonly Dictionary DefaultColorClasses = new Dictionary + public static readonly Dictionary DefaultColorClasses = new Dictionary { { "white", Color.FromArgb(255, 255, 255) @@ -52,7 +52,8 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats public override List AlternateExtensions => new List { ".webvtt" }; - public override string Name => "WebVTT"; + public const string NameOfFormat = "WebVTT"; + public override string Name => NameOfFormat; public override string ToText(Subtitle subtitle, string title) { @@ -80,11 +81,6 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats var style = string.Empty; if (subtitle.Header != null && subtitle.Header.StartsWith("WEBVTT", StringComparison.Ordinal)) { - if (!string.IsNullOrEmpty(p.Extra)) - { - style = p.Extra; - } - if (!string.IsNullOrEmpty(p.Region)) { positionInfo = $" region:{p.Region} {positionInfo}".Replace(" ", " ").TrimEnd(); @@ -295,6 +291,7 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats p.EndTime.TotalMilliseconds += addSeconds * 1000; positionInfo = GetPositionInfo(s); + p.Style = GetPositionInfoRaw(s); p.Region = GetRegion(s); } catch (Exception exception) @@ -352,7 +349,7 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats foreach (var paragraph in subtitle.Paragraphs) { - paragraph.Text = ColorWebVttToHtml(paragraph.Text); + // paragraph.Text = ColorWebVttToHtml(paragraph.Text); paragraph.Text = EscapeDecodeText(paragraph.Text); paragraph.Text = RemoveWeirdRepeatingHeader(paragraph.Text); } @@ -564,6 +561,44 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats return positionInfo; } + internal static string GetPositionInfoRaw(string s) + { + //line: 72.69 % align:left position:44.90 % size:10.21 % + var list = new List(); + + var idx = s.IndexOf("line:", StringComparison.Ordinal); + if (idx >= 0) + { + list.Add(idx); + } + + idx = s.IndexOf("align:", StringComparison.Ordinal); + if (idx >= 0) + { + list.Add(idx); + } + + idx = s.IndexOf("position:", StringComparison.Ordinal); + if (idx >= 0) + { + list.Add(idx); + } + + idx = s.IndexOf("size:", StringComparison.Ordinal); + if (idx >= 0) + { + list.Add(idx); + } + + if (list.Count == 0) + { + return string.Empty; + } + + return s.Substring(list.Min(p=>p)); + } + + internal static string GetRegion(string s) { var region = GetTag(s, "region:"); @@ -711,7 +746,7 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats return styleList; } - private Dictionary GetCueStyles(string header) + private static Dictionary GetCueStyles(string header) { var dic = new Dictionary(); diff --git a/src/libse/SubtitleFormats/WebVTTFileWithLineNumber.cs b/src/libse/SubtitleFormats/WebVTTFileWithLineNumber.cs index f2b712f95..901502148 100644 --- a/src/libse/SubtitleFormats/WebVTTFileWithLineNumber.cs +++ b/src/libse/SubtitleFormats/WebVTTFileWithLineNumber.cs @@ -17,7 +17,8 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats public override string Extension => ".vtt"; - public override string Name => "WebVTT File with#"; + public const string NameOfFormat = "WebVTT File with#"; + public override string Name => NameOfFormat; public override string ToText(Subtitle subtitle, string title) { @@ -112,6 +113,8 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats EndTime = WebVTT.GetTimeCodeFromString(parts[1]) }; positionInfo = WebVTT.GetPositionInfo(s); + p.Extra = WebVTT.GetPositionInfoRaw(s); + p.Region = WebVTT.GetRegion(s); } catch (Exception exception) { diff --git a/src/ui/Controls/VideoPlayerContainer.cs b/src/ui/Controls/VideoPlayerContainer.cs index fb8ee0046..2cbb06e39 100644 --- a/src/ui/Controls/VideoPlayerContainer.cs +++ b/src/ui/Controls/VideoPlayerContainer.cs @@ -55,8 +55,6 @@ namespace Nikse.SubtitleEdit.Controls public float FontSizeFactor { get; set; } - private readonly List _allowedMpvNativePreviewFormats = new List(); - public VideoPlayer VideoPlayer { get => _videoPlayer; @@ -235,11 +233,6 @@ namespace Nikse.SubtitleEdit.Controls PictureBoxFastForwardOverMouseLeave(null, null); _labelTimeCode.Click += LabelTimeCodeClick; - - if (Configuration.Settings.General.MpvAllowNativePreview != null) - { - _allowedMpvNativePreviewFormats = Configuration.Settings.General.MpvAllowNativePreview.Split(';').ToList(); - } } private bool _showDuration = true; @@ -413,7 +406,14 @@ namespace Nikse.SubtitleEdit.Controls public void UpdateMpvStyle() { var gs = Configuration.Settings.General; - var mpvStyle = new SsaStyle + var mpvStyle = GetMpvPreviewStyle(gs); + + MpvPreviewStyleHeader = string.Format(AdvancedSubStationAlpha.HeaderNoStyles, "MPV preview file", mpvStyle.ToRawAss(SsaStyle.DefaultAssStyleFormat)); + } + + private static SsaStyle GetMpvPreviewStyle(GeneralSettings gs) + { + return new SsaStyle { Name = "Default", FontName = gs.VideoPlayerPreviewFontName, @@ -428,8 +428,6 @@ namespace Nikse.SubtitleEdit.Controls Alignment = gs.MpvPreviewTextAlignment, MarginVertical = gs.MpvPreviewTextMarginVertical }; - - MpvPreviewStyleHeader = string.Format(AdvancedSubStationAlpha.HeaderNoStyles, "MPV preview file", mpvStyle.ToRawAss(SsaStyle.DefaultAssStyleFormat)); } private string _mpvPreviewStyleHeader; @@ -478,6 +476,16 @@ namespace Nikse.SubtitleEdit.Controls { text = NetflixImsc11JapaneseToAss.Convert(subtitle, 1280, 720); } + else if (uiFormat.Name == WebVTT.NameOfFormat || uiFormat.Name == WebVTTFileWithLineNumber.NameOfFormat) + { + var defaultStyle = GetMpvPreviewStyle(Configuration.Settings.General); + defaultStyle.BorderStyle = "3"; + subtitle = new Subtitle(subtitle); + subtitle = WebVttToAssa.Convert(subtitle, defaultStyle, VideoWidth, VideoHeight); + format = new AdvancedSubStationAlpha(); + text = subtitle.ToText(format); + // File.WriteAllText(@"c:\data\__a.ass", text); + } else { if (subtitle.Header == null || !subtitle.Header.Contains("[V4+ Styles]") || uiFormat.Name != AdvancedSubStationAlpha.NameOfFormat) @@ -527,11 +535,6 @@ namespace Nikse.SubtitleEdit.Controls } } - if (_allowedMpvNativePreviewFormats.Contains(uiFormat.Name)) - { - format = uiFormat; - } - var hash = subtitle.GetFastHashCode(null); if (hash != _mpvSubOldHash || string.IsNullOrEmpty(_mpvTextOld)) { diff --git a/src/ui/Forms/Main.cs b/src/ui/Forms/Main.cs index 1ef381852..d77f1cd9c 100644 --- a/src/ui/Forms/Main.cs +++ b/src/ui/Forms/Main.cs @@ -13734,13 +13734,23 @@ namespace Nikse.SubtitleEdit.Forms private void SetColor(string color, bool selectedText = false, bool allowRemove = true) { - var isAssa = IsAssa(); + var format = GetCurrentSubtitleFormat(); + var isAssa = format.GetType() == typeof(AdvancedSubStationAlpha); + var isWebVtt = format.Name == WebVTT.NameOfFormat || format.Name == WebVTTFileWithLineNumber.NameOfFormat; + var c = ColorTranslator.FromHtml(color); + if (selectedText) { SetSelectedTextColor(color); } else { + var webVttStyles = new List(); + if (isWebVtt) + { + webVttStyles = WebVttHelper.GetStyles(_subtitle); + } + MakeHistoryForUndo(_language.BeforeSettingColor); var remove = allowRemove; var removeOriginal = allowRemove; @@ -13748,15 +13758,7 @@ namespace Nikse.SubtitleEdit.Forms var assaColor = string.Empty; if (isAssa) { - try - { - var c = ColorTranslator.FromHtml(color); - assaColor = AdvancedSubStationAlpha.GetSsaColorStringForEvent(c); - } - catch - { - // ignore - } + assaColor = AdvancedSubStationAlpha.GetSsaColorStringForEvent(c); } foreach (ListViewItem item in SubtitleListview1.SelectedItems) @@ -13772,6 +13774,21 @@ namespace Nikse.SubtitleEdit.Forms break; } } + else if (isWebVtt) + { + foreach (var style in webVttStyles) + { + if (style.Color == c && p.Text.Contains("." + style.Name)) + { + remove = true; + } + } + + if (remove) + { + break; + } + } else { var s = Utilities.RemoveSsaTags(p.Text); @@ -13822,6 +13839,10 @@ namespace Nikse.SubtitleEdit.Forms { p.Text = RemoveAssaColor(p.Text); } + else if (isWebVtt) + { + p.Text = WebVttHelper.RemoveColorTag(p.Text, c, webVttStyles); + } else { p.Text = HtmlUtil.RemoveOpenCloseTags(p.Text, HtmlUtil.TagFont); @@ -13829,7 +13850,7 @@ namespace Nikse.SubtitleEdit.Forms } else { - SetParagraphFontColor(p, color, isAssa); + SetParagraphFontColor(_subtitle, p, color, isAssa, isWebVtt, webVttStyles); } SubtitleListview1.SetText(item.Index, p.Text); @@ -13841,11 +13862,18 @@ namespace Nikse.SubtitleEdit.Forms { if (removeOriginal) { - original.Text = HtmlUtil.RemoveOpenCloseTags(original.Text, HtmlUtil.TagFont); + if (isWebVtt) + { + original.Text = WebVttHelper.RemoveColorTag(original.Text, c, webVttStyles); + } + else + { + original.Text = HtmlUtil.RemoveOpenCloseTags(original.Text, HtmlUtil.TagFont); + } } else { - SetParagraphFontColor(original, color); + SetParagraphFontColor(_subtitleOriginal, original, color); } SubtitleListview1.SetOriginalText(item.Index, original.Text); @@ -13876,6 +13904,8 @@ namespace Nikse.SubtitleEdit.Forms int selectionStart = tb.SelectionStart; + var format = GetCurrentSubtitleFormat(); + if (IsAssa()) { var c = ColorTranslator.FromHtml(color); @@ -13897,6 +13927,36 @@ namespace Nikse.SubtitleEdit.Forms tb.SelectedText = text; tb.SelectionStart = selectionStart; tb.SelectionLength = text.Length; + + return; + } + else if (format.Name == WebVTT.NameOfFormat || format.Name == WebVTTFileWithLineNumber.NameOfFormat) + { + var c = ColorTranslator.FromHtml(color); + WebVttStyle styleWithColor = WebVttHelper.GetStyleFromColor(c, _subtitle); + if (styleWithColor == null) + { + styleWithColor = WebVttHelper.AddStyleFromColor(c); + _subtitle.Header = WebVttHelper.AddStyleToHeader(_subtitle.Header, styleWithColor); + } + + if (text.StartsWith("'); + if (indexOfEndTag > 0) + { + text = text.Insert(indexOfEndTag, "." + styleWithColor.Name); + } + } + else + { + text = "" + text + ""; + } + + tb.SelectedText = text; + tb.SelectionStart = selectionStart; + tb.SelectionLength = text.Length; + return; } @@ -13962,7 +14022,7 @@ namespace Nikse.SubtitleEdit.Forms tb.SelectionLength = text.Length; } - private void SetParagraphFontColor(Paragraph p, string color, bool isAssa = false) + private void SetParagraphFontColor(Subtitle subtitle, Paragraph p, string color, bool isAssa = false, bool isWebVtt = false, List webVttStyles = null) { if (p == null) { @@ -13985,6 +14045,23 @@ namespace Nikse.SubtitleEdit.Forms return; } + if (isWebVtt) + { + try + { + var c = ColorTranslator.FromHtml(color); + var styleWithColor = WebVttHelper.AddStyleFromColor(c); + subtitle.Header = WebVttHelper.AddStyleToHeader(_subtitle.Header, styleWithColor); + WebVttHelper.AddStyleToText(p.Text, styleWithColor); + } + catch + { + // ignore + } + + return; + } + string pre = string.Empty; if (p.Text.StartsWith("{\\", StringComparison.Ordinal) && p.Text.IndexOf('}') >= 0) { From 32146220a8d0fff76bb78999024e50e0238c67f0 Mon Sep 17 00:00:00 2001 From: niksedk Date: Tue, 13 Jun 2023 21:10:06 +0200 Subject: [PATCH 10/96] Work on WebVTT --- src/libse/Common/WebVttHelper.cs | 6 +++++- src/ui/Controls/VideoPlayerContainer.cs | 1 + src/ui/Forms/Main.cs | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/libse/Common/WebVttHelper.cs b/src/libse/Common/WebVttHelper.cs index c9a54b8ca..bc346ac62 100644 --- a/src/libse/Common/WebVttHelper.cs +++ b/src/libse/Common/WebVttHelper.cs @@ -385,10 +385,14 @@ namespace Nikse.SubtitleEdit.Core.Common text = text.Remove(idx, 4); } } - else + else if (text.Contains("" + text + ""; + } return text; } diff --git a/src/ui/Controls/VideoPlayerContainer.cs b/src/ui/Controls/VideoPlayerContainer.cs index 2cbb06e39..7dabedc39 100644 --- a/src/ui/Controls/VideoPlayerContainer.cs +++ b/src/ui/Controls/VideoPlayerContainer.cs @@ -478,6 +478,7 @@ namespace Nikse.SubtitleEdit.Controls } else if (uiFormat.Name == WebVTT.NameOfFormat || uiFormat.Name == WebVTTFileWithLineNumber.NameOfFormat) { + //TODO: add some caching!? var defaultStyle = GetMpvPreviewStyle(Configuration.Settings.General); defaultStyle.BorderStyle = "3"; subtitle = new Subtitle(subtitle); diff --git a/src/ui/Forms/Main.cs b/src/ui/Forms/Main.cs index d77f1cd9c..e0cd02202 100644 --- a/src/ui/Forms/Main.cs +++ b/src/ui/Forms/Main.cs @@ -14052,7 +14052,7 @@ namespace Nikse.SubtitleEdit.Forms var c = ColorTranslator.FromHtml(color); var styleWithColor = WebVttHelper.AddStyleFromColor(c); subtitle.Header = WebVttHelper.AddStyleToHeader(_subtitle.Header, styleWithColor); - WebVttHelper.AddStyleToText(p.Text, styleWithColor); + p.Text = WebVttHelper.AddStyleToText(p.Text, styleWithColor); } catch { From 6c7e4ac3cf460bc4493f06a999b2841537373185 Mon Sep 17 00:00:00 2001 From: niksedk Date: Wed, 14 Jun 2023 05:33:33 +0200 Subject: [PATCH 11/96] Work on shortcugts Related to #7013 --- src/libse/Common/Settings.cs | 8 +++++++ src/libse/Common/WebVttHelper.cs | 18 ++++++++++++-- src/ui/Forms/Main.cs | 40 +++++++++++++++++++++---------- src/ui/Forms/Options/Settings.cs | 1 + src/ui/Logic/Language.cs | 1 + src/ui/Logic/LanguageStructure.cs | 1 + src/ui/Logic/MainShortcuts.cs | 8 +++++-- 7 files changed, 60 insertions(+), 17 deletions(-) diff --git a/src/libse/Common/Settings.cs b/src/libse/Common/Settings.cs index 4f4a44e6b..3a0ac8755 100644 --- a/src/libse/Common/Settings.cs +++ b/src/libse/Common/Settings.cs @@ -2403,6 +2403,7 @@ $HorzAlign = Center public string MainVideoToggleContrast { get; set; } public string MainVideoAudioToTextVosk { get; set; } public string MainVideoAudioToTextWhisper { get; set; } + public string MainVideoAudioExtractAudioSelectedLines { get; set; } // spell check public string MainSpellCheck { get; set; } @@ -9024,6 +9025,12 @@ $HorzAlign = Center shortcuts.MainVideoAudioToTextWhisper = subNode.InnerText; } + subNode = node.SelectSingleNode("MainVideoAudioExtractAudioSelectedLines"); + if (subNode != null) + { + shortcuts.MainVideoAudioExtractAudioSelectedLines= subNode.InnerText; + } + subNode = node.SelectSingleNode("MainSpellCheck"); if (subNode != null) { @@ -11411,6 +11418,7 @@ $HorzAlign = Center textWriter.WriteElementString("MainVideoToggleContrast", shortcuts.MainVideoToggleContrast); textWriter.WriteElementString("MainVideoAudioToTextVosk", shortcuts.MainVideoAudioToTextVosk); textWriter.WriteElementString("MainVideoAudioToTextWhisper", shortcuts.MainVideoAudioToTextWhisper); + textWriter.WriteElementString("MainVideoAudioExtractAudioSelectedLines", shortcuts.MainVideoAudioExtractAudioSelectedLines); textWriter.WriteElementString("MainSpellCheck", shortcuts.MainSpellCheck); textWriter.WriteElementString("MainSpellCheckFindDoubleWords", shortcuts.MainSpellCheckFindDoubleWords); textWriter.WriteElementString("MainSpellCheckAddWordToNames", shortcuts.MainSpellCheckAddWordToNames); diff --git a/src/libse/Common/WebVttHelper.cs b/src/libse/Common/WebVttHelper.cs index bc346ac62..132f66d27 100644 --- a/src/libse/Common/WebVttHelper.cs +++ b/src/libse/Common/WebVttHelper.cs @@ -333,12 +333,26 @@ namespace Nikse.SubtitleEdit.Core.Common if (style.Color != null) { - sb.Append($"color:rgba({style.Color.Value.R},{style.Color.Value.G},{style.Color.Value.B},{(style.Color.Value.A / 255.0).ToString(CultureInfo.InvariantCulture)}); "); + if (style.Color.Value.A == byte.MaxValue) + { + sb.Append($"color:rgb({style.Color.Value.R},{style.Color.Value.G},{style.Color.Value.B}); "); + } + else + { + sb.Append($"color:rgba({style.Color.Value.R},{style.Color.Value.G},{style.Color.Value.B},{(style.Color.Value.A / 255.0).ToString(CultureInfo.InvariantCulture)}); "); + } } if (style.BackgroundColor != null) { - sb.Append($"background-color:rgba({style.BackgroundColor.Value.R},{style.BackgroundColor.Value.G},{style.BackgroundColor.Value.B},{(style.BackgroundColor.Value.A / 255.0).ToString(CultureInfo.InvariantCulture)}); "); + if (style.BackgroundColor.Value.A == byte.MaxValue) + { + sb.Append($"background-color:rgb({style.BackgroundColor.Value.R},{style.BackgroundColor.Value.G},{style.BackgroundColor.Value.B}); "); + } + else + { + sb.Append($"background-color:rgba({style.BackgroundColor.Value.R},{style.BackgroundColor.Value.G},{style.BackgroundColor.Value.B},{(style.BackgroundColor.Value.A / 255.0).ToString(CultureInfo.InvariantCulture)}); "); + } } if (style.Italic != null && style.Italic.Value == true) diff --git a/src/ui/Forms/Main.cs b/src/ui/Forms/Main.cs index e0cd02202..dd375c249 100644 --- a/src/ui/Forms/Main.cs +++ b/src/ui/Forms/Main.cs @@ -8848,16 +8848,7 @@ namespace Nikse.SubtitleEdit.Forms audio.DropDownItems.Insert(0, audioToTextWhisper); } - audioClip.Click += (senderNew, eNew) => - { - if (!RequireFfmpegOk()) - { - return; - } - - var audioClips = GetAudioClips(); - UiUtil.OpenFolder(Path.GetDirectoryName(audioClips[0].AudioFileName)); - }; + audioClip.Click += (senderNew, eNew) => { ExtractAudioSelectedLines(); }; audioToTextWhisper.Click += (senderNew, eNew) => { AudioToTextWhisperSelectedLines(); }; @@ -9319,6 +9310,17 @@ namespace Nikse.SubtitleEdit.Forms } } + private void ExtractAudioSelectedLines() + { + if (!RequireFfmpegOk()) + { + return; + } + + var audioClips = GetAudioClips(); + UiUtil.OpenFolder(Path.GetDirectoryName(audioClips[0].AudioFileName)); + } + private void AudioToTextVoskSelectedLines() { if (!RequireFfmpegOk()) @@ -13776,16 +13778,18 @@ namespace Nikse.SubtitleEdit.Forms } else if (isWebVtt) { + var removeFound = false; foreach (var style in webVttStyles) { if (style.Color == c && p.Text.Contains("." + style.Name)) { - remove = true; + removeFound = true; } } - if (remove) + if (!removeFound) { + remove = false; break; } } @@ -17933,11 +17937,21 @@ namespace Nikse.SubtitleEdit.Forms e.SuppressKeyPress = true; } - else if (e.KeyData == _shortcuts.MainVideoAudioToText) + else if (e.KeyData == _shortcuts.MainVideoAudioToTextVosk) { videoaudioToTextToolStripMenuItem_Click(null, null); e.SuppressKeyPress = true; } + else if (e.KeyData == _shortcuts.MainVideoAudioToTextWhisper) + { + audioToTextWhisperTolStripMenuItem_Click(null, null); + e.SuppressKeyPress = true; + } + else if (e.KeyData == _shortcuts.MainVideoAudioExtractSelectedLines) + { + e.SuppressKeyPress = true; + ExtractAudioSelectedLines(); + } else if (e.KeyData == _shortcuts.MainVideoToggleBrightness) { if (mediaPlayer.VideoPlayer is LibMpvDynamic libMpv) diff --git a/src/ui/Forms/Options/Settings.cs b/src/ui/Forms/Options/Settings.cs index 6e63cfa71..834ea8780 100644 --- a/src/ui/Forms/Options/Settings.cs +++ b/src/ui/Forms/Options/Settings.cs @@ -1525,6 +1525,7 @@ namespace Nikse.SubtitleEdit.Forms.Options AddNode(videoNode, language.MainToggleVideoControls, nameof(Configuration.Settings.Shortcuts.MainVideoToggleControls)); AddNode(videoNode, string.Format(language.AudioToTextX, "Vosk"), nameof(Configuration.Settings.Shortcuts.MainVideoAudioToTextVosk)); AddNode(videoNode, string.Format(language.AudioToTextX, "Whisper"), nameof(Configuration.Settings.Shortcuts.MainVideoAudioToTextWhisper)); + AddNode(videoNode, language.AudioExtractSelectedLines, nameof(Configuration.Settings.Shortcuts.MainVideoAudioExtractAudioSelectedLines)); AddNode(videoNode, language.VideoToggleContrast, nameof(Configuration.Settings.Shortcuts.MainVideoToggleContrast)); AddNode(videoNode, language.VideoToggleBrightness, nameof(Configuration.Settings.Shortcuts.MainVideoToggleBrightness)); _shortcuts.Nodes.Add(videoNode); diff --git a/src/ui/Logic/Language.cs b/src/ui/Logic/Language.cs index 459a47a3e..e5f6b702e 100644 --- a/src/ui/Logic/Language.cs +++ b/src/ui/Logic/Language.cs @@ -2892,6 +2892,7 @@ can edit in same subtitle file (collaboration)", VideoToggleContrast = "Toggle contrast (mpv only)", AudioToTextX = "Audio to text ({0})", AudioToTextSelectedLinesX = "Audio to text selected lines ({0})", + AudioExtractSelectedLines = "Extract audio (selected lines)", VideoToggleBrightness = "Toggle brightness (mpv only)", CustomSearch1 = "Translate, custom search 1", CustomSearch2 = "Translate, custom search 2", diff --git a/src/ui/Logic/LanguageStructure.cs b/src/ui/Logic/LanguageStructure.cs index a109f3b5d..0ad29b10b 100644 --- a/src/ui/Logic/LanguageStructure.cs +++ b/src/ui/Logic/LanguageStructure.cs @@ -2744,6 +2744,7 @@ namespace Nikse.SubtitleEdit.Logic public string MainToggleVideoControls { get; set; } public string VideoToggleContrast { get; set; } public string AudioToTextX { get; set; } + public string AudioExtractSelectedLines { get; set; } public string AudioToTextSelectedLinesX { get; set; } public string VideoToggleBrightness { get; set; } public string CustomSearch1 { get; set; } diff --git a/src/ui/Logic/MainShortcuts.cs b/src/ui/Logic/MainShortcuts.cs index e114aa507..218156421 100644 --- a/src/ui/Logic/MainShortcuts.cs +++ b/src/ui/Logic/MainShortcuts.cs @@ -81,7 +81,9 @@ namespace Nikse.SubtitleEdit.Logic public Keys MainVideoSpeedToggle { get; set; } public Keys MainVideoReset { get; set; } public Keys MainVideoToggleBrightness { get; set; } - public Keys MainVideoAudioToText { get; set; } + public Keys MainVideoAudioToTextVosk { get; set; } + public Keys MainVideoAudioToTextWhisper { get; set; } + public Keys MainVideoAudioExtractSelectedLines { get; set; } public Keys MainVideoToggleContrast { get; set; } public Keys MainGoToPreviousSubtitleAndFocusVideo { get; set; } public Keys MainGoToNextSubtitleAndFocusVideo { get; set; } @@ -345,7 +347,9 @@ namespace Nikse.SubtitleEdit.Logic MainVideoFaster = UiUtil.GetKeys(Configuration.Settings.Shortcuts.MainVideoFaster); MainVideoSpeedToggle = UiUtil.GetKeys(Configuration.Settings.Shortcuts.MainVideoSpeedToggle); MainVideoReset = UiUtil.GetKeys(Configuration.Settings.Shortcuts.MainVideoReset); - MainVideoAudioToText = UiUtil.GetKeys(Configuration.Settings.Shortcuts.MainVideoAudioToTextVosk); + MainVideoAudioToTextVosk = UiUtil.GetKeys(Configuration.Settings.Shortcuts.MainVideoAudioToTextVosk); + MainVideoAudioToTextWhisper = UiUtil.GetKeys(Configuration.Settings.Shortcuts.MainVideoAudioToTextWhisper); + MainVideoAudioExtractSelectedLines = UiUtil.GetKeys(Configuration.Settings.Shortcuts.MainVideoAudioExtractAudioSelectedLines); MainVideoToggleBrightness = UiUtil.GetKeys(Configuration.Settings.Shortcuts.MainVideoToggleBrightness); MainVideoToggleContrast = UiUtil.GetKeys(Configuration.Settings.Shortcuts.MainVideoToggleContrast); MainToolsAutoDuration = UiUtil.GetKeys(Configuration.Settings.Shortcuts.MainToolsAutoDuration); From 0ab79cb66cb3e8fd621cb53315ebe11a45b142d3 Mon Sep 17 00:00:00 2001 From: niksedk Date: Wed, 14 Jun 2023 05:36:15 +0200 Subject: [PATCH 12/96] Update translation --- LanguageBaseEnglish.xml | 1 + src/ui/Logic/LanguageDeserializer.cs | 3 +++ 2 files changed, 4 insertions(+) diff --git a/LanguageBaseEnglish.xml b/LanguageBaseEnglish.xml index 8f309ca7e..1904e9d60 100644 --- a/LanguageBaseEnglish.xml +++ b/LanguageBaseEnglish.xml @@ -2556,6 +2556,7 @@ can edit in same subtitle file (collaboration) Toggle video controls Toggle contrast (mpv only) Audio to text ({0}) + Extract audio (selected lines) Audio to text selected lines ({0}) Toggle brightness (mpv only) Translate, custom search 1 diff --git a/src/ui/Logic/LanguageDeserializer.cs b/src/ui/Logic/LanguageDeserializer.cs index 126624794..fb1cabe59 100644 --- a/src/ui/Logic/LanguageDeserializer.cs +++ b/src/ui/Logic/LanguageDeserializer.cs @@ -7009,6 +7009,9 @@ namespace Nikse.SubtitleEdit.Logic case "Settings/AudioToTextX": language.Settings.AudioToTextX = reader.Value; break; + case "Settings/AudioExtractSelectedLines": + language.Settings.AudioExtractSelectedLines = reader.Value; + break; case "Settings/AudioToTextSelectedLinesX": language.Settings.AudioToTextSelectedLinesX = reader.Value; break; From f13cb6ac64f97b410a3b68ee860103d15202e014 Mon Sep 17 00:00:00 2001 From: niksedk Date: Thu, 15 Jun 2023 06:27:05 +0200 Subject: [PATCH 13/96] Work on WebVTT --- src/libse/Common/WebVttHelper.cs | 32 +- src/libse/Common/WebVttStyle.cs | 1 + src/libse/Common/WebVttToAssa.cs | 13 +- src/ui/Forms/Main.cs | 17 + .../Forms/VTT/WebVttStyleManager.Designer.cs | 593 ++++++++++++++++++ src/ui/Forms/VTT/WebVttStyleManager.cs | 23 + src/ui/Forms/VTT/WebVttStyleManager.resx | 120 ++++ src/ui/SubtitleEdit.csproj | 9 + 8 files changed, 804 insertions(+), 4 deletions(-) create mode 100644 src/ui/Forms/VTT/WebVttStyleManager.Designer.cs create mode 100644 src/ui/Forms/VTT/WebVttStyleManager.cs create mode 100644 src/ui/Forms/VTT/WebVttStyleManager.resx diff --git a/src/libse/Common/WebVttHelper.cs b/src/libse/Common/WebVttHelper.cs index 132f66d27..5c58931b9 100644 --- a/src/libse/Common/WebVttHelper.cs +++ b/src/libse/Common/WebVttHelper.cs @@ -149,6 +149,10 @@ namespace Nikse.SubtitleEdit.Core.Common { SetTextShadow(webVttStyle, value); } + else if (name == "text-decoration") + { + SetTextDecoration(webVttStyle, value); + } } private static void SetColor(WebVttStyle webVttStyle, string value) @@ -240,6 +244,18 @@ namespace Nikse.SubtitleEdit.Core.Common } } + private static void SetTextDecoration(WebVttStyle webVttStyle, string value) + { + if (value == "underline") + { + webVttStyle.Underline = true; + } + else if (value == "line-through") + { + webVttStyle.StrikeThrough = true; + } + } + private static void SetTextShadow(WebVttStyle webVttStyle, string value) { // text-shadow: #101010 3px; @@ -355,16 +371,26 @@ namespace Nikse.SubtitleEdit.Core.Common } } - if (style.Italic != null && style.Italic.Value == true) + if (style.Italic != null && style.Italic.Value) { sb.Append("font-style:italic; "); } - if (style.Bold != null && style.Bold.Value == true) + if (style.Bold != null && style.Bold.Value) { sb.Append("font-weight:bold; "); } + if (style.Underline != null && style.Underline.Value) + { + sb.Append("text-decoration:underline; "); + } + + if (style.StrikeThrough != null && style.StrikeThrough.Value) + { + sb.Append("text-decoration:line-through; "); + } + return sb.ToString().TrimEnd(' ', ';'); } @@ -403,7 +429,7 @@ namespace Nikse.SubtitleEdit.Core.Common { text = text.Replace("." + style.Name, string.Empty); } - else + else { text = "" + text + ""; } diff --git a/src/libse/Common/WebVttStyle.cs b/src/libse/Common/WebVttStyle.cs index ceb84c701..d557ef5ab 100644 --- a/src/libse/Common/WebVttStyle.cs +++ b/src/libse/Common/WebVttStyle.cs @@ -12,6 +12,7 @@ namespace Nikse.SubtitleEdit.Core.Common public bool? Italic { get; set; } public bool? Bold { get; set; } public bool? Underline { get; set; } + public bool? StrikeThrough { get; set; } public decimal? ShadowWidth { get; set; } public Color? ShadowColor { get; set; } } diff --git a/src/libse/Common/WebVttToAssa.cs b/src/libse/Common/WebVttToAssa.cs index 90dca6bf5..d5bcb00b8 100644 --- a/src/libse/Common/WebVttToAssa.cs +++ b/src/libse/Common/WebVttToAssa.cs @@ -370,6 +370,16 @@ namespace Nikse.SubtitleEdit.Core.Common sb.Append("\\u0"); } + if (webVttStyle.StrikeThrough != null && webVttStyle.StrikeThrough == true) + { + sb.Append("\\s1"); + } + + if (webVttStyle.StrikeThrough != null && webVttStyle.StrikeThrough == false) + { + sb.Append("\\s0"); + } + sb.Append("}"); if (sb.Length > 2) @@ -406,7 +416,7 @@ namespace Nikse.SubtitleEdit.Core.Common { var newStyle = new SsaStyle { - BorderStyle = "3", // box per line (bg color is outline) + BorderStyle = "3", // box per line (background color is outline) Name = style.Name, FontName = style.FontName ?? defaultStyle.FontName, FontSize = style.FontSize ?? defaultStyle.FontSize, @@ -415,6 +425,7 @@ namespace Nikse.SubtitleEdit.Core.Common Bold = style.Bold ?? defaultStyle.Bold, Italic = style.Italic ?? defaultStyle.Italic, Underline = style.Underline ?? defaultStyle.Underline, + Strikeout = style.StrikeThrough ?? defaultStyle.Strikeout, ShadowWidth = style.ShadowWidth ?? defaultStyle.ShadowWidth, Secondary = style.ShadowColor ?? defaultStyle.Secondary, }; diff --git a/src/ui/Forms/Main.cs b/src/ui/Forms/Main.cs index dd375c249..4d273e7cc 100644 --- a/src/ui/Forms/Main.cs +++ b/src/ui/Forms/Main.cs @@ -44,6 +44,8 @@ using System.Threading.Tasks; using System.Windows.Forms; using Nikse.SubtitleEdit.Core.AudioToText; using Nikse.SubtitleEdit.Forms.AudioToText; +using WebVTT = Nikse.SubtitleEdit.Core.SubtitleFormats.WebVTT; +using Nikse.SubtitleEdit.Forms.VTT; namespace Nikse.SubtitleEdit.Forms { @@ -30763,6 +30765,21 @@ namespace Nikse.SubtitleEdit.Forms } } } + else if (formatType == typeof(WebVTT) || formatType == typeof(WebVTTFileWithLineNumber)) + { + using (var styles = new WebVttStyleManager(_subtitle)) + { + if (styles.ShowDialog(this) == DialogResult.OK) + { + if (_subtitle.Header != styles.Header) + { + MakeHistoryForUndo(styles.Text); + } + + _subtitle.Header = styles.Header; + } + } + } mediaPlayer.LastParagraph = null; UiUtil.ShowSubtitle(_subtitle, mediaPlayer, GetCurrentSubtitleFormat()); diff --git a/src/ui/Forms/VTT/WebVttStyleManager.Designer.cs b/src/ui/Forms/VTT/WebVttStyleManager.Designer.cs new file mode 100644 index 000000000..81cc88ca5 --- /dev/null +++ b/src/ui/Forms/VTT/WebVttStyleManager.Designer.cs @@ -0,0 +1,593 @@ +namespace Nikse.SubtitleEdit.Forms.VTT +{ + partial class WebVttStyleManager + { + /// + /// 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.groupBoxStyles = new System.Windows.Forms.GroupBox(); + this.buttonExport = new System.Windows.Forms.Button(); + this.buttonImport = new System.Windows.Forms.Button(); + this.buttonCopy = new System.Windows.Forms.Button(); + this.buttonRemoveAll = new System.Windows.Forms.Button(); + this.buttonAdd = new System.Windows.Forms.Button(); + this.buttonRemove = new System.Windows.Forms.Button(); + this.listViewStyles = new System.Windows.Forms.ListView(); + this.columnHeaderName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeaderFontName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeaderFontSize = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeaderUseCount = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeaderPrimaryColor = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeaderOutline = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.groupBoxProperties = new System.Windows.Forms.GroupBox(); + this.textBoxStyleName = new System.Windows.Forms.TextBox(); + this.labelStyleName = new System.Windows.Forms.Label(); + this.groupBoxPreview = new System.Windows.Forms.GroupBox(); + this.pictureBoxPreview = new System.Windows.Forms.PictureBox(); + this.groupBoxFont = new System.Windows.Forms.GroupBox(); + this.panelBackColor = new System.Windows.Forms.Panel(); + this.buttonBackColor = new System.Windows.Forms.Button(); + this.numericUpDownShadowWidth = new System.Windows.Forms.NumericUpDown(); + this.panelSecondaryColor = new System.Windows.Forms.Panel(); + this.labelShadow = new System.Windows.Forms.Label(); + this.buttonSecondaryColor = new System.Windows.Forms.Button(); + this.panelPrimaryColor = new System.Windows.Forms.Panel(); + this.checkBoxStrikeout = new System.Windows.Forms.CheckBox(); + this.buttonPrimaryColor = new System.Windows.Forms.Button(); + this.buttonPickAttachmentFont = new System.Windows.Forms.Button(); + this.checkBoxFontUnderline = new System.Windows.Forms.CheckBox(); + this.numericUpDownFontSize = new System.Windows.Forms.NumericUpDown(); + this.checkBoxFontItalic = new System.Windows.Forms.CheckBox(); + this.checkBoxFontBold = new System.Windows.Forms.CheckBox(); + this.comboBoxFontName = new System.Windows.Forms.ComboBox(); + this.labelFontSize = new System.Windows.Forms.Label(); + this.labelFontName = new System.Windows.Forms.Label(); + this.buttonApply = new System.Windows.Forms.Button(); + this.buttonCancel = new System.Windows.Forms.Button(); + this.buttonOK = new System.Windows.Forms.Button(); + this.checkBoxColorEnabled = new System.Windows.Forms.CheckBox(); + this.checkBoxBackgroundColorEnabled = new System.Windows.Forms.CheckBox(); + this.groupBoxStyles.SuspendLayout(); + this.groupBoxProperties.SuspendLayout(); + this.groupBoxPreview.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxPreview)).BeginInit(); + this.groupBoxFont.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownShadowWidth)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownFontSize)).BeginInit(); + this.SuspendLayout(); + // + // groupBoxStyles + // + this.groupBoxStyles.Controls.Add(this.buttonExport); + this.groupBoxStyles.Controls.Add(this.buttonImport); + this.groupBoxStyles.Controls.Add(this.buttonCopy); + this.groupBoxStyles.Controls.Add(this.buttonRemoveAll); + this.groupBoxStyles.Controls.Add(this.buttonAdd); + this.groupBoxStyles.Controls.Add(this.buttonRemove); + this.groupBoxStyles.Controls.Add(this.listViewStyles); + this.groupBoxStyles.Location = new System.Drawing.Point(8, 8); + this.groupBoxStyles.Name = "groupBoxStyles"; + this.groupBoxStyles.Size = new System.Drawing.Size(600, 599); + this.groupBoxStyles.TabIndex = 1; + this.groupBoxStyles.TabStop = false; + this.groupBoxStyles.Text = "File styles"; + // + // buttonExport + // + this.buttonExport.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.buttonExport.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.buttonExport.Location = new System.Drawing.Point(6, 570); + this.buttonExport.Name = "buttonExport"; + this.buttonExport.Size = new System.Drawing.Size(82, 23); + this.buttonExport.TabIndex = 5; + this.buttonExport.Text = "Export..."; + this.buttonExport.UseVisualStyleBackColor = true; + // + // buttonImport + // + this.buttonImport.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.buttonImport.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.buttonImport.Location = new System.Drawing.Point(6, 541); + this.buttonImport.Name = "buttonImport"; + this.buttonImport.Size = new System.Drawing.Size(82, 23); + this.buttonImport.TabIndex = 1; + this.buttonImport.Text = "Import..."; + this.buttonImport.UseVisualStyleBackColor = true; + // + // buttonCopy + // + this.buttonCopy.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.buttonCopy.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.buttonCopy.Location = new System.Drawing.Point(94, 570); + this.buttonCopy.Name = "buttonCopy"; + this.buttonCopy.Size = new System.Drawing.Size(82, 23); + this.buttonCopy.TabIndex = 6; + this.buttonCopy.Text = "Copy"; + this.buttonCopy.UseVisualStyleBackColor = true; + // + // buttonRemoveAll + // + this.buttonRemoveAll.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.buttonRemoveAll.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.buttonRemoveAll.Location = new System.Drawing.Point(182, 570); + this.buttonRemoveAll.Name = "buttonRemoveAll"; + this.buttonRemoveAll.Size = new System.Drawing.Size(102, 23); + this.buttonRemoveAll.TabIndex = 7; + this.buttonRemoveAll.Text = "Remove all"; + this.buttonRemoveAll.UseVisualStyleBackColor = true; + // + // buttonAdd + // + this.buttonAdd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.buttonAdd.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.buttonAdd.Location = new System.Drawing.Point(94, 541); + this.buttonAdd.Name = "buttonAdd"; + this.buttonAdd.Size = new System.Drawing.Size(82, 23); + this.buttonAdd.TabIndex = 2; + this.buttonAdd.Text = "New"; + this.buttonAdd.UseVisualStyleBackColor = true; + // + // buttonRemove + // + this.buttonRemove.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.buttonRemove.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.buttonRemove.Location = new System.Drawing.Point(182, 541); + this.buttonRemove.Name = "buttonRemove"; + this.buttonRemove.Size = new System.Drawing.Size(102, 23); + this.buttonRemove.TabIndex = 3; + this.buttonRemove.Text = "Remove"; + this.buttonRemove.UseVisualStyleBackColor = true; + // + // listViewStyles + // + this.listViewStyles.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.listViewStyles.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeaderName, + this.columnHeaderFontName, + this.columnHeaderFontSize, + this.columnHeaderUseCount, + this.columnHeaderPrimaryColor, + this.columnHeaderOutline}); + this.listViewStyles.FullRowSelect = true; + this.listViewStyles.HideSelection = false; + this.listViewStyles.Location = new System.Drawing.Point(6, 19); + this.listViewStyles.Name = "listViewStyles"; + this.listViewStyles.Size = new System.Drawing.Size(588, 516); + this.listViewStyles.TabIndex = 0; + this.listViewStyles.UseCompatibleStateImageBehavior = false; + this.listViewStyles.View = System.Windows.Forms.View.Details; + // + // columnHeaderName + // + this.columnHeaderName.Text = "Name"; + this.columnHeaderName.Width = 130; + // + // columnHeaderFontName + // + this.columnHeaderFontName.Text = "Font name"; + this.columnHeaderFontName.Width = 128; + // + // columnHeaderFontSize + // + this.columnHeaderFontSize.Text = "Font size"; + this.columnHeaderFontSize.Width = 80; + // + // columnHeaderUseCount + // + this.columnHeaderUseCount.Text = "Used#"; + // + // columnHeaderPrimaryColor + // + this.columnHeaderPrimaryColor.Text = "Primary"; + this.columnHeaderPrimaryColor.Width = 70; + // + // columnHeaderOutline + // + this.columnHeaderOutline.Text = "Outline"; + this.columnHeaderOutline.Width = 55; + // + // groupBoxProperties + // + this.groupBoxProperties.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.groupBoxProperties.Controls.Add(this.textBoxStyleName); + this.groupBoxProperties.Controls.Add(this.labelStyleName); + this.groupBoxProperties.Controls.Add(this.groupBoxPreview); + this.groupBoxProperties.Controls.Add(this.groupBoxFont); + this.groupBoxProperties.Location = new System.Drawing.Point(614, 8); + this.groupBoxProperties.Name = "groupBoxProperties"; + this.groupBoxProperties.Size = new System.Drawing.Size(484, 599); + this.groupBoxProperties.TabIndex = 2; + this.groupBoxProperties.TabStop = false; + this.groupBoxProperties.Text = "Properties"; + // + // textBoxStyleName + // + this.textBoxStyleName.Location = new System.Drawing.Point(49, 22); + this.textBoxStyleName.Name = "textBoxStyleName"; + this.textBoxStyleName.Size = new System.Drawing.Size(336, 20); + this.textBoxStyleName.TabIndex = 1; + // + // labelStyleName + // + this.labelStyleName.AutoSize = true; + this.labelStyleName.Location = new System.Drawing.Point(7, 26); + this.labelStyleName.Name = "labelStyleName"; + this.labelStyleName.Size = new System.Drawing.Size(35, 13); + this.labelStyleName.TabIndex = 0; + this.labelStyleName.Text = "Name"; + // + // groupBoxPreview + // + this.groupBoxPreview.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.groupBoxPreview.Controls.Add(this.pictureBoxPreview); + this.groupBoxPreview.Location = new System.Drawing.Point(7, 335); + this.groupBoxPreview.Name = "groupBoxPreview"; + this.groupBoxPreview.Size = new System.Drawing.Size(472, 258); + this.groupBoxPreview.TabIndex = 7; + this.groupBoxPreview.TabStop = false; + this.groupBoxPreview.Text = "Preview"; + // + // pictureBoxPreview + // + this.pictureBoxPreview.Dock = System.Windows.Forms.DockStyle.Fill; + this.pictureBoxPreview.Location = new System.Drawing.Point(3, 16); + this.pictureBoxPreview.Name = "pictureBoxPreview"; + this.pictureBoxPreview.Size = new System.Drawing.Size(466, 239); + this.pictureBoxPreview.TabIndex = 0; + this.pictureBoxPreview.TabStop = false; + // + // groupBoxFont + // + this.groupBoxFont.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBoxFont.Controls.Add(this.checkBoxBackgroundColorEnabled); + this.groupBoxFont.Controls.Add(this.checkBoxColorEnabled); + this.groupBoxFont.Controls.Add(this.panelBackColor); + this.groupBoxFont.Controls.Add(this.buttonBackColor); + this.groupBoxFont.Controls.Add(this.numericUpDownShadowWidth); + this.groupBoxFont.Controls.Add(this.panelSecondaryColor); + this.groupBoxFont.Controls.Add(this.labelShadow); + this.groupBoxFont.Controls.Add(this.buttonSecondaryColor); + this.groupBoxFont.Controls.Add(this.panelPrimaryColor); + this.groupBoxFont.Controls.Add(this.checkBoxStrikeout); + this.groupBoxFont.Controls.Add(this.buttonPrimaryColor); + this.groupBoxFont.Controls.Add(this.buttonPickAttachmentFont); + this.groupBoxFont.Controls.Add(this.checkBoxFontUnderline); + this.groupBoxFont.Controls.Add(this.numericUpDownFontSize); + this.groupBoxFont.Controls.Add(this.checkBoxFontItalic); + this.groupBoxFont.Controls.Add(this.checkBoxFontBold); + this.groupBoxFont.Controls.Add(this.comboBoxFontName); + this.groupBoxFont.Controls.Add(this.labelFontSize); + this.groupBoxFont.Controls.Add(this.labelFontName); + this.groupBoxFont.Location = new System.Drawing.Point(7, 51); + this.groupBoxFont.Name = "groupBoxFont"; + this.groupBoxFont.Size = new System.Drawing.Size(472, 278); + this.groupBoxFont.TabIndex = 2; + this.groupBoxFont.TabStop = false; + this.groupBoxFont.Text = "Font"; + // + // panelBackColor + // + this.panelBackColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panelBackColor.Location = new System.Drawing.Point(371, 138); + this.panelBackColor.Name = "panelBackColor"; + this.panelBackColor.Size = new System.Drawing.Size(21, 20); + this.panelBackColor.TabIndex = 7; + // + // buttonBackColor + // + this.buttonBackColor.Location = new System.Drawing.Point(282, 137); + this.buttonBackColor.Name = "buttonBackColor"; + this.buttonBackColor.Size = new System.Drawing.Size(84, 23); + this.buttonBackColor.TabIndex = 6; + this.buttonBackColor.Text = "Shadow"; + this.buttonBackColor.UseVisualStyleBackColor = true; + // + // numericUpDownShadowWidth + // + this.numericUpDownShadowWidth.DecimalPlaces = 1; + this.numericUpDownShadowWidth.Increment = new decimal(new int[] { + 1, + 0, + 0, + 65536}); + this.numericUpDownShadowWidth.Location = new System.Drawing.Point(286, 166); + this.numericUpDownShadowWidth.Name = "numericUpDownShadowWidth"; + this.numericUpDownShadowWidth.Size = new System.Drawing.Size(52, 20); + this.numericUpDownShadowWidth.TabIndex = 2; + // + // panelSecondaryColor + // + this.panelSecondaryColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panelSecondaryColor.Location = new System.Drawing.Point(242, 138); + this.panelSecondaryColor.Name = "panelSecondaryColor"; + this.panelSecondaryColor.Size = new System.Drawing.Size(21, 20); + this.panelSecondaryColor.TabIndex = 3; + // + // labelShadow + // + this.labelShadow.AutoSize = true; + this.labelShadow.Location = new System.Drawing.Point(344, 168); + this.labelShadow.Name = "labelShadow"; + this.labelShadow.Size = new System.Drawing.Size(46, 13); + this.labelShadow.TabIndex = 2; + this.labelShadow.Text = "Shadow"; + // + // buttonSecondaryColor + // + this.buttonSecondaryColor.Location = new System.Drawing.Point(135, 137); + this.buttonSecondaryColor.Name = "buttonSecondaryColor"; + this.buttonSecondaryColor.Size = new System.Drawing.Size(101, 23); + this.buttonSecondaryColor.TabIndex = 2; + this.buttonSecondaryColor.Text = "Background"; + this.buttonSecondaryColor.UseVisualStyleBackColor = true; + // + // panelPrimaryColor + // + this.panelPrimaryColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panelPrimaryColor.Location = new System.Drawing.Point(100, 138); + this.panelPrimaryColor.Name = "panelPrimaryColor"; + this.panelPrimaryColor.Size = new System.Drawing.Size(21, 20); + this.panelPrimaryColor.TabIndex = 1; + // + // checkBoxStrikeout + // + this.checkBoxStrikeout.AutoSize = true; + this.checkBoxStrikeout.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Strikeout, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.checkBoxStrikeout.Location = new System.Drawing.Point(246, 62); + this.checkBoxStrikeout.Name = "checkBoxStrikeout"; + this.checkBoxStrikeout.Size = new System.Drawing.Size(68, 17); + this.checkBoxStrikeout.TabIndex = 8; + this.checkBoxStrikeout.Text = "Strikeout"; + this.checkBoxStrikeout.UseVisualStyleBackColor = true; + // + // buttonPrimaryColor + // + this.buttonPrimaryColor.Location = new System.Drawing.Point(14, 137); + this.buttonPrimaryColor.Name = "buttonPrimaryColor"; + this.buttonPrimaryColor.Size = new System.Drawing.Size(80, 23); + this.buttonPrimaryColor.TabIndex = 0; + this.buttonPrimaryColor.Text = "&Color"; + this.buttonPrimaryColor.UseVisualStyleBackColor = true; + // + // buttonPickAttachmentFont + // + this.buttonPickAttachmentFont.Location = new System.Drawing.Point(267, 17); + this.buttonPickAttachmentFont.Name = "buttonPickAttachmentFont"; + this.buttonPickAttachmentFont.Size = new System.Drawing.Size(24, 23); + this.buttonPickAttachmentFont.TabIndex = 2; + this.buttonPickAttachmentFont.Text = "..."; + this.buttonPickAttachmentFont.UseVisualStyleBackColor = true; + // + // checkBoxFontUnderline + // + this.checkBoxFontUnderline.AutoSize = true; + this.checkBoxFontUnderline.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.checkBoxFontUnderline.Location = new System.Drawing.Point(169, 62); + this.checkBoxFontUnderline.Name = "checkBoxFontUnderline"; + this.checkBoxFontUnderline.Size = new System.Drawing.Size(71, 17); + this.checkBoxFontUnderline.TabIndex = 7; + this.checkBoxFontUnderline.Text = "Underline"; + this.checkBoxFontUnderline.UseVisualStyleBackColor = true; + // + // numericUpDownFontSize + // + this.numericUpDownFontSize.DecimalPlaces = 1; + this.numericUpDownFontSize.Location = new System.Drawing.Point(374, 18); + this.numericUpDownFontSize.Maximum = new decimal(new int[] { + 200, + 0, + 0, + 0}); + this.numericUpDownFontSize.Name = "numericUpDownFontSize"; + this.numericUpDownFontSize.Size = new System.Drawing.Size(51, 20); + this.numericUpDownFontSize.TabIndex = 4; + // + // checkBoxFontItalic + // + this.checkBoxFontItalic.AutoSize = true; + this.checkBoxFontItalic.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.checkBoxFontItalic.Location = new System.Drawing.Point(90, 62); + this.checkBoxFontItalic.Name = "checkBoxFontItalic"; + this.checkBoxFontItalic.Size = new System.Drawing.Size(48, 17); + this.checkBoxFontItalic.TabIndex = 6; + this.checkBoxFontItalic.Text = "Italic"; + this.checkBoxFontItalic.UseVisualStyleBackColor = true; + // + // checkBoxFontBold + // + this.checkBoxFontBold.AutoSize = true; + this.checkBoxFontBold.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.checkBoxFontBold.Location = new System.Drawing.Point(13, 62); + this.checkBoxFontBold.Name = "checkBoxFontBold"; + this.checkBoxFontBold.Size = new System.Drawing.Size(51, 17); + this.checkBoxFontBold.TabIndex = 5; + this.checkBoxFontBold.Text = "Bold"; + this.checkBoxFontBold.UseVisualStyleBackColor = true; + // + // comboBoxFontName + // + this.comboBoxFontName.FormattingEnabled = true; + this.comboBoxFontName.Location = new System.Drawing.Point(73, 17); + this.comboBoxFontName.Name = "comboBoxFontName"; + this.comboBoxFontName.Size = new System.Drawing.Size(188, 21); + this.comboBoxFontName.TabIndex = 1; + // + // labelFontSize + // + this.labelFontSize.AutoSize = true; + this.labelFontSize.Location = new System.Drawing.Point(319, 20); + this.labelFontSize.Name = "labelFontSize"; + this.labelFontSize.Size = new System.Drawing.Size(49, 13); + this.labelFontSize.TabIndex = 3; + this.labelFontSize.Text = "Font size"; + // + // labelFontName + // + this.labelFontName.AutoSize = true; + this.labelFontName.Location = new System.Drawing.Point(10, 20); + this.labelFontName.Name = "labelFontName"; + this.labelFontName.Size = new System.Drawing.Size(57, 13); + this.labelFontName.TabIndex = 0; + this.labelFontName.Text = "Font name"; + // + // buttonApply + // + this.buttonApply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.buttonApply.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.buttonApply.Location = new System.Drawing.Point(831, 619); + this.buttonApply.Name = "buttonApply"; + this.buttonApply.Size = new System.Drawing.Size(105, 23); + this.buttonApply.TabIndex = 4; + this.buttonApply.Text = "&Apply"; + this.buttonApply.UseVisualStyleBackColor = true; + // + // 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(1023, 619); + this.buttonCancel.Name = "buttonCancel"; + this.buttonCancel.Size = new System.Drawing.Size(75, 23); + this.buttonCancel.TabIndex = 6; + this.buttonCancel.Text = "C&ancel"; + this.buttonCancel.UseVisualStyleBackColor = true; + // + // 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(942, 619); + this.buttonOK.Name = "buttonOK"; + this.buttonOK.Size = new System.Drawing.Size(75, 23); + this.buttonOK.TabIndex = 5; + this.buttonOK.Text = "&OK"; + this.buttonOK.UseVisualStyleBackColor = true; + // + // checkBoxColorEnabled + // + this.checkBoxColorEnabled.AutoSize = true; + this.checkBoxColorEnabled.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.checkBoxColorEnabled.Location = new System.Drawing.Point(16, 114); + this.checkBoxColorEnabled.Name = "checkBoxColorEnabled"; + this.checkBoxColorEnabled.Size = new System.Drawing.Size(65, 17); + this.checkBoxColorEnabled.TabIndex = 9; + this.checkBoxColorEnabled.Text = "Enabled"; + this.checkBoxColorEnabled.UseVisualStyleBackColor = true; + // + // checkBoxBackgroundColorEnabled + // + this.checkBoxBackgroundColorEnabled.AutoSize = true; + this.checkBoxBackgroundColorEnabled.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.checkBoxBackgroundColorEnabled.Location = new System.Drawing.Point(135, 114); + this.checkBoxBackgroundColorEnabled.Name = "checkBoxBackgroundColorEnabled"; + this.checkBoxBackgroundColorEnabled.Size = new System.Drawing.Size(65, 17); + this.checkBoxBackgroundColorEnabled.TabIndex = 10; + this.checkBoxBackgroundColorEnabled.Text = "Enabled"; + this.checkBoxBackgroundColorEnabled.UseVisualStyleBackColor = true; + // + // WebVttStyleManager + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1110, 654); + this.Controls.Add(this.buttonApply); + this.Controls.Add(this.buttonCancel); + this.Controls.Add(this.buttonOK); + this.Controls.Add(this.groupBoxProperties); + this.Controls.Add(this.groupBoxStyles); + this.KeyPreview = true; + this.Name = "WebVttStyleManager"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "WebVttStyleManager"; + this.groupBoxStyles.ResumeLayout(false); + this.groupBoxProperties.ResumeLayout(false); + this.groupBoxProperties.PerformLayout(); + this.groupBoxPreview.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxPreview)).EndInit(); + this.groupBoxFont.ResumeLayout(false); + this.groupBoxFont.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownShadowWidth)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownFontSize)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.GroupBox groupBoxStyles; + private System.Windows.Forms.Button buttonExport; + private System.Windows.Forms.Button buttonImport; + private System.Windows.Forms.Button buttonCopy; + private System.Windows.Forms.Button buttonRemoveAll; + private System.Windows.Forms.Button buttonAdd; + private System.Windows.Forms.Button buttonRemove; + private System.Windows.Forms.ListView listViewStyles; + private System.Windows.Forms.ColumnHeader columnHeaderName; + private System.Windows.Forms.ColumnHeader columnHeaderFontName; + private System.Windows.Forms.ColumnHeader columnHeaderFontSize; + private System.Windows.Forms.ColumnHeader columnHeaderUseCount; + private System.Windows.Forms.ColumnHeader columnHeaderPrimaryColor; + private System.Windows.Forms.ColumnHeader columnHeaderOutline; + private System.Windows.Forms.GroupBox groupBoxProperties; + private System.Windows.Forms.NumericUpDown numericUpDownShadowWidth; + private System.Windows.Forms.Label labelShadow; + private System.Windows.Forms.TextBox textBoxStyleName; + private System.Windows.Forms.Label labelStyleName; + private System.Windows.Forms.Panel panelBackColor; + private System.Windows.Forms.Button buttonBackColor; + private System.Windows.Forms.Panel panelSecondaryColor; + private System.Windows.Forms.Button buttonSecondaryColor; + private System.Windows.Forms.Panel panelPrimaryColor; + private System.Windows.Forms.Button buttonPrimaryColor; + private System.Windows.Forms.GroupBox groupBoxPreview; + private System.Windows.Forms.PictureBox pictureBoxPreview; + private System.Windows.Forms.GroupBox groupBoxFont; + private System.Windows.Forms.CheckBox checkBoxStrikeout; + private System.Windows.Forms.Button buttonPickAttachmentFont; + private System.Windows.Forms.CheckBox checkBoxFontUnderline; + private System.Windows.Forms.NumericUpDown numericUpDownFontSize; + private System.Windows.Forms.CheckBox checkBoxFontItalic; + private System.Windows.Forms.CheckBox checkBoxFontBold; + private System.Windows.Forms.ComboBox comboBoxFontName; + private System.Windows.Forms.Label labelFontSize; + private System.Windows.Forms.Label labelFontName; + private System.Windows.Forms.Button buttonApply; + private System.Windows.Forms.Button buttonCancel; + private System.Windows.Forms.Button buttonOK; + private System.Windows.Forms.CheckBox checkBoxColorEnabled; + private System.Windows.Forms.CheckBox checkBoxBackgroundColorEnabled; + } +} \ No newline at end of file diff --git a/src/ui/Forms/VTT/WebVttStyleManager.cs b/src/ui/Forms/VTT/WebVttStyleManager.cs new file mode 100644 index 000000000..885a04324 --- /dev/null +++ b/src/ui/Forms/VTT/WebVttStyleManager.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Nikse.SubtitleEdit.Core.Common; + +namespace Nikse.SubtitleEdit.Forms.VTT +{ + public partial class WebVttStyleManager : Form + { + public string Header { get; set; } + + public WebVttStyleManager(Subtitle subtitle) + { + InitializeComponent(); + } + } +} diff --git a/src/ui/Forms/VTT/WebVttStyleManager.resx b/src/ui/Forms/VTT/WebVttStyleManager.resx new file mode 100644 index 000000000..1af7de150 --- /dev/null +++ b/src/ui/Forms/VTT/WebVttStyleManager.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/ui/SubtitleEdit.csproj b/src/ui/SubtitleEdit.csproj index ee0d4417b..485446f25 100644 --- a/src/ui/SubtitleEdit.csproj +++ b/src/ui/SubtitleEdit.csproj @@ -1390,6 +1390,12 @@ TextPrompt.cs + + Form + + + WebVttStyleManager.cs + Form @@ -2133,6 +2139,9 @@ TextPrompt.cs + + WebVttStyleManager.cs + YouTubeAnnotationsImport.cs From 18d39347e03e4cc89b0e74decbfc961cd103147b Mon Sep 17 00:00:00 2001 From: niksedk Date: Thu, 15 Jun 2023 06:33:22 +0200 Subject: [PATCH 14/96] Add separator - thx Cyberyoda1411 :) Fix #7004 --- src/ui/Forms/Main.Designer.cs | 10 +++++++++- src/ui/Forms/Main.resx | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/ui/Forms/Main.Designer.cs b/src/ui/Forms/Main.Designer.cs index 8b4ae9b22..be69e47ca 100644 --- a/src/ui/Forms/Main.Designer.cs +++ b/src/ui/Forms/Main.Designer.cs @@ -571,6 +571,7 @@ namespace Nikse.SubtitleEdit.Forms this.timerOriginalTextUndo = new System.Windows.Forms.Timer(this.components); this.contextMenuStripShowVideoControls = new System.Windows.Forms.ContextMenuStrip(this.components); this.toolStripMenuItemShowVideoControls = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator4Extend = new System.Windows.Forms.ToolStripSeparator(); this.statusStrip1.SuspendLayout(); this.toolStrip1.SuspendLayout(); this.menuStrip1.SuspendLayout(); @@ -2651,6 +2652,7 @@ namespace Nikse.SubtitleEdit.Forms this.toolStripMenuItemMergeDialog, this.mergeBeforeToolStripMenuItem, this.mergeAfterToolStripMenuItem, + this.toolStripSeparator4Extend, this.extendBeforeToolStripMenuItem, this.extendAfterToolStripMenuItem, this.toolStripSeparator8, @@ -2667,7 +2669,7 @@ namespace Nikse.SubtitleEdit.Forms this.toolStripMenuItemSelectedLines, this.toolStripMenuItemGoogleMicrosoftTranslateSelLine}); this.contextMenuStripListView.Name = "contextMenuStripListView"; - this.contextMenuStripListView.Size = new System.Drawing.Size(285, 798); + this.contextMenuStripListView.Size = new System.Drawing.Size(285, 804); this.contextMenuStripListView.Closed += new System.Windows.Forms.ToolStripDropDownClosedEventHandler(this.MenuClosed); this.contextMenuStripListView.Opening += new System.ComponentModel.CancelEventHandler(this.ContextMenuStripListViewOpening); this.contextMenuStripListView.Opened += new System.EventHandler(this.MenuOpened); @@ -5574,6 +5576,11 @@ namespace Nikse.SubtitleEdit.Forms this.toolStripMenuItemShowVideoControls.Text = "Show video controls"; this.toolStripMenuItemShowVideoControls.Click += new System.EventHandler(this.toolStripMenuItemShowVideoControls_Click); // + // toolStripSeparator4Extend + // + this.toolStripSeparator4Extend.Name = "toolStripSeparator4Extend"; + this.toolStripSeparator4Extend.Size = new System.Drawing.Size(281, 6); + // // Main // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -6190,5 +6197,6 @@ namespace Nikse.SubtitleEdit.Forms private System.Windows.Forms.ToolStripMenuItem removeTranslationToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem generateVideoWithSoftcodedSubtitlesToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemExportTtmlImage; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator4Extend; } } \ No newline at end of file diff --git a/src/ui/Forms/Main.resx b/src/ui/Forms/Main.resx index ec1b07597..20558035a 100644 --- a/src/ui/Forms/Main.resx +++ b/src/ui/Forms/Main.resx @@ -857,7 +857,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD2 - CAAAAk1TRnQBSQFMAgEBAgEAAbQBLgG0AS4BEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CAAAAk1TRnQBSQFMAgEBAgEAAbwBLgG8AS4BEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA From 9e26b1811b15eeb3aea404a93d85e6ff4ea2f81f Mon Sep 17 00:00:00 2001 From: Hugo Carvalho Date: Thu, 15 Jun 2023 12:29:39 +0100 Subject: [PATCH 15/96] Update pt-PT.xml For commit: 0ab79cb66cb3e8fd621cb53315ebe11a45b142d3 --- src/ui/Languages/pt-PT.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ui/Languages/pt-PT.xml b/src/ui/Languages/pt-PT.xml index 79de012bc..d886f338c 100644 --- a/src/ui/Languages/pt-PT.xml +++ b/src/ui/Languages/pt-PT.xml @@ -2557,6 +2557,7 @@ editar o mesmo ficheiro de legenda (colaboração) Alternar controlos vídeo Alternar contraste (apenas mpv) Áudio para texto ({0}) + Extrair áudio (linhas seleccionadas) Áudio para texto em linhas seleccionadas ({0}) Alternar luminosidade (apenas mpv) Traduzir, pesquisa personalizada 1 From 7f67fef675af1f9bb176babf5b63a9bd87cac79c Mon Sep 17 00:00:00 2001 From: niksedk Date: Thu, 15 Jun 2023 19:54:50 +0200 Subject: [PATCH 16/96] Add ASSA layer context menu --- LanguageBaseEnglish.xml | 1 + src/ui/Forms/Main.Designer.cs | 19 ++++++++++---- src/ui/Forms/Main.cs | 39 +++++++++++++++++++++++++++- src/ui/Forms/Main.resx | 2 +- src/ui/Logic/Language.cs | 1 + src/ui/Logic/LanguageDeserializer.cs | 3 +++ src/ui/Logic/LanguageStructure.cs | 1 + 7 files changed, 59 insertions(+), 7 deletions(-) diff --git a/LanguageBaseEnglish.xml b/LanguageBaseEnglish.xml index 1904e9d60..412e1baa5 100644 --- a/LanguageBaseEnglish.xml +++ b/LanguageBaseEnglish.xml @@ -1378,6 +1378,7 @@ To use an API key, go to "Options -> Settings -> Tools" to enter your Goog Size all columns to fit Set style Set actor + Set layer ASSA tools Sub Station Alpha styles... Advanced Sub Station Alpha styles... diff --git a/src/ui/Forms/Main.Designer.cs b/src/ui/Forms/Main.Designer.cs index be69e47ca..3b1d5f3d2 100644 --- a/src/ui/Forms/Main.Designer.cs +++ b/src/ui/Forms/Main.Designer.cs @@ -315,6 +315,7 @@ namespace Nikse.SubtitleEdit.Forms this.toolStripMenuItemMergeDialog = new System.Windows.Forms.ToolStripMenuItem(); this.mergeBeforeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mergeAfterToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator4Extend = new System.Windows.Forms.ToolStripSeparator(); this.extendBeforeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.extendAfterToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator(); @@ -571,7 +572,7 @@ namespace Nikse.SubtitleEdit.Forms this.timerOriginalTextUndo = new System.Windows.Forms.Timer(this.components); this.contextMenuStripShowVideoControls = new System.Windows.Forms.ContextMenuStrip(this.components); this.toolStripMenuItemShowVideoControls = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator4Extend = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripMenuItemSetLayer = new System.Windows.Forms.ToolStripMenuItem(); this.statusStrip1.SuspendLayout(); this.toolStrip1.SuspendLayout(); this.menuStrip1.SuspendLayout(); @@ -2631,6 +2632,7 @@ namespace Nikse.SubtitleEdit.Forms this.contextMenuStripListView.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.setStylesForSelectedLinesToolStripMenuItem, this.setActorForSelectedLinesToolStripMenuItem, + this.toolStripMenuItemSetLayer, this.toolStripMenuItemAssaTools, this.toolStripMenuItemAssStyles, this.toolStripSeparatorAssa, @@ -2669,7 +2671,7 @@ namespace Nikse.SubtitleEdit.Forms this.toolStripMenuItemSelectedLines, this.toolStripMenuItemGoogleMicrosoftTranslateSelLine}); this.contextMenuStripListView.Name = "contextMenuStripListView"; - this.contextMenuStripListView.Size = new System.Drawing.Size(285, 804); + this.contextMenuStripListView.Size = new System.Drawing.Size(285, 826); this.contextMenuStripListView.Closed += new System.Windows.Forms.ToolStripDropDownClosedEventHandler(this.MenuClosed); this.contextMenuStripListView.Opening += new System.ComponentModel.CancelEventHandler(this.ContextMenuStripListViewOpening); this.contextMenuStripListView.Opened += new System.EventHandler(this.MenuOpened); @@ -2947,6 +2949,11 @@ namespace Nikse.SubtitleEdit.Forms this.mergeAfterToolStripMenuItem.Text = "Merge with line after"; this.mergeAfterToolStripMenuItem.Click += new System.EventHandler(this.MergeAfterToolStripMenuItemClick); // + // toolStripSeparator4Extend + // + this.toolStripSeparator4Extend.Name = "toolStripSeparator4Extend"; + this.toolStripSeparator4Extend.Size = new System.Drawing.Size(281, 6); + // // extendBeforeToolStripMenuItem // this.extendBeforeToolStripMenuItem.Name = "extendBeforeToolStripMenuItem"; @@ -5576,10 +5583,11 @@ namespace Nikse.SubtitleEdit.Forms this.toolStripMenuItemShowVideoControls.Text = "Show video controls"; this.toolStripMenuItemShowVideoControls.Click += new System.EventHandler(this.toolStripMenuItemShowVideoControls_Click); // - // toolStripSeparator4Extend + // toolStripMenuItemSetLayer // - this.toolStripSeparator4Extend.Name = "toolStripSeparator4Extend"; - this.toolStripSeparator4Extend.Size = new System.Drawing.Size(281, 6); + this.toolStripMenuItemSetLayer.Name = "toolStripMenuItemSetLayer"; + this.toolStripMenuItemSetLayer.Size = new System.Drawing.Size(284, 22); + this.toolStripMenuItemSetLayer.Text = "Set layer"; // // Main // @@ -6198,5 +6206,6 @@ namespace Nikse.SubtitleEdit.Forms private System.Windows.Forms.ToolStripMenuItem generateVideoWithSoftcodedSubtitlesToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemExportTtmlImage; private System.Windows.Forms.ToolStripSeparator toolStripSeparator4Extend; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemSetLayer; } } \ No newline at end of file diff --git a/src/ui/Forms/Main.cs b/src/ui/Forms/Main.cs index 4d273e7cc..db4e4072c 100644 --- a/src/ui/Forms/Main.cs +++ b/src/ui/Forms/Main.cs @@ -44,7 +44,6 @@ using System.Threading.Tasks; using System.Windows.Forms; using Nikse.SubtitleEdit.Core.AudioToText; using Nikse.SubtitleEdit.Forms.AudioToText; -using WebVTT = Nikse.SubtitleEdit.Core.SubtitleFormats.WebVTT; using Nikse.SubtitleEdit.Forms.VTT; namespace Nikse.SubtitleEdit.Forms @@ -1845,6 +1844,7 @@ namespace Nikse.SubtitleEdit.Forms toolStripMenuItemAssaStyles.Text = _language.Menu.ContextMenu.SubStationAlphaStyles; setStylesForSelectedLinesToolStripMenuItem.Text = _language.Menu.ContextMenu.SetStyle; setActorForSelectedLinesToolStripMenuItem.Text = _language.Menu.ContextMenu.SetActor; + toolStripMenuItemSetLayer.Text = _language.Menu.ContextMenu.SetLayer; toolStripMenuItemAssaTools.Text = _language.Menu.ContextMenu.AssaTools; applyCustomStylesToolStripMenuItem.Text = _language.Menu.ContextMenu.ApplyCustomOverrideTag; setPositionToolStripMenuItem.Text = _language.Menu.ContextMenu.SetPosition; @@ -8859,6 +8859,7 @@ namespace Nikse.SubtitleEdit.Forms toolStripMenuItemSetRegion.Visible = false; toolStripMenuItemSetLanguage.Visible = false; + toolStripMenuItemSetLayer.Visible = false; List actors = null; if ((formatType == typeof(AdvancedSubStationAlpha) || formatType == typeof(SubStationAlpha) || formatType == typeof(CsvNuendo)) && SubtitleListview1.SelectedItems.Count > 0) { @@ -8938,6 +8939,28 @@ namespace Nikse.SubtitleEdit.Forms } UiUtil.FixFonts(setActorForSelectedLinesToolStripMenuItem); + + toolStripMenuItemSetLayer.DropDownItems.Clear(); + if (SubtitleListview1.SelectedItems.Count > 0) + { + var p = _subtitle.GetParagraphOrDefault(SubtitleListview1.SelectedItems[0].Index); + if (p != null) + { + var layer = p.Layer; + + toolStripMenuItemSetLayer.DropDownItems.Add((layer - 100).ToString(CultureInfo.InvariantCulture), null, SetLayer); + toolStripMenuItemSetLayer.DropDownItems.Add((layer - 10).ToString(CultureInfo.InvariantCulture), null, SetLayer); + toolStripMenuItemSetLayer.DropDownItems.Add((layer - 1).ToString(CultureInfo.InvariantCulture), null, SetLayer); + + toolStripMenuItemSetLayer.DropDownItems.Add(layer.ToString(CultureInfo.InvariantCulture), null, SetLayer); + ((ToolStripMenuItem)toolStripMenuItemSetLayer.DropDownItems[toolStripMenuItemSetLayer.DropDownItems.Count - 1]).Checked = true; + + toolStripMenuItemSetLayer.DropDownItems.Add((layer + 1).ToString(CultureInfo.InvariantCulture), null, SetLayer); + toolStripMenuItemSetLayer.DropDownItems.Add((layer + 10).ToString(CultureInfo.InvariantCulture), null, SetLayer); + toolStripMenuItemSetLayer.DropDownItems.Add((layer + 100).ToString(CultureInfo.InvariantCulture), null, SetLayer); + } + toolStripMenuItemSetLayer.Visible = true; + } } else if (((formatType == typeof(TimedText10) && Configuration.Settings.SubtitleSettings.TimedText10ShowStyleAndLanguage) || formatType == typeof(ItunesTimedText)) && SubtitleListview1.SelectedItems.Count > 0) { @@ -9449,6 +9472,20 @@ namespace Nikse.SubtitleEdit.Forms } } + private void SetLayer(object sender, EventArgs e) + { + string layer = (sender as ToolStripItem).Text; + if (!string.IsNullOrEmpty(layer) && int.TryParse(layer, out int number)) + { + MakeHistoryForUndo(LanguageSettings.Current.Main.Menu.ContextMenu.SetLayer + ": " + layer); + + foreach (int index in SubtitleListview1.SelectedIndices) + { + _subtitle.Paragraphs[index].Layer = number; + } + } + } + private void SetRegion(object sender, EventArgs e) { string region = (sender as ToolStripItem).Text; diff --git a/src/ui/Forms/Main.resx b/src/ui/Forms/Main.resx index 20558035a..9468d9a93 100644 --- a/src/ui/Forms/Main.resx +++ b/src/ui/Forms/Main.resx @@ -857,7 +857,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD2 - CAAAAk1TRnQBSQFMAgEBAgEAAbwBLgG8AS4BEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CAAAAk1TRnQBSQFMAgEBAgEAAcQBLgHEAS4BEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA diff --git a/src/ui/Logic/Language.cs b/src/ui/Logic/Language.cs index e5f6b702e..fe38b5228 100644 --- a/src/ui/Logic/Language.cs +++ b/src/ui/Logic/Language.cs @@ -1943,6 +1943,7 @@ namespace Nikse.SubtitleEdit.Logic SizeAllColumnsToFit = "Size all columns to fit", SetStyle = "Set style", SetActor = "Set actor", + SetLayer = "Set layer", AssaTools = "ASSA tools", AdvancedSubStationAlphaStyles = "Advanced Sub Station Alpha styles...", SubStationAlphaStyles = "Sub Station Alpha styles...", diff --git a/src/ui/Logic/LanguageDeserializer.cs b/src/ui/Logic/LanguageDeserializer.cs index fb1cabe59..2423abd56 100644 --- a/src/ui/Logic/LanguageDeserializer.cs +++ b/src/ui/Logic/LanguageDeserializer.cs @@ -4504,6 +4504,9 @@ namespace Nikse.SubtitleEdit.Logic case "Main/Menu/ContextMenu/SetActor": language.Main.Menu.ContextMenu.SetActor = reader.Value; break; + case "Main/Menu/ContextMenu/SetLayer": + language.Main.Menu.ContextMenu.SetLayer = reader.Value; + break; case "Main/Menu/ContextMenu/AssaTools": language.Main.Menu.ContextMenu.AssaTools = reader.Value; break; diff --git a/src/ui/Logic/LanguageStructure.cs b/src/ui/Logic/LanguageStructure.cs index 0ad29b10b..08d3f1c5f 100644 --- a/src/ui/Logic/LanguageStructure.cs +++ b/src/ui/Logic/LanguageStructure.cs @@ -1787,6 +1787,7 @@ namespace Nikse.SubtitleEdit.Logic public string SizeAllColumnsToFit { get; set; } public string SetStyle { get; set; } public string SetActor { get; set; } + public string SetLayer { get; set; } public string AssaTools { get; set; } public string SubStationAlphaStyles { get; set; } public string AdvancedSubStationAlphaStyles { get; set; } From b420186bb4d6116b6f558db57482ba17288c8ef9 Mon Sep 17 00:00:00 2001 From: bovirus <1262554+bovirus@users.noreply.github.com> Date: Fri, 16 Jun 2023 12:20:27 +0200 Subject: [PATCH 17/96] Update italian language --- src/ui/Languages/it-IT.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/ui/Languages/it-IT.xml b/src/ui/Languages/it-IT.xml index cd0f5f135..17e22bdd7 100644 --- a/src/ui/Languages/it-IT.xml +++ b/src/ui/Languages/it-IT.xml @@ -3,7 +3,7 @@ Subtitle Edit 3.6.13 - Tradotto da NAMP e bovirus - Data traduzione: 26.04.2023 + Tradotto da NAMP e bovirus - Data traduzione: 16.06.2023 it-IT OK @@ -1378,6 +1378,7 @@ Per usare una chiave API vai su "Opzioni -> Impostazioni -> Strumenti" per Ridimensiona tutte le colonne per adattarle Imposta stile Imposta attore + Imposta layer Strumenti ASSA Stili Alpha della stazione secondaria... Stili Alpha Sub Station avanzati... @@ -2401,6 +2402,8 @@ stesso file di sottotitolo (collaborazione) Usa colorazione sintassi Colore HTML Colore ASSA + Tema + Automatico Tema scuro Usa tema scuro Visualizza le linee della griglia nella vista elenco @@ -2554,6 +2557,7 @@ stesso file di sottotitolo (collaborazione) Attiva/disattiva i controlli video Attiva/disattiva contrasto (solo mpv) Da audio a testo ({0}) + Estrai audio (righe selezionate) Da audio a testo righe selezionate ({0}) Attiva/disattiva luminosità (solo mpv) Traduci, ricerca personalizzata 1 From b4a404497dcc120075100076c936789ced5a4680 Mon Sep 17 00:00:00 2001 From: niksedk Date: Fri, 16 Jun 2023 18:23:11 +0200 Subject: [PATCH 18/96] More set layer --- src/ui/Forms/Assa/SetLayer.Designer.cs | 111 +++++++++++++++++++++++ src/ui/Forms/Assa/SetLayer.cs | 49 ++++++++++ src/ui/Forms/Assa/SetLayer.resx | 120 +++++++++++++++++++++++++ src/ui/Forms/Main.cs | 21 +++++ src/ui/SubtitleEdit.csproj | 9 ++ 5 files changed, 310 insertions(+) create mode 100644 src/ui/Forms/Assa/SetLayer.Designer.cs create mode 100644 src/ui/Forms/Assa/SetLayer.cs create mode 100644 src/ui/Forms/Assa/SetLayer.resx diff --git a/src/ui/Forms/Assa/SetLayer.Designer.cs b/src/ui/Forms/Assa/SetLayer.Designer.cs new file mode 100644 index 000000000..3d89a218a --- /dev/null +++ b/src/ui/Forms/Assa/SetLayer.Designer.cs @@ -0,0 +1,111 @@ +namespace Nikse.SubtitleEdit.Forms.Assa +{ + partial class SetLayer + { + /// + /// 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.buttonOK = new System.Windows.Forms.Button(); + this.buttonCancel = new System.Windows.Forms.Button(); + this.numericUpDownLayer = new System.Windows.Forms.NumericUpDown(); + this.labelLayer = new System.Windows.Forms.Label(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownLayer)).BeginInit(); + this.SuspendLayout(); + // + // 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(196, 70); + this.buttonOK.Name = "buttonOK"; + this.buttonOK.Size = new System.Drawing.Size(75, 23); + this.buttonOK.TabIndex = 6; + this.buttonOK.Text = "&OK"; + this.buttonOK.UseVisualStyleBackColor = true; + this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click); + // + // 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(277, 70); + this.buttonCancel.Name = "buttonCancel"; + this.buttonCancel.Size = new System.Drawing.Size(75, 23); + this.buttonCancel.TabIndex = 7; + this.buttonCancel.Text = "C&ancel"; + this.buttonCancel.UseVisualStyleBackColor = true; + // + // numericUpDownLayer + // + this.numericUpDownLayer.Location = new System.Drawing.Point(24, 33); + this.numericUpDownLayer.Name = "numericUpDownLayer"; + this.numericUpDownLayer.Size = new System.Drawing.Size(76, 20); + this.numericUpDownLayer.TabIndex = 8; + this.numericUpDownLayer.KeyDown += new System.Windows.Forms.KeyEventHandler(this.numericUpDownLayer_KeyDown); + // + // labelLayer + // + this.labelLayer.AutoSize = true; + this.labelLayer.Location = new System.Drawing.Point(24, 14); + this.labelLayer.Name = "labelLayer"; + this.labelLayer.Size = new System.Drawing.Size(33, 13); + this.labelLayer.TabIndex = 9; + this.labelLayer.Text = "Layer"; + // + // SetLayer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(364, 105); + this.Controls.Add(this.labelLayer); + this.Controls.Add(this.numericUpDownLayer); + this.Controls.Add(this.buttonOK); + this.Controls.Add(this.buttonCancel); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.KeyPreview = true; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "SetLayer"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "SetLayer"; + this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SetLayer_KeyDown); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownLayer)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button buttonOK; + private System.Windows.Forms.Button buttonCancel; + private System.Windows.Forms.NumericUpDown numericUpDownLayer; + private System.Windows.Forms.Label labelLayer; + } +} \ No newline at end of file diff --git a/src/ui/Forms/Assa/SetLayer.cs b/src/ui/Forms/Assa/SetLayer.cs new file mode 100644 index 000000000..7acb9d4df --- /dev/null +++ b/src/ui/Forms/Assa/SetLayer.cs @@ -0,0 +1,49 @@ +using Nikse.SubtitleEdit.Logic; +using System.Windows.Forms; +using Nikse.SubtitleEdit.Core.Common; + +namespace Nikse.SubtitleEdit.Forms.Assa +{ + public partial class SetLayer : Form + { + private Subtitle _subtitle; + private Paragraph _p; + public int Layer { get; set; } + + public SetLayer(Subtitle subtitle, Paragraph p) + { + UiUtil.PreInitialize(this); + InitializeComponent(); + UiUtil.FixFonts(this); + + _subtitle = subtitle; + _p = p; + + numericUpDownLayer.Minimum = int.MinValue; + numericUpDownLayer.Maximum = int.MaxValue; + numericUpDownLayer.Value = p?.Layer ?? 0; + } + + private void SetLayer_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Escape) + { + DialogResult = DialogResult.Cancel; + } + } + + private void numericUpDownLayer_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + buttonOK_Click(null, null); + } + } + + private void buttonOK_Click(object sender, System.EventArgs e) + { + Layer = (int)numericUpDownLayer.Value; + DialogResult = DialogResult.OK; + } + } +} diff --git a/src/ui/Forms/Assa/SetLayer.resx b/src/ui/Forms/Assa/SetLayer.resx new file mode 100644 index 000000000..1af7de150 --- /dev/null +++ b/src/ui/Forms/Assa/SetLayer.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/ui/Forms/Main.cs b/src/ui/Forms/Main.cs index db4e4072c..48de104d8 100644 --- a/src/ui/Forms/Main.cs +++ b/src/ui/Forms/Main.cs @@ -8958,6 +8958,10 @@ namespace Nikse.SubtitleEdit.Forms toolStripMenuItemSetLayer.DropDownItems.Add((layer + 1).ToString(CultureInfo.InvariantCulture), null, SetLayer); toolStripMenuItemSetLayer.DropDownItems.Add((layer + 10).ToString(CultureInfo.InvariantCulture), null, SetLayer); toolStripMenuItemSetLayer.DropDownItems.Add((layer + 100).ToString(CultureInfo.InvariantCulture), null, SetLayer); + + toolStripMenuItemSetLayer.DropDownItems.Add(new ToolStripSeparator()); + + toolStripMenuItemSetLayer.DropDownItems.Add(_language.Menu.ContextMenu.SetLayer, null, SetLayerChooseValue); } toolStripMenuItemSetLayer.Visible = true; } @@ -9486,6 +9490,23 @@ namespace Nikse.SubtitleEdit.Forms } } + private void SetLayerChooseValue(object sender, EventArgs e) + { + var p = _subtitle.GetParagraphOrDefault(FirstSelectedIndex); + using (var form = new SetLayer(_subtitle, p)) + { + if (form.ShowDialog(this) == DialogResult.OK) + { + MakeHistoryForUndo("Set layer: " + form.Layer); + var selectedIndices = new List(SubtitleListview1.GetSelectedIndices()); + foreach (int index in selectedIndices) + { + _subtitle.Paragraphs[index].Layer = form.Layer; + } + } + } + } + private void SetRegion(object sender, EventArgs e) { string region = (sender as ToolStripItem).Text; diff --git a/src/ui/SubtitleEdit.csproj b/src/ui/SubtitleEdit.csproj index 485446f25..27a0c571b 100644 --- a/src/ui/SubtitleEdit.csproj +++ b/src/ui/SubtitleEdit.csproj @@ -177,6 +177,12 @@ AssSetBackground.cs + + Form + + + SetLayer.cs + Form @@ -1543,6 +1549,9 @@ AssSetBackground.cs Designer + + SetLayer.cs + SetPosition.cs From 4256c5ab8f7a10dbc026db17812a6fc4d46ccb6b Mon Sep 17 00:00:00 2001 From: niksedk Date: Sat, 17 Jun 2023 07:54:44 +0200 Subject: [PATCH 19/96] Work on SetLayer --- src/ui/Forms/Main.Designer.cs | 20 ++++++++-------- src/ui/Forms/Main.cs | 34 +++++++++++++++------------ src/ui/Forms/Main.resx | 2 +- src/ui/Logic/Language.cs | 38 +++++++++++++++---------------- src/ui/Logic/LanguageStructure.cs | 2 +- 5 files changed, 50 insertions(+), 46 deletions(-) diff --git a/src/ui/Forms/Main.Designer.cs b/src/ui/Forms/Main.Designer.cs index 485bb4163..668b56fb3 100644 --- a/src/ui/Forms/Main.Designer.cs +++ b/src/ui/Forms/Main.Designer.cs @@ -279,6 +279,7 @@ namespace Nikse.SubtitleEdit.Forms this.contextMenuStripListView = new System.Windows.Forms.ContextMenuStrip(this.components); this.setStylesForSelectedLinesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.setActorForSelectedLinesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItemSetLayer = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItemAssaTools = new System.Windows.Forms.ToolStripMenuItem(); this.applyCustomStylesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.setPositionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -574,7 +575,6 @@ namespace Nikse.SubtitleEdit.Forms this.timerOriginalTextUndo = new System.Windows.Forms.Timer(this.components); this.contextMenuStripShowVideoControls = new System.Windows.Forms.ContextMenuStrip(this.components); this.toolStripMenuItemShowVideoControls = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripMenuItemSetLayer = new System.Windows.Forms.ToolStripMenuItem(); this.statusStrip1.SuspendLayout(); this.toolStrip1.SuspendLayout(); this.menuStrip1.SuspendLayout(); @@ -2674,7 +2674,7 @@ namespace Nikse.SubtitleEdit.Forms this.toolStripMenuItemSelectedLines, this.toolStripMenuItemGoogleMicrosoftTranslateSelLine}); this.contextMenuStripListView.Name = "contextMenuStripListView"; - this.contextMenuStripListView.Size = new System.Drawing.Size(285, 826); + this.contextMenuStripListView.Size = new System.Drawing.Size(285, 804); this.contextMenuStripListView.Closed += new System.Windows.Forms.ToolStripDropDownClosedEventHandler(this.MenuClosed); this.contextMenuStripListView.Opening += new System.ComponentModel.CancelEventHandler(this.ContextMenuStripListViewOpening); this.contextMenuStripListView.Opened += new System.EventHandler(this.MenuOpened); @@ -2691,6 +2691,12 @@ namespace Nikse.SubtitleEdit.Forms this.setActorForSelectedLinesToolStripMenuItem.Size = new System.Drawing.Size(284, 22); this.setActorForSelectedLinesToolStripMenuItem.Text = "Set actor"; // + // toolStripMenuItemSetLayer + // + this.toolStripMenuItemSetLayer.Name = "toolStripMenuItemSetLayer"; + this.toolStripMenuItemSetLayer.Size = new System.Drawing.Size(284, 22); + this.toolStripMenuItemSetLayer.Text = "Set layer"; + // // toolStripMenuItemAssaTools // this.toolStripMenuItemAssaTools.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -4581,8 +4587,8 @@ namespace Nikse.SubtitleEdit.Forms 0, -2147483648}); this.numericUpDownLayer.Name = "numericUpDownLayer"; - this.numericUpDownLayer.Size = new System.Drawing.Size(37, 20); - this.numericUpDownLayer.TabIndex = 46; + this.numericUpDownLayer.Size = new System.Drawing.Size(59, 20); + this.numericUpDownLayer.TabIndex = 4; this.numericUpDownLayer.ValueChanged += new System.EventHandler(this.NumericUpDownLayer_ValueChanged); // // labelLayer @@ -5615,12 +5621,6 @@ namespace Nikse.SubtitleEdit.Forms this.toolStripMenuItemShowVideoControls.Text = "Show video controls"; this.toolStripMenuItemShowVideoControls.Click += new System.EventHandler(this.toolStripMenuItemShowVideoControls_Click); // - // toolStripMenuItemSetLayer - // - this.toolStripMenuItemSetLayer.Name = "toolStripMenuItemSetLayer"; - this.toolStripMenuItemSetLayer.Size = new System.Drawing.Size(284, 22); - this.toolStripMenuItemSetLayer.Text = "Set layer"; - // // Main // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); diff --git a/src/ui/Forms/Main.cs b/src/ui/Forms/Main.cs index 9917e69ba..9320d98fb 100644 --- a/src/ui/Forms/Main.cs +++ b/src/ui/Forms/Main.cs @@ -422,6 +422,9 @@ namespace Nikse.SubtitleEdit.Forms toolStripComboBoxFrameRate.Text = Configuration.Settings.General.DefaultFrameRate.ToString(); pictureBoxBookmark.Visible = false; + labelLayer.Visible = false; + numericUpDownLayer.Visible = false; + UpdateRecentFilesUI(); InitializeToolbar(); @@ -3711,7 +3714,7 @@ namespace Nikse.SubtitleEdit.Forms SubtitleListview1.SelectedIndexChanged -= SubtitleListview1_SelectedIndexChanged; RemoveOriginal(true, false); - if (format.HasStyleSupport && format.Name == AdvancedSubStationAlpha.NameOfFormat) + if (format.HasStyleSupport && format.GetType() == typeof(AdvancedSubStationAlpha)) { SubtitleListview1.ShowExtraColumn(_languageGeneral.Style); } @@ -5248,6 +5251,8 @@ namespace Nikse.SubtitleEdit.Forms RemoveOriginal(true, false); _splitDualSami = false; _imageSubFileName = null; + labelLayer.Visible = false; + numericUpDownLayer.Visible = false; SubtitleListview1.HideColumn(SubtitleListView.SubtitleColumn.Extra); @@ -9481,8 +9486,7 @@ namespace Nikse.SubtitleEdit.Forms string layer = (sender as ToolStripItem).Text; if (!string.IsNullOrEmpty(layer) && int.TryParse(layer, out int number)) { - MakeHistoryForUndo(LanguageSettings.Current.Main.Menu.ContextMenu.SetLayer + ": " + layer); - + MakeHistoryForUndo(string.Format(_language.BeforeX, $"{_language.Menu.ContextMenu.SetLayer}: {layer}")); foreach (int index in SubtitleListview1.SelectedIndices) { _subtitle.Paragraphs[index].Layer = number; @@ -9497,7 +9501,7 @@ namespace Nikse.SubtitleEdit.Forms { if (form.ShowDialog(this) == DialogResult.OK) { - MakeHistoryForUndo("Set layer: " + form.Layer); + MakeHistoryForUndo(string.Format(_language.BeforeX, $"{_language.Menu.ContextMenu.SetLayer}: {form.Layer}")); var selectedIndices = new List(SubtitleListview1.GetSelectedIndices()); foreach (int index in selectedIndices) { @@ -9837,6 +9841,7 @@ namespace Nikse.SubtitleEdit.Forms buttonNext.Enabled = false; buttonUnBreak.Enabled = false; buttonAutoBreak.Enabled = false; + numericUpDownLayer.Enabled = false; if (!Configuration.Settings.General.UseDarkTheme) { labelText.Enabled = false; @@ -9868,6 +9873,7 @@ namespace Nikse.SubtitleEdit.Forms buttonNext.Enabled = true; buttonUnBreak.Enabled = true; buttonAutoBreak.Enabled = true; + numericUpDownLayer.Enabled = true; labelText.Enabled = true; labelStartTime.Enabled = true; labelDuration.Enabled = true; @@ -10770,19 +10776,17 @@ namespace Nikse.SubtitleEdit.Forms private void NumericUpDownLayer_ValueChanged(object sender, EventArgs e) { - var idx = _subtitleListViewIndex; - var p = _subtitle.GetParagraphOrDefault(idx); + var p = _subtitle.GetParagraphOrDefault(_subtitleListViewIndex); if (p == null) { return; } - var format = GetCurrentSubtitleFormat(); - bool isAssa = format.GetType() == typeof(AdvancedSubStationAlpha); + var isAssa = GetCurrentSubtitleFormat().GetType() == typeof(AdvancedSubStationAlpha); if (isAssa) { - int layer = (int)numericUpDownLayer.Value; - MakeHistoryForUndo(LanguageSettings.Current.Main.Controls.SetLayer + ": " + layer); + var layer = (int)numericUpDownLayer.Value; + MakeHistoryForUndo(string.Format(_language.BeforeX, $"{_language.Menu.ContextMenu.SetLayer}: {layer}")); p.Layer = layer; } } @@ -12931,6 +12935,8 @@ namespace Nikse.SubtitleEdit.Forms labelLayer.Visible = isAssa; if (isAssa) { + labelLayer.Text = LanguageSettings.Current.General.Layer; + numericUpDownLayer.Left = labelLayer.Right + 5; numericUpDownLayer.ValueChanged -= NumericUpDownLayer_ValueChanged; numericUpDownLayer.Value = p.Layer; numericUpDownLayer.ValueChanged += NumericUpDownLayer_ValueChanged; @@ -20504,7 +20510,7 @@ namespace Nikse.SubtitleEdit.Forms addMs = lastParagraph.EndTime.TotalMilliseconds - tmp.Paragraphs[0].StartTime.TotalMilliseconds + MinGapBetweenLines; } - if (isAssa && format.Name == AdvancedSubStationAlpha.NameOfFormat) + if (isAssa && format.GetType() == typeof(AdvancedSubStationAlpha)) { addMs = 0; @@ -31720,7 +31726,7 @@ namespace Nikse.SubtitleEdit.Forms { var isAssa = IsAssa(); var assaStyles = AdvancedSubStationAlpha.GetStylesFromHeader(_subtitle.Header); - for (int i = 0; i + index < _subtitle.Paragraphs.Count && i < tmp.Paragraphs.Count; i++) + for (var i = 0; i + index < _subtitle.Paragraphs.Count && i < tmp.Paragraphs.Count; i++) { if (index + i < _subtitle.Paragraphs.Count) { @@ -31729,7 +31735,7 @@ namespace Nikse.SubtitleEdit.Forms _subtitle.Paragraphs[index + i].Text = tmp.Paragraphs[i].Text; _subtitle.Paragraphs[index + i].StartTime.TotalMilliseconds = tmp.Paragraphs[i].StartTime.TotalMilliseconds; _subtitle.Paragraphs[index + i].EndTime.TotalMilliseconds = tmp.Paragraphs[i].EndTime.TotalMilliseconds; - if (isAssa && format.Name == AdvancedSubStationAlpha.NameOfFormat) + if (isAssa && format.GetType() == typeof(AdvancedSubStationAlpha)) { _subtitle.Paragraphs[index + i].Extra = tmp.Paragraphs[i].Extra; _subtitle.Paragraphs[index + i].Actor = tmp.Paragraphs[i].Actor; @@ -34727,7 +34733,7 @@ namespace Nikse.SubtitleEdit.Forms private void generateBackgroundBoxToolStripMenuItem_Click(object sender, EventArgs e) { - if (GetCurrentSubtitleFormat().Name != AdvancedSubStationAlpha.NameOfFormat) + if (GetCurrentSubtitleFormat().GetType() != typeof(AdvancedSubStationAlpha)) { return; } diff --git a/src/ui/Forms/Main.resx b/src/ui/Forms/Main.resx index 9468d9a93..0d28aceb5 100644 --- a/src/ui/Forms/Main.resx +++ b/src/ui/Forms/Main.resx @@ -857,7 +857,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD2 - CAAAAk1TRnQBSQFMAgEBAgEAAcQBLgHEAS4BEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CAAAAk1TRnQBSQFMAgEBAgEAAcwBLgHMAS4BEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA diff --git a/src/ui/Logic/Language.cs b/src/ui/Logic/Language.cs index db2aeafd0..e33f3ffb9 100644 --- a/src/ui/Logic/Language.cs +++ b/src/ui/Logic/Language.cs @@ -168,6 +168,7 @@ namespace Nikse.SubtitleEdit.Logic Actor = "Actor", Gap = "Gap", Region = "Region", + Layer = "Layer", NumberSymbol = "#", Number = "Number", Text = "Text", @@ -603,7 +604,7 @@ namespace Nikse.SubtitleEdit.Logic Custom = "Custom", ToDropFrame = "To drop frame", FromDropFrame = "From drop frame", - AllowOverlap = "Allow overlap" + AllowOverlap = "Allow overlap", }; CheckForUpdates = new LanguageStructure.CheckForUpdates @@ -805,7 +806,7 @@ namespace Nikse.SubtitleEdit.Logic TextLeftJustifiedText = "Left justified text", TextCenteredText = "Centered text", TextRightJustifiedText = "Right justified text", - UseBoxForOneNewLine = "Check 'Use box around text' for only one new-line" + UseBoxForOneNewLine = "Check 'Use box around text' for only one new-line", }; EffectKaraoke = new LanguageStructure.EffectKaraoke @@ -813,14 +814,14 @@ namespace Nikse.SubtitleEdit.Logic Title = "Karaoke effect", ChooseColor = "Choose color:", TotalSeconds = "Total seconds:", - EndDelayInSeconds = "End delay in seconds:" + EndDelayInSeconds = "End delay in seconds:", }; EffectTypewriter = new LanguageStructure.EffectTypewriter { Title = "Typewriter effect", TotalSeconds = "Total seconds:", - EndDelayInSeconds = "End delay in seconds:" + EndDelayInSeconds = "End delay in seconds:", }; ExportCustomText = new LanguageStructure.ExportCustomText @@ -960,7 +961,7 @@ namespace Nikse.SubtitleEdit.Logic WholeWord = "&Whole word", Count = "Coun&t", XNumberOfMatches = "{0:#,##0} matches", - OneMatch = "One match" + OneMatch = "One match", }; FindSubtitleLine = new LanguageStructure.FindSubtitleLine @@ -1210,7 +1211,7 @@ namespace Nikse.SubtitleEdit.Logic InputDescription = "Choose input files (browse or drag-n-drop)", ImageFiles = "Image files", Remove = "Remove", - RemoveAll = "Remove all" + RemoveAll = "Remove all", }; ImportShotChanges = new LanguageStructure.ImportShotChanges @@ -1227,7 +1228,7 @@ namespace Nikse.SubtitleEdit.Logic GetShotChangesWithFfmpeg = "Generate shot changes with FFmpeg", Sensitivity = "Sensitivity", SensitivityDescription = "Lower value gives more shot changes", - NoShotChangesFound = "No shot changes found." + NoShotChangesFound = "No shot changes found.", }; ImportText = new LanguageStructure.ImportText @@ -1256,7 +1257,7 @@ namespace Nikse.SubtitleEdit.Logic TextFiles = "Text files", PreviewLinesModifiedX = "Preview - subtitles modified: {0}", TimeCodes = "Time codes", - SplitAtEndChars = "Split at end chars" + SplitAtEndChars = "Split at end chars", }; Interjections = new LanguageStructure.Interjections @@ -1276,7 +1277,7 @@ namespace Nikse.SubtitleEdit.Logic TotalNumberOfLinesX = "Total number of lines: {0:#,###,###}", AlreadyCorrectTimeCodes = "Files already have correct time codes", AppendTimeCodes = "Add end time of previous file", - AddMs = "Add milliseconds after each file" + AddMs = "Add milliseconds after each file", }; LanguageNames = new LanguageStructure.LanguageNames @@ -1422,7 +1423,7 @@ namespace Nikse.SubtitleEdit.Logic yoName = "Yoruba", zaName = "Zhuang", zhName = "Chinese", - zuName = "Zulu" + zuName = "Zulu", }; Main = new LanguageStructure.Main @@ -1905,7 +1906,7 @@ namespace Nikse.SubtitleEdit.Logic CheckForUpdates = "Check for updates...", Title = "Help", Help = "&Help", - About = "&About" + About = "&About", }, Networking = new LanguageStructure.Main.MainMenu.NetworkingMenu @@ -2041,7 +2042,6 @@ namespace Nikse.SubtitleEdit.Logic Next = "Next >", AutoBreak = "Auto &br", Unbreak = "Unbreak", - SetLayer = "Set Layer" }, VideoControls = new LanguageStructure.Main.MainVideoControls @@ -2096,7 +2096,7 @@ namespace Nikse.SubtitleEdit.Logic NewTextInsertAtX = "New text inserted at {0}", Center = "Center", - PlayRate = "Play rate (speed)" + PlayRate = "Play rate (speed)", }, }; @@ -2230,7 +2230,7 @@ namespace Nikse.SubtitleEdit.Logic MillimetersOfMercury = "Millimeters of Mercury", PoundPerSquareInch = "Pound-force per square inch", KilogramPerSquareCentimeter = "Kilogram-force per square centimeter", - KiloPascals = "Kilopascals" + KiloPascals = "Kilopascals", }; MergeDoubleLines = new LanguageStructure.MergeDoubleLines @@ -2284,7 +2284,7 @@ namespace Nikse.SubtitleEdit.Logic ExactlyTwoLines = "Exactly two lines", MoreThanTwoLines = "More than two lines", Bookmarked = "Bookmarked", - BlankLines = "Blank lines" + BlankLines = "Blank lines", }; MultipleReplace = new LanguageStructure.MultipleReplace @@ -2319,7 +2319,7 @@ namespace Nikse.SubtitleEdit.Logic RulesForGroupX = "Rules for group \"{0}\"", NewGroup = "New group...", NothingToImport = "Nothing to import", - RuleInfo = "Rule information" + RuleInfo = "Rule information", }; NetworkChat = new LanguageStructure.NetworkChat @@ -2339,7 +2339,7 @@ can edit in same subtitle file (collaboration)", NetworkLogAndInfo = new LanguageStructure.NetworkLogAndInfo { Title = "Network session info and log", - Log = "Log:" + Log = "Log:", }; NetworkStart = new LanguageStructure.NetworkStart @@ -3537,7 +3537,7 @@ Keep changes?", InvertColors = "Invert colors", OriginalImage = "Original image", PostImage = "Image after preprocessing", - YellowToWhite = "Yellow to white" + YellowToWhite = "Yellow to white", }; Watermark = new LanguageStructure.Watermark @@ -3685,7 +3685,5 @@ Keep changes?", { File.WriteAllText(fileName, GetCurrentLanguageAsXml(), Encoding.UTF8); } - } } - diff --git a/src/ui/Logic/LanguageStructure.cs b/src/ui/Logic/LanguageStructure.cs index 776008a71..b00e5b578 100644 --- a/src/ui/Logic/LanguageStructure.cs +++ b/src/ui/Logic/LanguageStructure.cs @@ -43,6 +43,7 @@ namespace Nikse.SubtitleEdit.Logic public string Actor { get; set; } public string Gap { get; set; } public string Region { get; set; } + public string Layer { get; set; } public string NumberSymbol { get; set; } public string Number { get; set; } public string Text { get; set; } @@ -1898,7 +1899,6 @@ namespace Nikse.SubtitleEdit.Logic public string Next { get; set; } public string AutoBreak { get; set; } public string Unbreak { get; set; } - public string SetLayer { get; set; } } public class MainVideoControls From f54fdbcb7f5d70e4780d83977764436256424d01 Mon Sep 17 00:00:00 2001 From: niksedk Date: Sat, 17 Jun 2023 12:07:42 +0200 Subject: [PATCH 20/96] Update Russian translation - thx elfriob :) --- src/ui/Languages/ru-RU.xml | 63 ++++++++++++++++++++------------------ 1 file changed, 34 insertions(+), 29 deletions(-) diff --git a/src/ui/Languages/ru-RU.xml b/src/ui/Languages/ru-RU.xml index f4b9718ce..b5a65b518 100644 --- a/src/ui/Languages/ru-RU.xml +++ b/src/ui/Languages/ru-RU.xml @@ -141,9 +141,9 @@ https://github.com/SubtitleEdit/subtitleedit Хотите скачать и использовать FFmpeg? Создание файла пиков… Создание спектрограммы… - Извлечение аудио: {0:0.0} с - Извлечение аудио: {0}.{1:00} мин - Извлечённая форма сигнала не была найдена! + Извлечение аудио: {0:0.0} сек. + Извлечение аудио: {0}.{1:00} мин. + Не удалось найти извлечённый wave-файл! Для этого требуется VLC media player 1.1.x или новее ({0}-bit). Командная строка: {1} {2} @@ -589,7 +589,7 @@ https://github.com/SubtitleEdit/subtitleedit Макс. количество строк: Номер диска: Общее число дисков: - Открыть… + Импорт… Текст и сведения о синхронизации Размещение кода: Вертикальное построение @@ -796,7 +796,7 @@ https://github.com/SubtitleEdit/subtitleedit Нормализовать строки Исправить Turkish ANSI (Icelandic) символы в Unicode Исправить датскую буквы «i» - Исправить Испанские перевёрнутые знаки вопроса и восклицания + Исправить испанские перевёрнутые знаки вопроса и восклицания Добавить недостающую кавычку (") Добавить недостающие кавычки (") Удалять диалоговые тире в одной строке @@ -809,9 +809,9 @@ https://github.com/SubtitleEdit/subtitleedit Исправлять нечего :) Найдено неточностей: {0} Сделано исправлений: {0} - Ничто не может быть исправлено автоматически. Субтитры содержат ошибки - подробности см. в журнале - {0} проблем устранено, но субтитры всё ещё содержат ошибки - подробности см. в журнале - {0} проблем может быть исправлено, но субтитры всё равно будут содержать ошибки - подробности см. в журнале + Ничто не может быть исправлено автоматически. Субтитры содержат ошибки - подробности см. в отчёте + {0} проблем устранено, но субтитры всё ещё содержат ошибки - подробности см. в отчёте + {0} проблем можно исправить, но субтитры всё равно будут содержать ошибки - подробности см. в отчёте Исправить первую букву на заглавную после абзаца Объединить короткие строки (одно предложение) Объединить короткие строки (все, за исключением диалогов) @@ -839,13 +839,13 @@ https://github.com/SubtitleEdit/subtitleedit Обновить доступные исправления Применить выбранные исправления Автоперенос - Удалить перенос - Исправить символы тире «--» на многоточие «…» + Удал. перенос + Исправить символы тире «--» на многоточие «...» Удалить символы «>>» в начале строки - Удалить многоточие «…» в начале строки + Удалить многоточие «...» в начале строки Добавить недостающие «[» в строке Заменить музыкальные символы (напр. âTª) выбранным - 'Хм-- да!' -> 'Хм… да!' + 'Хм-- да!' -> 'Хм... да!' '>> Иван: Спасибо!' -> 'Иван: Спасибо!' '… а потом мы' -> 'а потом мы' 'лязг] Смотри!' -> '[лязг] Смотри!' @@ -1186,8 +1186,8 @@ https://github.com/SubtitleEdit/subtitleedit Файл Новый - Открыть - Открыть (оставить видео) + Открыть… + Открыть (оставить видео)… Открыть заново Сохранить Сохранить как… @@ -1383,8 +1383,9 @@ https://github.com/SubtitleEdit/subtitleedit Подогнать по ширине - Установить стиль - Указать актёра + Задать стиль + Задать актёра + Задать слой Инструменты ASSA Стили SubStation Alpha… Стили Advanced SubStation Alpha… @@ -1464,8 +1465,8 @@ https://github.com/SubtitleEdit/subtitleedit Задать новый голос… Удалить голоса Новый актёр… - Удалить актёров - Изменить закладку + Удалить актёра + Изменить закладку… Удалить закладку Перейти к просмотру исходного кода Перейти к просмотру списка @@ -1480,6 +1481,7 @@ https://github.com/SubtitleEdit/subtitleedit Далее > Автоперенос Удалить перенос + Установить слой Перевод @@ -2004,12 +2006,12 @@ https://github.com/SubtitleEdit/subtitleedit Вкл. Тип поиска Удалить все - Открыть правило(-а)… - Сохранить правило(-а)… - Открытие правил замен из… - Сохранение правил замен в… - Выберите какие группы Открыть - Выберите группы для Сохранения + Импорт… + Экспорт… + Импортировать правила замены из… + Экспорт правил замены в… + Выберите группы для импорта + Выберите группы для экспорта Правила поиска и замен Поднять на самый верх Опустить в самый низ @@ -2183,7 +2185,7 @@ https://github.com/SubtitleEdit/subtitleedit Переключить закладки - добавить комментарий Очистить закладки Экспортировать закладки… - Перейти в закладки + Перейти в закладки… Перейти к предыдущей закладке Перейти к следующей закладке Выбрать профиль @@ -2324,7 +2326,7 @@ https://github.com/SubtitleEdit/subtitleedit Контур Тень Сплошной контур - Тестирование 123 + Тестирование 123… Язык: Список имён (с учётом регистра) Добавить имя @@ -2412,6 +2414,8 @@ https://github.com/SubtitleEdit/subtitleedit Использовать подсветку синтаксиса HTML-цвет ASSA-цвет + Тема + Авто Тёмная тема Использовать тёмную тему Показать линии сетки отображения списка @@ -2567,7 +2571,8 @@ https://github.com/SubtitleEdit/subtitleedit Переключить элементы управления видео Переключить контрастность (только mpv) Аудио в текст ({0}) - Аудио в выбранные текстовые строки ({0}) + Извлечь аудио (выделенные строки) + Аудио в текст выделенных строк ({0}) Переключить яркость (только mpv) Перевод, пользовательский поиск 1 Перевод, пользовательский поиск 2 @@ -2900,7 +2905,7 @@ https://github.com/SubtitleEdit/subtitleedit Шрифт Название шрифта Размер шрифта - Используемый + Использован Первичный Вторичный Третичный @@ -2935,7 +2940,7 @@ https://github.com/SubtitleEdit/subtitleedit Удалить Заменить… Удалить все - Добавить стиль из файла + Импорт стиля из файла… Экспорт стиля… (стиль будет добавлен, если файл существует) Выбрать стиль для импорта Такой стиль существует: {0} From 3e91e80f6f1c117a565c1eebbb23505696766c52 Mon Sep 17 00:00:00 2001 From: May Kittens Devour Your Soul Date: Sun, 18 Jun 2023 21:20:37 +0200 Subject: [PATCH 21/96] Update srp_OCRFixReplaceList.xml --- Dictionaries/srp_OCRFixReplaceList.xml | 36 +++++++++++++------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/Dictionaries/srp_OCRFixReplaceList.xml b/Dictionaries/srp_OCRFixReplaceList.xml index 5a1fc2571..890345922 100644 --- a/Dictionaries/srp_OCRFixReplaceList.xml +++ b/Dictionaries/srp_OCRFixReplaceList.xml @@ -10,7 +10,7 @@ - + @@ -39,17 +39,17 @@ - - + + - - - + + + - + @@ -119,7 +119,7 @@ - + @@ -138,24 +138,24 @@ - + - + - - - + + + - - - - + + + + @@ -266,4 +266,4 @@ - \ No newline at end of file + From 19b678a4593ef53516fc056a887e27ff86ab16c5 Mon Sep 17 00:00:00 2001 From: niksedk Date: Mon, 19 Jun 2023 19:21:07 +0200 Subject: [PATCH 22/96] =?UTF-8?q?Update=20Bulgarian=20translation=20-=20th?= =?UTF-8?q?x=20=D0=9A=D0=B0=D0=BB=D0=B8=D0=BD=20:)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ui/Languages/bg-BG.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/ui/Languages/bg-BG.xml b/src/ui/Languages/bg-BG.xml index c22f23d4d..deb8d1ac9 100644 --- a/src/ui/Languages/bg-BG.xml +++ b/src/ui/Languages/bg-BG.xml @@ -3,7 +3,7 @@ Subtitle Edit 3.6.13 - Последен превод на български 15.05.2023: KalinM + Последен превод на български 19.06.2023: KalinM bg-BG OK @@ -1375,6 +1375,7 @@ https://github.com/SubtitleEdit/subtitleedit Побери по дължина Задай стил Задай актьор + Задай слой Инструменти на ASSA Sub Station Alpha (SSA) - стил... Настройка на стил Sub Station Alpha (SSA)... @@ -1470,6 +1471,7 @@ https://github.com/SubtitleEdit/subtitleedit Напред> Авт. прекъсни ОбединиВ1ред + Задай слой Превод From 1821d78f649b746512d1fe9519ec71d8558a90c2 Mon Sep 17 00:00:00 2001 From: niksedk Date: Mon, 19 Jun 2023 19:32:02 +0200 Subject: [PATCH 23/96] Work on WebVTT styles --- src/libse/Common/WebVttHelper.cs | 22 +- src/libse/Common/WebVttStyle.cs | 28 + src/ui/Forms/Assa/AssaStyles.Designer.cs | 22 +- src/ui/Forms/Assa/AssaStyles.cs | 2 +- src/ui/Forms/Main.cs | 5 +- .../Forms/VTT/WebVttStyleManager.Designer.cs | 303 ++++++--- src/ui/Forms/VTT/WebVttStyleManager.cs | 600 +++++++++++++++++- 7 files changed, 857 insertions(+), 125 deletions(-) diff --git a/src/libse/Common/WebVttHelper.cs b/src/libse/Common/WebVttHelper.cs index 5c58931b9..94544a1b4 100644 --- a/src/libse/Common/WebVttHelper.cs +++ b/src/libse/Common/WebVttHelper.cs @@ -33,6 +33,7 @@ namespace Nikse.SubtitleEdit.Core.Common { styleOn = false; AddStyle(result, currentStyle); + currentStyle = new StringBuilder(); } else { @@ -309,7 +310,7 @@ namespace Nikse.SubtitleEdit.Core.Common public static string AddStyleToHeader(string header, WebVttStyle style) { - var rawStyle = "::cue(." + style.Name + ") { " + GetCssProperties(style) + " }"; + var rawStyle = "::cue(." + style.Name.RemoveChar('.') + ") { " + GetCssProperties(style) + " }"; if (string.IsNullOrEmpty(header)) { @@ -343,7 +344,7 @@ namespace Nikse.SubtitleEdit.Core.Common return sb.ToString(); } - private static string GetCssProperties(WebVttStyle style) + public static string GetCssProperties(WebVttStyle style) { var sb = new StringBuilder(); @@ -391,6 +392,23 @@ namespace Nikse.SubtitleEdit.Core.Common sb.Append("text-decoration:line-through; "); } + if (!string.IsNullOrEmpty(style.FontName)) + { + sb.Append($"font-family:{style.FontName}; "); + } + + if (style.FontSize.HasValue && style.FontSize > 0) + { + sb.Append($"font-size:{style.FontSize}px; "); + } + + if (style.ShadowColor.HasValue && style.ShadowWidth.HasValue && style.ShadowWidth > 0) + { + var colorString = Utilities.ColorToHexWithTransparency(style.ShadowColor.Value); + var widthString = "{style.ShadowWidth.Value.ToString(CultureInfo.InvariantCulture)} px"; + sb.Append($"text-shadow: {colorString} {widthString}"); + } + return sb.ToString().TrimEnd(' ', ';'); } diff --git a/src/libse/Common/WebVttStyle.cs b/src/libse/Common/WebVttStyle.cs index d557ef5ab..28e428db9 100644 --- a/src/libse/Common/WebVttStyle.cs +++ b/src/libse/Common/WebVttStyle.cs @@ -15,5 +15,33 @@ namespace Nikse.SubtitleEdit.Core.Common public bool? StrikeThrough { get; set; } public decimal? ShadowWidth { get; set; } public Color? ShadowColor { get; set; } + + public WebVttStyle() + { + + } + + public WebVttStyle(WebVttStyle style) + { + Name = style.Name; + FontName = style.FontName; + FontSize = style.FontSize; + Color = style.Color; + BackgroundColor = style.BackgroundColor; + Bold = style.Bold; + Underline = style.Underline; + StrikeThrough = style.StrikeThrough; + ShadowWidth = style.ShadowWidth; + ShadowColor = style.ShadowColor; + Underline = style.Underline; + ShadowWidth = style.ShadowWidth; + StrikeThrough = style.StrikeThrough; + ShadowWidth = style.ShadowWidth; + } + + public override string ToString() + { + return WebVttHelper.GetCssProperties(this); + } } } \ No newline at end of file diff --git a/src/ui/Forms/Assa/AssaStyles.Designer.cs b/src/ui/Forms/Assa/AssaStyles.Designer.cs index 493445558..f3b6103ba 100644 --- a/src/ui/Forms/Assa/AssaStyles.Designer.cs +++ b/src/ui/Forms/Assa/AssaStyles.Designer.cs @@ -38,8 +38,8 @@ this.columnHeaderOutline = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.contextMenuStripFile = new System.Windows.Forms.ContextMenuStrip(this.components); this.deleteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.removeAndReplaceWithToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItemRemoveAll = new System.Windows.Forms.ToolStripMenuItem(); + this.removeAndReplaceWithToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); this.addToStorageToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator(); @@ -272,7 +272,7 @@ this.toolStripMenuItemImport, this.toolStripMenuItemExport}); this.contextMenuStripFile.Name = "contextMenuStrip1"; - this.contextMenuStripFile.Size = new System.Drawing.Size(216, 314); + this.contextMenuStripFile.Size = new System.Drawing.Size(216, 292); this.contextMenuStripFile.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStripFile_Opening); // // deleteToolStripMenuItem @@ -283,13 +283,6 @@ this.deleteToolStripMenuItem.Text = "Remove"; this.deleteToolStripMenuItem.Click += new System.EventHandler(this.buttonRemove_Click); // - // removeAndReplaceWithToolStripMenuItem - // - this.removeAndReplaceWithToolStripMenuItem.Name = "removeAndReplaceWithToolStripMenuItem"; - this.removeAndReplaceWithToolStripMenuItem.Size = new System.Drawing.Size(215, 22); - this.removeAndReplaceWithToolStripMenuItem.Text = "Replace with..."; - this.removeAndReplaceWithToolStripMenuItem.Click += new System.EventHandler(this.buttonRemoveAndReplaceWith_Click); - // // toolStripMenuItemRemoveAll // this.toolStripMenuItemRemoveAll.Name = "toolStripMenuItemRemoveAll"; @@ -297,6 +290,13 @@ this.toolStripMenuItemRemoveAll.Text = "Remove all"; this.toolStripMenuItemRemoveAll.Click += new System.EventHandler(this.buttonRemoveAll_Click); // + // removeAndReplaceWithToolStripMenuItem + // + this.removeAndReplaceWithToolStripMenuItem.Name = "removeAndReplaceWithToolStripMenuItem"; + this.removeAndReplaceWithToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + this.removeAndReplaceWithToolStripMenuItem.Text = "Replace with..."; + this.removeAndReplaceWithToolStripMenuItem.Click += new System.EventHandler(this.buttonRemoveAndReplaceWith_Click); + // // toolStripSeparator4 // this.toolStripSeparator4.Name = "toolStripSeparator4"; @@ -1217,6 +1217,7 @@ this.groupBoxStorage.Controls.Add(this.buttonAddToFile); this.groupBoxStorage.Controls.Add(this.buttonStorageExport); this.groupBoxStorage.Controls.Add(this.buttonStorageImport); + this.groupBoxStorage.Controls.Add(this.labelDuplicateStyleNames); this.groupBoxStorage.Controls.Add(this.buttonStorageCopy); this.groupBoxStorage.Controls.Add(this.buttonStorageRemoveAll); this.groupBoxStorage.Controls.Add(this.buttonStorageAdd); @@ -1619,7 +1620,7 @@ this.labelDuplicateStyleNames.AutoSize = true; this.labelDuplicateStyleNames.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.labelDuplicateStyleNames.ForeColor = System.Drawing.Color.Firebrick; - this.labelDuplicateStyleNames.Location = new System.Drawing.Point(12, 648); + this.labelDuplicateStyleNames.Location = new System.Drawing.Point(494, 102); this.labelDuplicateStyleNames.Name = "labelDuplicateStyleNames"; this.labelDuplicateStyleNames.Size = new System.Drawing.Size(154, 13); this.labelDuplicateStyleNames.TabIndex = 10; @@ -1630,7 +1631,6 @@ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(1064, 670); - this.Controls.Add(this.labelDuplicateStyleNames); this.Controls.Add(this.buttonApply); this.Controls.Add(this.splitContainer1); this.Controls.Add(this.labelStatus); diff --git a/src/ui/Forms/Assa/AssaStyles.cs b/src/ui/Forms/Assa/AssaStyles.cs index 52b99695e..547326fcb 100644 --- a/src/ui/Forms/Assa/AssaStyles.cs +++ b/src/ui/Forms/Assa/AssaStyles.cs @@ -2306,7 +2306,7 @@ namespace Nikse.SubtitleEdit.Forms.Assa private void UpdateCurrentFileButtonsState() { - bool oneOrMoreSelected = listViewStyles.SelectedItems.Count > 0; + var oneOrMoreSelected = listViewStyles.SelectedItems.Count > 0; buttonRemove.Enabled = oneOrMoreSelected; buttonCopy.Enabled = oneOrMoreSelected; buttonAddStyleToStorage.Enabled = oneOrMoreSelected; diff --git a/src/ui/Forms/Main.cs b/src/ui/Forms/Main.cs index 9320d98fb..626a1b55a 100644 --- a/src/ui/Forms/Main.cs +++ b/src/ui/Forms/Main.cs @@ -30861,16 +30861,15 @@ namespace Nikse.SubtitleEdit.Forms } else if (formatType == typeof(WebVTT) || formatType == typeof(WebVTTFileWithLineNumber)) { - using (var styles = new WebVttStyleManager(_subtitle)) + using (var styles = new WebVttStyleManager(_subtitle, FirstSelectedIndex)) { if (styles.ShowDialog(this) == DialogResult.OK) { if (_subtitle.Header != styles.Header) { MakeHistoryForUndo(styles.Text); + _subtitle.Header = styles.Header; } - - _subtitle.Header = styles.Header; } } } diff --git a/src/ui/Forms/VTT/WebVttStyleManager.Designer.cs b/src/ui/Forms/VTT/WebVttStyleManager.Designer.cs index 81cc88ca5..6b00dc30d 100644 --- a/src/ui/Forms/VTT/WebVttStyleManager.Designer.cs +++ b/src/ui/Forms/VTT/WebVttStyleManager.Designer.cs @@ -39,25 +39,32 @@ this.columnHeaderName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnHeaderFontName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnHeaderFontSize = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeaderItalic = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeaderForeColor = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeaderBackgroundColor = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnHeaderUseCount = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.columnHeaderPrimaryColor = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.columnHeaderOutline = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.groupBoxProperties = new System.Windows.Forms.GroupBox(); + this.groupBoxAfter = new System.Windows.Forms.GroupBox(); + this.labelAfter = new System.Windows.Forms.Label(); + this.groupBoxBefore = new System.Windows.Forms.GroupBox(); + this.labelBefore = new System.Windows.Forms.Label(); this.textBoxStyleName = new System.Windows.Forms.TextBox(); this.labelStyleName = new System.Windows.Forms.Label(); this.groupBoxPreview = new System.Windows.Forms.GroupBox(); this.pictureBoxPreview = new System.Windows.Forms.PictureBox(); this.groupBoxFont = new System.Windows.Forms.GroupBox(); - this.panelBackColor = new System.Windows.Forms.Panel(); - this.buttonBackColor = new System.Windows.Forms.Button(); + this.checkBoxShadowEnabled = new System.Windows.Forms.CheckBox(); + this.checkBoxBackgroundColorEnabled = new System.Windows.Forms.CheckBox(); + this.checkBoxColorEnabled = new System.Windows.Forms.CheckBox(); + this.panelShadowColor = new System.Windows.Forms.Panel(); + this.buttonShadowColor = new System.Windows.Forms.Button(); this.numericUpDownShadowWidth = new System.Windows.Forms.NumericUpDown(); - this.panelSecondaryColor = new System.Windows.Forms.Panel(); + this.panelBackgroundColor = new System.Windows.Forms.Panel(); this.labelShadow = new System.Windows.Forms.Label(); - this.buttonSecondaryColor = new System.Windows.Forms.Button(); + this.buttonBackgroundColor = new System.Windows.Forms.Button(); this.panelPrimaryColor = new System.Windows.Forms.Panel(); this.checkBoxStrikeout = new System.Windows.Forms.CheckBox(); this.buttonPrimaryColor = new System.Windows.Forms.Button(); - this.buttonPickAttachmentFont = new System.Windows.Forms.Button(); this.checkBoxFontUnderline = new System.Windows.Forms.CheckBox(); this.numericUpDownFontSize = new System.Windows.Forms.NumericUpDown(); this.checkBoxFontItalic = new System.Windows.Forms.CheckBox(); @@ -68,10 +75,11 @@ this.buttonApply = new System.Windows.Forms.Button(); this.buttonCancel = new System.Windows.Forms.Button(); this.buttonOK = new System.Windows.Forms.Button(); - this.checkBoxColorEnabled = new System.Windows.Forms.CheckBox(); - this.checkBoxBackgroundColorEnabled = new System.Windows.Forms.CheckBox(); + this.labelDuplicateStyleNames = new System.Windows.Forms.Label(); this.groupBoxStyles.SuspendLayout(); this.groupBoxProperties.SuspendLayout(); + this.groupBoxAfter.SuspendLayout(); + this.groupBoxBefore.SuspendLayout(); this.groupBoxPreview.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBoxPreview)).BeginInit(); this.groupBoxFont.SuspendLayout(); @@ -127,6 +135,7 @@ this.buttonCopy.TabIndex = 6; this.buttonCopy.Text = "Copy"; this.buttonCopy.UseVisualStyleBackColor = true; + this.buttonCopy.Click += new System.EventHandler(this.buttonCopy_Click); // // buttonRemoveAll // @@ -138,6 +147,7 @@ this.buttonRemoveAll.TabIndex = 7; this.buttonRemoveAll.Text = "Remove all"; this.buttonRemoveAll.UseVisualStyleBackColor = true; + this.buttonRemoveAll.Click += new System.EventHandler(this.buttonRemoveAll_Click); // // buttonAdd // @@ -149,6 +159,7 @@ this.buttonAdd.TabIndex = 2; this.buttonAdd.Text = "New"; this.buttonAdd.UseVisualStyleBackColor = true; + this.buttonAdd.Click += new System.EventHandler(this.buttonAdd_Click); // // buttonRemove // @@ -160,6 +171,7 @@ this.buttonRemove.TabIndex = 3; this.buttonRemove.Text = "Remove"; this.buttonRemove.UseVisualStyleBackColor = true; + this.buttonRemove.Click += new System.EventHandler(this.buttonRemove_Click); // // listViewStyles // @@ -170,9 +182,10 @@ this.columnHeaderName, this.columnHeaderFontName, this.columnHeaderFontSize, - this.columnHeaderUseCount, - this.columnHeaderPrimaryColor, - this.columnHeaderOutline}); + this.columnHeaderItalic, + this.columnHeaderForeColor, + this.columnHeaderBackgroundColor, + this.columnHeaderUseCount}); this.listViewStyles.FullRowSelect = true; this.listViewStyles.HideSelection = false; this.listViewStyles.Location = new System.Drawing.Point(6, 19); @@ -181,6 +194,7 @@ this.listViewStyles.TabIndex = 0; this.listViewStyles.UseCompatibleStateImageBehavior = false; this.listViewStyles.View = System.Windows.Forms.View.Details; + this.listViewStyles.SelectedIndexChanged += new System.EventHandler(this.listViewStyles_SelectedIndexChanged); // // columnHeaderName // @@ -190,32 +204,38 @@ // columnHeaderFontName // this.columnHeaderFontName.Text = "Font name"; - this.columnHeaderFontName.Width = 128; + this.columnHeaderFontName.Width = 122; // // columnHeaderFontSize // this.columnHeaderFontSize.Text = "Font size"; this.columnHeaderFontSize.Width = 80; // + // columnHeaderItalic + // + this.columnHeaderItalic.Text = "Italic"; + // + // columnHeaderForeColor + // + this.columnHeaderForeColor.Text = "BG"; + this.columnHeaderForeColor.Width = 70; + // + // columnHeaderBackgroundColor + // + this.columnHeaderBackgroundColor.Text = "Text"; + this.columnHeaderBackgroundColor.Width = 55; + // // columnHeaderUseCount // this.columnHeaderUseCount.Text = "Used#"; // - // columnHeaderPrimaryColor - // - this.columnHeaderPrimaryColor.Text = "Primary"; - this.columnHeaderPrimaryColor.Width = 70; - // - // columnHeaderOutline - // - this.columnHeaderOutline.Text = "Outline"; - this.columnHeaderOutline.Width = 55; - // // groupBoxProperties // this.groupBoxProperties.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.groupBoxProperties.Controls.Add(this.groupBoxAfter); + this.groupBoxProperties.Controls.Add(this.groupBoxBefore); this.groupBoxProperties.Controls.Add(this.textBoxStyleName); this.groupBoxProperties.Controls.Add(this.labelStyleName); this.groupBoxProperties.Controls.Add(this.groupBoxPreview); @@ -227,6 +247,46 @@ this.groupBoxProperties.TabStop = false; this.groupBoxProperties.Text = "Properties"; // + // groupBoxAfter + // + this.groupBoxAfter.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBoxAfter.Controls.Add(this.labelAfter); + this.groupBoxAfter.Location = new System.Drawing.Point(249, 259); + this.groupBoxAfter.Name = "groupBoxAfter"; + this.groupBoxAfter.Size = new System.Drawing.Size(229, 136); + this.groupBoxAfter.TabIndex = 12; + this.groupBoxAfter.TabStop = false; + this.groupBoxAfter.Text = "After"; + // + // labelAfter + // + this.labelAfter.AutoSize = true; + this.labelAfter.Location = new System.Drawing.Point(6, 16); + this.labelAfter.Name = "labelAfter"; + this.labelAfter.Size = new System.Drawing.Size(51, 13); + this.labelAfter.TabIndex = 1; + this.labelAfter.Text = "labelAfter"; + // + // groupBoxBefore + // + this.groupBoxBefore.Controls.Add(this.labelBefore); + this.groupBoxBefore.Location = new System.Drawing.Point(10, 259); + this.groupBoxBefore.Name = "groupBoxBefore"; + this.groupBoxBefore.Size = new System.Drawing.Size(233, 136); + this.groupBoxBefore.TabIndex = 11; + this.groupBoxBefore.TabStop = false; + this.groupBoxBefore.Text = "Before"; + // + // labelBefore + // + this.labelBefore.AutoSize = true; + this.labelBefore.Location = new System.Drawing.Point(7, 20); + this.labelBefore.Name = "labelBefore"; + this.labelBefore.Size = new System.Drawing.Size(60, 13); + this.labelBefore.TabIndex = 0; + this.labelBefore.Text = "labelBefore"; + // // textBoxStyleName // this.textBoxStyleName.Location = new System.Drawing.Point(49, 22); @@ -249,9 +309,9 @@ | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.groupBoxPreview.Controls.Add(this.pictureBoxPreview); - this.groupBoxPreview.Location = new System.Drawing.Point(7, 335); + this.groupBoxPreview.Location = new System.Drawing.Point(7, 401); this.groupBoxPreview.Name = "groupBoxPreview"; - this.groupBoxPreview.Size = new System.Drawing.Size(472, 258); + this.groupBoxPreview.Size = new System.Drawing.Size(472, 192); this.groupBoxPreview.TabIndex = 7; this.groupBoxPreview.TabStop = false; this.groupBoxPreview.Text = "Preview"; @@ -261,7 +321,7 @@ this.pictureBoxPreview.Dock = System.Windows.Forms.DockStyle.Fill; this.pictureBoxPreview.Location = new System.Drawing.Point(3, 16); this.pictureBoxPreview.Name = "pictureBoxPreview"; - this.pictureBoxPreview.Size = new System.Drawing.Size(466, 239); + this.pictureBoxPreview.Size = new System.Drawing.Size(466, 173); this.pictureBoxPreview.TabIndex = 0; this.pictureBoxPreview.TabStop = false; // @@ -269,18 +329,18 @@ // this.groupBoxFont.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); + this.groupBoxFont.Controls.Add(this.checkBoxShadowEnabled); this.groupBoxFont.Controls.Add(this.checkBoxBackgroundColorEnabled); this.groupBoxFont.Controls.Add(this.checkBoxColorEnabled); - this.groupBoxFont.Controls.Add(this.panelBackColor); - this.groupBoxFont.Controls.Add(this.buttonBackColor); + this.groupBoxFont.Controls.Add(this.panelShadowColor); + this.groupBoxFont.Controls.Add(this.buttonShadowColor); this.groupBoxFont.Controls.Add(this.numericUpDownShadowWidth); - this.groupBoxFont.Controls.Add(this.panelSecondaryColor); + this.groupBoxFont.Controls.Add(this.panelBackgroundColor); this.groupBoxFont.Controls.Add(this.labelShadow); - this.groupBoxFont.Controls.Add(this.buttonSecondaryColor); + this.groupBoxFont.Controls.Add(this.buttonBackgroundColor); this.groupBoxFont.Controls.Add(this.panelPrimaryColor); this.groupBoxFont.Controls.Add(this.checkBoxStrikeout); this.groupBoxFont.Controls.Add(this.buttonPrimaryColor); - this.groupBoxFont.Controls.Add(this.buttonPickAttachmentFont); this.groupBoxFont.Controls.Add(this.checkBoxFontUnderline); this.groupBoxFont.Controls.Add(this.numericUpDownFontSize); this.groupBoxFont.Controls.Add(this.checkBoxFontItalic); @@ -290,27 +350,64 @@ this.groupBoxFont.Controls.Add(this.labelFontName); this.groupBoxFont.Location = new System.Drawing.Point(7, 51); this.groupBoxFont.Name = "groupBoxFont"; - this.groupBoxFont.Size = new System.Drawing.Size(472, 278); + this.groupBoxFont.Size = new System.Drawing.Size(472, 202); this.groupBoxFont.TabIndex = 2; this.groupBoxFont.TabStop = false; this.groupBoxFont.Text = "Font"; // - // panelBackColor + // checkBoxShadowEnabled // - this.panelBackColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.panelBackColor.Location = new System.Drawing.Point(371, 138); - this.panelBackColor.Name = "panelBackColor"; - this.panelBackColor.Size = new System.Drawing.Size(21, 20); - this.panelBackColor.TabIndex = 7; + this.checkBoxShadowEnabled.AutoSize = true; + this.checkBoxShadowEnabled.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.checkBoxShadowEnabled.Location = new System.Drawing.Point(282, 119); + this.checkBoxShadowEnabled.Name = "checkBoxShadowEnabled"; + this.checkBoxShadowEnabled.Size = new System.Drawing.Size(65, 17); + this.checkBoxShadowEnabled.TabIndex = 11; + this.checkBoxShadowEnabled.Text = "Enabled"; + this.checkBoxShadowEnabled.UseVisualStyleBackColor = true; + this.checkBoxShadowEnabled.CheckedChanged += new System.EventHandler(this.checkBoxShadowEnabled_CheckedChanged); // - // buttonBackColor + // checkBoxBackgroundColorEnabled // - this.buttonBackColor.Location = new System.Drawing.Point(282, 137); - this.buttonBackColor.Name = "buttonBackColor"; - this.buttonBackColor.Size = new System.Drawing.Size(84, 23); - this.buttonBackColor.TabIndex = 6; - this.buttonBackColor.Text = "Shadow"; - this.buttonBackColor.UseVisualStyleBackColor = true; + this.checkBoxBackgroundColorEnabled.AutoSize = true; + this.checkBoxBackgroundColorEnabled.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.checkBoxBackgroundColorEnabled.Location = new System.Drawing.Point(135, 119); + this.checkBoxBackgroundColorEnabled.Name = "checkBoxBackgroundColorEnabled"; + this.checkBoxBackgroundColorEnabled.Size = new System.Drawing.Size(65, 17); + this.checkBoxBackgroundColorEnabled.TabIndex = 10; + this.checkBoxBackgroundColorEnabled.Text = "Enabled"; + this.checkBoxBackgroundColorEnabled.UseVisualStyleBackColor = true; + this.checkBoxBackgroundColorEnabled.CheckedChanged += new System.EventHandler(this.checkBoxBackgroundColorEnabled_CheckedChanged); + // + // checkBoxColorEnabled + // + this.checkBoxColorEnabled.AutoSize = true; + this.checkBoxColorEnabled.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.checkBoxColorEnabled.Location = new System.Drawing.Point(16, 119); + this.checkBoxColorEnabled.Name = "checkBoxColorEnabled"; + this.checkBoxColorEnabled.Size = new System.Drawing.Size(65, 17); + this.checkBoxColorEnabled.TabIndex = 9; + this.checkBoxColorEnabled.Text = "Enabled"; + this.checkBoxColorEnabled.UseVisualStyleBackColor = true; + this.checkBoxColorEnabled.CheckedChanged += new System.EventHandler(this.checkBoxColorEnabled_CheckedChanged); + // + // panelShadowColor + // + this.panelShadowColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panelShadowColor.Location = new System.Drawing.Point(371, 143); + this.panelShadowColor.Name = "panelShadowColor"; + this.panelShadowColor.Size = new System.Drawing.Size(21, 20); + this.panelShadowColor.TabIndex = 7; + this.panelShadowColor.Click += new System.EventHandler(this.panelShadowColor_Click); + // + // buttonShadowColor + // + this.buttonShadowColor.Location = new System.Drawing.Point(282, 142); + this.buttonShadowColor.Name = "buttonShadowColor"; + this.buttonShadowColor.Size = new System.Drawing.Size(84, 23); + this.buttonShadowColor.TabIndex = 6; + this.buttonShadowColor.Text = "Shadow"; + this.buttonShadowColor.UseVisualStyleBackColor = true; // // numericUpDownShadowWidth // @@ -320,50 +417,53 @@ 0, 0, 65536}); - this.numericUpDownShadowWidth.Location = new System.Drawing.Point(286, 166); + this.numericUpDownShadowWidth.Location = new System.Drawing.Point(286, 171); this.numericUpDownShadowWidth.Name = "numericUpDownShadowWidth"; this.numericUpDownShadowWidth.Size = new System.Drawing.Size(52, 20); this.numericUpDownShadowWidth.TabIndex = 2; // - // panelSecondaryColor + // panelBackgroundColor // - this.panelSecondaryColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.panelSecondaryColor.Location = new System.Drawing.Point(242, 138); - this.panelSecondaryColor.Name = "panelSecondaryColor"; - this.panelSecondaryColor.Size = new System.Drawing.Size(21, 20); - this.panelSecondaryColor.TabIndex = 3; + this.panelBackgroundColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panelBackgroundColor.Location = new System.Drawing.Point(242, 143); + this.panelBackgroundColor.Name = "panelBackgroundColor"; + this.panelBackgroundColor.Size = new System.Drawing.Size(21, 20); + this.panelBackgroundColor.TabIndex = 3; + this.panelBackgroundColor.Click += new System.EventHandler(this.panelBackgroundColor_Click); // // labelShadow // this.labelShadow.AutoSize = true; - this.labelShadow.Location = new System.Drawing.Point(344, 168); + this.labelShadow.Location = new System.Drawing.Point(344, 173); this.labelShadow.Name = "labelShadow"; this.labelShadow.Size = new System.Drawing.Size(46, 13); this.labelShadow.TabIndex = 2; this.labelShadow.Text = "Shadow"; // - // buttonSecondaryColor + // buttonBackgroundColor // - this.buttonSecondaryColor.Location = new System.Drawing.Point(135, 137); - this.buttonSecondaryColor.Name = "buttonSecondaryColor"; - this.buttonSecondaryColor.Size = new System.Drawing.Size(101, 23); - this.buttonSecondaryColor.TabIndex = 2; - this.buttonSecondaryColor.Text = "Background"; - this.buttonSecondaryColor.UseVisualStyleBackColor = true; + this.buttonBackgroundColor.Location = new System.Drawing.Point(135, 142); + this.buttonBackgroundColor.Name = "buttonBackgroundColor"; + this.buttonBackgroundColor.Size = new System.Drawing.Size(101, 23); + this.buttonBackgroundColor.TabIndex = 2; + this.buttonBackgroundColor.Text = "Background"; + this.buttonBackgroundColor.UseVisualStyleBackColor = true; + this.buttonBackgroundColor.Click += new System.EventHandler(this.buttonBackgroundColor_Click); // // panelPrimaryColor // this.panelPrimaryColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.panelPrimaryColor.Location = new System.Drawing.Point(100, 138); + this.panelPrimaryColor.Location = new System.Drawing.Point(100, 143); this.panelPrimaryColor.Name = "panelPrimaryColor"; this.panelPrimaryColor.Size = new System.Drawing.Size(21, 20); this.panelPrimaryColor.TabIndex = 1; + this.panelPrimaryColor.Click += new System.EventHandler(this.panelPrimaryColor_Click); // // checkBoxStrikeout // this.checkBoxStrikeout.AutoSize = true; this.checkBoxStrikeout.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Strikeout, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.checkBoxStrikeout.Location = new System.Drawing.Point(246, 62); + this.checkBoxStrikeout.Location = new System.Drawing.Point(246, 59); this.checkBoxStrikeout.Name = "checkBoxStrikeout"; this.checkBoxStrikeout.Size = new System.Drawing.Size(68, 17); this.checkBoxStrikeout.TabIndex = 8; @@ -372,27 +472,19 @@ // // buttonPrimaryColor // - this.buttonPrimaryColor.Location = new System.Drawing.Point(14, 137); + this.buttonPrimaryColor.Location = new System.Drawing.Point(14, 142); this.buttonPrimaryColor.Name = "buttonPrimaryColor"; this.buttonPrimaryColor.Size = new System.Drawing.Size(80, 23); this.buttonPrimaryColor.TabIndex = 0; this.buttonPrimaryColor.Text = "&Color"; this.buttonPrimaryColor.UseVisualStyleBackColor = true; - // - // buttonPickAttachmentFont - // - this.buttonPickAttachmentFont.Location = new System.Drawing.Point(267, 17); - this.buttonPickAttachmentFont.Name = "buttonPickAttachmentFont"; - this.buttonPickAttachmentFont.Size = new System.Drawing.Size(24, 23); - this.buttonPickAttachmentFont.TabIndex = 2; - this.buttonPickAttachmentFont.Text = "..."; - this.buttonPickAttachmentFont.UseVisualStyleBackColor = true; + this.buttonPrimaryColor.Click += new System.EventHandler(this.buttonPrimaryColor_Click); // // checkBoxFontUnderline // this.checkBoxFontUnderline.AutoSize = true; this.checkBoxFontUnderline.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.checkBoxFontUnderline.Location = new System.Drawing.Point(169, 62); + this.checkBoxFontUnderline.Location = new System.Drawing.Point(169, 59); this.checkBoxFontUnderline.Name = "checkBoxFontUnderline"; this.checkBoxFontUnderline.Size = new System.Drawing.Size(71, 17); this.checkBoxFontUnderline.TabIndex = 7; @@ -411,12 +503,13 @@ this.numericUpDownFontSize.Name = "numericUpDownFontSize"; this.numericUpDownFontSize.Size = new System.Drawing.Size(51, 20); this.numericUpDownFontSize.TabIndex = 4; + this.numericUpDownFontSize.ValueChanged += new System.EventHandler(this.numericUpDownFontSize_ValueChanged); // // checkBoxFontItalic // this.checkBoxFontItalic.AutoSize = true; this.checkBoxFontItalic.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.checkBoxFontItalic.Location = new System.Drawing.Point(90, 62); + this.checkBoxFontItalic.Location = new System.Drawing.Point(90, 59); this.checkBoxFontItalic.Name = "checkBoxFontItalic"; this.checkBoxFontItalic.Size = new System.Drawing.Size(48, 17); this.checkBoxFontItalic.TabIndex = 6; @@ -427,7 +520,7 @@ // this.checkBoxFontBold.AutoSize = true; this.checkBoxFontBold.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.checkBoxFontBold.Location = new System.Drawing.Point(13, 62); + this.checkBoxFontBold.Location = new System.Drawing.Point(13, 59); this.checkBoxFontBold.Name = "checkBoxFontBold"; this.checkBoxFontBold.Size = new System.Drawing.Size(51, 17); this.checkBoxFontBold.TabIndex = 5; @@ -441,6 +534,7 @@ this.comboBoxFontName.Name = "comboBoxFontName"; this.comboBoxFontName.Size = new System.Drawing.Size(188, 21); this.comboBoxFontName.TabIndex = 1; + this.comboBoxFontName.TextChanged += new System.EventHandler(this.comboBoxFontName_TextChanged); // // labelFontSize // @@ -470,6 +564,7 @@ this.buttonApply.TabIndex = 4; this.buttonApply.Text = "&Apply"; this.buttonApply.UseVisualStyleBackColor = true; + this.buttonApply.Click += new System.EventHandler(this.buttonApply_Click); // // buttonCancel // @@ -493,40 +588,33 @@ this.buttonOK.TabIndex = 5; this.buttonOK.Text = "&OK"; this.buttonOK.UseVisualStyleBackColor = true; + this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click); // - // checkBoxColorEnabled + // labelDuplicateStyleNames // - this.checkBoxColorEnabled.AutoSize = true; - this.checkBoxColorEnabled.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.checkBoxColorEnabled.Location = new System.Drawing.Point(16, 114); - this.checkBoxColorEnabled.Name = "checkBoxColorEnabled"; - this.checkBoxColorEnabled.Size = new System.Drawing.Size(65, 17); - this.checkBoxColorEnabled.TabIndex = 9; - this.checkBoxColorEnabled.Text = "Enabled"; - this.checkBoxColorEnabled.UseVisualStyleBackColor = true; - // - // checkBoxBackgroundColorEnabled - // - this.checkBoxBackgroundColorEnabled.AutoSize = true; - this.checkBoxBackgroundColorEnabled.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.checkBoxBackgroundColorEnabled.Location = new System.Drawing.Point(135, 114); - this.checkBoxBackgroundColorEnabled.Name = "checkBoxBackgroundColorEnabled"; - this.checkBoxBackgroundColorEnabled.Size = new System.Drawing.Size(65, 17); - this.checkBoxBackgroundColorEnabled.TabIndex = 10; - this.checkBoxBackgroundColorEnabled.Text = "Enabled"; - this.checkBoxBackgroundColorEnabled.UseVisualStyleBackColor = true; + this.labelDuplicateStyleNames.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.labelDuplicateStyleNames.AutoSize = true; + this.labelDuplicateStyleNames.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.labelDuplicateStyleNames.ForeColor = System.Drawing.Color.Firebrick; + this.labelDuplicateStyleNames.Location = new System.Drawing.Point(5, 632); + this.labelDuplicateStyleNames.Name = "labelDuplicateStyleNames"; + this.labelDuplicateStyleNames.Size = new System.Drawing.Size(154, 13); + this.labelDuplicateStyleNames.TabIndex = 11; + this.labelDuplicateStyleNames.Text = "labelDuplicateStyleNames"; // // WebVttStyleManager // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(1110, 654); + this.Controls.Add(this.labelDuplicateStyleNames); this.Controls.Add(this.buttonApply); this.Controls.Add(this.buttonCancel); this.Controls.Add(this.buttonOK); this.Controls.Add(this.groupBoxProperties); this.Controls.Add(this.groupBoxStyles); this.KeyPreview = true; + this.MinimumSize = new System.Drawing.Size(1100, 680); this.Name = "WebVttStyleManager"; this.ShowIcon = false; this.ShowInTaskbar = false; @@ -535,6 +623,10 @@ this.groupBoxStyles.ResumeLayout(false); this.groupBoxProperties.ResumeLayout(false); this.groupBoxProperties.PerformLayout(); + this.groupBoxAfter.ResumeLayout(false); + this.groupBoxAfter.PerformLayout(); + this.groupBoxBefore.ResumeLayout(false); + this.groupBoxBefore.PerformLayout(); this.groupBoxPreview.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.pictureBoxPreview)).EndInit(); this.groupBoxFont.ResumeLayout(false); @@ -542,6 +634,7 @@ ((System.ComponentModel.ISupportInitialize)(this.numericUpDownShadowWidth)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownFontSize)).EndInit(); this.ResumeLayout(false); + this.PerformLayout(); } @@ -559,24 +652,23 @@ private System.Windows.Forms.ColumnHeader columnHeaderFontName; private System.Windows.Forms.ColumnHeader columnHeaderFontSize; private System.Windows.Forms.ColumnHeader columnHeaderUseCount; - private System.Windows.Forms.ColumnHeader columnHeaderPrimaryColor; - private System.Windows.Forms.ColumnHeader columnHeaderOutline; + private System.Windows.Forms.ColumnHeader columnHeaderForeColor; + private System.Windows.Forms.ColumnHeader columnHeaderBackgroundColor; private System.Windows.Forms.GroupBox groupBoxProperties; private System.Windows.Forms.NumericUpDown numericUpDownShadowWidth; private System.Windows.Forms.Label labelShadow; private System.Windows.Forms.TextBox textBoxStyleName; private System.Windows.Forms.Label labelStyleName; - private System.Windows.Forms.Panel panelBackColor; - private System.Windows.Forms.Button buttonBackColor; - private System.Windows.Forms.Panel panelSecondaryColor; - private System.Windows.Forms.Button buttonSecondaryColor; + private System.Windows.Forms.Panel panelShadowColor; + private System.Windows.Forms.Button buttonShadowColor; + private System.Windows.Forms.Panel panelBackgroundColor; + private System.Windows.Forms.Button buttonBackgroundColor; private System.Windows.Forms.Panel panelPrimaryColor; private System.Windows.Forms.Button buttonPrimaryColor; private System.Windows.Forms.GroupBox groupBoxPreview; private System.Windows.Forms.PictureBox pictureBoxPreview; private System.Windows.Forms.GroupBox groupBoxFont; private System.Windows.Forms.CheckBox checkBoxStrikeout; - private System.Windows.Forms.Button buttonPickAttachmentFont; private System.Windows.Forms.CheckBox checkBoxFontUnderline; private System.Windows.Forms.NumericUpDown numericUpDownFontSize; private System.Windows.Forms.CheckBox checkBoxFontItalic; @@ -589,5 +681,12 @@ private System.Windows.Forms.Button buttonOK; private System.Windows.Forms.CheckBox checkBoxColorEnabled; private System.Windows.Forms.CheckBox checkBoxBackgroundColorEnabled; + private System.Windows.Forms.GroupBox groupBoxAfter; + private System.Windows.Forms.GroupBox groupBoxBefore; + private System.Windows.Forms.ColumnHeader columnHeaderItalic; + private System.Windows.Forms.Label labelAfter; + private System.Windows.Forms.Label labelBefore; + private System.Windows.Forms.CheckBox checkBoxShadowEnabled; + private System.Windows.Forms.Label labelDuplicateStyleNames; } } \ No newline at end of file diff --git a/src/ui/Forms/VTT/WebVttStyleManager.cs b/src/ui/Forms/VTT/WebVttStyleManager.cs index 885a04324..4527a8c0a 100644 --- a/src/ui/Forms/VTT/WebVttStyleManager.cs +++ b/src/ui/Forms/VTT/WebVttStyleManager.cs @@ -1,23 +1,611 @@ -using System; +using Nikse.SubtitleEdit.Core.Common; +using Nikse.SubtitleEdit.Logic; +using System; using System.Collections.Generic; -using System.ComponentModel; -using System.Data; using System.Drawing; +using System.Globalization; using System.Linq; using System.Text; -using System.Threading.Tasks; using System.Windows.Forms; -using Nikse.SubtitleEdit.Core.Common; namespace Nikse.SubtitleEdit.Forms.VTT { public partial class WebVttStyleManager : Form { public string Header { get; set; } + private readonly List _webVttStyles; + private readonly List _originalWebVttStyles; + private WebVttStyle _currentStyle; + private readonly Subtitle _subtitle; + private string _startName; + private string _editedName; + private bool _doUpdate; - public WebVttStyleManager(Subtitle subtitle) + public WebVttStyleManager(Subtitle subtitle, int index) { + UiUtil.PreInitialize(this); InitializeComponent(); + UiUtil.FixFonts(this); + UiUtil.FixLargeFonts(this, buttonOK); + + _subtitle = subtitle; + _webVttStyles = WebVttHelper.GetStyles(subtitle); + _originalWebVttStyles = WebVttHelper.GetStyles(subtitle); + Header = subtitle.Header; + InitializeStylesListView(_subtitle.GetParagraphOrDefault(index)?.Extra); + CheckDuplicateStyles(); + + var fontNames = new List(); + foreach (var x in FontFamily.Families) + { + fontNames.Add(x.Name); + } + comboBoxFontName.Items.Clear(); + comboBoxFontName.Items.AddRange(fontNames.ToArray()); + } + + private void InitializeStylesListView(string currentStyleName) + { + listViewStyles.Items.Clear(); + foreach (var style in _webVttStyles) + { + AddStyle(listViewStyles, style, _subtitle); + } + + if (listViewStyles.Items.Count > 0) + { + listViewStyles.Items[0].Selected = true; + } + } + + + public static void AddStyle(ListView lv, WebVttStyle style, Subtitle subtitle) + { + AddStyle(lv, style, subtitle, lv.Items.Count); + } + + public static void AddStyle(ListView lv, WebVttStyle style, Subtitle subtitle, int insertAt) + { + // Style name - 0 + var item = new ListViewItem(style.Name.Trim().TrimStart('.')) + { + Checked = true, + UseItemStyleForSubItems = false + }; + + // Font name - 1 + var subItem = new ListViewItem.ListViewSubItem(item, string.IsNullOrEmpty(style.FontName) ? "- " : style.FontName); + item.SubItems.Add(subItem); + + // Font size - 2 + subItem = new ListViewItem.ListViewSubItem(item, style.FontSize.HasValue ? style.FontSize.HasValue.ToString(CultureInfo.InvariantCulture) : "-"); + item.SubItems.Add(subItem); + + // Italic - 3 + subItem = new ListViewItem.ListViewSubItem(item, style.Italic.HasValue && style.Italic.Value ? LanguageSettings.Current.General.Yes : "-"); + item.SubItems.Add(subItem); + + // Background color - 4 + subItem = new ListViewItem.ListViewSubItem(item, string.Empty) { BackColor = style.BackgroundColor.HasValue ? style.BackgroundColor.Value : UiUtil.BackColor }; + item.SubItems.Add(subItem); + + // Color - 5 + subItem = new ListViewItem.ListViewSubItem(item, string.Empty) + { + BackColor = style.Color ?? UiUtil.BackColor, + Text = LanguageSettings.Current.General.Text, + }; + + try + { + var fontStyle = FontStyle.Regular; + if (style.Bold.HasValue && style.Bold == true) + { + fontStyle |= FontStyle.Bold; + } + if (style.Italic.HasValue && style.Italic == true) + { + fontStyle |= FontStyle.Italic; + } + if (style.Underline.HasValue && style.Underline == true) + { + fontStyle |= FontStyle.Underline; + } + if (style.StrikeThrough.HasValue && style.StrikeThrough == true) + { + fontStyle |= FontStyle.Strikeout; + } + subItem.Font = new Font(style.FontName, subItem.Font.Size, fontStyle); + } + catch + { + // Ignored + } + + item.SubItems.Add(subItem); + + + // Use count + var count = 0; + foreach (var p in subtitle.Paragraphs) + { + if (p.Text.Contains(style.Name + ".", StringComparison.Ordinal) || + p.Text.Contains(style.Name + ">", StringComparison.Ordinal)) + { + count++; + } + } + subItem = new ListViewItem.ListViewSubItem(item, count.ToString()); + item.SubItems.Add(subItem); + + lv.Items.Insert(insertAt, item); + } + + private void listViewStyles_SelectedIndexChanged(object sender, EventArgs e) + { + if (listViewStyles.SelectedItems.Count == 1) + { + var styleName = "." + listViewStyles.SelectedItems[0].Text; + _startName = styleName; + _editedName = null; + var style = _webVttStyles.FirstOrDefault(p => p.Name == styleName); + SetControlsFromStyle(style); + _doUpdate = true; + groupBoxProperties.Enabled = true; + } + else + { + groupBoxProperties.Enabled = false; + _doUpdate = false; + _startName = null; + _currentStyle = null; + pictureBoxPreview.Image?.Dispose(); + pictureBoxPreview.Image = new Bitmap(1, 1); + } + + UpdateCurrentFileButtonsState(); + } + + private void SetControlsFromStyle(WebVttStyle style) + { + _currentStyle = style; + + textBoxStyleName.Text = style.Name.RemoveChar('.'); + textBoxStyleName.BackColor = listViewStyles.BackColor; + comboBoxFontName.Text = style.FontName; + + checkBoxFontItalic.Checked = style.Italic.HasValue && style.Italic.Value; + checkBoxFontBold.Checked = style.Bold.HasValue && style.Bold.Value; + checkBoxFontUnderline.Checked = style.Underline.HasValue && style.Underline.Value; + checkBoxStrikeout.Checked = style.StrikeThrough.HasValue && style.StrikeThrough.Value; + + if (style.FontSize.HasValue && style.FontSize > 0 && style.FontSize <= numericUpDownFontSize.Maximum) + { + numericUpDownFontSize.Value = style.FontSize.Value; + } + else + { + numericUpDownFontSize.Value = 0; + } + + if (style.Color.HasValue) + { + panelPrimaryColor.BackColor = style.Color.Value; + checkBoxColorEnabled.Checked = true; + } + else + { + checkBoxColorEnabled.Checked = false; + panelPrimaryColor.BackColor = Color.Transparent; + } + + if (style.BackgroundColor.HasValue) + { + panelBackgroundColor.BackColor = style.BackgroundColor.Value; + checkBoxBackgroundColorEnabled.Checked = true; + } + else + { + checkBoxBackgroundColorEnabled.Checked = false; + panelBackgroundColor.BackColor = Color.Transparent; + } + + if (style.ShadowColor.HasValue) + { + panelBackgroundColor.BackColor = style.ShadowColor.Value; + } + else + { + panelShadowColor.BackColor = Color.Transparent; + } + + if (style.ShadowWidth.HasValue && style.ShadowWidth >= 0 && style.ShadowWidth <= numericUpDownShadowWidth.Maximum) + { + numericUpDownShadowWidth.Value = style.ShadowWidth.Value; + } + else + { + numericUpDownShadowWidth.Value = 0; + } + + var beforeStyle = _originalWebVttStyles.FirstOrDefault(p => p.Name == style.Name); + if (beforeStyle == null) + { + labelBefore.Text = string.Empty; + } + else + { + labelBefore.Text = style.ToString().Replace("; ", ";" + Environment.NewLine); + } + + UpdateRawBeforeStyle(); + } + + private void UpdateRawBeforeStyle() + { + if (_currentStyle == null) + { + labelAfter.Text = string.Empty; + labelBefore.Text = string.Empty; + return; + } + + labelAfter.Text = _currentStyle.ToString().Replace("; ", ";" + Environment.NewLine); + } + + private void UpdateCurrentFileButtonsState() + { + var oneOrMoreSelected = listViewStyles.SelectedItems.Count > 0; + buttonRemove.Enabled = oneOrMoreSelected; + buttonCopy.Enabled = oneOrMoreSelected; + } + + private void panelPrimaryColor_Click(object sender, EventArgs e) + { + using (var colorChooser = new ColorChooser { Color = panelPrimaryColor.BackColor }) + { + if (colorChooser.ShowDialog() != DialogResult.OK || _currentStyle == null) + { + return; + } + + checkBoxColorEnabled.Checked = true; + panelPrimaryColor.BackColor = colorChooser.Color; + _currentStyle.Color = colorChooser.Color; + listViewStyles.SelectedItems[0].SubItems[5].BackColor = colorChooser.Color; + UpdateRawBeforeStyle(); + } + } + + private void buttonPrimaryColor_Click(object sender, EventArgs e) + { + panelPrimaryColor_Click(null, null); + } + + private void panelBackgroundColor_Click(object sender, EventArgs e) + { + using (var colorChooser = new ColorChooser { Color = panelBackgroundColor.BackColor }) + { + if (colorChooser.ShowDialog() != DialogResult.OK || _currentStyle == null) + { + return; + } + + checkBoxBackgroundColorEnabled.Checked = true; + panelBackgroundColor.BackColor = colorChooser.Color; + _currentStyle.BackgroundColor = colorChooser.Color; + listViewStyles.SelectedItems[0].SubItems[4].BackColor = colorChooser.Color; + UpdateRawBeforeStyle(); + } + } + + private void buttonBackgroundColor_Click(object sender, EventArgs e) + { + panelBackgroundColor_Click(null, null); + } + + private void panelShadowColor_Click(object sender, EventArgs e) + { + using (var colorChooser = new ColorChooser { Color = panelShadowColor.BackColor }) + { + if (colorChooser.ShowDialog() != DialogResult.OK || _currentStyle == null) + { + return; + } + + checkBoxShadowEnabled.Checked = true; + panelShadowColor.BackColor = colorChooser.Color; + _currentStyle.ShadowColor = colorChooser.Color; + } + + UpdateRawBeforeStyle(); + } + + private void checkBoxColorEnabled_CheckedChanged(object sender, EventArgs e) + { + if (!_doUpdate || _currentStyle == null) + { + return; + } + + var checkBox = (CheckBox)sender; + if (checkBox.Checked) + { + _currentStyle.Color = panelPrimaryColor.BackColor; + } + else + { + _currentStyle.Color = null; + } + + listViewStyles.SelectedItems[0].SubItems[5].BackColor = _currentStyle.Color ?? UiUtil.BackColor; + UpdateRawBeforeStyle(); + } + + private void checkBoxBackgroundColorEnabled_CheckedChanged(object sender, EventArgs e) + { + if (!_doUpdate || _currentStyle == null) + { + return; + } + + var checkBox = (CheckBox)sender; + if (checkBox.Checked) + { + _currentStyle.BackgroundColor = panelBackgroundColor.BackColor; + } + else + { + _currentStyle.BackgroundColor = null; + } + + listViewStyles.SelectedItems[0].SubItems[4].BackColor = _currentStyle.BackgroundColor ?? UiUtil.BackColor; + UpdateRawBeforeStyle(); + } + + private void checkBoxShadowEnabled_CheckedChanged(object sender, EventArgs e) + { + if (!_doUpdate || _currentStyle == null) + { + return; + } + + var checkBox = (CheckBox)sender; + if (checkBox.Checked) + { + _currentStyle.ShadowColor = panelBackgroundColor.BackColor; + } + else + { + _currentStyle.ShadowColor = null; + } + + UpdateRawBeforeStyle(); + } + + private void comboBoxFontName_TextChanged(object sender, EventArgs e) + { + if (!_doUpdate || _currentStyle == null) + { + return; + } + + if (string.IsNullOrEmpty(comboBoxFontName.Text)) + { + _currentStyle.FontName = null; + } + else + { + _currentStyle.FontName = comboBoxFontName.Text; + } + + listViewStyles.SelectedItems[0].SubItems[1].Text = comboBoxFontName.Text; + UpdateRawBeforeStyle(); + } + + private void numericUpDownFontSize_ValueChanged(object sender, EventArgs e) + { + if (!_doUpdate || _currentStyle == null) + { + return; + } + + if (numericUpDownFontSize.Value == 0) + { + _currentStyle.FontSize = null; + } + else + { + _currentStyle.FontSize = numericUpDownFontSize.Value; + } + + listViewStyles.SelectedItems[0].SubItems[2].Text = _currentStyle.FontSize == null ? "-" : numericUpDownFontSize.Value.ToString(); + UpdateRawBeforeStyle(); + } + + private void buttonAdd_Click(object sender, EventArgs e) + { + var style = new WebVttStyle { Name = GetStyleName() }; + _webVttStyles.Add(style); + AddStyle(listViewStyles, style, _subtitle); + + foreach (ListViewItem listViewItem in listViewStyles.Items) + { + listViewItem.Selected = false; + } + listViewStyles.Items[listViewStyles.Items.Count - 1].Selected = true; + listViewStyles.EnsureVisible(listViewStyles.Items.Count - 1); + + CheckDuplicateStyles(); + } + + private string GetStyleName() + { + const string baseName = ".new"; + var name = baseName; + var count = 2; + while (_webVttStyles.Any(p => p.Name == name)) + { + name = baseName + " " + count; + count++; + } + + return name; + } + + private void buttonOK_Click(object sender, EventArgs e) + { + SetHeader(); + DialogResult = DialogResult.OK; + } + + private void SetHeader() + { + var header = _subtitle.Header ?? string.Empty; + if (!header.StartsWith("WEBVTT")) + { + header = "WEBVTT"; + } + + var styleOn = false; + var sb = new StringBuilder(); + foreach (var line in header.SplitToLines()) + { + if (line == "STYLE") + { + styleOn = true; + } + else if (styleOn) + { + // ignore + } + else if (line == string.Empty && styleOn) + { + styleOn = false; + } + else + { + sb.AppendLine(line); + } + } + + var sbStyles = new StringBuilder(); + sbStyles.AppendLine("STYLE"); + foreach (var style in _webVttStyles) + { + var rawStyle = "::cue(." + style.Name.RemoveChar('.') + ") { " + WebVttHelper.GetCssProperties(style) + " }"; + sbStyles.AppendLine(rawStyle); + } + + header = sb.ToString().Trim() + Environment.NewLine + Environment.NewLine + sbStyles.ToString(); + Header = header; + } + + private void buttonApply_Click(object sender, EventArgs e) + { + SetHeader(); + _subtitle.Header = Header; + } + + private void buttonRemove_Click(object sender, EventArgs e) + { + if (listViewStyles.SelectedItems.Count == 0) + { + return; + } + + var askText = listViewStyles.SelectedItems.Count > 1 ? + string.Format(LanguageSettings.Current.Main.DeleteXLinesPrompt, listViewStyles.SelectedItems.Count) : + LanguageSettings.Current.Main.DeleteOneLinePrompt; + + if (Configuration.Settings.General.PromptDeleteLines && + MessageBox.Show(askText, string.Empty, MessageBoxButtons.YesNoCancel) != DialogResult.Yes) + { + return; + } + + foreach (ListViewItem selectedItem in listViewStyles.SelectedItems) + { + var name = selectedItem.Text; + listViewStyles.Items.RemoveAt(listViewStyles.SelectedItems[0].Index); + _webVttStyles.RemoveAll(p => p.Name == name); + } + + if (listViewStyles.Items.Count == 0) + { + InitializeStylesListView(string.Empty); + } + + CheckDuplicateStyles(); + } + + private void CheckDuplicateStyles() + { + labelDuplicateStyleNames.Text = string.Empty; + var duplicateStyles = new List(); + foreach (var style in _webVttStyles) + { + if (_webVttStyles.Count(p => p.Name == style.Name) > 1 && !duplicateStyles.Contains(style.Name)) + { + duplicateStyles.Add(style.Name); + } + } + + if (duplicateStyles.Count > 0) + { + labelDuplicateStyleNames.Text = string.Format(LanguageSettings.Current.SubStationAlphaStyles.DuplicateStyleNames, string.Join(", ", duplicateStyles)); + } + } + + private void buttonRemoveAll_Click(object sender, EventArgs e) + { + var askText = listViewStyles.Items.Count == 1 ? + LanguageSettings.Current.Main.DeleteOneLinePrompt : + string.Format(LanguageSettings.Current.Main.DeleteXLinesPrompt, listViewStyles.Items.Count); + + if (MessageBox.Show(askText, string.Empty, MessageBoxButtons.YesNoCancel) != DialogResult.Yes) + { + return; + } + + listViewStyles.Items.Clear(); + _webVttStyles.Clear(); + InitializeStylesListView(string.Empty); + CheckDuplicateStyles(); + } + + private void buttonCopy_Click(object sender, EventArgs e) + { + var selectionCount = listViewStyles.SelectedItems.Count; + if (selectionCount <= 0) + { + return; + } + + foreach (ListViewItem selectedItem in listViewStyles.SelectedItems) + { + var styleName = selectedItem.Text; + var oldStyle = _currentStyle; + var style = new WebVttStyle(oldStyle) { Name = "." + string.Format(LanguageSettings.Current.SubStationAlphaStyles.CopyOfY, styleName.RemoveChar('.')) }; // Copy constructor + + if (_webVttStyles.FirstOrDefault(p=>p.Name == style.Name) != null) + { + var count = 2; + var doRepeat = true; + while (doRepeat) + { + style.Name = "." + string.Format(LanguageSettings.Current.SubStationAlphaStyles.CopyXOfY, count, styleName.RemoveChar('.')); + doRepeat = _webVttStyles.FirstOrDefault(p => p.Name == style.Name) != null; + count++; + } + } + + _doUpdate = false; + AddStyle(listViewStyles, style, _subtitle); + _webVttStyles.Add(style); + _doUpdate = true; + } + CheckDuplicateStyles(); } } } From 08c45d1615ee70a8d067a5f4132e42910139b73e Mon Sep 17 00:00:00 2001 From: niksedk Date: Mon, 19 Jun 2023 21:00:08 +0200 Subject: [PATCH 24/96] Fix for DialogStyleSegment length - thx vcubicibo :) Fix #7021 --- src/libse/SubtitleFormats/TextST.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libse/SubtitleFormats/TextST.cs b/src/libse/SubtitleFormats/TextST.cs index 873a81440..150ab2645 100644 --- a/src/libse/SubtitleFormats/TextST.cs +++ b/src/libse/SubtitleFormats/TextST.cs @@ -272,7 +272,7 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats var size = regionStyle.Length + 5; stream.WriteWord(size); stream.WriteByte(SegmentTypeDialogStyle); // 0x81 - stream.WriteWord(size - 3); + stream.WriteWord(size - 5); // DialogStyleSegment length stream.Write(regionStyle, 0, regionStyle.Length); stream.WriteWord(numberOfSubtitles); } From 39e86258427e358ddec3ed698a8ffc1a73df7e6e Mon Sep 17 00:00:00 2001 From: niksedk Date: Mon, 19 Jun 2023 21:15:44 +0200 Subject: [PATCH 25/96] Work on WebVTT styles --- LanguageBaseEnglish.xml | 5 ++++- src/ui/Forms/Main.cs | 10 ++++++++-- src/ui/Logic/Language.cs | 6 ++++++ src/ui/Logic/LanguageDeserializer.cs | 6 ++++++ src/ui/Logic/LanguageStructure.cs | 4 ++++ 5 files changed, 28 insertions(+), 3 deletions(-) diff --git a/LanguageBaseEnglish.xml b/LanguageBaseEnglish.xml index 4b783c62f..0c32116e3 100644 --- a/LanguageBaseEnglish.xml +++ b/LanguageBaseEnglish.xml @@ -37,6 +37,7 @@ Actor Gap Region + Layer # Number Text @@ -1474,7 +1475,6 @@ To use an API key, go to "Options -> Settings -> Tools" to enter your Goog Next > Auto &br Unbreak - Set layer Translate @@ -3214,4 +3214,7 @@ Keep changes? WebVTT - set new voice Name of voice + + WebVTT styles + \ No newline at end of file diff --git a/src/ui/Forms/Main.cs b/src/ui/Forms/Main.cs index 626a1b55a..4daf6fdfc 100644 --- a/src/ui/Forms/Main.cs +++ b/src/ui/Forms/Main.cs @@ -5973,7 +5973,7 @@ namespace Nikse.SubtitleEdit.Forms TryLoadIcon(toolStripButtonToggleWaveform, "WaveformToggle"); TryLoadIcon(toolStripButtonToggleVideo, "VideoToggle"); TryLoadIcon(toolStripButtonSourceView, "SourceView"); - // IttProperties, WebVttProperties, EbuProperties + // IttProperties, WebVttProperties, WebVttStyle, EbuProperties } toolStripButtonFileNew.Visible = gs.ShowToolbarNew; @@ -10782,7 +10782,7 @@ namespace Nikse.SubtitleEdit.Forms return; } - var isAssa = GetCurrentSubtitleFormat().GetType() == typeof(AdvancedSubStationAlpha); + var isAssa = GetCurrentSubtitleFormat().GetType() == typeof(AdvancedSubStationAlpha); if (isAssa) { var layer = (int)numericUpDownLayer.Value; @@ -32989,6 +32989,7 @@ namespace Nikse.SubtitleEdit.Forms var assFormatOn = formatType == typeof(AdvancedSubStationAlpha); toolStripButtonAssStyleManager.Visible = assFormatOn; + toolStripButtonAssStyleManager.ToolTipText = LanguageSettings.Current.SubStationAlphaStyles.Title; toolStripButtonAssProperties.Visible = assFormatOn; toolStripButtonAssaDraw.Visible = assFormatOn && File.Exists(Path.Combine(Configuration.PluginsDirectory, "AssaDraw.dll")); toolStripButtonAssAttachments.Visible = assFormatOn; @@ -33014,6 +33015,11 @@ namespace Nikse.SubtitleEdit.Forms toolStripButtonXProperties.ToolTipText = string.Format(_language.Menu.File.FormatXProperties, new WebVTT().Name); toolStripButtonXProperties.Image = Properties.Resources.webvtt; TryLoadIcon(toolStripButtonXProperties, "WebVttProperties"); + + toolStripButtonAssStyleManager.Visible = true; + toolStripButtonAssStyleManager.ToolTipText = string.Format(LanguageSettings.Current.WebVttStyleManager.Title, new WebVTT().Name); + toolStripButtonAssStyleManager.Image = Properties.Resources.webvtt; + TryLoadIcon(toolStripButtonAssStyleManager, "WebVttStyle"); } if (formatType == typeof(Ebu)) diff --git a/src/ui/Logic/Language.cs b/src/ui/Logic/Language.cs index e33f3ffb9..85a0e4aee 100644 --- a/src/ui/Logic/Language.cs +++ b/src/ui/Logic/Language.cs @@ -125,6 +125,7 @@ namespace Nikse.SubtitleEdit.Logic public LanguageStructure.Waveform Waveform; public LanguageStructure.WaveformGenerateTimeCodes WaveformGenerateTimeCodes; public LanguageStructure.WebVttNewVoice WebVttNewVoice; + public LanguageStructure.WebVttStyleManager WebVttStyleManager; public Language() { @@ -3612,6 +3613,11 @@ Keep changes?", Title = "WebVTT - set new voice", VoiceName = "Name of voice", }; + + WebVttStyleManager = new LanguageStructure.WebVttStyleManager + { + Title = "WebVTT styles", + }; } //public static Language Load(StreamReader sr) // normal but slow .net way diff --git a/src/ui/Logic/LanguageDeserializer.cs b/src/ui/Logic/LanguageDeserializer.cs index 2423abd56..3a3bd4eac 100644 --- a/src/ui/Logic/LanguageDeserializer.cs +++ b/src/ui/Logic/LanguageDeserializer.cs @@ -166,6 +166,9 @@ namespace Nikse.SubtitleEdit.Logic case "General/Region": language.General.Region = reader.Value; break; + case "General/Layer": + language.General.Layer = reader.Value; + break; case "General/NumberSymbol": language.General.NumberSymbol = reader.Value; break; @@ -8773,6 +8776,9 @@ namespace Nikse.SubtitleEdit.Logic case "WebVttNewVoice/VoiceName": language.WebVttNewVoice.VoiceName = reader.Value; break; + case "WebVttStyleManager/Title": + language.WebVttStyleManager.Title = reader.Value; + break; } } diff --git a/src/ui/Logic/LanguageStructure.cs b/src/ui/Logic/LanguageStructure.cs index b00e5b578..9b6cdf72c 100644 --- a/src/ui/Logic/LanguageStructure.cs +++ b/src/ui/Logic/LanguageStructure.cs @@ -3459,5 +3459,9 @@ namespace Nikse.SubtitleEdit.Logic public string VoiceName { get; set; } } + public class WebVttStyleManager + { + public string Title { get; set; } + } } } From 73bb9264158502438b02926989f1d1794bc81bc9 Mon Sep 17 00:00:00 2001 From: niksedk Date: Mon, 19 Jun 2023 21:20:15 +0200 Subject: [PATCH 26/96] Work on WebVTT styles --- src/ui/Forms/Options/Settings.Designer.cs | 17 +++++++++++++++-- src/ui/Forms/Options/Settings.cs | 1 + 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/ui/Forms/Options/Settings.Designer.cs b/src/ui/Forms/Options/Settings.Designer.cs index 302be68fb..276913b76 100644 --- a/src/ui/Forms/Options/Settings.Designer.cs +++ b/src/ui/Forms/Options/Settings.Designer.cs @@ -440,6 +440,7 @@ this.labelUpdateFileTypeAssociationsStatus = new System.Windows.Forms.Label(); this.imageListFileTypeAssociations = new System.Windows.Forms.ImageList(this.components); this.toolTipDialogStylePreview = new System.Windows.Forms.ToolTip(this.components); + this.pictureBoxWebVttStyle = new System.Windows.Forms.PictureBox(); this.panelGeneral.SuspendLayout(); this.groupBoxMiscellaneous.SuspendLayout(); this.groupBoxGeneralRules.SuspendLayout(); @@ -521,6 +522,7 @@ this.groupBoxProxySettings.SuspendLayout(); this.groupBoxProxyAuthentication.SuspendLayout(); this.panelFileTypeAssociations.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxWebVttStyle)).BeginInit(); this.SuspendLayout(); // // buttonOK @@ -4028,6 +4030,7 @@ // this.groupBoxShowToolBarButtons.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); + this.groupBoxShowToolBarButtons.Controls.Add(this.pictureBoxWebVttStyle); this.groupBoxShowToolBarButtons.Controls.Add(this.pictureBoxEbuProperties); this.groupBoxShowToolBarButtons.Controls.Add(this.pictureBoxWebVttProperties); this.groupBoxShowToolBarButtons.Controls.Add(this.pictureBoxIttProperties); @@ -4093,7 +4096,7 @@ // // pictureBoxEbuProperties // - this.pictureBoxEbuProperties.Location = new System.Drawing.Point(323, 400); + this.pictureBoxEbuProperties.Location = new System.Drawing.Point(361, 400); this.pictureBoxEbuProperties.Name = "pictureBoxEbuProperties"; this.pictureBoxEbuProperties.Size = new System.Drawing.Size(32, 32); this.pictureBoxEbuProperties.TabIndex = 59; @@ -4149,7 +4152,7 @@ // // pictureBoxAssProperties // - this.pictureBoxAssProperties.Location = new System.Drawing.Point(57, 400); + this.pictureBoxAssProperties.Location = new System.Drawing.Point(56, 400); this.pictureBoxAssProperties.Name = "pictureBoxAssProperties"; this.pictureBoxAssProperties.Size = new System.Drawing.Size(32, 32); this.pictureBoxAssProperties.TabIndex = 52; @@ -5281,6 +5284,14 @@ this.toolTipDialogStylePreview.InitialDelay = 500; this.toolTipDialogStylePreview.ReshowDelay = 100; // + // pictureBoxWebVttStyle + // + this.pictureBoxWebVttStyle.Location = new System.Drawing.Point(323, 400); + this.pictureBoxWebVttStyle.Name = "pictureBoxWebVttStyle"; + this.pictureBoxWebVttStyle.Size = new System.Drawing.Size(32, 32); + this.pictureBoxWebVttStyle.TabIndex = 60; + this.pictureBoxWebVttStyle.TabStop = false; + // // Settings // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -5425,6 +5436,7 @@ this.groupBoxProxyAuthentication.ResumeLayout(false); this.groupBoxProxyAuthentication.PerformLayout(); this.panelFileTypeAssociations.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxWebVttStyle)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -5843,5 +5855,6 @@ private System.Windows.Forms.PictureBox pictureBoxEbuProperties; private System.Windows.Forms.PictureBox pictureBoxWebVttProperties; private System.Windows.Forms.PictureBox pictureBoxIttProperties; + private System.Windows.Forms.PictureBox pictureBoxWebVttStyle; } } \ No newline at end of file diff --git a/src/ui/Forms/Options/Settings.cs b/src/ui/Forms/Options/Settings.cs index 834ea8780..dce4b861e 100644 --- a/src/ui/Forms/Options/Settings.cs +++ b/src/ui/Forms/Options/Settings.cs @@ -3669,6 +3669,7 @@ namespace Nikse.SubtitleEdit.Forms.Options TryLoadIcon(pictureBoxSourceView, "SourceView"); TryLoadIcon(pictureBoxIttProperties, "IttProperties"); TryLoadIcon(pictureBoxWebVttProperties, "WebVttProperties"); + TryLoadIcon(pictureBoxWebVttStyle, "WebVttStyle"); TryLoadIcon(pictureBoxEbuProperties, "EbuProperties"); } From 6de5695436a447e7e69b28012893b0d4f8247504 Mon Sep 17 00:00:00 2001 From: niksedk Date: Tue, 20 Jun 2023 19:14:34 +0200 Subject: [PATCH 27/96] Work on WebVtt --- .../Forms/VTT/WebVttImportExport.Designer.cs | 158 +++++++++++++++ src/ui/Forms/VTT/WebVttImportExport.cs | 183 ++++++++++++++++++ src/ui/Forms/VTT/WebVttImportExport.resx | 126 ++++++++++++ .../Forms/VTT/WebVttStyleManager.Designer.cs | 1 + src/ui/Forms/VTT/WebVttStyleManager.cs | 16 ++ src/ui/SubtitleEdit.csproj | 9 + 6 files changed, 493 insertions(+) create mode 100644 src/ui/Forms/VTT/WebVttImportExport.Designer.cs create mode 100644 src/ui/Forms/VTT/WebVttImportExport.cs create mode 100644 src/ui/Forms/VTT/WebVttImportExport.resx diff --git a/src/ui/Forms/VTT/WebVttImportExport.Designer.cs b/src/ui/Forms/VTT/WebVttImportExport.Designer.cs new file mode 100644 index 000000000..043f71e7a --- /dev/null +++ b/src/ui/Forms/VTT/WebVttImportExport.Designer.cs @@ -0,0 +1,158 @@ +namespace Nikse.SubtitleEdit.Forms.VTT +{ + sealed partial class WebVttImportExport + { + /// + /// 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.components = new System.ComponentModel.Container(); + this.listViewExportStyles = new System.Windows.Forms.ListView(); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.buttonOK = new System.Windows.Forms.Button(); + this.buttonCancel = new System.Windows.Forms.Button(); + this.saveFileDialogStyle = new System.Windows.Forms.SaveFileDialog(); + this.labelStyles = new System.Windows.Forms.Label(); + this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components); + this.toolStripMenuItemSelectAll = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItemInverseSelection = new System.Windows.Forms.ToolStripMenuItem(); + this.contextMenuStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // listViewExportStyles + // + this.listViewExportStyles.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.listViewExportStyles.CheckBoxes = true; + this.listViewExportStyles.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader1}); + this.listViewExportStyles.ContextMenuStrip = this.contextMenuStrip1; + this.listViewExportStyles.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; + this.listViewExportStyles.HideSelection = false; + this.listViewExportStyles.Location = new System.Drawing.Point(12, 38); + this.listViewExportStyles.Name = "listViewExportStyles"; + this.listViewExportStyles.Size = new System.Drawing.Size(258, 187); + this.listViewExportStyles.TabIndex = 0; + this.listViewExportStyles.UseCompatibleStateImageBehavior = false; + this.listViewExportStyles.View = System.Windows.Forms.View.Details; + // + // 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(111, 231); + this.buttonOK.Name = "buttonOK"; + this.buttonOK.Size = new System.Drawing.Size(75, 23); + this.buttonOK.TabIndex = 4; + this.buttonOK.Text = "&OK"; + this.buttonOK.UseVisualStyleBackColor = true; + this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click); + // + // 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(195, 231); + this.buttonCancel.Name = "buttonCancel"; + this.buttonCancel.Size = new System.Drawing.Size(75, 23); + this.buttonCancel.TabIndex = 5; + this.buttonCancel.Text = "C&ancel"; + this.buttonCancel.UseVisualStyleBackColor = true; + // + // saveFileDialogStyle + // + this.saveFileDialogStyle.OverwritePrompt = false; + // + // labelStyles + // + this.labelStyles.AutoSize = true; + this.labelStyles.Location = new System.Drawing.Point(12, 20); + this.labelStyles.Name = "labelStyles"; + this.labelStyles.Size = new System.Drawing.Size(35, 13); + this.labelStyles.TabIndex = 6; + this.labelStyles.Text = "Styles"; + // + // contextMenuStrip1 + // + this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripMenuItemSelectAll, + this.toolStripMenuItemInverseSelection}); + this.contextMenuStrip1.Name = "contextMenuStrip1"; + this.contextMenuStrip1.Size = new System.Drawing.Size(181, 70); + // + // toolStripMenuItemSelectAll + // + this.toolStripMenuItemSelectAll.Name = "toolStripMenuItemSelectAll"; + this.toolStripMenuItemSelectAll.Size = new System.Drawing.Size(180, 22); + this.toolStripMenuItemSelectAll.Text = "Select all"; + this.toolStripMenuItemSelectAll.Click += new System.EventHandler(this.toolStripMenuItemSelectAll_Click); + // + // toolStripMenuItemInverseSelection + // + this.toolStripMenuItemInverseSelection.Name = "toolStripMenuItemInverseSelection"; + this.toolStripMenuItemInverseSelection.Size = new System.Drawing.Size(180, 22); + this.toolStripMenuItemInverseSelection.Text = "Inverse selection"; + this.toolStripMenuItemInverseSelection.Click += new System.EventHandler(this.toolStripMenuItemInverseSelection_Click); + // + // SubStationAlphaStylesExport + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(282, 264); + this.Controls.Add(this.labelStyles); + this.Controls.Add(this.buttonOK); + this.Controls.Add(this.buttonCancel); + this.Controls.Add(this.listViewExportStyles); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.KeyPreview = true; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "SubStationAlphaStylesExport"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "SubStationAlphaStylesExport"; + this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.WebVttImportExport_KeyDown); + this.contextMenuStrip1.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.ListView listViewExportStyles; + private System.Windows.Forms.Button buttonOK; + private System.Windows.Forms.Button buttonCancel; + private System.Windows.Forms.SaveFileDialog saveFileDialogStyle; + private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.Label labelStyles; + private System.Windows.Forms.ContextMenuStrip contextMenuStrip1; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemSelectAll; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemInverseSelection; + } +} \ No newline at end of file diff --git a/src/ui/Forms/VTT/WebVttImportExport.cs b/src/ui/Forms/VTT/WebVttImportExport.cs new file mode 100644 index 000000000..fda8d1614 --- /dev/null +++ b/src/ui/Forms/VTT/WebVttImportExport.cs @@ -0,0 +1,183 @@ +using Nikse.SubtitleEdit.Core.Common; +using Nikse.SubtitleEdit.Core.SubtitleFormats; +using Nikse.SubtitleEdit.Logic; +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; +using System.Windows.Forms; + +namespace Nikse.SubtitleEdit.Forms.VTT +{ + public sealed partial class WebVttImportExport : Form + { + private readonly List _stylesToExport; + private readonly SubtitleFormat _format; + public List ImportExportStyles { get; set; } + + public WebVttImportExport(List stylesToExport) + { + InitializeComponent(); + UiUtil.FixFonts(this); + + _stylesToExport = stylesToExport; + + listViewExportStyles.Columns[0].Width = listViewExportStyles.Width - 20; + foreach (var style in stylesToExport) + { + listViewExportStyles.Items.Add(new ListViewItem(style.Name) { Checked = true, Tag = style }); + } + + Text = LanguageSettings.Current.SubStationAlphaStyles.Export; + labelStyles.Text = LanguageSettings.Current.SubStationAlphaStyles.Styles; + toolStripMenuItemInverseSelection.Text = LanguageSettings.Current.Main.Menu.Edit.InverseSelection; + toolStripMenuItemSelectAll.Text = LanguageSettings.Current.Main.Menu.ContextMenu.SelectAll; + buttonOK.Text = LanguageSettings.Current.General.Ok; + buttonCancel.Text = LanguageSettings.Current.General.Cancel; + } + + private void buttonOK_Click(object sender, EventArgs e) + { + var exportNames = new List(); + var occursMoreThanOnce = new List(); + ImportExportStyles = new List(); + foreach (ListViewItem item in listViewExportStyles.Items) + { + if (item.Checked) + { + ImportExportStyles.Add((WebVttStyle)item.Tag); + if (exportNames.Contains(item.Text)) + { + occursMoreThanOnce.Add(item.Text); + } + else + { + exportNames.Add(item.Text); + } + } + } + + if (occursMoreThanOnce.Count > 0) + { + MessageBox.Show("Style name must be unique - can only export one style with name: " + string.Join(", ", occursMoreThanOnce)); + return; + } + + if (ImportExportStyles.Count == 0) + { + return; + } + + saveFileDialogStyle.Title = LanguageSettings.Current.SubStationAlphaStyles.ExportStyleToFile; + saveFileDialogStyle.InitialDirectory = Configuration.DataDirectory; + saveFileDialogStyle.Filter = SubStationAlpha.NameOfFormat + "|*.webvtt|" + LanguageSettings.Current.General.AllFiles + "|*.*"; + saveFileDialogStyle.FileName = "my_styles.webvtt"; + + if (saveFileDialogStyle.ShowDialog(this) == DialogResult.OK) + { + if (File.Exists(saveFileDialogStyle.FileName)) + { + var s = new Subtitle(); + var format = s.LoadSubtitle(saveFileDialogStyle.FileName, out _, null); + if (format == null) + { + MessageBox.Show("Not subtitle format: " + _format.Name); + return; + } + + if (format.Name != _format.Name) + { + MessageBox.Show(string.Format("Cannot save {1} style in {0} file!", format.Name, _format.Name)); + } + else + { + var sb = new StringBuilder(); + var stylesOn = false; + var done = false; + var styleFormat = SsaStyle.DefaultAssStyleFormat; + foreach (var line in File.ReadAllLines(saveFileDialogStyle.FileName)) + { + if (line.StartsWith("format:", StringComparison.OrdinalIgnoreCase)) + { + styleFormat = line; + } + else if (line.StartsWith("style:", StringComparison.OrdinalIgnoreCase)) + { + stylesOn = true; + } + else if (stylesOn && !done) + { + done = true; + foreach (var style in ImportExportStyles) + { + sb.AppendLine(style.ToString()); + } + } + sb.AppendLine(line); + foreach (var style in ImportExportStyles) + { + var toLower = line.Trim().ToLowerInvariant(); + while (toLower.Contains(": ")) + { + toLower = toLower.Replace(": ", ":"); + } + + while (toLower.Contains(" :")) + { + toLower = toLower.Replace(" :", ":"); + } + + if (stylesOn && toLower.StartsWith("cue:(" + style.Name.Trim() + ")", StringComparison.OrdinalIgnoreCase)) + { + MessageBox.Show(string.Format(LanguageSettings.Current.SubStationAlphaStyles.StyleAlreadyExits, style.Name)); + return; + } + } + } + File.WriteAllText(saveFileDialogStyle.FileName, sb.ToString(), Encoding.UTF8); + } + } + else + { + var sb = new StringBuilder(); + foreach (var style in ImportExportStyles) + { + sb.Append("cue:(" + style.Name.Trim() + ") { " + style.ToString() + " }"); + sb.Append(Environment.NewLine); + } + + var content = "WEBVTT" + Environment.NewLine + + Environment.NewLine + + "STYLE" + Environment.NewLine + + sb.ToString().Trim(); + File.WriteAllText(saveFileDialogStyle.FileName, content, Encoding.UTF8); + DialogResult = DialogResult.OK; + } + } + } + + private void WebVttImportExport_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Escape) + { + DialogResult = DialogResult.Cancel; + } + } + + private void toolStripMenuItemSelectAll_Click(object sender, EventArgs e) + { + foreach (ListViewItem item in listViewExportStyles.Items) + { + item.Checked = true; + } + } + + private void toolStripMenuItemInverseSelection_Click(object sender, EventArgs e) + { + foreach (ListViewItem item in listViewExportStyles.Items) + { + item.Checked = !item.Checked; + } + } + } +} diff --git a/src/ui/Forms/VTT/WebVttImportExport.resx b/src/ui/Forms/VTT/WebVttImportExport.resx new file mode 100644 index 000000000..0a39974e8 --- /dev/null +++ b/src/ui/Forms/VTT/WebVttImportExport.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 172, 17 + + + 17, 17 + + \ No newline at end of file diff --git a/src/ui/Forms/VTT/WebVttStyleManager.Designer.cs b/src/ui/Forms/VTT/WebVttStyleManager.Designer.cs index 6b00dc30d..a806ab5b6 100644 --- a/src/ui/Forms/VTT/WebVttStyleManager.Designer.cs +++ b/src/ui/Forms/VTT/WebVttStyleManager.Designer.cs @@ -113,6 +113,7 @@ this.buttonExport.TabIndex = 5; this.buttonExport.Text = "Export..."; this.buttonExport.UseVisualStyleBackColor = true; + this.buttonExport.Click += new System.EventHandler(this.buttonExport_Click); // // buttonImport // diff --git a/src/ui/Forms/VTT/WebVttStyleManager.cs b/src/ui/Forms/VTT/WebVttStyleManager.cs index 4527a8c0a..0f5312640 100644 --- a/src/ui/Forms/VTT/WebVttStyleManager.cs +++ b/src/ui/Forms/VTT/WebVttStyleManager.cs @@ -1,4 +1,5 @@ using Nikse.SubtitleEdit.Core.Common; +using Nikse.SubtitleEdit.Forms.Styles; using Nikse.SubtitleEdit.Logic; using System; using System.Collections.Generic; @@ -607,5 +608,20 @@ namespace Nikse.SubtitleEdit.Forms.VTT } CheckDuplicateStyles(); } + + private void buttonExport_Click(object sender, EventArgs e) + { + if (listViewStyles.Items.Count == 0) + { + return; + } + + using (var form = new WebVttImportExport(_webVttStyles)) + { + if (form.ShowDialog(this) == DialogResult.OK) + { + } + } + } } } diff --git a/src/ui/SubtitleEdit.csproj b/src/ui/SubtitleEdit.csproj index 27a0c571b..021289a0b 100644 --- a/src/ui/SubtitleEdit.csproj +++ b/src/ui/SubtitleEdit.csproj @@ -1366,6 +1366,12 @@ VobSubOcrSetItalicFactor.cs + + Form + + + WebVttImportExport.cs + Form @@ -2133,6 +2139,9 @@ VobSubOcrSetItalicFactor.cs + + WebVttImportExport.cs + Watermark.cs From 408bc277309f375e3ec1c274cd879a131fbbeb08 Mon Sep 17 00:00:00 2001 From: nkh0472 Date: Thu, 22 Jun 2023 23:49:54 +0800 Subject: [PATCH 28/96] Update zh-Hans.xml --- src/ui/Languages/zh-Hans.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/ui/Languages/zh-Hans.xml b/src/ui/Languages/zh-Hans.xml index 6824bbd1f..95b406633 100644 --- a/src/ui/Languages/zh-Hans.xml +++ b/src/ui/Languages/zh-Hans.xml @@ -37,6 +37,7 @@ 演员 间隔 区域 + 编号 编号 文本 @@ -1373,6 +1374,7 @@ Command line: {1} {2} 自适应所有的列宽度 设置样式 设置演员 + 设置层 ASSA工具 Sub Station Alpha 样式... 高级 Sub Station Alpha 样式... @@ -2544,6 +2546,7 @@ Command line: {1} {2} 切换视频控件 切换对比度(仅适用于MPV) 语音转文本 ({0}) + 提取音频(仅所选行) 对选定行语音转文本 ({0}) 切换亮度(仅限mpv) 翻译、自定义搜索 1 @@ -3196,4 +3199,7 @@ Command line: {1} {2} WebVTT - 设定新人声 人声名称 + + WebVTT 样式 + From a60fdb011b05de718af7f034b1ee8ebfac810f62 Mon Sep 17 00:00:00 2001 From: niksedk Date: Thu, 22 Jun 2023 19:25:49 +0200 Subject: [PATCH 29/96] Update change log --- Changelog.txt | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Changelog.txt b/Changelog.txt index c61cf6e32..a32f9b8e6 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,5 +1,29 @@ Subtitle Edit Changelog +3.6.14 (xth August 2023) BETA +* NEW: + * New toolbar themes - thx jmaraujouy + * Use native styles for WebVTT + * Add video format ProRes for "Generate video with burned-in sub" + * Allow setting profile from cmd line - thx emcodem + * ASSA set layer - thx JonSchram +* IMPROVED: + * Update German translation - thx Netspark + * Update Chinese translation - thx nkh0472 + * Update Bulgarian translation - thx Калин + * Update Russian translation - thx elfriob + * Update Portuguese translation - thx hugok79 + * Update Korean translation - thx domddol + * Update Tesseract OCR to 5.3.1 +* FIXED: + * Fix "double dash" issue in "Fix common errors" - thx Joel + * Avoid crash on very large TS files - thx Mariusz + * Do not count Unicode control characters in Auto-br - MichaelYochpaz + * Fix to eager file locked check - thx OSokil + * Preserve white space in "Multiple replace import" - thx OtaStrom + * Fix frozen settings in "Batch convert" - thx OtaStrom + + 3.6.13 (14th May 2023) * NEW: * Add new subtitle format "nVivo transcript" - thx Ashin From af84210907b4ce124b98037a21be51e5bec39ade Mon Sep 17 00:00:00 2001 From: niksedk Date: Fri, 23 Jun 2023 19:09:03 +0200 Subject: [PATCH 30/96] Work on WebVTT --- src/libse/Common/WebVttHelper.cs | 8 +- src/libse/Common/WebVttToAssa.cs | 2 +- src/ui/Forms/Assa/AssaStyles.Designer.cs | 32 +- src/ui/Forms/Main.cs | 2 +- src/ui/Forms/VTT/WebVttImportExport.cs | 149 +++---- .../Forms/VTT/WebVttStyleManager.Designer.cs | 165 ++++++++ src/ui/Forms/VTT/WebVttStyleManager.cs | 374 +++++++++++++++++- src/ui/Forms/VTT/WebVttStyleManager.resx | 3 + 8 files changed, 612 insertions(+), 123 deletions(-) diff --git a/src/libse/Common/WebVttHelper.cs b/src/libse/Common/WebVttHelper.cs index 94544a1b4..578a58466 100644 --- a/src/libse/Common/WebVttHelper.cs +++ b/src/libse/Common/WebVttHelper.cs @@ -13,9 +13,9 @@ namespace Nikse.SubtitleEdit.Core.Common private static readonly Regex NameRegex = new Regex("\\([\\.a-zA-Z\\d#_-]+\\)", RegexOptions.Compiled); private static readonly Regex PropertiesRegex = new Regex("{[ \\.a-zA-Z\\d:#\\s,_;:\\-\\(\\)]+}", RegexOptions.Compiled); - public static List GetStyles(Subtitle webVttSubtitle) + public static List GetStyles(string header) { - if (string.IsNullOrEmpty(webVttSubtitle.Header)) + if (string.IsNullOrEmpty(header)) { return new List(); } @@ -24,7 +24,7 @@ namespace Nikse.SubtitleEdit.Core.Common var styleOn = false; var result = new List(); var currentStyle = new StringBuilder(); - foreach (var line in webVttSubtitle.Header.SplitToLines()) + foreach (var line in header.SplitToLines()) { var s = line.Trim(); if (styleOn) @@ -282,7 +282,7 @@ namespace Nikse.SubtitleEdit.Core.Common public static WebVttStyle GetStyleFromColor(Color color, Subtitle webVttSubtitle) { - foreach (var style in GetStyles(webVttSubtitle)) + foreach (var style in GetStyles(webVttSubtitle.Header)) { if (style.Color.HasValue && style.Color.Value == color && style.BackgroundColor == null && diff --git a/src/libse/Common/WebVttToAssa.cs b/src/libse/Common/WebVttToAssa.cs index d5bcb00b8..0615216a3 100644 --- a/src/libse/Common/WebVttToAssa.cs +++ b/src/libse/Common/WebVttToAssa.cs @@ -15,7 +15,7 @@ namespace Nikse.SubtitleEdit.Core.Common public static Subtitle Convert(Subtitle webVttSubtitle, SsaStyle defaultStyle, int videoWidth, int videoHeight) { - var vttStyles = WebVttHelper.GetStyles(webVttSubtitle); + var vttStyles = WebVttHelper.GetStyles(webVttSubtitle.Header); var ssaStyles = ConvertStyles(vttStyles, defaultStyle); var header = AdvancedSubStationAlpha.GetHeaderAndStylesFromAdvancedSubStationAlpha(AdvancedSubStationAlpha.DefaultHeader, ssaStyles); var assaSubtitle = ConvertSubtitle(webVttSubtitle, header, ssaStyles, vttStyles, videoWidth, videoHeight); diff --git a/src/ui/Forms/Assa/AssaStyles.Designer.cs b/src/ui/Forms/Assa/AssaStyles.Designer.cs index f3b6103ba..7b43b57b1 100644 --- a/src/ui/Forms/Assa/AssaStyles.Designer.cs +++ b/src/ui/Forms/Assa/AssaStyles.Designer.cs @@ -130,6 +130,7 @@ this.buttonAddToFile = new System.Windows.Forms.Button(); this.buttonStorageExport = new System.Windows.Forms.Button(); this.buttonStorageImport = new System.Windows.Forms.Button(); + this.labelDuplicateStyleNames = new System.Windows.Forms.Label(); this.buttonStorageCopy = new System.Windows.Forms.Button(); this.buttonStorageRemoveAll = new System.Windows.Forms.Button(); this.buttonStorageAdd = new System.Windows.Forms.Button(); @@ -167,7 +168,6 @@ this.labelStorageCategory = new System.Windows.Forms.Label(); this.splitContainer1 = new System.Windows.Forms.SplitContainer(); this.buttonApply = new System.Windows.Forms.Button(); - this.labelDuplicateStyleNames = new System.Windows.Forms.Label(); this.contextMenuStripFile.SuspendLayout(); this.groupBoxStyles.SuspendLayout(); this.groupBoxProperties.SuspendLayout(); @@ -1098,7 +1098,7 @@ // this.checkBoxStrikeout.AutoSize = true; this.checkBoxStrikeout.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Strikeout, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.checkBoxStrikeout.Location = new System.Drawing.Point(246, 54); + this.checkBoxStrikeout.Location = new System.Drawing.Point(265, 54); this.checkBoxStrikeout.Name = "checkBoxStrikeout"; this.checkBoxStrikeout.Size = new System.Drawing.Size(68, 17); this.checkBoxStrikeout.TabIndex = 8; @@ -1120,7 +1120,7 @@ // this.checkBoxFontUnderline.AutoSize = true; this.checkBoxFontUnderline.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.checkBoxFontUnderline.Location = new System.Drawing.Point(169, 54); + this.checkBoxFontUnderline.Location = new System.Drawing.Point(173, 54); this.checkBoxFontUnderline.Name = "checkBoxFontUnderline"; this.checkBoxFontUnderline.Size = new System.Drawing.Size(71, 17); this.checkBoxFontUnderline.TabIndex = 7; @@ -1146,7 +1146,7 @@ // this.checkBoxFontItalic.AutoSize = true; this.checkBoxFontItalic.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.checkBoxFontItalic.Location = new System.Drawing.Point(90, 54); + this.checkBoxFontItalic.Location = new System.Drawing.Point(94, 54); this.checkBoxFontItalic.Name = "checkBoxFontItalic"; this.checkBoxFontItalic.Size = new System.Drawing.Size(48, 17); this.checkBoxFontItalic.TabIndex = 6; @@ -1273,6 +1273,18 @@ this.buttonStorageImport.UseVisualStyleBackColor = true; this.buttonStorageImport.Click += new System.EventHandler(this.buttonStorageImport_Click); // + // labelDuplicateStyleNames + // + this.labelDuplicateStyleNames.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.labelDuplicateStyleNames.AutoSize = true; + this.labelDuplicateStyleNames.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.labelDuplicateStyleNames.ForeColor = System.Drawing.Color.Firebrick; + this.labelDuplicateStyleNames.Location = new System.Drawing.Point(494, 102); + this.labelDuplicateStyleNames.Name = "labelDuplicateStyleNames"; + this.labelDuplicateStyleNames.Size = new System.Drawing.Size(154, 13); + this.labelDuplicateStyleNames.TabIndex = 10; + this.labelDuplicateStyleNames.Text = "labelDuplicateStyleNames"; + // // buttonStorageCopy // this.buttonStorageCopy.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); @@ -1614,18 +1626,6 @@ this.buttonApply.UseVisualStyleBackColor = true; this.buttonApply.Click += new System.EventHandler(this.buttonApply_Click); // - // labelDuplicateStyleNames - // - this.labelDuplicateStyleNames.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.labelDuplicateStyleNames.AutoSize = true; - this.labelDuplicateStyleNames.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.labelDuplicateStyleNames.ForeColor = System.Drawing.Color.Firebrick; - this.labelDuplicateStyleNames.Location = new System.Drawing.Point(494, 102); - this.labelDuplicateStyleNames.Name = "labelDuplicateStyleNames"; - this.labelDuplicateStyleNames.Size = new System.Drawing.Size(154, 13); - this.labelDuplicateStyleNames.TabIndex = 10; - this.labelDuplicateStyleNames.Text = "labelDuplicateStyleNames"; - // // AssaStyles // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); diff --git a/src/ui/Forms/Main.cs b/src/ui/Forms/Main.cs index 4daf6fdfc..db6e152ee 100644 --- a/src/ui/Forms/Main.cs +++ b/src/ui/Forms/Main.cs @@ -13846,7 +13846,7 @@ namespace Nikse.SubtitleEdit.Forms var webVttStyles = new List(); if (isWebVtt) { - webVttStyles = WebVttHelper.GetStyles(_subtitle); + webVttStyles = WebVttHelper.GetStyles(_subtitle.Header); } MakeHistoryForUndo(_language.BeforeSettingColor); diff --git a/src/ui/Forms/VTT/WebVttImportExport.cs b/src/ui/Forms/VTT/WebVttImportExport.cs index fda8d1614..4b7b436da 100644 --- a/src/ui/Forms/VTT/WebVttImportExport.cs +++ b/src/ui/Forms/VTT/WebVttImportExport.cs @@ -11,19 +11,27 @@ namespace Nikse.SubtitleEdit.Forms.VTT { public sealed partial class WebVttImportExport : Form { - private readonly List _stylesToExport; + private readonly List _styles; private readonly SubtitleFormat _format; + private readonly bool _export; public List ImportExportStyles { get; set; } + public string FileName { get; set; } - public WebVttImportExport(List stylesToExport) + public WebVttImportExport(List styles, string fileName = null) { InitializeComponent(); UiUtil.FixFonts(this); - _stylesToExport = stylesToExport; + _styles = styles; + _export = fileName == null; + + if (!_export) + { + _styles = WebVttHelper.GetStyles(FileUtil.ReadAllTextShared(fileName, Encoding.UTF8)); + } listViewExportStyles.Columns[0].Width = listViewExportStyles.Width - 20; - foreach (var style in stylesToExport) + foreach (var style in _styles) { listViewExportStyles.Items.Add(new ListViewItem(style.Name) { Checked = true, Tag = style }); } @@ -37,6 +45,39 @@ namespace Nikse.SubtitleEdit.Forms.VTT } private void buttonOK_Click(object sender, EventArgs e) + { + if (_export) + { + ExportStyles(); + } + else + { + ImportStyles(); + } + } + + private void ImportStyles() + { + ImportExportStyles = new List(); + foreach (ListViewItem listViewItem in listViewExportStyles.Items) + { + if (listViewItem.Checked) + { + ImportExportStyles.Add((WebVttStyle)listViewItem.Tag); + } + } + + if (ImportExportStyles.Count > 0) + { + DialogResult= DialogResult.OK; + } + else + { + DialogResult = DialogResult.Cancel; + } + } + + private void ExportStyles() { var exportNames = new List(); var occursMoreThanOnce = new List(); @@ -70,92 +111,30 @@ namespace Nikse.SubtitleEdit.Forms.VTT saveFileDialogStyle.Title = LanguageSettings.Current.SubStationAlphaStyles.ExportStyleToFile; saveFileDialogStyle.InitialDirectory = Configuration.DataDirectory; - saveFileDialogStyle.Filter = SubStationAlpha.NameOfFormat + "|*.webvtt|" + LanguageSettings.Current.General.AllFiles + "|*.*"; + saveFileDialogStyle.Filter = WebVTT.NameOfFormat + "|*.webvtt;*.vtt|" + LanguageSettings.Current.General.AllFiles + "|*.*"; saveFileDialogStyle.FileName = "my_styles.webvtt"; - - if (saveFileDialogStyle.ShowDialog(this) == DialogResult.OK) + if (saveFileDialogStyle.ShowDialog() != DialogResult.OK) { - if (File.Exists(saveFileDialogStyle.FileName)) - { - var s = new Subtitle(); - var format = s.LoadSubtitle(saveFileDialogStyle.FileName, out _, null); - if (format == null) - { - MessageBox.Show("Not subtitle format: " + _format.Name); - return; - } - - if (format.Name != _format.Name) - { - MessageBox.Show(string.Format("Cannot save {1} style in {0} file!", format.Name, _format.Name)); - } - else - { - var sb = new StringBuilder(); - var stylesOn = false; - var done = false; - var styleFormat = SsaStyle.DefaultAssStyleFormat; - foreach (var line in File.ReadAllLines(saveFileDialogStyle.FileName)) - { - if (line.StartsWith("format:", StringComparison.OrdinalIgnoreCase)) - { - styleFormat = line; - } - else if (line.StartsWith("style:", StringComparison.OrdinalIgnoreCase)) - { - stylesOn = true; - } - else if (stylesOn && !done) - { - done = true; - foreach (var style in ImportExportStyles) - { - sb.AppendLine(style.ToString()); - } - } - sb.AppendLine(line); - foreach (var style in ImportExportStyles) - { - var toLower = line.Trim().ToLowerInvariant(); - while (toLower.Contains(": ")) - { - toLower = toLower.Replace(": ", ":"); - } - - while (toLower.Contains(" :")) - { - toLower = toLower.Replace(" :", ":"); - } - - if (stylesOn && toLower.StartsWith("cue:(" + style.Name.Trim() + ")", StringComparison.OrdinalIgnoreCase)) - { - MessageBox.Show(string.Format(LanguageSettings.Current.SubStationAlphaStyles.StyleAlreadyExits, style.Name)); - return; - } - } - } - File.WriteAllText(saveFileDialogStyle.FileName, sb.ToString(), Encoding.UTF8); - } - } - else - { - var sb = new StringBuilder(); - foreach (var style in ImportExportStyles) - { - sb.Append("cue:(" + style.Name.Trim() + ") { " + style.ToString() + " }"); - sb.Append(Environment.NewLine); - } - - var content = "WEBVTT" + Environment.NewLine + - Environment.NewLine + - "STYLE" + Environment.NewLine + - sb.ToString().Trim(); - File.WriteAllText(saveFileDialogStyle.FileName, content, Encoding.UTF8); - DialogResult = DialogResult.OK; - } + return; } + + var sb = new StringBuilder(); + foreach (var style in ImportExportStyles) + { + sb.Append("::cue(" + style.Name.Trim() + ") { " + style + " }"); + sb.Append(Environment.NewLine); + } + + var content = "WEBVTT" + Environment.NewLine + + Environment.NewLine + + "STYLE" + Environment.NewLine + + sb.ToString().Trim(); + File.WriteAllText(saveFileDialogStyle.FileName, content, Encoding.UTF8); + DialogResult = DialogResult.OK; + FileName = saveFileDialogStyle.FileName; } + private void WebVttImportExport_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Escape) diff --git a/src/ui/Forms/VTT/WebVttStyleManager.Designer.cs b/src/ui/Forms/VTT/WebVttStyleManager.Designer.cs index a806ab5b6..e8c017257 100644 --- a/src/ui/Forms/VTT/WebVttStyleManager.Designer.cs +++ b/src/ui/Forms/VTT/WebVttStyleManager.Designer.cs @@ -28,6 +28,7 @@ /// private void InitializeComponent() { + this.components = new System.ComponentModel.Container(); this.groupBoxStyles = new System.Windows.Forms.GroupBox(); this.buttonExport = new System.Windows.Forms.Button(); this.buttonImport = new System.Windows.Forms.Button(); @@ -76,6 +77,21 @@ this.buttonCancel = new System.Windows.Forms.Button(); this.buttonOK = new System.Windows.Forms.Button(); this.labelDuplicateStyleNames = new System.Windows.Forms.Label(); + this.contextMenuStripStyles = new System.Windows.Forms.ContextMenuStrip(this.components); + this.deleteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItemRemoveAll = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); + this.moveUpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.moveDownToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.moveTopToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.moveBottomToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); + this.newToolStripMenuItemNew = new System.Windows.Forms.ToolStripMenuItem(); + this.copyToolStripMenuItemCopy = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripMenuItemImport = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItemExport = new System.Windows.Forms.ToolStripMenuItem(); + this.labelInfo = new System.Windows.Forms.Label(); this.groupBoxStyles.SuspendLayout(); this.groupBoxProperties.SuspendLayout(); this.groupBoxAfter.SuspendLayout(); @@ -85,6 +101,7 @@ this.groupBoxFont.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownShadowWidth)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownFontSize)).BeginInit(); + this.contextMenuStripStyles.SuspendLayout(); this.SuspendLayout(); // // groupBoxStyles @@ -125,6 +142,7 @@ this.buttonImport.TabIndex = 1; this.buttonImport.Text = "Import..."; this.buttonImport.UseVisualStyleBackColor = true; + this.buttonImport.Click += new System.EventHandler(this.buttonImport_Click); // // buttonCopy // @@ -187,6 +205,7 @@ this.columnHeaderForeColor, this.columnHeaderBackgroundColor, this.columnHeaderUseCount}); + this.listViewStyles.ContextMenuStrip = this.contextMenuStripStyles; this.listViewStyles.FullRowSelect = true; this.listViewStyles.HideSelection = false; this.listViewStyles.Location = new System.Drawing.Point(6, 19); @@ -196,6 +215,7 @@ this.listViewStyles.UseCompatibleStateImageBehavior = false; this.listViewStyles.View = System.Windows.Forms.View.Details; this.listViewStyles.SelectedIndexChanged += new System.EventHandler(this.listViewStyles_SelectedIndexChanged); + this.listViewStyles.KeyDown += new System.Windows.Forms.KeyEventHandler(this.listViewStyles_KeyDown); // // columnHeaderName // @@ -294,6 +314,7 @@ this.textBoxStyleName.Name = "textBoxStyleName"; this.textBoxStyleName.Size = new System.Drawing.Size(336, 20); this.textBoxStyleName.TabIndex = 1; + this.textBoxStyleName.TextChanged += new System.EventHandler(this.textBoxStyleName_TextChanged); // // labelStyleName // @@ -470,6 +491,7 @@ this.checkBoxStrikeout.TabIndex = 8; this.checkBoxStrikeout.Text = "Strikeout"; this.checkBoxStrikeout.UseVisualStyleBackColor = true; + this.checkBoxStrikeout.CheckedChanged += new System.EventHandler(this.checkBoxStrikeout_CheckedChanged); // // buttonPrimaryColor // @@ -491,6 +513,7 @@ this.checkBoxFontUnderline.TabIndex = 7; this.checkBoxFontUnderline.Text = "Underline"; this.checkBoxFontUnderline.UseVisualStyleBackColor = true; + this.checkBoxFontUnderline.CheckedChanged += new System.EventHandler(this.checkBoxFontUnderline_CheckedChanged); // // numericUpDownFontSize // @@ -516,6 +539,7 @@ this.checkBoxFontItalic.TabIndex = 6; this.checkBoxFontItalic.Text = "Italic"; this.checkBoxFontItalic.UseVisualStyleBackColor = true; + this.checkBoxFontItalic.CheckedChanged += new System.EventHandler(this.checkBoxFontItalic_CheckedChanged); // // checkBoxFontBold // @@ -527,6 +551,7 @@ this.checkBoxFontBold.TabIndex = 5; this.checkBoxFontBold.Text = "Bold"; this.checkBoxFontBold.UseVisualStyleBackColor = true; + this.checkBoxFontBold.CheckedChanged += new System.EventHandler(this.checkBoxFontBold_CheckedChanged); // // comboBoxFontName // @@ -603,11 +628,135 @@ this.labelDuplicateStyleNames.TabIndex = 11; this.labelDuplicateStyleNames.Text = "labelDuplicateStyleNames"; // + // contextMenuStripStyles + // + this.contextMenuStripStyles.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.deleteToolStripMenuItem, + this.toolStripMenuItemRemoveAll, + this.toolStripSeparator4, + this.moveUpToolStripMenuItem, + this.moveDownToolStripMenuItem, + this.moveTopToolStripMenuItem, + this.moveBottomToolStripMenuItem, + this.toolStripSeparator3, + this.newToolStripMenuItemNew, + this.copyToolStripMenuItemCopy, + this.toolStripSeparator1, + this.toolStripMenuItemImport, + this.toolStripMenuItemExport}); + this.contextMenuStripStyles.Name = "contextMenuStrip1"; + this.contextMenuStripStyles.Size = new System.Drawing.Size(216, 242); + // + // deleteToolStripMenuItem + // + this.deleteToolStripMenuItem.Name = "deleteToolStripMenuItem"; + this.deleteToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Delete; + this.deleteToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + this.deleteToolStripMenuItem.Text = "Remove"; + this.deleteToolStripMenuItem.Click += new System.EventHandler(this.deleteToolStripMenuItem_Click); + // + // toolStripMenuItemRemoveAll + // + this.toolStripMenuItemRemoveAll.Name = "toolStripMenuItemRemoveAll"; + this.toolStripMenuItemRemoveAll.Size = new System.Drawing.Size(215, 22); + this.toolStripMenuItemRemoveAll.Text = "Remove all"; + this.toolStripMenuItemRemoveAll.Click += new System.EventHandler(this.toolStripMenuItemRemoveAll_Click); + // + // toolStripSeparator4 + // + this.toolStripSeparator4.Name = "toolStripSeparator4"; + this.toolStripSeparator4.Size = new System.Drawing.Size(212, 6); + // + // moveUpToolStripMenuItem + // + this.moveUpToolStripMenuItem.Name = "moveUpToolStripMenuItem"; + this.moveUpToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Up))); + this.moveUpToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + this.moveUpToolStripMenuItem.Text = "Move up"; + this.moveUpToolStripMenuItem.Click += new System.EventHandler(this.moveUpToolStripMenuItem_Click); + // + // moveDownToolStripMenuItem + // + this.moveDownToolStripMenuItem.Name = "moveDownToolStripMenuItem"; + this.moveDownToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Down))); + this.moveDownToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + this.moveDownToolStripMenuItem.Text = "Move down"; + this.moveDownToolStripMenuItem.Click += new System.EventHandler(this.moveDownToolStripMenuItem_Click); + // + // moveTopToolStripMenuItem + // + this.moveTopToolStripMenuItem.Name = "moveTopToolStripMenuItem"; + this.moveTopToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Home))); + this.moveTopToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + this.moveTopToolStripMenuItem.Text = "Move to top"; + this.moveTopToolStripMenuItem.Click += new System.EventHandler(this.moveTopToolStripMenuItem_Click); + // + // moveBottomToolStripMenuItem + // + this.moveBottomToolStripMenuItem.Name = "moveBottomToolStripMenuItem"; + this.moveBottomToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.End))); + this.moveBottomToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + this.moveBottomToolStripMenuItem.Text = "Move to bottom"; + this.moveBottomToolStripMenuItem.Click += new System.EventHandler(this.moveBottomToolStripMenuItem_Click); + // + // toolStripSeparator3 + // + this.toolStripSeparator3.Name = "toolStripSeparator3"; + this.toolStripSeparator3.Size = new System.Drawing.Size(212, 6); + // + // newToolStripMenuItemNew + // + this.newToolStripMenuItemNew.Name = "newToolStripMenuItemNew"; + this.newToolStripMenuItemNew.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N))); + this.newToolStripMenuItemNew.Size = new System.Drawing.Size(215, 22); + this.newToolStripMenuItemNew.Text = "New"; + this.newToolStripMenuItemNew.Click += new System.EventHandler(this.newToolStripMenuItemNew_Click); + // + // copyToolStripMenuItemCopy + // + this.copyToolStripMenuItemCopy.Name = "copyToolStripMenuItemCopy"; + this.copyToolStripMenuItemCopy.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C))); + this.copyToolStripMenuItemCopy.Size = new System.Drawing.Size(215, 22); + this.copyToolStripMenuItemCopy.Text = "Copy"; + this.copyToolStripMenuItemCopy.Click += new System.EventHandler(this.copyToolStripMenuItemCopy_Click); + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(212, 6); + // + // toolStripMenuItemImport + // + this.toolStripMenuItemImport.Name = "toolStripMenuItemImport"; + this.toolStripMenuItemImport.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.I))); + this.toolStripMenuItemImport.Size = new System.Drawing.Size(215, 22); + this.toolStripMenuItemImport.Text = "Import..."; + this.toolStripMenuItemImport.Click += new System.EventHandler(this.toolStripMenuItemImport_Click); + // + // toolStripMenuItemExport + // + this.toolStripMenuItemExport.Name = "toolStripMenuItemExport"; + this.toolStripMenuItemExport.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.E))); + this.toolStripMenuItemExport.Size = new System.Drawing.Size(215, 22); + this.toolStripMenuItemExport.Text = "Export..."; + this.toolStripMenuItemExport.Click += new System.EventHandler(this.toolStripMenuItemExport_Click); + // + // labelInfo + // + this.labelInfo.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.labelInfo.AutoSize = true; + this.labelInfo.Location = new System.Drawing.Point(8, 614); + this.labelInfo.Name = "labelInfo"; + this.labelInfo.Size = new System.Drawing.Size(47, 13); + this.labelInfo.TabIndex = 13; + this.labelInfo.Text = "labelInfo"; + // // WebVttStyleManager // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(1110, 654); + this.Controls.Add(this.labelInfo); this.Controls.Add(this.labelDuplicateStyleNames); this.Controls.Add(this.buttonApply); this.Controls.Add(this.buttonCancel); @@ -634,6 +783,7 @@ this.groupBoxFont.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownShadowWidth)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownFontSize)).EndInit(); + this.contextMenuStripStyles.ResumeLayout(false); this.ResumeLayout(false); this.PerformLayout(); @@ -689,5 +839,20 @@ private System.Windows.Forms.Label labelBefore; private System.Windows.Forms.CheckBox checkBoxShadowEnabled; private System.Windows.Forms.Label labelDuplicateStyleNames; + private System.Windows.Forms.ContextMenuStrip contextMenuStripStyles; + private System.Windows.Forms.ToolStripMenuItem deleteToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemRemoveAll; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator4; + private System.Windows.Forms.ToolStripMenuItem moveUpToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem moveDownToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem moveTopToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem moveBottomToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator3; + private System.Windows.Forms.ToolStripMenuItem newToolStripMenuItemNew; + private System.Windows.Forms.ToolStripMenuItem copyToolStripMenuItemCopy; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemImport; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemExport; + private System.Windows.Forms.Label labelInfo; } } \ No newline at end of file diff --git a/src/ui/Forms/VTT/WebVttStyleManager.cs b/src/ui/Forms/VTT/WebVttStyleManager.cs index 0f5312640..6f5380844 100644 --- a/src/ui/Forms/VTT/WebVttStyleManager.cs +++ b/src/ui/Forms/VTT/WebVttStyleManager.cs @@ -1,5 +1,4 @@ using Nikse.SubtitleEdit.Core.Common; -using Nikse.SubtitleEdit.Forms.Styles; using Nikse.SubtitleEdit.Logic; using System; using System.Collections.Generic; @@ -30,8 +29,8 @@ namespace Nikse.SubtitleEdit.Forms.VTT UiUtil.FixLargeFonts(this, buttonOK); _subtitle = subtitle; - _webVttStyles = WebVttHelper.GetStyles(subtitle); - _originalWebVttStyles = WebVttHelper.GetStyles(subtitle); + _webVttStyles = WebVttHelper.GetStyles(subtitle.Header); + _originalWebVttStyles = WebVttHelper.GetStyles(subtitle.Header); Header = subtitle.Header; InitializeStylesListView(_subtitle.GetParagraphOrDefault(index)?.Extra); CheckDuplicateStyles(); @@ -41,8 +40,10 @@ namespace Nikse.SubtitleEdit.Forms.VTT { fontNames.Add(x.Name); } + comboBoxFontName.Items.Clear(); comboBoxFontName.Items.AddRange(fontNames.ToArray()); + labelInfo.Text = string.Empty; } private void InitializeStylesListView(string currentStyleName) @@ -71,7 +72,8 @@ namespace Nikse.SubtitleEdit.Forms.VTT var item = new ListViewItem(style.Name.Trim().TrimStart('.')) { Checked = true, - UseItemStyleForSubItems = false + UseItemStyleForSubItems = false, + Tag = style, }; // Font name - 1 @@ -104,18 +106,22 @@ namespace Nikse.SubtitleEdit.Forms.VTT { fontStyle |= FontStyle.Bold; } + if (style.Italic.HasValue && style.Italic == true) { fontStyle |= FontStyle.Italic; } + if (style.Underline.HasValue && style.Underline == true) { fontStyle |= FontStyle.Underline; } + if (style.StrikeThrough.HasValue && style.StrikeThrough == true) { fontStyle |= FontStyle.Strikeout; } + subItem.Font = new Font(style.FontName, subItem.Font.Size, fontStyle); } catch @@ -136,6 +142,7 @@ namespace Nikse.SubtitleEdit.Forms.VTT count++; } } + subItem = new ListViewItem.ListViewSubItem(item, count.ToString()); item.SubItems.Add(subItem); @@ -420,7 +427,7 @@ namespace Nikse.SubtitleEdit.Forms.VTT _currentStyle.FontSize = numericUpDownFontSize.Value; } - listViewStyles.SelectedItems[0].SubItems[2].Text = _currentStyle.FontSize == null ? "-" : numericUpDownFontSize.Value.ToString(); + listViewStyles.SelectedItems[0].SubItems[2].Text = _currentStyle.FontSize == null ? "-" : numericUpDownFontSize.Value.ToString(); UpdateRawBeforeStyle(); } @@ -434,6 +441,7 @@ namespace Nikse.SubtitleEdit.Forms.VTT { listViewItem.Selected = false; } + listViewStyles.Items[listViewStyles.Items.Count - 1].Selected = true; listViewStyles.EnsureVisible(listViewStyles.Items.Count - 1); @@ -494,7 +502,7 @@ namespace Nikse.SubtitleEdit.Forms.VTT sbStyles.AppendLine("STYLE"); foreach (var style in _webVttStyles) { - var rawStyle = "::cue(." + style.Name.RemoveChar('.') + ") { " + WebVttHelper.GetCssProperties(style) + " }"; + var rawStyle = "::cue(." + style.Name.RemoveChar('.') + ") { " + WebVttHelper.GetCssProperties(style) + " }"; sbStyles.AppendLine(rawStyle); } @@ -515,9 +523,7 @@ namespace Nikse.SubtitleEdit.Forms.VTT return; } - var askText = listViewStyles.SelectedItems.Count > 1 ? - string.Format(LanguageSettings.Current.Main.DeleteXLinesPrompt, listViewStyles.SelectedItems.Count) : - LanguageSettings.Current.Main.DeleteOneLinePrompt; + var askText = listViewStyles.SelectedItems.Count > 1 ? string.Format(LanguageSettings.Current.Main.DeleteXLinesPrompt, listViewStyles.SelectedItems.Count) : LanguageSettings.Current.Main.DeleteOneLinePrompt; if (Configuration.Settings.General.PromptDeleteLines && MessageBox.Show(askText, string.Empty, MessageBoxButtons.YesNoCancel) != DialogResult.Yes) @@ -527,8 +533,8 @@ namespace Nikse.SubtitleEdit.Forms.VTT foreach (ListViewItem selectedItem in listViewStyles.SelectedItems) { - var name = selectedItem.Text; - listViewStyles.Items.RemoveAt(listViewStyles.SelectedItems[0].Index); + var name = "." + selectedItem.Text; + listViewStyles.Items.RemoveAt(selectedItem.Index); _webVttStyles.RemoveAll(p => p.Name == name); } @@ -560,9 +566,7 @@ namespace Nikse.SubtitleEdit.Forms.VTT private void buttonRemoveAll_Click(object sender, EventArgs e) { - var askText = listViewStyles.Items.Count == 1 ? - LanguageSettings.Current.Main.DeleteOneLinePrompt : - string.Format(LanguageSettings.Current.Main.DeleteXLinesPrompt, listViewStyles.Items.Count); + var askText = listViewStyles.Items.Count == 1 ? LanguageSettings.Current.Main.DeleteOneLinePrompt : string.Format(LanguageSettings.Current.Main.DeleteXLinesPrompt, listViewStyles.Items.Count); if (MessageBox.Show(askText, string.Empty, MessageBoxButtons.YesNoCancel) != DialogResult.Yes) { @@ -588,14 +592,16 @@ namespace Nikse.SubtitleEdit.Forms.VTT var styleName = selectedItem.Text; var oldStyle = _currentStyle; var style = new WebVttStyle(oldStyle) { Name = "." + string.Format(LanguageSettings.Current.SubStationAlphaStyles.CopyOfY, styleName.RemoveChar('.')) }; // Copy constructor + style.Name = style.Name.Replace(" ", "-"); - if (_webVttStyles.FirstOrDefault(p=>p.Name == style.Name) != null) + if (_webVttStyles.FirstOrDefault(p => p.Name == style.Name) != null) { var count = 2; var doRepeat = true; while (doRepeat) { style.Name = "." + string.Format(LanguageSettings.Current.SubStationAlphaStyles.CopyXOfY, count, styleName.RemoveChar('.')); + style.Name = style.Name.Replace(" ", "-"); doRepeat = _webVttStyles.FirstOrDefault(p => p.Name == style.Name) != null; count++; } @@ -606,6 +612,7 @@ namespace Nikse.SubtitleEdit.Forms.VTT _webVttStyles.Add(style); _doUpdate = true; } + CheckDuplicateStyles(); } @@ -616,12 +623,347 @@ namespace Nikse.SubtitleEdit.Forms.VTT return; } - using (var form = new WebVttImportExport(_webVttStyles)) + var styles = new List(); + foreach (ListViewItem item in listViewStyles.Items) + { + styles.Add((WebVttStyle)item.Tag); + } + + using (var form = new WebVttImportExport(styles)) { if (form.ShowDialog(this) == DialogResult.OK) { + var styleNames = "(" + form.ImportExportStyles.Count + ")"; + labelInfo.Text = string.Format(LanguageSettings.Current.SubStationAlphaStyles.StyleXExportedToFileY, styleNames, form.FileName); + + System.Threading.SynchronizationContext.Current.Post(TimeSpan.FromMilliseconds(3500), () => + { + try + { + labelInfo.Text = string.Empty; + } + catch + { + // ignore + } + }); } } } + + private void buttonImport_Click(object sender, EventArgs e) + { + using (var openFileDialog1 = new OpenFileDialog()) + { + openFileDialog1.Title = LanguageSettings.Current.General.OpenSubtitle; + openFileDialog1.FileName = string.Empty; + openFileDialog1.Filter = "WebVTT files|*.webvtt;*.vtt"; + openFileDialog1.FileName = string.Empty; + if (openFileDialog1.ShowDialog() != DialogResult.OK) + { + return; + } + + using (var form = new WebVttImportExport(_webVttStyles, openFileDialog1.FileName)) + { + if (form.ShowDialog(this) == DialogResult.OK) + { + foreach (var style in form.ImportExportStyles) + { + style.Name = GetUniqueName(style); + AddStyle(listViewStyles, style, _subtitle); + _webVttStyles.Add(style); + } + } + } + } + } + + private string GetUniqueName(WebVttStyle style) + { + var styleName = style.Name; + var newName = styleName; + if (_webVttStyles.FirstOrDefault(p => p.Name == style.Name) != null) + { + var count = 2; + var doRepeat = true; + while (doRepeat) + { + newName = "." + string.Format(LanguageSettings.Current.SubStationAlphaStyles.CopyXOfY, count, styleName.RemoveChar('.')); + newName = style.Name.Replace(" ", "-"); + doRepeat = _webVttStyles.FirstOrDefault(p => p.Name == style.Name) != null; + count++; + } + } + + return newName; + } + + private void listViewStyles_KeyDown(object sender, KeyEventArgs e) + { + if (e.Modifiers == Keys.Control && e.KeyCode == Keys.C) + { + buttonCopy_Click(null, null); + } + else if (e.Modifiers == Keys.None && e.KeyCode == Keys.Delete) + { + buttonRemove_Click(null, null); + } + else if (e.KeyCode == Keys.A && e.Modifiers == Keys.Control) + { + listViewStyles.SelectAll(); + e.SuppressKeyPress = true; + } + else if (e.KeyCode == Keys.D && e.Modifiers == Keys.Control) + { + listViewStyles.SelectFirstSelectedItemOnly(); + e.SuppressKeyPress = true; + } + else if (e.KeyCode == Keys.I && e.Modifiers == (Keys.Control | Keys.Shift)) + { + listViewStyles.InverseSelection(); + e.SuppressKeyPress = true; + } + } + + private void textBoxStyleName_TextChanged(object sender, EventArgs e) + { + if (!_doUpdate || listViewStyles.SelectedItems.Count != 1) + { + return; + } + + var newName = textBoxStyleName.Text.RemoveChar('.', ' ').Trim(); + if (_currentStyle.Name == "." + newName) + { + return; + } + + if (string.IsNullOrEmpty(newName) || _webVttStyles.Any(p => p.Name == "." + newName)) + { + textBoxStyleName.BackColor = Configuration.Settings.Tools.ListViewSyntaxErrorColor; + } + else + { + textBoxStyleName.BackColor = listViewStyles.BackColor; + _currentStyle.Name = "." + newName; + listViewStyles.SelectedItems[0].Text = newName; + } + } + + private void checkBoxFontBold_CheckedChanged(object sender, EventArgs e) + { + if (!_doUpdate || listViewStyles.SelectedItems.Count != 1) + { + return; + } + + if (checkBoxFontBold.Checked) + { + _currentStyle.Bold = true; + } + else + { + _currentStyle.Bold = null; + } + } + + private void checkBoxFontItalic_CheckedChanged(object sender, EventArgs e) + { + if (!_doUpdate || listViewStyles.SelectedItems.Count != 1) + { + return; + } + + var idx = listViewStyles.SelectedItems[0].Index; + if (checkBoxFontItalic.Checked) + { + _currentStyle.Italic = true; + } + else + { + _currentStyle.Italic = null; + } + + listViewStyles.SelectedItems[0].SubItems[3].Text = _currentStyle.Italic.HasValue && _currentStyle.Italic.Value == true ? LanguageSettings.Current.General.Yes : "-"; + } + + private void checkBoxFontUnderline_CheckedChanged(object sender, EventArgs e) + { + if (!_doUpdate || listViewStyles.SelectedItems.Count != 1) + { + return; + } + + if (checkBoxFontUnderline.Checked) + { + _currentStyle.Underline = true; + } + else + { + _currentStyle.Underline = null; + } + } + + private void checkBoxStrikeout_CheckedChanged(object sender, EventArgs e) + { + if (!_doUpdate || listViewStyles.SelectedItems.Count != 1) + { + return; + } + + if (checkBoxStrikeout.Checked) + { + _currentStyle.StrikeThrough = true; + } + else + { + _currentStyle.StrikeThrough = null; + } + } + + private void deleteToolStripMenuItem_Click(object sender, EventArgs e) + { + buttonRemove_Click(null, null); + } + + private void toolStripMenuItemRemoveAll_Click(object sender, EventArgs e) + { + buttonRemoveAll_Click(null, null); + } + + private void newToolStripMenuItemNew_Click(object sender, EventArgs e) + { + buttonAdd_Click(null, null); + } + + private void copyToolStripMenuItemCopy_Click(object sender, EventArgs e) + { + buttonCopy_Click(null, null); + } + + private void toolStripMenuItemImport_Click(object sender, EventArgs e) + { + buttonImport_Click(null, null); + } + + private void toolStripMenuItemExport_Click(object sender, EventArgs e) + { + buttonExport_Click(null, null); + } + + private void moveUpToolStripMenuItem_Click(object sender, EventArgs e) + { + MoveUp(listViewStyles); + } + + + private void MoveUp(ListView listView) + { + if (listView.SelectedItems.Count != 1) + { + return; + } + + var idx = listView.SelectedItems[0].Index; + if (idx == 0) + { + return; + } + + var item = listView.SelectedItems[0]; + listView.Items.RemoveAt(idx); + + var style = _webVttStyles[idx]; + _webVttStyles.RemoveAt(idx); + _webVttStyles.Insert(idx - 1, style); + + idx--; + listView.Items.Insert(idx, item); + } + + private void MoveDown(ListView listView) + { + if (listView.SelectedItems.Count != 1) + { + return; + } + + var idx = listView.SelectedItems[0].Index; + if (idx >= listView.Items.Count - 1) + { + return; + } + + var item = listView.SelectedItems[0]; + listView.Items.RemoveAt(idx); + var style = _webVttStyles[idx]; + _webVttStyles.RemoveAt(idx); + _webVttStyles.Insert(idx + 1, style); + idx++; + listView.Items.Insert(idx, item); + } + + private void MoveToTop(ListView listView) + { + if (listView.SelectedItems.Count != 1) + { + return; + } + + var idx = listView.SelectedItems[0].Index; + if (idx == 0) + { + return; + } + + var item = listView.SelectedItems[0]; + listView.Items.RemoveAt(idx); + + var style = _webVttStyles[idx]; + _webVttStyles.RemoveAt(idx); + _webVttStyles.Insert(0, style); + + idx = 0; + listView.Items.Insert(idx, item); + } + + private void MoveToBottom(ListView listView) + { + if (listView.SelectedItems.Count != 1) + { + return; + } + + var idx = listView.SelectedItems[0].Index; + if (idx == listView.Items.Count - 1) + { + return; + } + + var item = listView.SelectedItems[0]; + listView.Items.RemoveAt(idx); + + var style = _webVttStyles[idx]; + _webVttStyles.RemoveAt(idx); + _webVttStyles.Add(style); + + listView.Items.Add(item); + } + + private void moveDownToolStripMenuItem_Click(object sender, EventArgs e) + { + MoveDown(listViewStyles); + } + + private void moveTopToolStripMenuItem_Click(object sender, EventArgs e) + { + MoveToTop(listViewStyles); + } + + private void moveBottomToolStripMenuItem_Click(object sender, EventArgs e) + { + MoveToBottom(listViewStyles); + } } } diff --git a/src/ui/Forms/VTT/WebVttStyleManager.resx b/src/ui/Forms/VTT/WebVttStyleManager.resx index 1af7de150..a688d66d1 100644 --- a/src/ui/Forms/VTT/WebVttStyleManager.resx +++ b/src/ui/Forms/VTT/WebVttStyleManager.resx @@ -117,4 +117,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 17, 17 + \ No newline at end of file From c69666b583b723813d0f06c8c8a536f17d850c63 Mon Sep 17 00:00:00 2001 From: niksedk Date: Fri, 23 Jun 2023 20:46:25 +0200 Subject: [PATCH 31/96] Work on WebVTT --- .../Forms/VTT/WebVttStyleManager.Designer.cs | 260 +++++++++--------- src/ui/Forms/VTT/WebVttStyleManager.cs | 25 +- 2 files changed, 151 insertions(+), 134 deletions(-) diff --git a/src/ui/Forms/VTT/WebVttStyleManager.Designer.cs b/src/ui/Forms/VTT/WebVttStyleManager.Designer.cs index e8c017257..c36a4e59a 100644 --- a/src/ui/Forms/VTT/WebVttStyleManager.Designer.cs +++ b/src/ui/Forms/VTT/WebVttStyleManager.Designer.cs @@ -44,6 +44,20 @@ this.columnHeaderForeColor = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnHeaderBackgroundColor = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnHeaderUseCount = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.contextMenuStripStyles = new System.Windows.Forms.ContextMenuStrip(this.components); + this.deleteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItemRemoveAll = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); + this.moveUpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.moveDownToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.moveTopToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.moveBottomToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); + this.newToolStripMenuItemNew = new System.Windows.Forms.ToolStripMenuItem(); + this.copyToolStripMenuItemCopy = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripMenuItemImport = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItemExport = new System.Windows.Forms.ToolStripMenuItem(); this.groupBoxProperties = new System.Windows.Forms.GroupBox(); this.groupBoxAfter = new System.Windows.Forms.GroupBox(); this.labelAfter = new System.Windows.Forms.Label(); @@ -77,22 +91,9 @@ this.buttonCancel = new System.Windows.Forms.Button(); this.buttonOK = new System.Windows.Forms.Button(); this.labelDuplicateStyleNames = new System.Windows.Forms.Label(); - this.contextMenuStripStyles = new System.Windows.Forms.ContextMenuStrip(this.components); - this.deleteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripMenuItemRemoveAll = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); - this.moveUpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.moveDownToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.moveTopToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.moveBottomToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); - this.newToolStripMenuItemNew = new System.Windows.Forms.ToolStripMenuItem(); - this.copyToolStripMenuItemCopy = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); - this.toolStripMenuItemImport = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripMenuItemExport = new System.Windows.Forms.ToolStripMenuItem(); this.labelInfo = new System.Windows.Forms.Label(); this.groupBoxStyles.SuspendLayout(); + this.contextMenuStripStyles.SuspendLayout(); this.groupBoxProperties.SuspendLayout(); this.groupBoxAfter.SuspendLayout(); this.groupBoxBefore.SuspendLayout(); @@ -101,7 +102,6 @@ this.groupBoxFont.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownShadowWidth)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownFontSize)).BeginInit(); - this.contextMenuStripStyles.SuspendLayout(); this.SuspendLayout(); // // groupBoxStyles @@ -118,7 +118,7 @@ this.groupBoxStyles.Size = new System.Drawing.Size(600, 599); this.groupBoxStyles.TabIndex = 1; this.groupBoxStyles.TabStop = false; - this.groupBoxStyles.Text = "File styles"; + this.groupBoxStyles.Text = "Styles"; // // buttonExport // @@ -250,6 +250,119 @@ // this.columnHeaderUseCount.Text = "Used#"; // + // contextMenuStripStyles + // + this.contextMenuStripStyles.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.deleteToolStripMenuItem, + this.toolStripMenuItemRemoveAll, + this.toolStripSeparator4, + this.moveUpToolStripMenuItem, + this.moveDownToolStripMenuItem, + this.moveTopToolStripMenuItem, + this.moveBottomToolStripMenuItem, + this.toolStripSeparator3, + this.newToolStripMenuItemNew, + this.copyToolStripMenuItemCopy, + this.toolStripSeparator1, + this.toolStripMenuItemImport, + this.toolStripMenuItemExport}); + this.contextMenuStripStyles.Name = "contextMenuStrip1"; + this.contextMenuStripStyles.Size = new System.Drawing.Size(216, 242); + // + // deleteToolStripMenuItem + // + this.deleteToolStripMenuItem.Name = "deleteToolStripMenuItem"; + this.deleteToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Delete; + this.deleteToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + this.deleteToolStripMenuItem.Text = "Remove"; + this.deleteToolStripMenuItem.Click += new System.EventHandler(this.deleteToolStripMenuItem_Click); + // + // toolStripMenuItemRemoveAll + // + this.toolStripMenuItemRemoveAll.Name = "toolStripMenuItemRemoveAll"; + this.toolStripMenuItemRemoveAll.Size = new System.Drawing.Size(215, 22); + this.toolStripMenuItemRemoveAll.Text = "Remove all"; + this.toolStripMenuItemRemoveAll.Click += new System.EventHandler(this.toolStripMenuItemRemoveAll_Click); + // + // toolStripSeparator4 + // + this.toolStripSeparator4.Name = "toolStripSeparator4"; + this.toolStripSeparator4.Size = new System.Drawing.Size(212, 6); + // + // moveUpToolStripMenuItem + // + this.moveUpToolStripMenuItem.Name = "moveUpToolStripMenuItem"; + this.moveUpToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Up))); + this.moveUpToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + this.moveUpToolStripMenuItem.Text = "Move up"; + this.moveUpToolStripMenuItem.Click += new System.EventHandler(this.moveUpToolStripMenuItem_Click); + // + // moveDownToolStripMenuItem + // + this.moveDownToolStripMenuItem.Name = "moveDownToolStripMenuItem"; + this.moveDownToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Down))); + this.moveDownToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + this.moveDownToolStripMenuItem.Text = "Move down"; + this.moveDownToolStripMenuItem.Click += new System.EventHandler(this.moveDownToolStripMenuItem_Click); + // + // moveTopToolStripMenuItem + // + this.moveTopToolStripMenuItem.Name = "moveTopToolStripMenuItem"; + this.moveTopToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Home))); + this.moveTopToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + this.moveTopToolStripMenuItem.Text = "Move to top"; + this.moveTopToolStripMenuItem.Click += new System.EventHandler(this.moveTopToolStripMenuItem_Click); + // + // moveBottomToolStripMenuItem + // + this.moveBottomToolStripMenuItem.Name = "moveBottomToolStripMenuItem"; + this.moveBottomToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.End))); + this.moveBottomToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + this.moveBottomToolStripMenuItem.Text = "Move to bottom"; + this.moveBottomToolStripMenuItem.Click += new System.EventHandler(this.moveBottomToolStripMenuItem_Click); + // + // toolStripSeparator3 + // + this.toolStripSeparator3.Name = "toolStripSeparator3"; + this.toolStripSeparator3.Size = new System.Drawing.Size(212, 6); + // + // newToolStripMenuItemNew + // + this.newToolStripMenuItemNew.Name = "newToolStripMenuItemNew"; + this.newToolStripMenuItemNew.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N))); + this.newToolStripMenuItemNew.Size = new System.Drawing.Size(215, 22); + this.newToolStripMenuItemNew.Text = "New"; + this.newToolStripMenuItemNew.Click += new System.EventHandler(this.newToolStripMenuItemNew_Click); + // + // copyToolStripMenuItemCopy + // + this.copyToolStripMenuItemCopy.Name = "copyToolStripMenuItemCopy"; + this.copyToolStripMenuItemCopy.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C))); + this.copyToolStripMenuItemCopy.Size = new System.Drawing.Size(215, 22); + this.copyToolStripMenuItemCopy.Text = "Copy"; + this.copyToolStripMenuItemCopy.Click += new System.EventHandler(this.copyToolStripMenuItemCopy_Click); + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(212, 6); + // + // toolStripMenuItemImport + // + this.toolStripMenuItemImport.Name = "toolStripMenuItemImport"; + this.toolStripMenuItemImport.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.I))); + this.toolStripMenuItemImport.Size = new System.Drawing.Size(215, 22); + this.toolStripMenuItemImport.Text = "Import..."; + this.toolStripMenuItemImport.Click += new System.EventHandler(this.toolStripMenuItemImport_Click); + // + // toolStripMenuItemExport + // + this.toolStripMenuItemExport.Name = "toolStripMenuItemExport"; + this.toolStripMenuItemExport.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.E))); + this.toolStripMenuItemExport.Size = new System.Drawing.Size(215, 22); + this.toolStripMenuItemExport.Text = "Export..."; + this.toolStripMenuItemExport.Click += new System.EventHandler(this.toolStripMenuItemExport_Click); + // // groupBoxProperties // this.groupBoxProperties.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) @@ -628,119 +741,6 @@ this.labelDuplicateStyleNames.TabIndex = 11; this.labelDuplicateStyleNames.Text = "labelDuplicateStyleNames"; // - // contextMenuStripStyles - // - this.contextMenuStripStyles.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.deleteToolStripMenuItem, - this.toolStripMenuItemRemoveAll, - this.toolStripSeparator4, - this.moveUpToolStripMenuItem, - this.moveDownToolStripMenuItem, - this.moveTopToolStripMenuItem, - this.moveBottomToolStripMenuItem, - this.toolStripSeparator3, - this.newToolStripMenuItemNew, - this.copyToolStripMenuItemCopy, - this.toolStripSeparator1, - this.toolStripMenuItemImport, - this.toolStripMenuItemExport}); - this.contextMenuStripStyles.Name = "contextMenuStrip1"; - this.contextMenuStripStyles.Size = new System.Drawing.Size(216, 242); - // - // deleteToolStripMenuItem - // - this.deleteToolStripMenuItem.Name = "deleteToolStripMenuItem"; - this.deleteToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Delete; - this.deleteToolStripMenuItem.Size = new System.Drawing.Size(215, 22); - this.deleteToolStripMenuItem.Text = "Remove"; - this.deleteToolStripMenuItem.Click += new System.EventHandler(this.deleteToolStripMenuItem_Click); - // - // toolStripMenuItemRemoveAll - // - this.toolStripMenuItemRemoveAll.Name = "toolStripMenuItemRemoveAll"; - this.toolStripMenuItemRemoveAll.Size = new System.Drawing.Size(215, 22); - this.toolStripMenuItemRemoveAll.Text = "Remove all"; - this.toolStripMenuItemRemoveAll.Click += new System.EventHandler(this.toolStripMenuItemRemoveAll_Click); - // - // toolStripSeparator4 - // - this.toolStripSeparator4.Name = "toolStripSeparator4"; - this.toolStripSeparator4.Size = new System.Drawing.Size(212, 6); - // - // moveUpToolStripMenuItem - // - this.moveUpToolStripMenuItem.Name = "moveUpToolStripMenuItem"; - this.moveUpToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Up))); - this.moveUpToolStripMenuItem.Size = new System.Drawing.Size(215, 22); - this.moveUpToolStripMenuItem.Text = "Move up"; - this.moveUpToolStripMenuItem.Click += new System.EventHandler(this.moveUpToolStripMenuItem_Click); - // - // moveDownToolStripMenuItem - // - this.moveDownToolStripMenuItem.Name = "moveDownToolStripMenuItem"; - this.moveDownToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Down))); - this.moveDownToolStripMenuItem.Size = new System.Drawing.Size(215, 22); - this.moveDownToolStripMenuItem.Text = "Move down"; - this.moveDownToolStripMenuItem.Click += new System.EventHandler(this.moveDownToolStripMenuItem_Click); - // - // moveTopToolStripMenuItem - // - this.moveTopToolStripMenuItem.Name = "moveTopToolStripMenuItem"; - this.moveTopToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Home))); - this.moveTopToolStripMenuItem.Size = new System.Drawing.Size(215, 22); - this.moveTopToolStripMenuItem.Text = "Move to top"; - this.moveTopToolStripMenuItem.Click += new System.EventHandler(this.moveTopToolStripMenuItem_Click); - // - // moveBottomToolStripMenuItem - // - this.moveBottomToolStripMenuItem.Name = "moveBottomToolStripMenuItem"; - this.moveBottomToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.End))); - this.moveBottomToolStripMenuItem.Size = new System.Drawing.Size(215, 22); - this.moveBottomToolStripMenuItem.Text = "Move to bottom"; - this.moveBottomToolStripMenuItem.Click += new System.EventHandler(this.moveBottomToolStripMenuItem_Click); - // - // toolStripSeparator3 - // - this.toolStripSeparator3.Name = "toolStripSeparator3"; - this.toolStripSeparator3.Size = new System.Drawing.Size(212, 6); - // - // newToolStripMenuItemNew - // - this.newToolStripMenuItemNew.Name = "newToolStripMenuItemNew"; - this.newToolStripMenuItemNew.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N))); - this.newToolStripMenuItemNew.Size = new System.Drawing.Size(215, 22); - this.newToolStripMenuItemNew.Text = "New"; - this.newToolStripMenuItemNew.Click += new System.EventHandler(this.newToolStripMenuItemNew_Click); - // - // copyToolStripMenuItemCopy - // - this.copyToolStripMenuItemCopy.Name = "copyToolStripMenuItemCopy"; - this.copyToolStripMenuItemCopy.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C))); - this.copyToolStripMenuItemCopy.Size = new System.Drawing.Size(215, 22); - this.copyToolStripMenuItemCopy.Text = "Copy"; - this.copyToolStripMenuItemCopy.Click += new System.EventHandler(this.copyToolStripMenuItemCopy_Click); - // - // toolStripSeparator1 - // - this.toolStripSeparator1.Name = "toolStripSeparator1"; - this.toolStripSeparator1.Size = new System.Drawing.Size(212, 6); - // - // toolStripMenuItemImport - // - this.toolStripMenuItemImport.Name = "toolStripMenuItemImport"; - this.toolStripMenuItemImport.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.I))); - this.toolStripMenuItemImport.Size = new System.Drawing.Size(215, 22); - this.toolStripMenuItemImport.Text = "Import..."; - this.toolStripMenuItemImport.Click += new System.EventHandler(this.toolStripMenuItemImport_Click); - // - // toolStripMenuItemExport - // - this.toolStripMenuItemExport.Name = "toolStripMenuItemExport"; - this.toolStripMenuItemExport.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.E))); - this.toolStripMenuItemExport.Size = new System.Drawing.Size(215, 22); - this.toolStripMenuItemExport.Text = "Export..."; - this.toolStripMenuItemExport.Click += new System.EventHandler(this.toolStripMenuItemExport_Click); - // // labelInfo // this.labelInfo.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); @@ -771,6 +771,7 @@ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.Text = "WebVttStyleManager"; this.groupBoxStyles.ResumeLayout(false); + this.contextMenuStripStyles.ResumeLayout(false); this.groupBoxProperties.ResumeLayout(false); this.groupBoxProperties.PerformLayout(); this.groupBoxAfter.ResumeLayout(false); @@ -783,7 +784,6 @@ this.groupBoxFont.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownShadowWidth)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownFontSize)).EndInit(); - this.contextMenuStripStyles.ResumeLayout(false); this.ResumeLayout(false); this.PerformLayout(); diff --git a/src/ui/Forms/VTT/WebVttStyleManager.cs b/src/ui/Forms/VTT/WebVttStyleManager.cs index 6f5380844..92cede789 100644 --- a/src/ui/Forms/VTT/WebVttStyleManager.cs +++ b/src/ui/Forms/VTT/WebVttStyleManager.cs @@ -243,7 +243,7 @@ namespace Nikse.SubtitleEdit.Forms.VTT } else { - labelBefore.Text = style.ToString().Replace("; ", ";" + Environment.NewLine); + labelBefore.Text = beforeStyle.ToString().Replace("; ", ";" + Environment.NewLine); } UpdateRawBeforeStyle(); @@ -587,6 +587,7 @@ namespace Nikse.SubtitleEdit.Forms.VTT return; } + var tempStyles = new List(); foreach (ListViewItem selectedItem in listViewStyles.SelectedItems) { var styleName = selectedItem.Text; @@ -608,11 +609,21 @@ namespace Nikse.SubtitleEdit.Forms.VTT } _doUpdate = false; + tempStyles.Add(style); + _doUpdate = true; + + selectedItem.Selected = false; + } + + foreach (var style in tempStyles) + { AddStyle(listViewStyles, style, _subtitle); _webVttStyles.Add(style); - _doUpdate = true; } + listViewStyles.Items[listViewStyles.Items.Count - 1].Selected = true; + listViewStyles.Items[listViewStyles.Items.Count - 1].Focused = true; + CheckDuplicateStyles(); } @@ -642,7 +653,7 @@ namespace Nikse.SubtitleEdit.Forms.VTT { labelInfo.Text = string.Empty; } - catch + catch { // ignore } @@ -766,6 +777,8 @@ namespace Nikse.SubtitleEdit.Forms.VTT { _currentStyle.Bold = null; } + + UpdateRawBeforeStyle(); } private void checkBoxFontItalic_CheckedChanged(object sender, EventArgs e) @@ -786,6 +799,7 @@ namespace Nikse.SubtitleEdit.Forms.VTT } listViewStyles.SelectedItems[0].SubItems[3].Text = _currentStyle.Italic.HasValue && _currentStyle.Italic.Value == true ? LanguageSettings.Current.General.Yes : "-"; + UpdateRawBeforeStyle(); } private void checkBoxFontUnderline_CheckedChanged(object sender, EventArgs e) @@ -803,6 +817,8 @@ namespace Nikse.SubtitleEdit.Forms.VTT { _currentStyle.Underline = null; } + + UpdateRawBeforeStyle(); } private void checkBoxStrikeout_CheckedChanged(object sender, EventArgs e) @@ -820,6 +836,8 @@ namespace Nikse.SubtitleEdit.Forms.VTT { _currentStyle.StrikeThrough = null; } + + UpdateRawBeforeStyle(); } private void deleteToolStripMenuItem_Click(object sender, EventArgs e) @@ -857,7 +875,6 @@ namespace Nikse.SubtitleEdit.Forms.VTT MoveUp(listViewStyles); } - private void MoveUp(ListView listView) { if (listView.SelectedItems.Count != 1) From 738e8404e7e32a34bfba0fbba71db6ef832ae55b Mon Sep 17 00:00:00 2001 From: niksedk Date: Fri, 23 Jun 2023 21:18:32 +0200 Subject: [PATCH 32/96] Work on WebVTT --- src/ui/Forms/Main.Designer.cs | 12 +- src/ui/Forms/Main.cs | 9 + src/ui/Forms/Main.resx | 2 +- .../Forms/VTT/WebVttStylePicker.Designer.cs | 169 ++++++++++++++++++ src/ui/Forms/VTT/WebVttStylePicker.cs | 63 +++++++ src/ui/Forms/VTT/WebVttStylePicker.resx | 126 +++++++++++++ src/ui/SubtitleEdit.csproj | 9 + 7 files changed, 388 insertions(+), 2 deletions(-) create mode 100644 src/ui/Forms/VTT/WebVttStylePicker.Designer.cs create mode 100644 src/ui/Forms/VTT/WebVttStylePicker.cs create mode 100644 src/ui/Forms/VTT/WebVttStylePicker.resx diff --git a/src/ui/Forms/Main.Designer.cs b/src/ui/Forms/Main.Designer.cs index 668b56fb3..e3565586e 100644 --- a/src/ui/Forms/Main.Designer.cs +++ b/src/ui/Forms/Main.Designer.cs @@ -575,6 +575,7 @@ namespace Nikse.SubtitleEdit.Forms this.timerOriginalTextUndo = new System.Windows.Forms.Timer(this.components); this.contextMenuStripShowVideoControls = new System.Windows.Forms.ContextMenuStrip(this.components); this.toolStripMenuItemShowVideoControls = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItemWebVttStyle = new System.Windows.Forms.ToolStripMenuItem(); this.statusStrip1.SuspendLayout(); this.toolStrip1.SuspendLayout(); this.menuStrip1.SuspendLayout(); @@ -2641,6 +2642,7 @@ namespace Nikse.SubtitleEdit.Forms this.toolStripSeparatorAssa, this.toolStripMenuItemSetRegion, this.toolStripMenuItemSetLanguage, + this.toolStripMenuItemWebVttStyle, this.toolStripMenuItemWebVTT, this.toolStripMenuItemPreview, this.toolStripMenuItemDelete, @@ -2674,7 +2676,7 @@ namespace Nikse.SubtitleEdit.Forms this.toolStripMenuItemSelectedLines, this.toolStripMenuItemGoogleMicrosoftTranslateSelLine}); this.contextMenuStripListView.Name = "contextMenuStripListView"; - this.contextMenuStripListView.Size = new System.Drawing.Size(285, 804); + this.contextMenuStripListView.Size = new System.Drawing.Size(285, 848); this.contextMenuStripListView.Closed += new System.Windows.Forms.ToolStripDropDownClosedEventHandler(this.MenuClosed); this.contextMenuStripListView.Opening += new System.ComponentModel.CancelEventHandler(this.ContextMenuStripListViewOpening); this.contextMenuStripListView.Opened += new System.EventHandler(this.MenuOpened); @@ -5621,6 +5623,13 @@ namespace Nikse.SubtitleEdit.Forms this.toolStripMenuItemShowVideoControls.Text = "Show video controls"; this.toolStripMenuItemShowVideoControls.Click += new System.EventHandler(this.toolStripMenuItemShowVideoControls_Click); // + // toolStripMenuItemWebVttStyle + // + this.toolStripMenuItemWebVttStyle.Name = "toolStripMenuItemWebVttStyle"; + this.toolStripMenuItemWebVttStyle.Size = new System.Drawing.Size(284, 22); + this.toolStripMenuItemWebVttStyle.Text = "WebVTT style..."; + this.toolStripMenuItemWebVttStyle.Click += new System.EventHandler(this.toolStripMenuItemWebVttStyle_Click); + // // Main // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -6242,5 +6251,6 @@ namespace Nikse.SubtitleEdit.Forms private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemSetLayer; private System.Windows.Forms.NumericUpDown numericUpDownLayer; private System.Windows.Forms.Label labelLayer; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemWebVttStyle; } } \ No newline at end of file diff --git a/src/ui/Forms/Main.cs b/src/ui/Forms/Main.cs index db6e152ee..9af9e33aa 100644 --- a/src/ui/Forms/Main.cs +++ b/src/ui/Forms/Main.cs @@ -35209,5 +35209,14 @@ namespace Nikse.SubtitleEdit.Forms exportBdnXmlPng.ShowDialog(this); } } + + private void toolStripMenuItemWebVttStyle_Click(object sender, EventArgs e) + { + var styles = WebVttHelper.GetStyles(_subtitle.Header); + using (var form = new WebVttStylePicker(styles)) + { + form.ShowDialog(this); + } + } } } \ No newline at end of file diff --git a/src/ui/Forms/Main.resx b/src/ui/Forms/Main.resx index 0d28aceb5..f57ca859c 100644 --- a/src/ui/Forms/Main.resx +++ b/src/ui/Forms/Main.resx @@ -857,7 +857,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD2 - CAAAAk1TRnQBSQFMAgEBAgEAAcwBLgHMAS4BEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CAAAAk1TRnQBSQFMAgEBAgEAAdQBLgHUAS4BEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA diff --git a/src/ui/Forms/VTT/WebVttStylePicker.Designer.cs b/src/ui/Forms/VTT/WebVttStylePicker.Designer.cs new file mode 100644 index 000000000..64a770090 --- /dev/null +++ b/src/ui/Forms/VTT/WebVttStylePicker.Designer.cs @@ -0,0 +1,169 @@ +namespace Nikse.SubtitleEdit.Forms.VTT +{ + sealed partial class WebVttStylePicker + { + /// + /// 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.components = new System.ComponentModel.Container(); + this.listViewExportStyles = new System.Windows.Forms.ListView(); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components); + this.toolStripMenuItemSelectAll = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItemInverseSelection = new System.Windows.Forms.ToolStripMenuItem(); + this.buttonOK = new System.Windows.Forms.Button(); + this.buttonCancel = new System.Windows.Forms.Button(); + this.saveFileDialogStyle = new System.Windows.Forms.SaveFileDialog(); + this.labelStyles = new System.Windows.Forms.Label(); + this.groupBoxStyle = new System.Windows.Forms.GroupBox(); + this.contextMenuStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // listViewExportStyles + // + this.listViewExportStyles.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.listViewExportStyles.CheckBoxes = true; + this.listViewExportStyles.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader1}); + this.listViewExportStyles.ContextMenuStrip = this.contextMenuStrip1; + this.listViewExportStyles.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; + this.listViewExportStyles.HideSelection = false; + this.listViewExportStyles.Location = new System.Drawing.Point(15, 36); + this.listViewExportStyles.Name = "listViewExportStyles"; + this.listViewExportStyles.Size = new System.Drawing.Size(180, 187); + this.listViewExportStyles.TabIndex = 0; + this.listViewExportStyles.UseCompatibleStateImageBehavior = false; + this.listViewExportStyles.View = System.Windows.Forms.View.Details; + // + // contextMenuStrip1 + // + this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripMenuItemSelectAll, + this.toolStripMenuItemInverseSelection}); + this.contextMenuStrip1.Name = "contextMenuStrip1"; + this.contextMenuStrip1.Size = new System.Drawing.Size(162, 48); + // + // toolStripMenuItemSelectAll + // + this.toolStripMenuItemSelectAll.Name = "toolStripMenuItemSelectAll"; + this.toolStripMenuItemSelectAll.Size = new System.Drawing.Size(161, 22); + this.toolStripMenuItemSelectAll.Text = "Select all"; + this.toolStripMenuItemSelectAll.Click += new System.EventHandler(this.toolStripMenuItemSelectAll_Click); + // + // toolStripMenuItemInverseSelection + // + this.toolStripMenuItemInverseSelection.Name = "toolStripMenuItemInverseSelection"; + this.toolStripMenuItemInverseSelection.Size = new System.Drawing.Size(161, 22); + this.toolStripMenuItemInverseSelection.Text = "Inverse selection"; + this.toolStripMenuItemInverseSelection.Click += new System.EventHandler(this.toolStripMenuItemInverseSelection_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(361, 231); + this.buttonOK.Name = "buttonOK"; + this.buttonOK.Size = new System.Drawing.Size(75, 23); + this.buttonOK.TabIndex = 4; + this.buttonOK.Text = "&OK"; + this.buttonOK.UseVisualStyleBackColor = true; + this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click); + // + // 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(445, 231); + this.buttonCancel.Name = "buttonCancel"; + this.buttonCancel.Size = new System.Drawing.Size(75, 23); + this.buttonCancel.TabIndex = 5; + this.buttonCancel.Text = "C&ancel"; + this.buttonCancel.UseVisualStyleBackColor = true; + // + // saveFileDialogStyle + // + this.saveFileDialogStyle.OverwritePrompt = false; + // + // labelStyles + // + this.labelStyles.AutoSize = true; + this.labelStyles.Location = new System.Drawing.Point(12, 20); + this.labelStyles.Name = "labelStyles"; + this.labelStyles.Size = new System.Drawing.Size(35, 13); + this.labelStyles.TabIndex = 6; + this.labelStyles.Text = "Styles"; + // + // groupBoxStyle + // + this.groupBoxStyle.Location = new System.Drawing.Point(201, 38); + this.groupBoxStyle.Name = "groupBoxStyle"; + this.groupBoxStyle.Size = new System.Drawing.Size(319, 187); + this.groupBoxStyle.TabIndex = 7; + this.groupBoxStyle.TabStop = false; + this.groupBoxStyle.Text = "Style"; + // + // WebVttIStylePicker + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(532, 264); + this.Controls.Add(this.groupBoxStyle); + this.Controls.Add(this.labelStyles); + this.Controls.Add(this.buttonOK); + this.Controls.Add(this.buttonCancel); + this.Controls.Add(this.listViewExportStyles); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.KeyPreview = true; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "WebVttStylePicker"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "SubStationAlphaStylesExport"; + this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.WebVttImportExport_KeyDown); + this.contextMenuStrip1.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.ListView listViewExportStyles; + private System.Windows.Forms.Button buttonOK; + private System.Windows.Forms.Button buttonCancel; + private System.Windows.Forms.SaveFileDialog saveFileDialogStyle; + private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.Label labelStyles; + private System.Windows.Forms.ContextMenuStrip contextMenuStrip1; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemSelectAll; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemInverseSelection; + private System.Windows.Forms.GroupBox groupBoxStyle; + } +} \ No newline at end of file diff --git a/src/ui/Forms/VTT/WebVttStylePicker.cs b/src/ui/Forms/VTT/WebVttStylePicker.cs new file mode 100644 index 000000000..17787ab32 --- /dev/null +++ b/src/ui/Forms/VTT/WebVttStylePicker.cs @@ -0,0 +1,63 @@ +using Nikse.SubtitleEdit.Core.Common; +using Nikse.SubtitleEdit.Logic; +using System; +using System.Collections.Generic; +using System.Windows.Forms; + +namespace Nikse.SubtitleEdit.Forms.VTT +{ + public sealed partial class WebVttStylePicker : Form + { + private readonly List _styles; + public List ImportExportStyles { get; set; } + + public WebVttStylePicker(List styles) + { + InitializeComponent(); + UiUtil.FixFonts(this); + + _styles = styles; + listViewExportStyles.Columns[0].Width = listViewExportStyles.Width - 20; + foreach (var style in _styles) + { + listViewExportStyles.Items.Add(new ListViewItem(style.Name) { Checked = true, Tag = style }); + } + + Text = LanguageSettings.Current.SubStationAlphaStyles.Export; + labelStyles.Text = LanguageSettings.Current.SubStationAlphaStyles.Styles; + toolStripMenuItemInverseSelection.Text = LanguageSettings.Current.Main.Menu.Edit.InverseSelection; + toolStripMenuItemSelectAll.Text = LanguageSettings.Current.Main.Menu.ContextMenu.SelectAll; + buttonOK.Text = LanguageSettings.Current.General.Ok; + buttonCancel.Text = LanguageSettings.Current.General.Cancel; + } + + private void buttonOK_Click(object sender, EventArgs e) + { + + } + + private void WebVttImportExport_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Escape) + { + DialogResult = DialogResult.Cancel; + } + } + + private void toolStripMenuItemSelectAll_Click(object sender, EventArgs e) + { + foreach (ListViewItem item in listViewExportStyles.Items) + { + item.Checked = true; + } + } + + private void toolStripMenuItemInverseSelection_Click(object sender, EventArgs e) + { + foreach (ListViewItem item in listViewExportStyles.Items) + { + item.Checked = !item.Checked; + } + } + } +} diff --git a/src/ui/Forms/VTT/WebVttStylePicker.resx b/src/ui/Forms/VTT/WebVttStylePicker.resx new file mode 100644 index 000000000..0a39974e8 --- /dev/null +++ b/src/ui/Forms/VTT/WebVttStylePicker.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 172, 17 + + + 17, 17 + + \ No newline at end of file diff --git a/src/ui/SubtitleEdit.csproj b/src/ui/SubtitleEdit.csproj index 021289a0b..374d8a888 100644 --- a/src/ui/SubtitleEdit.csproj +++ b/src/ui/SubtitleEdit.csproj @@ -1366,6 +1366,12 @@ VobSubOcrSetItalicFactor.cs + + Form + + + WebVttStylePicker.cs + Form @@ -2139,6 +2145,9 @@ VobSubOcrSetItalicFactor.cs + + WebVttStylePicker.cs + WebVttImportExport.cs From 6206d0dc1e8efb206e31d36331be0260f10d2a54 Mon Sep 17 00:00:00 2001 From: niksedk Date: Sun, 25 Jun 2023 14:37:56 +0200 Subject: [PATCH 33/96] Fix "Find Double Words" - th uckthis :) Fix #7027 --- src/ui/Forms/FindDialog.cs | 47 +++++++++++-------------- src/ui/Forms/Main.cs | 10 +++++- src/ui/Forms/ReplaceDialog.cs | 18 ++++++++++ src/ui/Forms/VTT/WebVttStylePicker.cs | 11 ++++-- src/ui/Logic/FindReplaceDialogHelper.cs | 9 ++++- 5 files changed, 65 insertions(+), 30 deletions(-) diff --git a/src/ui/Forms/FindDialog.cs b/src/ui/Forms/FindDialog.cs index a2ed440b5..d9245af41 100644 --- a/src/ui/Forms/FindDialog.cs +++ b/src/ui/Forms/FindDialog.cs @@ -127,6 +127,24 @@ namespace Nikse.SubtitleEdit.Forms { FindNext(); buttonFind.Focus(); + SetRegEx(); + } + + private void SetRegEx() + { + if (radioButtonRegEx.Checked) + { + try + { + _regEx = new Regex(RegexUtils.FixNewLine(FindText), RegexOptions.Compiled, TimeSpan.FromSeconds(5)); + DialogResult = DialogResult.OK; + _findAndReplaceMethods.FindDialogFind(FindText, FindReplaceType); + } + catch (Exception exception) + { + MessageBox.Show(exception.Message); + } + } } private void FindNext() @@ -148,19 +166,6 @@ namespace Nikse.SubtitleEdit.Forms DialogResult = DialogResult.OK; _findAndReplaceMethods.FindDialogFind(FindText, FindReplaceType); } - else if (radioButtonRegEx.Checked) - { - try - { - _regEx = new Regex(RegexUtils.FixNewLine(searchText), RegexOptions.Compiled, TimeSpan.FromSeconds(5)); - DialogResult = DialogResult.OK; - _findAndReplaceMethods.FindDialogFind(FindText, FindReplaceType); - } - catch (Exception exception) - { - MessageBox.Show(exception.Message); - } - } } private void TextBoxFind_KeyDown(object sender, KeyEventArgs e) @@ -259,6 +264,8 @@ namespace Nikse.SubtitleEdit.Forms labelCount.Text = string.Empty; return; } + + SetRegEx(); var count = GetFindDialogHelper(0).FindCount(_subtitle, checkBoxWholeWord.Checked); var colorIfFound = Configuration.Settings.General.UseDarkTheme ? Color.FromArgb(9, 128, 204) : Color.Blue; labelCount.ForeColor = count > 0 ? colorIfFound : Color.Red; @@ -304,20 +311,8 @@ namespace Nikse.SubtitleEdit.Forms DialogResult = DialogResult.OK; _findAndReplaceMethods.FindDialogFindPrevious(FindText); } - else if (radioButtonRegEx.Checked) - { - try - { - _regEx = new Regex(RegexUtils.FixNewLine(searchText), RegexOptions.Compiled, TimeSpan.FromSeconds(5)); - DialogResult = DialogResult.OK; - _findAndReplaceMethods.FindDialogFindPrevious(FindText); - } - catch (Exception exception) - { - MessageBox.Show(exception.Message); - } - } + SetRegEx(); buttonFindPrev.Focus(); } } diff --git a/src/ui/Forms/Main.cs b/src/ui/Forms/Main.cs index 9af9e33aa..4ceba5c9b 100644 --- a/src/ui/Forms/Main.cs +++ b/src/ui/Forms/Main.cs @@ -20966,6 +20966,8 @@ namespace Nikse.SubtitleEdit.Forms } _findHelper = new FindReplaceDialogHelper(new ReplaceType { FindType = FindType.RegEx }, string.Format(_language.DoubleWordsViaRegEx, regex), regex, string.Empty, _subtitleListViewIndex); + _findHelper.FindReplaceType.SearchTranslation = true; + _findHelper.FindReplaceType.SearchOriginal = _subtitleOriginal != null && _subtitleOriginal.Paragraphs.Count > 0; ReloadFromSourceView(); FindNext(); @@ -35212,8 +35214,14 @@ namespace Nikse.SubtitleEdit.Forms private void toolStripMenuItemWebVttStyle_Click(object sender, EventArgs e) { + var idx = FirstSelectedIndex; + if (idx == -1) + { + return; + } + var styles = WebVttHelper.GetStyles(_subtitle.Header); - using (var form = new WebVttStylePicker(styles)) + using (var form = new WebVttStylePicker(styles, _subtitle.GetParagraphOrDefault(idx))) { form.ShowDialog(this); } diff --git a/src/ui/Forms/ReplaceDialog.cs b/src/ui/Forms/ReplaceDialog.cs index 6190b52b0..4e27b5cf4 100644 --- a/src/ui/Forms/ReplaceDialog.cs +++ b/src/ui/Forms/ReplaceDialog.cs @@ -190,6 +190,7 @@ namespace Nikse.SubtitleEdit.Forms } buttonReplace.Focus(); + SetRegEx(); } private void ButtonReplaceAllClick(object sender, EventArgs e) @@ -205,6 +206,7 @@ namespace Nikse.SubtitleEdit.Forms } buttonReplaceAll.Focus(); + SetRegEx(); } private void Validate(string searchText) @@ -242,6 +244,22 @@ namespace Nikse.SubtitleEdit.Forms { Find(); buttonFind.Focus(); + SetRegEx(); + } + + private void SetRegEx() + { + if (radioButtonRegEx.Checked) + { + try + { + _regEx = new Regex(RegexUtils.FixNewLine(FindText), RegexOptions.Compiled, TimeSpan.FromSeconds(5)); + } + catch (Exception exception) + { + MessageBox.Show(exception.Message); + } + } } private void Find() diff --git a/src/ui/Forms/VTT/WebVttStylePicker.cs b/src/ui/Forms/VTT/WebVttStylePicker.cs index 17787ab32..3021d0253 100644 --- a/src/ui/Forms/VTT/WebVttStylePicker.cs +++ b/src/ui/Forms/VTT/WebVttStylePicker.cs @@ -11,11 +11,12 @@ namespace Nikse.SubtitleEdit.Forms.VTT private readonly List _styles; public List ImportExportStyles { get; set; } - public WebVttStylePicker(List styles) + public WebVttStylePicker(List styles, Paragraph getParagraphOrDefault) { InitializeComponent(); UiUtil.FixFonts(this); + ImportExportStyles = new List(); _styles = styles; listViewExportStyles.Columns[0].Width = listViewExportStyles.Width - 20; foreach (var style in _styles) @@ -33,7 +34,13 @@ namespace Nikse.SubtitleEdit.Forms.VTT private void buttonOK_Click(object sender, EventArgs e) { - + foreach (ListViewItem item in listViewExportStyles.Items) + { + if (item.Checked) + { + ImportExportStyles.Add((WebVttStyle)item.Tag); + } + } } private void WebVttImportExport_KeyDown(object sender, KeyEventArgs e) diff --git a/src/ui/Logic/FindReplaceDialogHelper.cs b/src/ui/Logic/FindReplaceDialogHelper.cs index cc4f85855..b187a8ced 100644 --- a/src/ui/Logic/FindReplaceDialogHelper.cs +++ b/src/ui/Logic/FindReplaceDialogHelper.cs @@ -95,7 +95,14 @@ namespace Nikse.SubtitleEdit.Logic Match match; try { - _regEx = new Regex(FindText, RegexOptions.None, TimeSpan.FromSeconds(5)); + if (_regEx == null) + { + _regEx = new Regex(FindText, RegexOptions.None, TimeSpan.FromSeconds(5)); + } + else + { + + } match = _regEx.Match(text, startIndex); } catch (RegexMatchTimeoutException exception) From b18ccc8273f21819fb322d40c15deae9e1ede304 Mon Sep 17 00:00:00 2001 From: niksedk Date: Sun, 25 Jun 2023 19:09:12 +0200 Subject: [PATCH 34/96] Work on WebVTT --- src/libse/Common/WebVttHelper.cs | 54 +++++++++++++++++++++++++ src/ui/Forms/Main.cs | 19 ++++++++- src/ui/Forms/VTT/WebVttStylePicker.cs | 12 +++--- src/ui/Logic/FindReplaceDialogHelper.cs | 5 +-- 4 files changed, 80 insertions(+), 10 deletions(-) diff --git a/src/libse/Common/WebVttHelper.cs b/src/libse/Common/WebVttHelper.cs index 578a58466..d8adfa329 100644 --- a/src/libse/Common/WebVttHelper.cs +++ b/src/libse/Common/WebVttHelper.cs @@ -5,6 +5,7 @@ using System.Globalization; using System.Linq; using System.Text; using System.Text.RegularExpressions; +using Nikse.SubtitleEdit.Core.SubtitleFormats; namespace Nikse.SubtitleEdit.Core.Common { @@ -454,5 +455,58 @@ namespace Nikse.SubtitleEdit.Core.Common return text; } + + public static List GetParagraphStyles(Paragraph paragraph) + { + var list = new List(); + if (paragraph == null || string.IsNullOrEmpty(paragraph.Text)) + { + return list; + } + + var regex = new Regex(@""); + foreach (Match match in regex.Matches(paragraph.Text)) + { + var styles = match.Value.Remove(0, 3).Trim('>', ' ').Split('.'); + foreach (var styleName in styles) + { + if (!string.IsNullOrEmpty(styleName) && !list.Contains(styleName)) + { + list.Add("." + styleName); + } + } + } + + return list; + } + + public static string SetParagraphStyles(Paragraph p, List styles) + { + if (string.IsNullOrEmpty(p.Text) || + !p.Text.Contains(""); + var match = regex.Match(text); + while (match.Success) + { + text = text.Remove(match.Index, match.Value.Length); + match = regex.Match(text); + } + + text = text.Replace("", string.Empty); + + if (styles.Count == 0) + { + return text; + } + + var prefix = "s.Name)) +">"; + + return prefix + text + ""; + } } } diff --git a/src/ui/Forms/Main.cs b/src/ui/Forms/Main.cs index 4ceba5c9b..75b1aec49 100644 --- a/src/ui/Forms/Main.cs +++ b/src/ui/Forms/Main.cs @@ -33003,6 +33003,11 @@ namespace Nikse.SubtitleEdit.Forms toolStripButtonAssAttachments.Visible = true; } + if (formatType == typeof(AdvancedSubStationAlpha) || formatType == typeof(SubStationAlpha)) + { + TryLoadIcon(toolStripButtonAssStyleManager, "AssaStyle"); + } + toolStripButtonXProperties.Visible = formatType == typeof(ItunesTimedText); if (toolStripButtonXProperties.Visible) { @@ -35223,8 +35228,20 @@ namespace Nikse.SubtitleEdit.Forms var styles = WebVttHelper.GetStyles(_subtitle.Header); using (var form = new WebVttStylePicker(styles, _subtitle.GetParagraphOrDefault(idx))) { - form.ShowDialog(this); + if (form.ShowDialog(this) != DialogResult.OK) + { + return; + } + + foreach (int index in SubtitleListview1.SelectedIndices) + { + var p = _subtitle.Paragraphs[index]; + p.Text = WebVttHelper.SetParagraphStyles(p, form.ImportExportStyles); + SubtitleListview1.SetText(index, p.Text); + } } + + RefreshSelectedParagraph(); } } } \ No newline at end of file diff --git a/src/ui/Forms/VTT/WebVttStylePicker.cs b/src/ui/Forms/VTT/WebVttStylePicker.cs index 3021d0253..c3d3d1878 100644 --- a/src/ui/Forms/VTT/WebVttStylePicker.cs +++ b/src/ui/Forms/VTT/WebVttStylePicker.cs @@ -8,20 +8,20 @@ namespace Nikse.SubtitleEdit.Forms.VTT { public sealed partial class WebVttStylePicker : Form { - private readonly List _styles; public List ImportExportStyles { get; set; } - public WebVttStylePicker(List styles, Paragraph getParagraphOrDefault) + public WebVttStylePicker(List styles, Paragraph paragraph) { InitializeComponent(); UiUtil.FixFonts(this); ImportExportStyles = new List(); - _styles = styles; listViewExportStyles.Columns[0].Width = listViewExportStyles.Width - 20; - foreach (var style in _styles) + + var paragraphStyles = WebVttHelper.GetParagraphStyles(paragraph); + foreach (var style in styles) { - listViewExportStyles.Items.Add(new ListViewItem(style.Name) { Checked = true, Tag = style }); + listViewExportStyles.Items.Add(new ListViewItem(style.Name) { Checked = paragraphStyles.Contains(style.Name), Tag = style }); } Text = LanguageSettings.Current.SubStationAlphaStyles.Export; @@ -41,6 +41,8 @@ namespace Nikse.SubtitleEdit.Forms.VTT ImportExportStyles.Add((WebVttStyle)item.Tag); } } + + DialogResult = ImportExportStyles.Count == 0 ? DialogResult.Cancel : DialogResult.OK; } private void WebVttImportExport_KeyDown(object sender, KeyEventArgs e) diff --git a/src/ui/Logic/FindReplaceDialogHelper.cs b/src/ui/Logic/FindReplaceDialogHelper.cs index b187a8ced..f033ee967 100644 --- a/src/ui/Logic/FindReplaceDialogHelper.cs +++ b/src/ui/Logic/FindReplaceDialogHelper.cs @@ -99,10 +99,7 @@ namespace Nikse.SubtitleEdit.Logic { _regEx = new Regex(FindText, RegexOptions.None, TimeSpan.FromSeconds(5)); } - else - { - - } + match = _regEx.Match(text, startIndex); } catch (RegexMatchTimeoutException exception) From 8d09343bb0969c65aa0f8fab610c0be63c2f5cb2 Mon Sep 17 00:00:00 2001 From: niksedk Date: Sun, 25 Jun 2023 19:14:57 +0200 Subject: [PATCH 35/96] Work on WebVTT --- src/ui/Forms/Main.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/ui/Forms/Main.cs b/src/ui/Forms/Main.cs index 75b1aec49..39f436746 100644 --- a/src/ui/Forms/Main.cs +++ b/src/ui/Forms/Main.cs @@ -32996,6 +32996,8 @@ namespace Nikse.SubtitleEdit.Forms toolStripButtonAssaDraw.Visible = assFormatOn && File.Exists(Path.Combine(Configuration.PluginsDirectory, "AssaDraw.dll")); toolStripButtonAssAttachments.Visible = assFormatOn; + toolStripMenuItemWebVttStyle.Visible = false; + if (formatType == typeof(SubStationAlpha)) { toolStripButtonAssStyleManager.Visible = true; @@ -33027,6 +33029,8 @@ namespace Nikse.SubtitleEdit.Forms toolStripButtonAssStyleManager.ToolTipText = string.Format(LanguageSettings.Current.WebVttStyleManager.Title, new WebVTT().Name); toolStripButtonAssStyleManager.Image = Properties.Resources.webvtt; TryLoadIcon(toolStripButtonAssStyleManager, "WebVttStyle"); + + toolStripMenuItemWebVttStyle.Visible = true; } if (formatType == typeof(Ebu)) From 8dc08b8f2ed1c9f8828037f4979d80d875355cc4 Mon Sep 17 00:00:00 2001 From: niksedk Date: Sun, 25 Jun 2023 19:15:06 +0200 Subject: [PATCH 36/96] Update change log --- Changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/Changelog.txt b/Changelog.txt index a32f9b8e6..c0c71679e 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -16,6 +16,7 @@ * Update Korean translation - thx domddol * Update Tesseract OCR to 5.3.1 * FIXED: + * Fix "Find Double Words" - th uckthis * Fix "double dash" issue in "Fix common errors" - thx Joel * Avoid crash on very large TS files - thx Mariusz * Do not count Unicode control characters in Auto-br - MichaelYochpaz From 3ec2144a828fcea2e493fb12d5cbb12cb8470cf6 Mon Sep 17 00:00:00 2001 From: niksedk Date: Mon, 26 Jun 2023 17:06:17 +0200 Subject: [PATCH 37/96] Update Korean translation - thx domddol :) --- src/ui/Languages/ko-KR.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/ui/Languages/ko-KR.xml b/src/ui/Languages/ko-KR.xml index 109a3a4a2..68dd43b00 100644 --- a/src/ui/Languages/ko-KR.xml +++ b/src/ui/Languages/ko-KR.xml @@ -37,6 +37,7 @@ 배우 간격 지역 + 레이어 번호 번호 텍스트 @@ -1374,6 +1375,7 @@ FFmpeg를 다운로드하고 사용하시겠습니까? 모든 열의 크기 맞추기 스타일 설정 배우 설정 + 레이어 설정 ASSA 도구 SSA의 스타일... ASS의 스타일... @@ -2555,6 +2557,7 @@ FFmpeg를 다운로드하고 사용하시겠습니까? 비디오 컨트롤 전환 대비 전환 (mpv 만) 오디오를 텍스트로 ({0}) + 오디오 추출 (선택한 줄) 선택한 줄 오디오를 텍스트로 ({0}) 밝기 전환 (mpv 만) 번역, 사용자 지정 검색 1 @@ -3209,4 +3212,7 @@ FFmpeg를 다운로드하고 사용하시겠습니까? WebVTT - 새로운 음성 설정 음성 이름 + + WebVTT 스타일 + \ No newline at end of file From 36b8a772b7d85966cbd7e0ae6b49ea2935c9471b Mon Sep 17 00:00:00 2001 From: niksedk Date: Mon, 26 Jun 2023 17:18:12 +0200 Subject: [PATCH 38/96] Work on WebVTT --- LanguageBaseEnglish.xml | 3 + src/libse/Common/WebVttHelper.cs | 3 +- src/ui/Forms/Main.Designer.cs | 32 +- src/ui/Forms/Main.cs | 6 +- src/ui/Forms/Main.resx | 2 +- src/ui/Forms/VTT/WebVttImportExport.cs | 1 - .../Forms/VTT/WebVttStyleManager.Designer.cs | 43 +-- src/ui/Forms/VTT/WebVttStyleManager.cs | 282 ++++++++++++++++-- src/ui/Logic/Language.cs | 3 + src/ui/Logic/LanguageDeserializer.cs | 9 + src/ui/Logic/LanguageStructure.cs | 3 + src/ui/Logic/TextDesigner.cs | 4 +- 12 files changed, 328 insertions(+), 63 deletions(-) diff --git a/LanguageBaseEnglish.xml b/LanguageBaseEnglish.xml index 0c32116e3..90964ad46 100644 --- a/LanguageBaseEnglish.xml +++ b/LanguageBaseEnglish.xml @@ -1389,6 +1389,9 @@ To use an API key, go to "Options -> Settings -> Tools" to enter your Goog Timed Text - set language Sami - set class Nuendo - set character + WebVTT - set style + WebVTT - set voice + WebVTT - browser preview Cut Copy Paste diff --git a/src/libse/Common/WebVttHelper.cs b/src/libse/Common/WebVttHelper.cs index d8adfa329..fa33d6fa7 100644 --- a/src/libse/Common/WebVttHelper.cs +++ b/src/libse/Common/WebVttHelper.cs @@ -5,7 +5,6 @@ using System.Globalization; using System.Linq; using System.Text; using System.Text.RegularExpressions; -using Nikse.SubtitleEdit.Core.SubtitleFormats; namespace Nikse.SubtitleEdit.Core.Common { @@ -315,7 +314,7 @@ namespace Nikse.SubtitleEdit.Core.Common if (string.IsNullOrEmpty(header)) { - return "STYLE" + Environment.NewLine + rawStyle; + return "WEBVTT" + Environment.NewLine + Environment.NewLine + "STYLE" + Environment.NewLine + rawStyle; } if (header.Contains("::cue(." + style.Name + ")")) diff --git a/src/ui/Forms/Main.Designer.cs b/src/ui/Forms/Main.Designer.cs index e3565586e..22d3071e8 100644 --- a/src/ui/Forms/Main.Designer.cs +++ b/src/ui/Forms/Main.Designer.cs @@ -291,8 +291,9 @@ namespace Nikse.SubtitleEdit.Forms this.toolStripSeparatorAssa = new System.Windows.Forms.ToolStripSeparator(); this.toolStripMenuItemSetRegion = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItemSetLanguage = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItemWebVttStyle = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItemWebVTT = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripMenuItemPreview = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuWebVttBrowserPreview = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItemDelete = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItemInsertBefore = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItemInsertAfter = new System.Windows.Forms.ToolStripMenuItem(); @@ -575,7 +576,6 @@ namespace Nikse.SubtitleEdit.Forms this.timerOriginalTextUndo = new System.Windows.Forms.Timer(this.components); this.contextMenuStripShowVideoControls = new System.Windows.Forms.ContextMenuStrip(this.components); this.toolStripMenuItemShowVideoControls = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripMenuItemWebVttStyle = new System.Windows.Forms.ToolStripMenuItem(); this.statusStrip1.SuspendLayout(); this.toolStrip1.SuspendLayout(); this.menuStrip1.SuspendLayout(); @@ -2644,7 +2644,7 @@ namespace Nikse.SubtitleEdit.Forms this.toolStripMenuItemSetLanguage, this.toolStripMenuItemWebVttStyle, this.toolStripMenuItemWebVTT, - this.toolStripMenuItemPreview, + this.toolStripMenuWebVttBrowserPreview, this.toolStripMenuItemDelete, this.toolStripMenuItemInsertBefore, this.toolStripMenuItemInsertAfter, @@ -2778,18 +2778,25 @@ namespace Nikse.SubtitleEdit.Forms this.toolStripMenuItemSetLanguage.Size = new System.Drawing.Size(284, 22); this.toolStripMenuItemSetLanguage.Text = "Timed text - set language"; // + // toolStripMenuItemWebVttStyle + // + this.toolStripMenuItemWebVttStyle.Name = "toolStripMenuItemWebVttStyle"; + this.toolStripMenuItemWebVttStyle.Size = new System.Drawing.Size(284, 22); + this.toolStripMenuItemWebVttStyle.Text = "WebVTT style..."; + this.toolStripMenuItemWebVttStyle.Click += new System.EventHandler(this.toolStripMenuItemWebVttStyle_Click); + // // toolStripMenuItemWebVTT // this.toolStripMenuItemWebVTT.Name = "toolStripMenuItemWebVTT"; this.toolStripMenuItemWebVTT.Size = new System.Drawing.Size(284, 22); this.toolStripMenuItemWebVTT.Text = "WebVTT voice"; // - // toolStripMenuItemPreview + // toolStripMenuWebVttBrowserPreview // - this.toolStripMenuItemPreview.Name = "toolStripMenuItemPreview"; - this.toolStripMenuItemPreview.Size = new System.Drawing.Size(284, 22); - this.toolStripMenuItemPreview.Text = "WebVTT browser preview"; - this.toolStripMenuItemPreview.Click += new System.EventHandler(this.toolStripMenuItemPreview_Click); + this.toolStripMenuWebVttBrowserPreview.Name = "toolStripMenuWebVttBrowserPreview"; + this.toolStripMenuWebVttBrowserPreview.Size = new System.Drawing.Size(284, 22); + this.toolStripMenuWebVttBrowserPreview.Text = "WebVTT browser preview"; + this.toolStripMenuWebVttBrowserPreview.Click += new System.EventHandler(this.toolStripMenuItemPreview_Click); // // toolStripMenuItemDelete // @@ -5623,13 +5630,6 @@ namespace Nikse.SubtitleEdit.Forms this.toolStripMenuItemShowVideoControls.Text = "Show video controls"; this.toolStripMenuItemShowVideoControls.Click += new System.EventHandler(this.toolStripMenuItemShowVideoControls_Click); // - // toolStripMenuItemWebVttStyle - // - this.toolStripMenuItemWebVttStyle.Name = "toolStripMenuItemWebVttStyle"; - this.toolStripMenuItemWebVttStyle.Size = new System.Drawing.Size(284, 22); - this.toolStripMenuItemWebVttStyle.Text = "WebVTT style..."; - this.toolStripMenuItemWebVttStyle.Click += new System.EventHandler(this.toolStripMenuItemWebVttStyle_Click); - // // Main // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -6090,7 +6090,7 @@ namespace Nikse.SubtitleEdit.Forms private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemSpellCheckAddToNames; private System.Windows.Forms.ToolStripSeparator toolStripSeparatorSpellCheck; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemWebVttVoice; - private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemPreview; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuWebVttBrowserPreview; private System.Windows.Forms.ToolStripSeparator toolStripSeparatorWebVTT; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemModifySelection; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemInverseSelection; diff --git a/src/ui/Forms/Main.cs b/src/ui/Forms/Main.cs index 39f436746..93d83de32 100644 --- a/src/ui/Forms/Main.cs +++ b/src/ui/Forms/Main.cs @@ -1879,6 +1879,10 @@ namespace Nikse.SubtitleEdit.Forms toolStripMenuItemGoToSourceView.Text = _language.Menu.ContextMenu.GoToSourceView; toolStripMenuItemGoToListView.Text = _language.Menu.ContextMenu.GoToListView; + toolStripMenuItemWebVttVoice.Text = _language.Menu.ContextMenu.WebVttSetVoice; + toolStripMenuItemWebVttStyle.Text = _language.Menu.ContextMenu.WebVttSetStyle; + toolStripMenuWebVttBrowserPreview.Text = _language.Menu.ContextMenu.WebVttBrowserPreview; + splitLineToolStripMenuItem.Text = _language.Menu.ContextMenu.Split; toolStripMenuItemMergeLines.Text = _language.Menu.ContextMenu.MergeSelectedLines; toolStripMenuItemMergeDialog.Text = _language.Menu.ContextMenu.MergeSelectedLinesAsDialog; @@ -8704,7 +8708,7 @@ namespace Nikse.SubtitleEdit.Forms return; } - toolStripMenuItemPreview.Visible = formatType == typeof(WebVTT) && + toolStripMenuWebVttBrowserPreview.Visible = formatType == typeof(WebVTT) && !string.IsNullOrEmpty(_videoFileName) && (_videoFileName.EndsWith(".mp4", StringComparison.OrdinalIgnoreCase) || _videoFileName.EndsWith(".m4v", StringComparison.OrdinalIgnoreCase) || diff --git a/src/ui/Forms/Main.resx b/src/ui/Forms/Main.resx index f57ca859c..8f61aec73 100644 --- a/src/ui/Forms/Main.resx +++ b/src/ui/Forms/Main.resx @@ -857,7 +857,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD2 - CAAAAk1TRnQBSQFMAgEBAgEAAdQBLgHUAS4BEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CAAAAk1TRnQBSQFMAgEBAgEAAdwBLgHcAS4BEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA diff --git a/src/ui/Forms/VTT/WebVttImportExport.cs b/src/ui/Forms/VTT/WebVttImportExport.cs index 4b7b436da..a6e34d532 100644 --- a/src/ui/Forms/VTT/WebVttImportExport.cs +++ b/src/ui/Forms/VTT/WebVttImportExport.cs @@ -12,7 +12,6 @@ namespace Nikse.SubtitleEdit.Forms.VTT public sealed partial class WebVttImportExport : Form { private readonly List _styles; - private readonly SubtitleFormat _format; private readonly bool _export; public List ImportExportStyles { get; set; } public string FileName { get; set; } diff --git a/src/ui/Forms/VTT/WebVttStyleManager.Designer.cs b/src/ui/Forms/VTT/WebVttStyleManager.Designer.cs index c36a4e59a..b306f9737 100644 --- a/src/ui/Forms/VTT/WebVttStyleManager.Designer.cs +++ b/src/ui/Forms/VTT/WebVttStyleManager.Designer.cs @@ -1,6 +1,6 @@ namespace Nikse.SubtitleEdit.Forms.VTT { - partial class WebVttStyleManager + sealed partial class WebVttStyleManager { /// /// Required designer variable. @@ -386,9 +386,9 @@ this.groupBoxAfter.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.groupBoxAfter.Controls.Add(this.labelAfter); - this.groupBoxAfter.Location = new System.Drawing.Point(249, 259); + this.groupBoxAfter.Location = new System.Drawing.Point(249, 239); this.groupBoxAfter.Name = "groupBoxAfter"; - this.groupBoxAfter.Size = new System.Drawing.Size(229, 136); + this.groupBoxAfter.Size = new System.Drawing.Size(229, 100); this.groupBoxAfter.TabIndex = 12; this.groupBoxAfter.TabStop = false; this.groupBoxAfter.Text = "After"; @@ -405,9 +405,9 @@ // groupBoxBefore // this.groupBoxBefore.Controls.Add(this.labelBefore); - this.groupBoxBefore.Location = new System.Drawing.Point(10, 259); + this.groupBoxBefore.Location = new System.Drawing.Point(10, 239); this.groupBoxBefore.Name = "groupBoxBefore"; - this.groupBoxBefore.Size = new System.Drawing.Size(233, 136); + this.groupBoxBefore.Size = new System.Drawing.Size(233, 100); this.groupBoxBefore.TabIndex = 11; this.groupBoxBefore.TabStop = false; this.groupBoxBefore.Text = "Before"; @@ -444,9 +444,9 @@ | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.groupBoxPreview.Controls.Add(this.pictureBoxPreview); - this.groupBoxPreview.Location = new System.Drawing.Point(7, 401); + this.groupBoxPreview.Location = new System.Drawing.Point(7, 345); this.groupBoxPreview.Name = "groupBoxPreview"; - this.groupBoxPreview.Size = new System.Drawing.Size(472, 192); + this.groupBoxPreview.Size = new System.Drawing.Size(472, 248); this.groupBoxPreview.TabIndex = 7; this.groupBoxPreview.TabStop = false; this.groupBoxPreview.Text = "Preview"; @@ -456,7 +456,7 @@ this.pictureBoxPreview.Dock = System.Windows.Forms.DockStyle.Fill; this.pictureBoxPreview.Location = new System.Drawing.Point(3, 16); this.pictureBoxPreview.Name = "pictureBoxPreview"; - this.pictureBoxPreview.Size = new System.Drawing.Size(466, 173); + this.pictureBoxPreview.Size = new System.Drawing.Size(466, 229); this.pictureBoxPreview.TabIndex = 0; this.pictureBoxPreview.TabStop = false; // @@ -485,7 +485,7 @@ this.groupBoxFont.Controls.Add(this.labelFontName); this.groupBoxFont.Location = new System.Drawing.Point(7, 51); this.groupBoxFont.Name = "groupBoxFont"; - this.groupBoxFont.Size = new System.Drawing.Size(472, 202); + this.groupBoxFont.Size = new System.Drawing.Size(472, 182); this.groupBoxFont.TabIndex = 2; this.groupBoxFont.TabStop = false; this.groupBoxFont.Text = "Font"; @@ -494,7 +494,7 @@ // this.checkBoxShadowEnabled.AutoSize = true; this.checkBoxShadowEnabled.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.checkBoxShadowEnabled.Location = new System.Drawing.Point(282, 119); + this.checkBoxShadowEnabled.Location = new System.Drawing.Point(282, 100); this.checkBoxShadowEnabled.Name = "checkBoxShadowEnabled"; this.checkBoxShadowEnabled.Size = new System.Drawing.Size(65, 17); this.checkBoxShadowEnabled.TabIndex = 11; @@ -506,7 +506,7 @@ // this.checkBoxBackgroundColorEnabled.AutoSize = true; this.checkBoxBackgroundColorEnabled.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.checkBoxBackgroundColorEnabled.Location = new System.Drawing.Point(135, 119); + this.checkBoxBackgroundColorEnabled.Location = new System.Drawing.Point(135, 100); this.checkBoxBackgroundColorEnabled.Name = "checkBoxBackgroundColorEnabled"; this.checkBoxBackgroundColorEnabled.Size = new System.Drawing.Size(65, 17); this.checkBoxBackgroundColorEnabled.TabIndex = 10; @@ -518,7 +518,7 @@ // this.checkBoxColorEnabled.AutoSize = true; this.checkBoxColorEnabled.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.checkBoxColorEnabled.Location = new System.Drawing.Point(16, 119); + this.checkBoxColorEnabled.Location = new System.Drawing.Point(16, 100); this.checkBoxColorEnabled.Name = "checkBoxColorEnabled"; this.checkBoxColorEnabled.Size = new System.Drawing.Size(65, 17); this.checkBoxColorEnabled.TabIndex = 9; @@ -529,7 +529,7 @@ // panelShadowColor // this.panelShadowColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.panelShadowColor.Location = new System.Drawing.Point(371, 143); + this.panelShadowColor.Location = new System.Drawing.Point(371, 124); this.panelShadowColor.Name = "panelShadowColor"; this.panelShadowColor.Size = new System.Drawing.Size(21, 20); this.panelShadowColor.TabIndex = 7; @@ -537,7 +537,7 @@ // // buttonShadowColor // - this.buttonShadowColor.Location = new System.Drawing.Point(282, 142); + this.buttonShadowColor.Location = new System.Drawing.Point(282, 123); this.buttonShadowColor.Name = "buttonShadowColor"; this.buttonShadowColor.Size = new System.Drawing.Size(84, 23); this.buttonShadowColor.TabIndex = 6; @@ -552,7 +552,7 @@ 0, 0, 65536}); - this.numericUpDownShadowWidth.Location = new System.Drawing.Point(286, 171); + this.numericUpDownShadowWidth.Location = new System.Drawing.Point(286, 152); this.numericUpDownShadowWidth.Name = "numericUpDownShadowWidth"; this.numericUpDownShadowWidth.Size = new System.Drawing.Size(52, 20); this.numericUpDownShadowWidth.TabIndex = 2; @@ -560,7 +560,7 @@ // panelBackgroundColor // this.panelBackgroundColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.panelBackgroundColor.Location = new System.Drawing.Point(242, 143); + this.panelBackgroundColor.Location = new System.Drawing.Point(242, 124); this.panelBackgroundColor.Name = "panelBackgroundColor"; this.panelBackgroundColor.Size = new System.Drawing.Size(21, 20); this.panelBackgroundColor.TabIndex = 3; @@ -569,7 +569,7 @@ // labelShadow // this.labelShadow.AutoSize = true; - this.labelShadow.Location = new System.Drawing.Point(344, 173); + this.labelShadow.Location = new System.Drawing.Point(344, 154); this.labelShadow.Name = "labelShadow"; this.labelShadow.Size = new System.Drawing.Size(46, 13); this.labelShadow.TabIndex = 2; @@ -577,7 +577,7 @@ // // buttonBackgroundColor // - this.buttonBackgroundColor.Location = new System.Drawing.Point(135, 142); + this.buttonBackgroundColor.Location = new System.Drawing.Point(135, 123); this.buttonBackgroundColor.Name = "buttonBackgroundColor"; this.buttonBackgroundColor.Size = new System.Drawing.Size(101, 23); this.buttonBackgroundColor.TabIndex = 2; @@ -588,7 +588,7 @@ // panelPrimaryColor // this.panelPrimaryColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.panelPrimaryColor.Location = new System.Drawing.Point(100, 143); + this.panelPrimaryColor.Location = new System.Drawing.Point(100, 124); this.panelPrimaryColor.Name = "panelPrimaryColor"; this.panelPrimaryColor.Size = new System.Drawing.Size(21, 20); this.panelPrimaryColor.TabIndex = 1; @@ -598,7 +598,7 @@ // this.checkBoxStrikeout.AutoSize = true; this.checkBoxStrikeout.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Strikeout, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.checkBoxStrikeout.Location = new System.Drawing.Point(246, 59); + this.checkBoxStrikeout.Location = new System.Drawing.Point(265, 59); this.checkBoxStrikeout.Name = "checkBoxStrikeout"; this.checkBoxStrikeout.Size = new System.Drawing.Size(68, 17); this.checkBoxStrikeout.TabIndex = 8; @@ -608,7 +608,7 @@ // // buttonPrimaryColor // - this.buttonPrimaryColor.Location = new System.Drawing.Point(14, 142); + this.buttonPrimaryColor.Location = new System.Drawing.Point(14, 123); this.buttonPrimaryColor.Name = "buttonPrimaryColor"; this.buttonPrimaryColor.Size = new System.Drawing.Size(80, 23); this.buttonPrimaryColor.TabIndex = 0; @@ -770,6 +770,7 @@ this.ShowInTaskbar = false; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.Text = "WebVttStyleManager"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.WebVttStyleManager_FormClosing); this.groupBoxStyles.ResumeLayout(false); this.contextMenuStripStyles.ResumeLayout(false); this.groupBoxProperties.ResumeLayout(false); diff --git a/src/ui/Forms/VTT/WebVttStyleManager.cs b/src/ui/Forms/VTT/WebVttStyleManager.cs index 92cede789..9f00c877f 100644 --- a/src/ui/Forms/VTT/WebVttStyleManager.cs +++ b/src/ui/Forms/VTT/WebVttStyleManager.cs @@ -1,25 +1,32 @@ using Nikse.SubtitleEdit.Core.Common; +using Nikse.SubtitleEdit.Core.SubtitleFormats; using Nikse.SubtitleEdit.Logic; +using Nikse.SubtitleEdit.Logic.VideoPlayers; using System; using System.Collections.Generic; using System.Drawing; +using System.Drawing.Text; using System.Globalization; +using System.IO; using System.Linq; using System.Text; using System.Windows.Forms; namespace Nikse.SubtitleEdit.Forms.VTT { - public partial class WebVttStyleManager : Form + public sealed partial class WebVttStyleManager : Form { public string Header { get; set; } private readonly List _webVttStyles; private readonly List _originalWebVttStyles; private WebVttStyle _currentStyle; private readonly Subtitle _subtitle; - private string _startName; - private string _editedName; private bool _doUpdate; + private readonly Timer _previewTimer = new Timer(); + private Bitmap _backgroundImage; + private readonly bool _backgroundImageDark; + private LibMpvDynamic _mpv; + private string _mpvTextFileName; public WebVttStyleManager(Subtitle subtitle, int index) { @@ -32,7 +39,7 @@ namespace Nikse.SubtitleEdit.Forms.VTT _webVttStyles = WebVttHelper.GetStyles(subtitle.Header); _originalWebVttStyles = WebVttHelper.GetStyles(subtitle.Header); Header = subtitle.Header; - InitializeStylesListView(_subtitle.GetParagraphOrDefault(index)?.Extra); + InitializeStylesListView(); CheckDuplicateStyles(); var fontNames = new List(); @@ -44,9 +51,79 @@ namespace Nikse.SubtitleEdit.Forms.VTT comboBoxFontName.Items.Clear(); comboBoxFontName.Items.AddRange(fontNames.ToArray()); labelInfo.Text = string.Empty; + + Text = LanguageSettings.Current.WebVttStyleManager.Title; + var l = LanguageSettings.Current.SubStationAlphaStyles; + groupBoxStyles.Text = l.Styles; + listViewStyles.Columns[0].Text = l.Name; + listViewStyles.Columns[1].Text = l.FontName; + listViewStyles.Columns[2].Text = l.FontSize; + listViewStyles.Columns[3].Text = LanguageSettings.Current.General.Italic; + listViewStyles.Columns[4].Text = LanguageSettings.Current.GenerateBlankVideo.Background; + listViewStyles.Columns[5].Text = LanguageSettings.Current.General.Text; + listViewStyles.Columns[6].Text = l.UseCount; + groupBoxProperties.Text = l.Properties; + labelStyleName.Text = l.Name; + groupBoxFont.Text = l.Font; + labelFontName.Text = l.FontName; + labelFontSize.Text = l.FontSize; + checkBoxFontItalic.Text = LanguageSettings.Current.General.Italic; + checkBoxFontBold.Text = LanguageSettings.Current.General.Bold; + checkBoxFontUnderline.Text = LanguageSettings.Current.General.Underline; + checkBoxStrikeout.Text = LanguageSettings.Current.General.Strikeout; + buttonPrimaryColor.Text = l.Primary; + //buttonSecondaryColor.Text = l.Secondary; + //buttonOutlineColor.Text = l.Outline; + //buttonBackColor.Text = l.Shadow; + labelShadow.Text = l.Shadow; + buttonImport.Text = l.Import; + buttonExport.Text = l.Export; + buttonCopy.Text = l.Copy; + buttonAdd.Text = l.New; + buttonRemove.Text = l.Remove; + buttonRemoveAll.Text = l.RemoveAll; + groupBoxPreview.Text = LanguageSettings.Current.General.Preview; + + deleteToolStripMenuItem.Text = l.Remove; + //removeAndReplaceWithToolStripMenuItem.Text = l.ReplaceWith; + toolStripMenuItemRemoveAll.Text = l.RemoveAll; + moveUpToolStripMenuItem.Text = LanguageSettings.Current.DvdSubRip.MoveUp; + moveDownToolStripMenuItem.Text = LanguageSettings.Current.DvdSubRip.MoveDown; + moveTopToolStripMenuItem.Text = LanguageSettings.Current.MultipleReplace.MoveToTop; + moveBottomToolStripMenuItem.Text = LanguageSettings.Current.MultipleReplace.MoveToBottom; + newToolStripMenuItemNew.Text = l.New; + copyToolStripMenuItemCopy.Text = l.Copy; + toolStripMenuItemImport.Text = l.Import; + toolStripMenuItemExport.Text = l.Export; + + checkBoxColorEnabled.Text = LanguageSettings.Current.MultipleReplace.Enabled; + checkBoxBackgroundColorEnabled.Text = LanguageSettings.Current.MultipleReplace.Enabled; + checkBoxShadowEnabled.Text = LanguageSettings.Current.MultipleReplace.Enabled; + + buttonApply.Text = LanguageSettings.Current.General.Apply; + buttonOK.Text = LanguageSettings.Current.General.Ok; + buttonCancel.Text = LanguageSettings.Current.General.Cancel; + + comboBoxFontName.Left = labelFontName.Right + 5; + labelFontSize.Left = comboBoxFontName.Right + 15; + numericUpDownFontSize.Left = labelFontSize.Right + 5; + + checkBoxFontItalic.Left = checkBoxFontBold.Right + 15; + checkBoxFontUnderline.Left = checkBoxFontItalic.Right + 15; + checkBoxStrikeout.Left = checkBoxFontUnderline.Right + 15; + + _backgroundImageDark = Configuration.Settings.General.UseDarkTheme; + _previewTimer.Interval = 200; + _previewTimer.Tick += PreviewTimerTick; } - private void InitializeStylesListView(string currentStyleName) + private void PreviewTimerTick(object sender, EventArgs e) + { + _previewTimer.Stop(); + GeneratePreviewReal(); + } + + private void InitializeStylesListView() { listViewStyles.Items.Clear(); foreach (var style in _webVttStyles) @@ -60,7 +137,6 @@ namespace Nikse.SubtitleEdit.Forms.VTT } } - public static void AddStyle(ListView lv, WebVttStyle style, Subtitle subtitle) { AddStyle(lv, style, subtitle, lv.Items.Count); @@ -154,8 +230,6 @@ namespace Nikse.SubtitleEdit.Forms.VTT if (listViewStyles.SelectedItems.Count == 1) { var styleName = "." + listViewStyles.SelectedItems[0].Text; - _startName = styleName; - _editedName = null; var style = _webVttStyles.FirstOrDefault(p => p.Name == styleName); SetControlsFromStyle(style); _doUpdate = true; @@ -165,13 +239,13 @@ namespace Nikse.SubtitleEdit.Forms.VTT { groupBoxProperties.Enabled = false; _doUpdate = false; - _startName = null; _currentStyle = null; pictureBoxPreview.Image?.Dispose(); pictureBoxPreview.Image = new Bitmap(1, 1); } UpdateCurrentFileButtonsState(); + GeneratePreview(); } private void SetControlsFromStyle(WebVttStyle style) @@ -484,14 +558,14 @@ namespace Nikse.SubtitleEdit.Forms.VTT { styleOn = true; } - else if (styleOn) - { - // ignore - } else if (line == string.Empty && styleOn) { styleOn = false; } + else if (styleOn) + { + // ignore + } else { sb.AppendLine(line); @@ -506,7 +580,7 @@ namespace Nikse.SubtitleEdit.Forms.VTT sbStyles.AppendLine(rawStyle); } - header = sb.ToString().Trim() + Environment.NewLine + Environment.NewLine + sbStyles.ToString(); + header = sb.ToString().Trim() + Environment.NewLine + Environment.NewLine + sbStyles; Header = header; } @@ -540,7 +614,7 @@ namespace Nikse.SubtitleEdit.Forms.VTT if (listViewStyles.Items.Count == 0) { - InitializeStylesListView(string.Empty); + InitializeStylesListView(); } CheckDuplicateStyles(); @@ -575,7 +649,7 @@ namespace Nikse.SubtitleEdit.Forms.VTT listViewStyles.Items.Clear(); _webVttStyles.Clear(); - InitializeStylesListView(string.Empty); + InitializeStylesListView(); CheckDuplicateStyles(); } @@ -688,6 +762,8 @@ namespace Nikse.SubtitleEdit.Forms.VTT } } } + + GeneratePreview(); } private string GetUniqueName(WebVttStyle style) @@ -701,7 +777,7 @@ namespace Nikse.SubtitleEdit.Forms.VTT while (doRepeat) { newName = "." + string.Format(LanguageSettings.Current.SubStationAlphaStyles.CopyXOfY, count, styleName.RemoveChar('.')); - newName = style.Name.Replace(" ", "-"); + newName = newName.Replace(" ", "-"); doRepeat = _webVttStyles.FirstOrDefault(p => p.Name == style.Name) != null; count++; } @@ -760,6 +836,8 @@ namespace Nikse.SubtitleEdit.Forms.VTT _currentStyle.Name = "." + newName; listViewStyles.SelectedItems[0].Text = newName; } + + GeneratePreview(); } private void checkBoxFontBold_CheckedChanged(object sender, EventArgs e) @@ -779,6 +857,7 @@ namespace Nikse.SubtitleEdit.Forms.VTT } UpdateRawBeforeStyle(); + GeneratePreview(); } private void checkBoxFontItalic_CheckedChanged(object sender, EventArgs e) @@ -788,7 +867,6 @@ namespace Nikse.SubtitleEdit.Forms.VTT return; } - var idx = listViewStyles.SelectedItems[0].Index; if (checkBoxFontItalic.Checked) { _currentStyle.Italic = true; @@ -798,8 +876,9 @@ namespace Nikse.SubtitleEdit.Forms.VTT _currentStyle.Italic = null; } - listViewStyles.SelectedItems[0].SubItems[3].Text = _currentStyle.Italic.HasValue && _currentStyle.Italic.Value == true ? LanguageSettings.Current.General.Yes : "-"; + listViewStyles.SelectedItems[0].SubItems[3].Text = _currentStyle.Italic.HasValue && _currentStyle.Italic.Value ? LanguageSettings.Current.General.Yes : "-"; UpdateRawBeforeStyle(); + GeneratePreview(); } private void checkBoxFontUnderline_CheckedChanged(object sender, EventArgs e) @@ -819,6 +898,7 @@ namespace Nikse.SubtitleEdit.Forms.VTT } UpdateRawBeforeStyle(); + GeneratePreview(); } private void checkBoxStrikeout_CheckedChanged(object sender, EventArgs e) @@ -838,6 +918,7 @@ namespace Nikse.SubtitleEdit.Forms.VTT } UpdateRawBeforeStyle(); + GeneratePreview(); } private void deleteToolStripMenuItem_Click(object sender, EventArgs e) @@ -982,5 +1063,168 @@ namespace Nikse.SubtitleEdit.Forms.VTT { MoveToBottom(listViewStyles); } + + private void GeneratePreview() + { + if (_previewTimer.Enabled) + { + _previewTimer.Stop(); + _previewTimer.Start(); + } + else + { + _previewTimer.Start(); + } + } + + private void GeneratePreviewReal() + { + if (_currentStyle == null || listViewStyles.SelectedItems.Count != 1 || pictureBoxPreview.Width <= 0 || pictureBoxPreview.Height <= 0) + { + return; + } + + if (GeneratePreviewViaMpv()) + { + return; + } + + if (_backgroundImage == null) + { + const int rectangleSize = 9; + _backgroundImage = TextDesigner.MakeBackgroundImage(pictureBoxPreview.Width, pictureBoxPreview.Height, rectangleSize, _backgroundImageDark); + } + + var defaultStyle = new SsaStyle(); + var shadowWidth = (float)numericUpDownShadowWidth.Value; + var outlineColor = _currentStyle.BackgroundColor ?? defaultStyle.Background; + + Font font; + var privateFontCollection = new PrivateFontCollection(); + try + { + var fontSize = defaultStyle.FontSize; + if (_currentStyle.FontSize.HasValue && _currentStyle.FontSize.Value > 0.1m) + { + fontSize = _currentStyle.FontSize.Value; + } + + var fontName = _currentStyle.FontName; + if (string.IsNullOrEmpty(fontName)) + { + fontName = Font.FontFamily.Name; + } + + font = new Font(fontName, (float)fontSize * 1.1f, checkBoxFontBold.Checked ? FontStyle.Bold : FontStyle.Regular); + if (_currentStyle.Italic.HasValue && _currentStyle.Italic.Value) + { + font = new Font(fontName, (float)fontSize * 1.1f, font.Style | FontStyle.Italic); + } + + if (_currentStyle.Underline.HasValue && _currentStyle.Underline.Value) + { + font = new Font(fontName, (float)fontSize * 1.1f, font.Style | FontStyle.Underline); + } + + if (_currentStyle.StrikeThrough.HasValue && _currentStyle.StrikeThrough.Value) + { + font = new Font(fontName, (float)fontSize * 1.1f, font.Style | FontStyle.Strikeout); + } + } + catch + { + font = new Font(Font, FontStyle.Regular); + } + + var measureBmp = TextDesigner.MakeTextBitmapAssa( + Configuration.Settings.General.PreviewAssaText, + 0, + 0, + font, + pictureBoxPreview.Width, + pictureBoxPreview.Height, + 5, //outlineWidth, + shadowWidth, + null, + _currentStyle.Color ?? defaultStyle.Primary, + outlineColor, + _currentStyle.ShadowColor ?? defaultStyle.Outline, + !(_currentStyle.BackgroundColor.HasValue && _currentStyle.BackgroundColor.Value.A == 0)); + var nBmp = new NikseBitmap(measureBmp); + var measuredWidth = nBmp.GetNonTransparentWidth(); + var measuredHeight = nBmp.GetNonTransparentHeight(); + + var left = (pictureBoxPreview.Width - measuredWidth) / 2.0f; + + float top = pictureBoxPreview.Height - measuredHeight - 15; + + var designedText = TextDesigner.MakeTextBitmapAssa( + Configuration.Settings.General.PreviewAssaText, + (int)Math.Round(left), + (int)Math.Round(top), + font, + pictureBoxPreview.Width, + pictureBoxPreview.Height, + 5, //outlineWidth, + shadowWidth, + _backgroundImage, + _currentStyle.Color ?? defaultStyle.Primary, + outlineColor, + _currentStyle.ShadowColor ?? defaultStyle.Outline, + !(_currentStyle.BackgroundColor.HasValue && _currentStyle.BackgroundColor.Value.A == 0)); + + pictureBoxPreview.Image?.Dispose(); + pictureBoxPreview.Image = designedText; + font.Dispose(); + privateFontCollection.Dispose(); + } + + private bool GeneratePreviewViaMpv() + { + var fileName = VideoPreviewGenerator.GetVideoPreviewFileName(); + if (string.IsNullOrEmpty(fileName) || !LibMpvDynamic.IsInstalled) + { + return false; + } + + if (_mpv == null) + { + _mpv = new LibMpvDynamic(); + _mpv.Initialize(pictureBoxPreview, fileName, VideoStartLoaded, null); + } + else + { + VideoStartLoaded(null, null); + } + + return true; + } + + private void VideoStartLoaded(object sender, EventArgs e) + { + if (_currentStyle == null) + { + return; + } + + var subtitle = new Subtitle(); + var p = new Paragraph(Configuration.Settings.General.PreviewAssaText, 0, 10000); + subtitle.Paragraphs.Add(p); + subtitle.Header = WebVttHelper.AddStyleToHeader(null, _currentStyle); + var assa = WebVttToAssa.Convert(subtitle, new SsaStyle(), _mpv.VideoWidth, _mpv.VideoHeight); + assa.Paragraphs[0].Extra = _currentStyle.Name; + var format = new AdvancedSubStationAlpha(); + var text = assa.ToText(format); + _mpvTextFileName = FileUtil.GetTempFileName(format.Extension); + File.WriteAllText(_mpvTextFileName, text); + _mpv.LoadSubtitle(_mpvTextFileName); + _mpv.Pause(); + _mpv.CurrentPosition = 0.5; + } + + private void WebVttStyleManager_FormClosing(object sender, FormClosingEventArgs e) + { + _mpv?.Dispose(); + } } } diff --git a/src/ui/Logic/Language.cs b/src/ui/Logic/Language.cs index 85a0e4aee..7ee6cd7b4 100644 --- a/src/ui/Logic/Language.cs +++ b/src/ui/Logic/Language.cs @@ -1955,6 +1955,9 @@ namespace Nikse.SubtitleEdit.Logic TimedTextSetLanguage = "Timed Text - set language", SamiSetStyle = "Sami - set class", NuendoSetStyle = "Nuendo - set character", + WebVttSetVoice = "WebVTT - set voice", + WebVttSetStyle = "WebVTT - set style", + WebVttBrowserPreview = "WebVTT - browser preview", Cut = "Cut", Copy = "Copy", Paste = "Paste", diff --git a/src/ui/Logic/LanguageDeserializer.cs b/src/ui/Logic/LanguageDeserializer.cs index 3a3bd4eac..165af52bc 100644 --- a/src/ui/Logic/LanguageDeserializer.cs +++ b/src/ui/Logic/LanguageDeserializer.cs @@ -4537,6 +4537,15 @@ namespace Nikse.SubtitleEdit.Logic case "Main/Menu/ContextMenu/NuendoSetStyle": language.Main.Menu.ContextMenu.NuendoSetStyle = reader.Value; break; + case "Main/Menu/ContextMenu/WebVttSetStyle": + language.Main.Menu.ContextMenu.WebVttSetStyle = reader.Value; + break; + case "Main/Menu/ContextMenu/WebVttSetVoice": + language.Main.Menu.ContextMenu.WebVttSetVoice = reader.Value; + break; + case "Main/Menu/ContextMenu/WebVttBrowserPreview": + language.Main.Menu.ContextMenu.WebVttBrowserPreview = reader.Value; + break; case "Main/Menu/ContextMenu/Cut": language.Main.Menu.ContextMenu.Cut = reader.Value; break; diff --git a/src/ui/Logic/LanguageStructure.cs b/src/ui/Logic/LanguageStructure.cs index 9b6cdf72c..a04e76159 100644 --- a/src/ui/Logic/LanguageStructure.cs +++ b/src/ui/Logic/LanguageStructure.cs @@ -1798,6 +1798,9 @@ namespace Nikse.SubtitleEdit.Logic public string TimedTextSetLanguage { get; set; } public string SamiSetStyle { get; set; } public string NuendoSetStyle { get; set; } + public string WebVttSetStyle { get; set; } + public string WebVttSetVoice { get; set; } + public string WebVttBrowserPreview { get; set; } public string Cut { get; set; } public string Copy { get; set; } public string Paste { get; set; } diff --git a/src/ui/Logic/TextDesigner.cs b/src/ui/Logic/TextDesigner.cs index 2e56bfbbf..940928924 100644 --- a/src/ui/Logic/TextDesigner.cs +++ b/src/ui/Logic/TextDesigner.cs @@ -40,13 +40,13 @@ namespace Nikse.SubtitleEdit.Logic { using (var shadowBoxBrush = new SolidBrush(shadowColor)) { - g.FillRectangle(shadowBoxBrush, xPos - outlineWidth + shadowWidth, yPos - outlineWidth + shadowWidth, w + outlineWidth + outlineWidth, h + +outlineWidth + outlineWidth); + g.FillRectangle(shadowBoxBrush, xPos - outlineWidth + shadowWidth, yPos - outlineWidth + shadowWidth, w + outlineWidth + outlineWidth, h + outlineWidth + outlineWidth); } } using (var boxBrush = new SolidBrush(outlineColor)) { - g.FillRectangle(boxBrush, xPos - outlineWidth, yPos - outlineWidth, w + outlineWidth + outlineWidth, h + +outlineWidth + outlineWidth); + g.FillRectangle(boxBrush, xPos - outlineWidth, yPos - outlineWidth, w + outlineWidth + outlineWidth, h + outlineWidth + outlineWidth); } path.AddString(text, font.FontFamily, (int)font.Style, font.Size, new Point(xPos, yPos), stringFormat); From 2629e8be6825b85b31cf5563304611ef6ecae94a Mon Sep 17 00:00:00 2001 From: niksedk Date: Mon, 26 Jun 2023 21:08:17 +0200 Subject: [PATCH 39/96] Work on WebVTT --- src/libse/Common/WebVttHelper.cs | 126 ++++++++++++++---- src/ui/Forms/Main.cs | 26 +++- .../Forms/VTT/WebVttStylePicker.Designer.cs | 18 ++- src/ui/Forms/VTT/WebVttStylePicker.cs | 17 +++ 4 files changed, 154 insertions(+), 33 deletions(-) diff --git a/src/libse/Common/WebVttHelper.cs b/src/libse/Common/WebVttHelper.cs index fa33d6fa7..67c9087ca 100644 --- a/src/libse/Common/WebVttHelper.cs +++ b/src/libse/Common/WebVttHelper.cs @@ -5,6 +5,7 @@ using System.Globalization; using System.Linq; using System.Text; using System.Text.RegularExpressions; +using static System.Net.Mime.MediaTypeNames; namespace Nikse.SubtitleEdit.Core.Common { @@ -280,30 +281,11 @@ namespace Nikse.SubtitleEdit.Core.Common } } - public static WebVttStyle GetStyleFromColor(Color color, Subtitle webVttSubtitle) - { - foreach (var style in GetStyles(webVttSubtitle.Header)) - { - if (style.Color.HasValue && style.Color.Value == color && - style.BackgroundColor == null && - style.Bold == null && - style.Italic == null && - style.FontName == null && - style.FontSize == null && - style.Underline == null) - { - return style; - } - } - - return null; - } - public static WebVttStyle AddStyleFromColor(Color color) { return new WebVttStyle { - Name = Utilities.ColorToHexWithTransparency(color).TrimStart('#'), + Name = "." + Utilities.ColorToHexWithTransparency(color).TrimStart('#'), Color = color, }; } @@ -317,7 +299,7 @@ namespace Nikse.SubtitleEdit.Core.Common return "WEBVTT" + Environment.NewLine + Environment.NewLine + "STYLE" + Environment.NewLine + rawStyle; } - if (header.Contains("::cue(." + style.Name + ")")) + if (header.Contains("::cue(." + style.Name.RemoveChar('.') + ")")) { return header; } @@ -433,10 +415,10 @@ namespace Nikse.SubtitleEdit.Core.Common public static string AddStyleToText(string input, WebVttStyle style) { var text = input; - var idx = text.IndexOf("", StringComparison.Ordinal); + var idx = text.IndexOf("", StringComparison.Ordinal); if (idx >= 0) { - text = text.Replace("", string.Empty); + text = text.Replace("", string.Empty); idx = text.IndexOf("", StringComparison.Ordinal); if (idx >= 0) { @@ -445,11 +427,17 @@ namespace Nikse.SubtitleEdit.Core.Common } else if (text.Contains(""); + var match = regex.Match(text); + if (match.Success) + { + // todo: remove only color styles + text = text.Insert(match.Index + match.Length-1, "." + style.Name.TrimStart('.')); + } } else { - text = "" + text + ""; + text = "" + text + ""; } return text; @@ -507,5 +495,93 @@ namespace Nikse.SubtitleEdit.Core.Common return prefix + text + ""; } + + public static string RemoveUnusedColorStylesFromText(string input, string header) + { + if (string.IsNullOrEmpty(header) || !header.Contains("WEBVTT")) + { + return input; + } + + var styles = GetStyles(header); + if (styles.Count <= 1) + { + return input; + } + + var regex = new Regex(@""); + var match = regex.Match(input); + if (!match.Success) + { + return input; + } + + var text = input; + var styleNames = match.Value.Remove(0,3).Trim('>').Split('.'); + var colorsOnly = new List(); + foreach (var styleName in styleNames) + { + var style = styles.FirstOrDefault(p => p.Name == "." + styleName); + if (style != null && + style.Color.HasValue && + style.Bold == null && + style.Italic == null && + style.FontName == null && + style.FontSize == null && + style.ShadowColor == null && + style.BackgroundColor == null && + style.Underline == null && + style.StrikeThrough == null && + style.StrikeThrough == null) + { + colorsOnly.Add(styleName); + } + } + + while (colorsOnly.Count > 1) + { + var name = colorsOnly[0]; + text = text.Replace("." + name + ".", "."); + text = text.Replace("." + name + ">", ">"); + colorsOnly.RemoveAt(0); + } + + return text; + } + + public static WebVttStyle GetOnlyColorStyle(Color color, string header) + { + if (string.IsNullOrEmpty(header) || !header.Contains("WEBVTT")) + { + return null; + } + + var styles = GetStyles(header); + if (styles.Count <= 1) + { + return null; + } + + foreach (var style in styles) + { + if (style != null && + style.Color.HasValue && + style.Bold == null && + style.Italic == null && + style.FontName == null && + style.FontSize == null && + style.ShadowColor == null && + style.BackgroundColor == null && + style.Underline == null && + style.StrikeThrough == null && + style.StrikeThrough == null && + style.Color == color) + { + return style; + } + } + + return null; + } } } diff --git a/src/ui/Forms/Main.cs b/src/ui/Forms/Main.cs index 93d83de32..a4e6be23e 100644 --- a/src/ui/Forms/Main.cs +++ b/src/ui/Forms/Main.cs @@ -14037,7 +14037,7 @@ namespace Nikse.SubtitleEdit.Forms else if (format.Name == WebVTT.NameOfFormat || format.Name == WebVTTFileWithLineNumber.NameOfFormat) { var c = ColorTranslator.FromHtml(color); - WebVttStyle styleWithColor = WebVttHelper.GetStyleFromColor(c, _subtitle); + WebVttStyle styleWithColor = WebVttHelper.GetOnlyColorStyle(c, _subtitle.Header); if (styleWithColor == null) { styleWithColor = WebVttHelper.AddStyleFromColor(c); @@ -14049,14 +14049,16 @@ namespace Nikse.SubtitleEdit.Forms var indexOfEndTag = text.IndexOf('>'); if (indexOfEndTag > 0) { - text = text.Insert(indexOfEndTag, "." + styleWithColor.Name); + text = text.Insert(indexOfEndTag, "." + styleWithColor.Name.RemoveChar('.')); } } else { - text = "" + text + ""; + text = "" + text + ""; } + text = WebVttHelper.RemoveUnusedColorStylesFromText(text, _subtitle.Header); + tb.SelectedText = text; tb.SelectionStart = selectionStart; tb.SelectionLength = text.Length; @@ -14154,9 +14156,19 @@ namespace Nikse.SubtitleEdit.Forms try { var c = ColorTranslator.FromHtml(color); - var styleWithColor = WebVttHelper.AddStyleFromColor(c); - subtitle.Header = WebVttHelper.AddStyleToHeader(_subtitle.Header, styleWithColor); - p.Text = WebVttHelper.AddStyleToText(p.Text, styleWithColor); + var existingStyle = WebVttHelper.GetOnlyColorStyle(c, _subtitle.Header); + if (existingStyle != null) + { + p.Text = WebVttHelper.AddStyleToText(p.Text, existingStyle); + p.Text = WebVttHelper.RemoveUnusedColorStylesFromText(p.Text, subtitle.Header); + } + else + { + var styleWithColor = WebVttHelper.AddStyleFromColor(c); + subtitle.Header = WebVttHelper.AddStyleToHeader(_subtitle.Header, styleWithColor); + p.Text = WebVttHelper.AddStyleToText(p.Text, styleWithColor); + p.Text = WebVttHelper.RemoveUnusedColorStylesFromText(p.Text, subtitle.Header); + } } catch { @@ -27250,7 +27262,7 @@ namespace Nikse.SubtitleEdit.Forms { string color; var formatType = GetCurrentSubtitleFormat().GetType(); - if (formatType == typeof(AdvancedSubStationAlpha)) + if (formatType == typeof(AdvancedSubStationAlpha) || formatType == typeof(WebVTT) || formatType == typeof(WebVTTFileWithLineNumber)) { using (var form = new ColorChooser { Color = Configuration.Settings.General.LastColorPickerColor }) { diff --git a/src/ui/Forms/VTT/WebVttStylePicker.Designer.cs b/src/ui/Forms/VTT/WebVttStylePicker.Designer.cs index 64a770090..09eabec4a 100644 --- a/src/ui/Forms/VTT/WebVttStylePicker.Designer.cs +++ b/src/ui/Forms/VTT/WebVttStylePicker.Designer.cs @@ -39,7 +39,9 @@ this.saveFileDialogStyle = new System.Windows.Forms.SaveFileDialog(); this.labelStyles = new System.Windows.Forms.Label(); this.groupBoxStyle = new System.Windows.Forms.GroupBox(); + this.labelStyle = new System.Windows.Forms.Label(); this.contextMenuStrip1.SuspendLayout(); + this.groupBoxStyle.SuspendLayout(); this.SuspendLayout(); // // listViewExportStyles @@ -58,6 +60,7 @@ this.listViewExportStyles.TabIndex = 0; this.listViewExportStyles.UseCompatibleStateImageBehavior = false; this.listViewExportStyles.View = System.Windows.Forms.View.Details; + this.listViewExportStyles.SelectedIndexChanged += new System.EventHandler(this.listViewExportStyles_SelectedIndexChanged); // // contextMenuStrip1 // @@ -120,6 +123,7 @@ // // groupBoxStyle // + this.groupBoxStyle.Controls.Add(this.labelStyle); this.groupBoxStyle.Location = new System.Drawing.Point(201, 38); this.groupBoxStyle.Name = "groupBoxStyle"; this.groupBoxStyle.Size = new System.Drawing.Size(319, 187); @@ -127,7 +131,16 @@ this.groupBoxStyle.TabStop = false; this.groupBoxStyle.Text = "Style"; // - // WebVttIStylePicker + // labelStyle + // + this.labelStyle.AutoSize = true; + this.labelStyle.Location = new System.Drawing.Point(7, 20); + this.labelStyle.Name = "labelStyle"; + this.labelStyle.Size = new System.Drawing.Size(52, 13); + this.labelStyle.TabIndex = 0; + this.labelStyle.Text = "labelStyle"; + // + // WebVttStylePicker // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; @@ -148,6 +161,8 @@ this.Text = "SubStationAlphaStylesExport"; this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.WebVttImportExport_KeyDown); this.contextMenuStrip1.ResumeLayout(false); + this.groupBoxStyle.ResumeLayout(false); + this.groupBoxStyle.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); @@ -165,5 +180,6 @@ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemSelectAll; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemInverseSelection; private System.Windows.Forms.GroupBox groupBoxStyle; + private System.Windows.Forms.Label labelStyle; } } \ No newline at end of file diff --git a/src/ui/Forms/VTT/WebVttStylePicker.cs b/src/ui/Forms/VTT/WebVttStylePicker.cs index c3d3d1878..fe539aa11 100644 --- a/src/ui/Forms/VTT/WebVttStylePicker.cs +++ b/src/ui/Forms/VTT/WebVttStylePicker.cs @@ -30,6 +30,8 @@ namespace Nikse.SubtitleEdit.Forms.VTT toolStripMenuItemSelectAll.Text = LanguageSettings.Current.Main.Menu.ContextMenu.SelectAll; buttonOK.Text = LanguageSettings.Current.General.Ok; buttonCancel.Text = LanguageSettings.Current.General.Cancel; + + labelStyle.Text = string.Empty; } private void buttonOK_Click(object sender, EventArgs e) @@ -68,5 +70,20 @@ namespace Nikse.SubtitleEdit.Forms.VTT item.Checked = !item.Checked; } } + + private void listViewExportStyles_SelectedIndexChanged(object sender, EventArgs e) + { + var x = listViewExportStyles.SelectedIndices; + if (x.Count != 1) + { + labelStyle.Text = string.Empty; + return; + } + + var idx = x[0]; + var style = (WebVttStyle)listViewExportStyles.Items[idx].Tag; + + labelStyle.Text = style.ToString().Replace("; ", ";" + Environment.NewLine); + } } } From 16eec09a1df288bf1674d316cb1cfd0718286cdd Mon Sep 17 00:00:00 2001 From: niksedk Date: Mon, 26 Jun 2023 21:44:22 +0200 Subject: [PATCH 40/96] Work on WebVTT --- src/Test/Core/WebVttHelperTest.cs | 7 ++-- src/libse/Common/WebVttHelper.cs | 67 ++++++++++++++++++------------- src/ui/Forms/Main.cs | 4 +- 3 files changed, 45 insertions(+), 33 deletions(-) diff --git a/src/Test/Core/WebVttHelperTest.cs b/src/Test/Core/WebVttHelperTest.cs index eda3e803b..e2719494e 100644 --- a/src/Test/Core/WebVttHelperTest.cs +++ b/src/Test/Core/WebVttHelperTest.cs @@ -2,7 +2,6 @@ using System.Drawing; using Microsoft.VisualStudio.TestTools.UnitTesting; using Nikse.SubtitleEdit.Core.Common; -using Nikse.SubtitleEdit.Core.SubtitleFormats; namespace Test.Core { @@ -16,7 +15,7 @@ namespace Test.Core { new WebVttStyle() { - Name = "Red", + Name = ".Red", Color = Color.Red, }, }; @@ -34,12 +33,12 @@ namespace Test.Core { new WebVttStyle { - Name = "Red", + Name = ".Red", Color = Color.Red, }, new WebVttStyle { - Name = "Italic", + Name = ".Italic", Italic = true, }, }; diff --git a/src/libse/Common/WebVttHelper.cs b/src/libse/Common/WebVttHelper.cs index 67c9087ca..478c9a3fe 100644 --- a/src/libse/Common/WebVttHelper.cs +++ b/src/libse/Common/WebVttHelper.cs @@ -5,7 +5,7 @@ using System.Globalization; using System.Linq; using System.Text; using System.Text.RegularExpressions; -using static System.Net.Mime.MediaTypeNames; +using System.Xml.Linq; namespace Nikse.SubtitleEdit.Core.Common { @@ -409,30 +409,38 @@ namespace Nikse.SubtitleEdit.Core.Common return input; } - return AddStyleToText(input, style); - } - - public static string AddStyleToText(string input, WebVttStyle style) - { var text = input; - var idx = text.IndexOf("", StringComparison.Ordinal); + text = text.Replace("." + style.Name.TrimStart('.') + ".", "."); + text = text.Replace("." + style.Name.TrimStart('.') + ">", ">"); + + var idx = text.IndexOf("", StringComparison.Ordinal); if (idx >= 0) { - text = text.Replace("", string.Empty); - idx = text.IndexOf("", StringComparison.Ordinal); - if (idx >= 0) + var endIdx = text.IndexOf("", idx); + if (endIdx > 0) { - text = text.Remove(idx, 4); + text = text.Remove(endIdx, 4); + text = text.Remove(idx, 3); } } - else if (text.Contains(" webVttStyles) + { + var text = input; + if (text.Contains(""); - var match = regex.Match(text); - if (match.Success) + if (!text.Contains("." + style.Name.TrimStart('.') + ".") && !text.Contains("." + style.Name.TrimStart('.') + ">")) { - // todo: remove only color styles - text = text.Insert(match.Index + match.Length-1, "." + style.Name.TrimStart('.')); + var regex = new Regex(@""); + var match = regex.Match(text); + if (match.Success) + { + text = RemoveUnusedColorStylesFromText(text, webVttStyles); + text = text.Insert(match.Index + match.Length - 1, "." + style.Name.TrimStart('.')); + } } } else @@ -469,7 +477,7 @@ namespace Nikse.SubtitleEdit.Core.Common public static string SetParagraphStyles(Paragraph p, List styles) { - if (string.IsNullOrEmpty(p.Text) || + if (string.IsNullOrEmpty(p.Text) || !p.Text.Contains("s.Name)) +">"; + var prefix = " s.Name)) + ">"; return prefix + text + ""; } @@ -509,6 +517,11 @@ namespace Nikse.SubtitleEdit.Core.Common return input; } + return RemoveUnusedColorStylesFromText(input, styles); + } + + public static string RemoveUnusedColorStylesFromText(string input, List styles) + { var regex = new Regex(@""); var match = regex.Match(input); if (!match.Success) @@ -517,20 +530,20 @@ namespace Nikse.SubtitleEdit.Core.Common } var text = input; - var styleNames = match.Value.Remove(0,3).Trim('>').Split('.'); + var styleNames = match.Value.Remove(0, 3).Trim('>').Split('.'); var colorsOnly = new List(); foreach (var styleName in styleNames) { var style = styles.FirstOrDefault(p => p.Name == "." + styleName); - if (style != null && - style.Color.HasValue && - style.Bold == null && + if (style != null && + style.Color.HasValue && + style.Bold == null && style.Italic == null && - style.FontName == null && - style.FontSize == null && + style.FontName == null && + style.FontSize == null && style.ShadowColor == null && - style.BackgroundColor == null && - style.Underline == null && + style.BackgroundColor == null && + style.Underline == null && style.StrikeThrough == null && style.StrikeThrough == null) { diff --git a/src/ui/Forms/Main.cs b/src/ui/Forms/Main.cs index a4e6be23e..3fb0f6d78 100644 --- a/src/ui/Forms/Main.cs +++ b/src/ui/Forms/Main.cs @@ -14159,14 +14159,14 @@ namespace Nikse.SubtitleEdit.Forms var existingStyle = WebVttHelper.GetOnlyColorStyle(c, _subtitle.Header); if (existingStyle != null) { - p.Text = WebVttHelper.AddStyleToText(p.Text, existingStyle); + p.Text = WebVttHelper.AddStyleToText(p.Text, existingStyle, WebVttHelper.GetStyles(_subtitle.Header)); p.Text = WebVttHelper.RemoveUnusedColorStylesFromText(p.Text, subtitle.Header); } else { var styleWithColor = WebVttHelper.AddStyleFromColor(c); subtitle.Header = WebVttHelper.AddStyleToHeader(_subtitle.Header, styleWithColor); - p.Text = WebVttHelper.AddStyleToText(p.Text, styleWithColor); + p.Text = WebVttHelper.AddStyleToText(p.Text, styleWithColor, WebVttHelper.GetStyles(_subtitle.Header)); p.Text = WebVttHelper.RemoveUnusedColorStylesFromText(p.Text, subtitle.Header); } } From 9db957027d178fa0c11096d2aa446b75d0d03af6 Mon Sep 17 00:00:00 2001 From: niksedk Date: Tue, 27 Jun 2023 17:50:17 +0200 Subject: [PATCH 41/96] Allow OCR of XML/PNG from MXF - thx Rodney :) --- Changelog.txt | 1 + .../MaterialExchangeFormat/MxfParser.cs | 24 ++++++++++++------- src/ui/Forms/Main.cs | 12 ++++++++++ 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/Changelog.txt b/Changelog.txt index c0c71679e..c34967f79 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -7,6 +7,7 @@ * Add video format ProRes for "Generate video with burned-in sub" * Allow setting profile from cmd line - thx emcodem * ASSA set layer - thx JonSchram + * Allow OCR of XML/PNG from MXF - thx Rodney * IMPROVED: * Update German translation - thx Netspark * Update Chinese translation - thx nkh0472 diff --git a/src/libse/ContainerFormats/MaterialExchangeFormat/MxfParser.cs b/src/libse/ContainerFormats/MaterialExchangeFormat/MxfParser.cs index 8f981ad97..a54b2b94d 100644 --- a/src/libse/ContainerFormats/MaterialExchangeFormat/MxfParser.cs +++ b/src/libse/ContainerFormats/MaterialExchangeFormat/MxfParser.cs @@ -10,10 +10,11 @@ namespace Nikse.SubtitleEdit.Core.ContainerFormats.MaterialExchangeFormat public bool IsValid { get; private set; } private readonly List _subtitleList = new List(); - public List GetSubtitles() - { - return _subtitleList; - } + private readonly List _images = new List(); + + public List GetSubtitles() => _subtitleList; + + public List GetImages() => _images; private long _startPosition; @@ -49,8 +50,15 @@ namespace Nikse.SubtitleEdit.Core.ContainerFormats.MaterialExchangeFormat { stream.Seek(klv.DataPosition, SeekOrigin.Begin); var buffer = new byte[klv.DataSize]; - stream.Read(buffer, 0, buffer.Length); - if (buffer.Length >= 12) + var bytesRead = stream.Read(buffer, 0, buffer.Length); + + if (buffer[0] == 0x89 && buffer[1] == 0x50 && buffer[2] == 0x4E && buffer[3] == 0x47) // PNG header + { + _images.Add(buffer); + continue; + } + + if (buffer.Length >= 12 && bytesRead >= 12) { string s; if (buffer[0] == 0xef && buffer[1] == 0xbb && buffer[2] == 0xbf) @@ -88,7 +96,7 @@ namespace Nikse.SubtitleEdit.Core.ContainerFormats.MaterialExchangeFormat } } - private bool IsSubtitle(string s) + private static bool IsSubtitle(string s) { if (s.Contains("\0")) { @@ -115,7 +123,7 @@ namespace Nikse.SubtitleEdit.Core.ContainerFormats.MaterialExchangeFormat } _startPosition = 0; - for (int i = 0; i < count - 11; i++) + for (var i = 0; i < count - 11; i++) { //Header Partition PackId = 06 0E 2B 34 02 05 01 01 0D 01 02 if (buffer[i + 00] == 0x06 && // OID diff --git a/src/ui/Forms/Main.cs b/src/ui/Forms/Main.cs index 3fb0f6d78..2eeb255fa 100644 --- a/src/ui/Forms/Main.cs +++ b/src/ui/Forms/Main.cs @@ -2924,6 +2924,18 @@ namespace Nikse.SubtitleEdit.Forms _converted = true; ShowStatus(string.Format(_language.LoadedSubtitleX, _fileName) + " - " + string.Format(_language.ConvertedToX, mxfFormat.FriendlyName)); + var images = parser.GetImages(); + if (images.Count > 0 && images.Count == _subtitle.Paragraphs.Count && _subtitle.Paragraphs[0].Text.StartsWith("urn:uuid:", StringComparison.Ordinal)) + { + for (var j = 0; j < images.Count; j++) + { + _subtitle.Paragraphs[j].Text = Convert.ToBase64String(images[j]); + } + + ImportAndInlineBase64(_subtitle, _loading, fileName); + return; + } + UpdateSourceView(); SubtitleListview1.Fill(_subtitle, _subtitleOriginal); _subtitleListViewIndex = -1; From 160468d01c3fa1ec4f715de84698ace27b00aa62 Mon Sep 17 00:00:00 2001 From: niksedk Date: Wed, 28 Jun 2023 10:30:32 +0200 Subject: [PATCH 42/96] Improve handling of SSA to ASSA - thx Emiliano :) --- Changelog.txt | 1 + src/libse/SubtitleFormats/AdvancedSubStationAlpha.cs | 5 +++++ .../Logic/CommandLineConvert/CommandLineConverter.cs | 12 +++++++++--- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/Changelog.txt b/Changelog.txt index c34967f79..bb3cce49f 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -16,6 +16,7 @@ * Update Portuguese translation - thx hugok79 * Update Korean translation - thx domddol * Update Tesseract OCR to 5.3.1 + * Improve convert of SSA to ASSA - thx Emiliano * FIXED: * Fix "Find Double Words" - th uckthis * Fix "double dash" issue in "Fix common errors" - thx Joel diff --git a/src/libse/SubtitleFormats/AdvancedSubStationAlpha.cs b/src/libse/SubtitleFormats/AdvancedSubStationAlpha.cs index 1e7114885..8ee58ee59 100644 --- a/src/libse/SubtitleFormats/AdvancedSubStationAlpha.cs +++ b/src/libse/SubtitleFormats/AdvancedSubStationAlpha.cs @@ -140,6 +140,11 @@ Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text" else if (!string.IsNullOrEmpty(subtitle.Header) && subtitle.Header.Contains("[V4 Styles]")) { LoadStylesFromSubstationAlpha(subtitle, title, header, HeaderNoStyles, sb); + isValidAssHeader = !string.IsNullOrEmpty(subtitle.Header) && subtitle.Header.Contains("[V4+ Styles]"); + if (isValidAssHeader) + { + styles = GetStylesFromHeader(subtitle.Header); + } } else if (subtitle.Header != null && subtitle.Header.Contains("http://www.w3.org/ns/ttml")) { diff --git a/src/ui/Logic/CommandLineConvert/CommandLineConverter.cs b/src/ui/Logic/CommandLineConvert/CommandLineConverter.cs index 3bb6b93d9..f7c187607 100644 --- a/src/ui/Logic/CommandLineConvert/CommandLineConverter.cs +++ b/src/ui/Logic/CommandLineConvert/CommandLineConverter.cs @@ -428,7 +428,7 @@ namespace Nikse.SubtitleEdit.Logic.CommandLineConvert var forcedOnly = GetArgument(unconsumedArguments, "forcedonly").Length > 0; var teletextOnlyPage = GetArgument(unconsumedArguments, "teletextonlypage:"); var teletextOnly = GetArgument(unconsumedArguments, "teletextonly").Length > 0; - + var profileName = GetArgument(unconsumedArguments, "profile:"); if (!string.IsNullOrEmpty(profileName)) { @@ -899,7 +899,7 @@ namespace Nikse.SubtitleEdit.Logic.CommandLineConvert gs.SubtitleLineMaximumLength = profile.SubtitleLineMaximumLength; gs.MaxNumberOfLines = profile.MaxNumberOfLines; gs.MergeLinesShorterThan = profile.MergeLinesShorterThan; - gs.SubtitleMaximumCharactersPerSeconds =(double) profile.SubtitleMaximumCharactersPerSeconds; + gs.SubtitleMaximumCharactersPerSeconds = (double)profile.SubtitleMaximumCharactersPerSeconds; gs.SubtitleOptimalCharactersPerSeconds = (double)profile.SubtitleOptimalCharactersPerSeconds; gs.SubtitleMaximumDisplayMilliseconds = profile.SubtitleMaximumDisplayMilliseconds; gs.SubtitleMinimumDisplayMilliseconds = profile.SubtitleMinimumDisplayMilliseconds; @@ -1402,7 +1402,13 @@ namespace Nikse.SubtitleEdit.Logic.CommandLineConvert // Remove native formatting if (format != null && format.Name != sf.Name) { - format.RemoveNativeFormatting(sub, sf); + if (format.GetType() == typeof(SubStationAlpha) && sf.GetType() == typeof(AdvancedSubStationAlpha)) + { + } + else + { + format.RemoveNativeFormatting(sub, sf); + } } try From bfcb401d53cea8e0de774e1bbd4c468aa1e83448 Mon Sep 17 00:00:00 2001 From: nkh0472 Date: Wed, 28 Jun 2023 23:31:12 +0800 Subject: [PATCH 43/96] Update zh-Hans.xml for commit 36b8a772b7d85966cbd7e0ae6b49ea2935c9471b --- src/ui/Languages/zh-Hans.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/ui/Languages/zh-Hans.xml b/src/ui/Languages/zh-Hans.xml index 95b406633..1758cf987 100644 --- a/src/ui/Languages/zh-Hans.xml +++ b/src/ui/Languages/zh-Hans.xml @@ -1384,6 +1384,9 @@ Command line: {1} {2} 带时间文本 - 选择语言 Sami - 设置等级 Nuendo - 设置字符 + WebVTT - 设置样式 + WebVTT - 设置语音 + WebVTT - 浏览器预览 剪切 复制 粘贴 From 4190d3753328b05795210554c68db0c53ee9e453 Mon Sep 17 00:00:00 2001 From: May Kittens Devour Your Soul Date: Thu, 29 Jun 2023 17:12:21 +0200 Subject: [PATCH 44/96] Update hrv_OCRFixReplaceList.xml --- Dictionaries/hrv_OCRFixReplaceList.xml | 106 ++++++++++++++++++++++++- 1 file changed, 105 insertions(+), 1 deletion(-) diff --git a/Dictionaries/hrv_OCRFixReplaceList.xml b/Dictionaries/hrv_OCRFixReplaceList.xml index 5514c7884..24f45b8dc 100644 --- a/Dictionaries/hrv_OCRFixReplaceList.xml +++ b/Dictionaries/hrv_OCRFixReplaceList.xml @@ -31,6 +31,7 @@ + @@ -66,7 +67,9 @@ + + @@ -90,6 +93,8 @@ + + @@ -111,6 +116,7 @@ + @@ -127,7 +133,11 @@ + + + + @@ -155,6 +165,7 @@ + @@ -183,6 +194,7 @@ + @@ -280,6 +292,7 @@ + @@ -297,6 +310,7 @@ + @@ -362,6 +376,7 @@ + @@ -371,6 +386,7 @@ + @@ -380,6 +396,8 @@ + + @@ -470,6 +488,8 @@ + + @@ -477,6 +497,7 @@ + @@ -508,6 +529,7 @@ + @@ -661,6 +683,7 @@ + @@ -747,6 +770,7 @@ + @@ -759,8 +783,10 @@ + + @@ -775,6 +801,7 @@ + @@ -799,6 +826,7 @@ + @@ -831,6 +859,7 @@ + @@ -874,6 +903,7 @@ + @@ -881,6 +911,7 @@ + @@ -956,6 +987,7 @@ + @@ -1018,9 +1050,12 @@ + + + @@ -1045,12 +1080,15 @@ + + + @@ -1082,8 +1120,11 @@ + + + @@ -1094,11 +1135,13 @@ - + + + @@ -1111,13 +1154,20 @@ + + + + + + + @@ -1145,6 +1195,7 @@ + @@ -1181,6 +1232,7 @@ + @@ -1217,6 +1269,10 @@ + + + + @@ -1258,7 +1314,9 @@ + + @@ -1285,6 +1343,7 @@ + @@ -1313,6 +1372,7 @@ + @@ -1336,6 +1396,8 @@ + + @@ -1353,6 +1415,11 @@ + + + + + @@ -1395,6 +1462,7 @@ + @@ -1403,8 +1471,10 @@ + + @@ -1415,6 +1485,8 @@ + + @@ -1436,6 +1508,7 @@ + @@ -1452,12 +1525,15 @@ + + + @@ -1487,6 +1563,7 @@ + @@ -1522,6 +1599,7 @@ + @@ -1547,6 +1625,7 @@ + @@ -1569,7 +1648,9 @@ + + @@ -1691,6 +1772,7 @@ + @@ -1725,6 +1807,8 @@ + + @@ -1797,6 +1881,7 @@ + @@ -1815,17 +1900,20 @@ + + + @@ -1855,6 +1943,7 @@ + @@ -1905,7 +1994,10 @@ + + + @@ -2029,6 +2121,9 @@ + + + @@ -2132,6 +2227,8 @@ + + @@ -2143,9 +2240,11 @@ + + @@ -2224,6 +2323,7 @@ + @@ -2394,6 +2494,8 @@ + + @@ -2505,6 +2607,7 @@ + @@ -2684,6 +2787,7 @@ + From 50bc6b9ca81838aa9538a4e7b7e7c8dd00ab6813 Mon Sep 17 00:00:00 2001 From: May Kittens Devour Your Soul Date: Thu, 29 Jun 2023 17:39:48 +0200 Subject: [PATCH 45/96] Update hrv_OCRFixReplaceList.xml --- Dictionaries/hrv_OCRFixReplaceList.xml | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/Dictionaries/hrv_OCRFixReplaceList.xml b/Dictionaries/hrv_OCRFixReplaceList.xml index 24f45b8dc..6445f6835 100644 --- a/Dictionaries/hrv_OCRFixReplaceList.xml +++ b/Dictionaries/hrv_OCRFixReplaceList.xml @@ -94,9 +94,9 @@ - + @@ -133,6 +133,7 @@ + @@ -476,6 +477,7 @@ + @@ -1265,6 +1267,7 @@ + @@ -1327,6 +1330,7 @@ + @@ -1485,6 +1489,8 @@ + + @@ -1714,6 +1720,7 @@ + @@ -2042,6 +2049,11 @@ + + + + + @@ -3143,6 +3155,7 @@ + @@ -3268,7 +3281,6 @@ - @@ -3389,6 +3401,7 @@ + @@ -3455,6 +3468,7 @@ + @@ -3606,7 +3620,6 @@ - @@ -3895,6 +3908,7 @@ + @@ -3959,6 +3973,7 @@ + From 46ac15893a432ae160af72ddc54351be5a2af3e4 Mon Sep 17 00:00:00 2001 From: niksedk Date: Thu, 29 Jun 2023 19:43:16 +0200 Subject: [PATCH 46/96] Fix export image alignment w font - thx Matt :) --- src/ui/Forms/ExportPngXml.cs | 61 +++++++++--------------------------- 1 file changed, 14 insertions(+), 47 deletions(-) diff --git a/src/ui/Forms/ExportPngXml.cs b/src/ui/Forms/ExportPngXml.cs index 3d1992179..77391688a 100644 --- a/src/ui/Forms/ExportPngXml.cs +++ b/src/ui/Forms/ExportPngXml.cs @@ -2702,39 +2702,23 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine + var font = GetFont(parameter, parameter.SubtitleFontSize); var fontStack = new Stack(); + var addLeft = 0f; while (i < text.Length) { if (text.Substring(i).StartsWith(" 0) { lastText.Append(sb); + left = GetLastPositionFromPath(path, 0, 0) + addLeft; TextDraw.DrawText(font, sf, path, sb, isItalic, parameter.SubtitleFontBold, false, left, top, ref newLine, leftMargin, ref newLinePathPoint); } - addLeft = GetLastPositionFromPath(path, oldPathPointIndex, addLeft); - if (path.PointCount == 0) - { - addLeft = left; - } - else if (addLeft < 0.01) - { - addLeft = left + 2; - } - - left = addLeft; - DrawShadowAndPath(parameter, g, path); var p2 = new SolidBrush(c); g.FillPath(p2, path); p2.Dispose(); + addLeft = GetLastPositionFromPath(path, 0, 0); path.Reset(); path = new GraphicsPath(); sb.Clear(); @@ -2815,50 +2799,27 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine + sb.Append(t); } - var addLeft = 0f; - var oldPathPointIndex = path.PointCount - 1; - if (oldPathPointIndex < 0) - { - oldPathPointIndex = 0; - } - if (sb.Length > 0) { - if (lastText.Length > 0 && left > 2) - { - left -= 1.5f; - } - lastText.Append(sb); - + left = GetLastPositionFromPath(path, 0, 0) + addLeft; TextDraw.DrawText(font, sf, path, sb, isItalic, parameter.SubtitleFontBold, false, left, top, ref newLine, leftMargin, ref newLinePathPoint); } - addLeft = GetLastPositionFromPath(path, oldPathPointIndex, addLeft); - if (addLeft < 0.01) - { - addLeft = left + 2; - } - - left = addLeft; - DrawShadowAndPath(parameter, g, path); g.FillPath(new SolidBrush(c), path); + addLeft = GetLastPositionFromPath(path, 0, 0); path.Reset(); sb = new StringBuilder(); if (colorStack.Count > 0) { c = colorStack.Pop(); } - - if (left >= 3) - { - left -= 2.5f; - } } if (sb.Length > 0) { + left = GetLastPositionFromPath(path, 0, 0) + addLeft; TextDraw.DrawText(font, sf, path, sb, isItalic, parameter.SubtitleFontBold, false, left, top, ref newLine, leftMargin, ref newLinePathPoint); sb.Clear(); } @@ -2876,6 +2837,7 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine + if (sb.Length > 0) { lastText.Append(sb); + left = GetLastPositionFromPath(path, 0, 0) + addLeft; TextDraw.DrawText(font, sf, path, sb, isItalic, parameter.SubtitleFontBold, false, left, top, ref newLine, leftMargin, ref newLinePathPoint); } isItalic = true; @@ -2891,6 +2853,7 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine + sb.Append(t); } lastText.Append(sb); + left = GetLastPositionFromPath(path, 0, 0) + addLeft; TextDraw.DrawText(font, sf, path, sb, isItalic, parameter.SubtitleFontBold, false, left, top, ref newLine, leftMargin, ref newLinePathPoint); isItalic = false; i += 3; @@ -2900,6 +2863,7 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine + if (sb.Length > 0) { lastText.Append(sb); + left = GetLastPositionFromPath(path, 0, 0) + addLeft; TextDraw.DrawText(font, sf, path, sb, isItalic, isBold, false, left, top, ref newLine, leftMargin, ref newLinePathPoint); } isBold = true; @@ -2915,6 +2879,7 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine + sb.Append(t); } lastText.Append(sb); + left = GetLastPositionFromPath(path, 0, 0) + addLeft; TextDraw.DrawText(font, sf, path, sb, isItalic, isBold, false, left, top, ref newLine, leftMargin, ref newLinePathPoint); isBold = false; i += 3; @@ -2929,13 +2894,14 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine + if (sb.Length > 0) { + left = GetLastPositionFromPath(path, 0, 0) + addLeft; TextDraw.DrawText(font, sf, path, sb, isItalic, parameter.SubtitleFontBold, false, left, top, ref newLine, leftMargin, ref newLinePathPoint); } DrawShadowAndPath(parameter, g, path); g.FillPath(new SolidBrush(c), path); g.Dispose(); - + path.Dispose(); var nbmp = new NikseBitmap(bmp); bmp.Dispose(); font.Dispose(); @@ -3943,7 +3909,7 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine + private static float GetLastPositionFromPath(GraphicsPath path, int oldPathPointIndex, float addLeft) { - if (path.PointCount > 0) + if (path.PointCount > 0 && oldPathPointIndex >= 0) { var list = (PointF[])path.PathPoints.Clone(); // avoid using very slow path.PathPoints indexer!!! for (int k = oldPathPointIndex + 1; k < list.Length; k++) @@ -3954,6 +3920,7 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine + } } } + return addLeft; } From a4b039a03f680e28b36796369508123e19642942 Mon Sep 17 00:00:00 2001 From: niksedk Date: Fri, 30 Jun 2023 13:03:25 +0200 Subject: [PATCH 47/96] Add "select all" + "inverse selection" to "Multiple replace groups" - thx jmaraujouy :) --- src/ui/Forms/MultipleReplace.Designer.cs | 85 ++++++++++++++++-------- src/ui/Forms/MultipleReplace.cs | 42 +++++++++++- src/ui/Forms/MultipleReplace.resx | 11 +-- 3 files changed, 104 insertions(+), 34 deletions(-) diff --git a/src/ui/Forms/MultipleReplace.Designer.cs b/src/ui/Forms/MultipleReplace.Designer.cs index bfe2d2828..9942203f2 100644 --- a/src/ui/Forms/MultipleReplace.Designer.cs +++ b/src/ui/Forms/MultipleReplace.Designer.cs @@ -33,6 +33,7 @@ this.buttonReplacesInverseSelection = new System.Windows.Forms.Button(); this.buttonReplacesSelectAll = new System.Windows.Forms.Button(); this.listViewFixes = new System.Windows.Forms.ListView(); + this.contextMenuStripListViewFixes = new System.Windows.Forms.ContextMenuStrip(this.components); this.columnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnHeader5 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnHeader7 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); @@ -68,6 +69,9 @@ this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); this.toolStripMenuItemImport = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItemExport = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); + this.selectAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.inverseSelectionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.radioButtonNormal = new System.Windows.Forms.RadioButton(); this.buttonOK = new System.Windows.Forms.Button(); this.buttonCancel = new System.Windows.Forms.Button(); @@ -93,10 +97,9 @@ this.buttonApply = new System.Windows.Forms.Button(); this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog(); - this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); - this.selectAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.inverseSelectionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.contextMenuStripListViewFixes = new System.Windows.Forms.ContextMenuStrip(); + this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripMenuItemGroupsSelectAll = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItemGroupsInvertSelection = new System.Windows.Forms.ToolStripMenuItem(); this.groupBoxLinesFound.SuspendLayout(); this.groupBoxReplaces.SuspendLayout(); this.contextMenuStripRules.SuspendLayout(); @@ -106,7 +109,6 @@ this.splitContainer1.SuspendLayout(); this.groupBoxGroups.SuspendLayout(); this.contextMenuStripGroups.SuspendLayout(); - this.contextMenuStripListViewFixes.SuspendLayout(); this.SuspendLayout(); // // groupBoxLinesFound @@ -148,24 +150,18 @@ this.buttonReplacesSelectAll.UseVisualStyleBackColor = true; this.buttonReplacesSelectAll.Click += new System.EventHandler(this.buttonReplacesSelectAll_Click); // - // contextMenuStripListViewFixes - // - this.contextMenuStripListViewFixes.Name = "contextMenuStripListViewFixes"; - this.contextMenuStripListViewFixes.Size = new System.Drawing.Size(285, 776); - this.contextMenuStripListViewFixes.Opening += new System.ComponentModel.CancelEventHandler(this.ContextMenuStripListViewFixesOpening); - // // listViewFixes // this.listViewFixes.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.listViewFixes.CheckBoxes = true; - this.listViewFixes.ContextMenuStrip = this.contextMenuStripListViewFixes; this.listViewFixes.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.columnHeader4, this.columnHeader5, this.columnHeader7, this.columnHeader8}); + this.listViewFixes.ContextMenuStrip = this.contextMenuStripListViewFixes; this.listViewFixes.FullRowSelect = true; this.listViewFixes.HideSelection = false; this.listViewFixes.Location = new System.Drawing.Point(8, 21); @@ -177,6 +173,12 @@ this.listViewFixes.ClientSizeChanged += new System.EventHandler(this.listViewFixes_ClientSizeChanged); this.listViewFixes.KeyDown += new System.Windows.Forms.KeyEventHandler(this.listViewFixes_KeyDown); // + // contextMenuStripListViewFixes + // + this.contextMenuStripListViewFixes.Name = "contextMenuStripListViewFixes"; + this.contextMenuStripListViewFixes.Size = new System.Drawing.Size(61, 4); + this.contextMenuStripListViewFixes.Opening += new System.ComponentModel.CancelEventHandler(this.ContextMenuStripListViewFixesOpening); + // // columnHeader4 // this.columnHeader4.Text = "Apply"; @@ -396,7 +398,7 @@ this.selectAllToolStripMenuItem, this.inverseSelectionToolStripMenuItem}); this.contextMenuStripRules.Name = "contextMenuStrip1"; - this.contextMenuStripRules.Size = new System.Drawing.Size(228, 292); + this.contextMenuStripRules.Size = new System.Drawing.Size(228, 270); this.contextMenuStripRules.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStrip1_Opening); // // deleteToolStripMenuItem @@ -483,6 +485,25 @@ this.toolStripMenuItemExport.Text = "Export..."; this.toolStripMenuItemExport.Click += new System.EventHandler(this.toolStripMenuItem4_Click); // + // toolStripSeparator5 + // + this.toolStripSeparator5.Name = "toolStripSeparator5"; + this.toolStripSeparator5.Size = new System.Drawing.Size(224, 6); + // + // selectAllToolStripMenuItem + // + this.selectAllToolStripMenuItem.Name = "selectAllToolStripMenuItem"; + this.selectAllToolStripMenuItem.Size = new System.Drawing.Size(227, 22); + this.selectAllToolStripMenuItem.Text = "Select all"; + this.selectAllToolStripMenuItem.Click += new System.EventHandler(this.selectAllToolStripMenuItem_Click); + // + // inverseSelectionToolStripMenuItem + // + this.inverseSelectionToolStripMenuItem.Name = "inverseSelectionToolStripMenuItem"; + this.inverseSelectionToolStripMenuItem.Size = new System.Drawing.Size(227, 22); + this.inverseSelectionToolStripMenuItem.Text = "Inverse selection"; + this.inverseSelectionToolStripMenuItem.Click += new System.EventHandler(this.inverseSelectionToolStripMenuItem_Click); + // // radioButtonNormal // this.radioButtonNormal.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); @@ -610,6 +631,7 @@ this.listViewGroups.TabIndex = 0; this.listViewGroups.UseCompatibleStateImageBehavior = false; this.listViewGroups.View = System.Windows.Forms.View.Details; + this.listViewGroups.KeyDown += new System.Windows.Forms.KeyEventHandler(this.listViewGroups_KeyDown); // // columnHeaderForName // @@ -629,9 +651,12 @@ this.moveToBottomToolStripMenuItem, this.toolStripSeparatorGroupImportExport, this.importToolStripMenuItem, - this.exportToolStripMenuItem}); + this.exportToolStripMenuItem, + this.toolStripSeparator6, + this.toolStripMenuItemGroupsSelectAll, + this.toolStripMenuItemGroupsInvertSelection}); this.contextMenuStripGroups.Name = "contextMenuStripGroups"; - this.contextMenuStripGroups.Size = new System.Drawing.Size(216, 214); + this.contextMenuStripGroups.Size = new System.Drawing.Size(216, 286); this.contextMenuStripGroups.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStripGroups_Opening); // // newToolStripMenuItem @@ -732,24 +757,24 @@ // this.openFileDialog1.FileName = "openFileDialog1"; // - // toolStripSeparator5 + // toolStripSeparator6 // - this.toolStripSeparator5.Name = "toolStripSeparator5"; - this.toolStripSeparator5.Size = new System.Drawing.Size(224, 6); + this.toolStripSeparator6.Name = "toolStripSeparator6"; + this.toolStripSeparator6.Size = new System.Drawing.Size(212, 6); // - // selectAllToolStripMenuItem + // toolStripMenuItemGroupsSelectAll // - this.selectAllToolStripMenuItem.Name = "selectAllToolStripMenuItem"; - this.selectAllToolStripMenuItem.Size = new System.Drawing.Size(227, 22); - this.selectAllToolStripMenuItem.Text = "Select all"; - this.selectAllToolStripMenuItem.Click += new System.EventHandler(this.selectAllToolStripMenuItem_Click); + this.toolStripMenuItemGroupsSelectAll.Name = "toolStripMenuItemGroupsSelectAll"; + this.toolStripMenuItemGroupsSelectAll.Size = new System.Drawing.Size(215, 22); + this.toolStripMenuItemGroupsSelectAll.Text = "Select all"; + this.toolStripMenuItemGroupsSelectAll.Click += new System.EventHandler(this.toolStripMenuItemGroupsSelectAll_Click); // - // inverseSelectionToolStripMenuItem + // toolStripMenuItemGroupsInvertSelection // - this.inverseSelectionToolStripMenuItem.Name = "inverseSelectionToolStripMenuItem"; - this.inverseSelectionToolStripMenuItem.Size = new System.Drawing.Size(227, 22); - this.inverseSelectionToolStripMenuItem.Text = "Inverse selection"; - this.inverseSelectionToolStripMenuItem.Click += new System.EventHandler(this.inverseSelectionToolStripMenuItem_Click); + this.toolStripMenuItemGroupsInvertSelection.Name = "toolStripMenuItemGroupsInvertSelection"; + this.toolStripMenuItemGroupsInvertSelection.Size = new System.Drawing.Size(215, 22); + this.toolStripMenuItemGroupsInvertSelection.Text = "Inverse selection"; + this.toolStripMenuItemGroupsInvertSelection.Click += new System.EventHandler(this.toolStripMenuItemGroupsInvertSelection_Click); // // MultipleReplace // @@ -779,7 +804,6 @@ this.splitContainer1.ResumeLayout(false); this.groupBoxGroups.ResumeLayout(false); this.contextMenuStripGroups.ResumeLayout(false); - this.contextMenuStripListViewFixes.ResumeLayout(false); this.ResumeLayout(false); } @@ -854,5 +878,8 @@ private System.Windows.Forms.ToolStripMenuItem selectAllToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem inverseSelectionToolStripMenuItem; private System.Windows.Forms.ContextMenuStrip contextMenuStripListViewFixes; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator6; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemGroupsSelectAll; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemGroupsInvertSelection; } } \ No newline at end of file diff --git a/src/ui/Forms/MultipleReplace.cs b/src/ui/Forms/MultipleReplace.cs index 3643bd26d..9989ea070 100644 --- a/src/ui/Forms/MultipleReplace.cs +++ b/src/ui/Forms/MultipleReplace.cs @@ -116,6 +116,8 @@ namespace Nikse.SubtitleEdit.Forms deleteToolStripMenuItem1.Text = LanguageSettings.Current.MultipleReplace.Remove; selectAllToolStripMenuItem.Text = LanguageSettings.Current.Main.Menu.ContextMenu.SelectAll; inverseSelectionToolStripMenuItem.Text = LanguageSettings.Current.Main.Menu.Edit.InverseSelection; + toolStripMenuItemGroupsSelectAll.Text = LanguageSettings.Current.Main.Menu.ContextMenu.SelectAll; + toolStripMenuItemGroupsInvertSelection.Text = LanguageSettings.Current.Main.Menu.Edit.InverseSelection; radioButtonCaseSensitive.Left = radioButtonNormal.Left + radioButtonNormal.Width + 40; radioButtonRegEx.Left = radioButtonCaseSensitive.Left + radioButtonCaseSensitive.Width + 40; @@ -1213,7 +1215,10 @@ namespace Nikse.SubtitleEdit.Forms { if (item != newToolStripMenuItem && item != toolStripSeparatorGroupImportExport && - item != importToolStripMenuItem) + item != importToolStripMenuItem && + item != toolStripSeparator6 && + item != toolStripMenuItemGroupsSelectAll && + item != toolStripMenuItemGroupsInvertSelection) { item.Visible = doShow; } @@ -1404,5 +1409,40 @@ namespace Nikse.SubtitleEdit.Forms listViewFixes.Columns[4].Text = LanguageSettings.Current.MultipleReplace.RuleInfo; listViewFixes.AutoSizeLastColumn(); } + + private void listViewGroups_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.A && e.Modifiers == Keys.Control) + { + toolStripMenuItemGroupsSelectAll_Click(null, null); + e.SuppressKeyPress = true; + } + else if (e.KeyCode == Keys.D && e.Modifiers == Keys.Control) + { + listViewGroups.SelectFirstSelectedItemOnly(); + e.SuppressKeyPress = true; + } + else if (e.KeyCode == Keys.I && e.Modifiers == (Keys.Control | Keys.Shift)) //InverseSelection + { + toolStripMenuItemGroupsInvertSelection_Click(null, null); + e.SuppressKeyPress = true; + } + } + + private void toolStripMenuItemGroupsSelectAll_Click(object sender, EventArgs e) + { + foreach (ListViewItem item in listViewGroups.Items) + { + item.Checked = true; + } + } + + private void toolStripMenuItemGroupsInvertSelection_Click(object sender, EventArgs e) + { + foreach (ListViewItem item in listViewGroups.Items) + { + item.Checked = !item.Checked; + } + } } } diff --git a/src/ui/Forms/MultipleReplace.resx b/src/ui/Forms/MultipleReplace.resx index 8ac43125e..5b8a63afd 100644 --- a/src/ui/Forms/MultipleReplace.resx +++ b/src/ui/Forms/MultipleReplace.resx @@ -117,16 +117,19 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + 17, 17 + + 237, 17 + - 448, 17 + 691, 17 - 172, 17 + 415, 17 - 312, 17 + 555, 17 \ No newline at end of file From 452289bb4dc20b6557aa53806b81a6e7582a24fc Mon Sep 17 00:00:00 2001 From: niksedk Date: Fri, 30 Jun 2023 22:18:59 +0200 Subject: [PATCH 48/96] Work on WebVTT --- src/libse/Common/WebVttToAssa.cs | 15 ++++++++-- .../AdvancedSubStationAlpha.cs | 9 ++++++ src/ui/Forms/Assa/AssaStyles.cs | 5 ++++ src/ui/Forms/Main.cs | 6 ++++ src/ui/SubtitleEdit.csproj | 4 +-- src/ui/app.config | 30 +++++++++++-------- 6 files changed, 50 insertions(+), 19 deletions(-) diff --git a/src/libse/Common/WebVttToAssa.cs b/src/libse/Common/WebVttToAssa.cs index 0615216a3..0cebc999b 100644 --- a/src/libse/Common/WebVttToAssa.cs +++ b/src/libse/Common/WebVttToAssa.cs @@ -26,12 +26,16 @@ namespace Nikse.SubtitleEdit.Core.Common { var assaSubtitle = new Subtitle(webVttSubtitle) { Header = header }; - assaSubtitle.Header = AdvancedSubStationAlpha.AddTagToHeader("PlayResX", "PlayResX: " + width.ToString(CultureInfo.InvariantCulture), "[Script Info]", assaSubtitle.Header); - assaSubtitle.Header = AdvancedSubStationAlpha.AddTagToHeader("PlayResY", "PlayResY: " + height.ToString(CultureInfo.InvariantCulture), "[Script Info]", assaSubtitle.Header); + if (width > 0 && height > 0) + { + assaSubtitle.Header = AdvancedSubStationAlpha.AddTagToHeader("PlayResX", "PlayResX: " + width.ToString(CultureInfo.InvariantCulture), "[Script Info]", assaSubtitle.Header); + assaSubtitle.Header = AdvancedSubStationAlpha.AddTagToHeader("PlayResY", "PlayResY: " + height.ToString(CultureInfo.InvariantCulture), "[Script Info]", assaSubtitle.Header); + } + var styles = AdvancedSubStationAlpha.GetSsaStylesFromHeader(assaSubtitle.Header); foreach (var style in styles) { - if (style.FontSize <= 25) + if (style.FontSize <= 25 && width > 0 && height > 0) { const int defaultAssaHeight = 288; style.FontSize = AssaResampler.Resample(defaultAssaHeight, height, style.FontSize); @@ -102,6 +106,11 @@ namespace Nikse.SubtitleEdit.Core.Common internal static string GetPositionInfo(string s, int width, int height) { + if (width <= 0 || height <= 0) + { + return string.Empty; + } + //position: x --- 0% = left, 100% = right (horizontal) //line: x --- 0 or -16 or 0% = top, 16 or -1 or 100% = bottom (vertical) var x = 0; diff --git a/src/libse/SubtitleFormats/AdvancedSubStationAlpha.cs b/src/libse/SubtitleFormats/AdvancedSubStationAlpha.cs index 8ee58ee59..b93abdb1f 100644 --- a/src/libse/SubtitleFormats/AdvancedSubStationAlpha.cs +++ b/src/libse/SubtitleFormats/AdvancedSubStationAlpha.cs @@ -166,6 +166,15 @@ Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text" styles = GetStylesFromHeader(subtitle.Header); } } + else if (subtitle.Header != null && subtitle.Header.StartsWith("WEBVTT", StringComparison.Ordinal)) + { + subtitle = WebVttToAssa.Convert(subtitle, new SsaStyle(), 0, 0); + isValidAssHeader = !string.IsNullOrEmpty(subtitle.Header) && subtitle.Header.Contains("[V4+ Styles]"); + if (isValidAssHeader) + { + styles = GetStylesFromHeader(subtitle.Header); + } + } else { sb.AppendFormat(header, title).AppendLine(); diff --git a/src/ui/Forms/Assa/AssaStyles.cs b/src/ui/Forms/Assa/AssaStyles.cs index 547326fcb..e228b1f12 100644 --- a/src/ui/Forms/Assa/AssaStyles.cs +++ b/src/ui/Forms/Assa/AssaStyles.cs @@ -76,6 +76,11 @@ namespace Nikse.SubtitleEdit.Forms.Assa AdvancedSubStationAlpha.LoadStylesFromTimedText10(s, string.Empty, _header, AdvancedSubStationAlpha.HeaderNoStyles, new StringBuilder()); _header = s.Header; } + else if (_header != null && _header.StartsWith("WEBVTT", StringComparison.Ordinal)) + { + _subtitle = WebVttToAssa.Convert(subtitle, new SsaStyle(), 0, 0); + _header = _subtitle.Header; + } if (_header == null || !_header.Contains("style:", StringComparison.OrdinalIgnoreCase)) { diff --git a/src/ui/Forms/Main.cs b/src/ui/Forms/Main.cs index 2eeb255fa..89491dde9 100644 --- a/src/ui/Forms/Main.cs +++ b/src/ui/Forms/Main.cs @@ -2156,6 +2156,12 @@ namespace Nikse.SubtitleEdit.Forms if (formatType == typeof(AdvancedSubStationAlpha)) { + if (_oldSubtitleFormat?.GetType() == typeof(WebVTT) || + _oldSubtitleFormat?.GetType() == typeof(WebVTTFileWithLineNumber)) + { + _subtitle = WebVttToAssa.Convert(_subtitle, new SsaStyle(), _videoInfo?.Width ?? 0, _videoInfo?.Height ?? 0); + } + foreach (var p in _subtitle.Paragraphs) { p.Text = AdvancedSubStationAlpha.FormatText(p.Text); diff --git a/src/ui/SubtitleEdit.csproj b/src/ui/SubtitleEdit.csproj index 374d8a888..177d3142c 100644 --- a/src/ui/SubtitleEdit.csproj +++ b/src/ui/SubtitleEdit.csproj @@ -52,9 +52,7 @@ 4 false - - app.manifest - + True diff --git a/src/ui/app.config b/src/ui/app.config index 459b0a285..1b421acde 100644 --- a/src/ui/app.config +++ b/src/ui/app.config @@ -1,16 +1,20 @@  - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + From 344511f4e9d8508f1d78decd078078c9140ce8ac Mon Sep 17 00:00:00 2001 From: niksedk Date: Sat, 1 Jul 2023 14:10:08 +0200 Subject: [PATCH 49/96] Improve handling of invalid xml in ttml - thx m0ck69 :) Fix #7051 --- src/libse/SubtitleFormats/TimedText10.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/libse/SubtitleFormats/TimedText10.cs b/src/libse/SubtitleFormats/TimedText10.cs index 3f77e5a39..07ac6fc35 100644 --- a/src/libse/SubtitleFormats/TimedText10.cs +++ b/src/libse/SubtitleFormats/TimedText10.cs @@ -1662,9 +1662,8 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats result = result.Remove(0, idx); } - return result - .Replace(" & ", " & ") - .Replace("Q&A", "Q&A"); + var fixAmpersandRegex = new Regex("&(?!amp;)"); + return fixAmpersandRegex.Replace(result, "&"); } } } From a1c9984283e9cadb20507884bd27a7995440cd78 Mon Sep 17 00:00:00 2001 From: niksedk Date: Sat, 1 Jul 2023 18:17:29 +0200 Subject: [PATCH 50/96] Add burn-in video preview - thx Masina86 :) Fix #7024 --- src/ui/Forms/GenerateVideoWithHardSubs.cs | 17 +++ src/ui/Forms/PreviewVideo.Designer.cs | 88 ++++++++++++++++ src/ui/Forms/PreviewVideo.cs | 100 ++++++++++++++++++ src/ui/Forms/PreviewVideo.resx | 123 ++++++++++++++++++++++ src/ui/SubtitleEdit.csproj | 9 ++ 5 files changed, 337 insertions(+) create mode 100644 src/ui/Forms/PreviewVideo.Designer.cs create mode 100644 src/ui/Forms/PreviewVideo.cs create mode 100644 src/ui/Forms/PreviewVideo.resx diff --git a/src/ui/Forms/GenerateVideoWithHardSubs.cs b/src/ui/Forms/GenerateVideoWithHardSubs.cs index 5c12d3dd3..7ac056ed4 100644 --- a/src/ui/Forms/GenerateVideoWithHardSubs.cs +++ b/src/ui/Forms/GenerateVideoWithHardSubs.cs @@ -11,6 +11,8 @@ using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Windows.Forms; +using Nikse.SubtitleEdit.Logic.VideoPlayers; +using Nikse.SubtitleEdit.Forms.BinaryEdit; namespace Nikse.SubtitleEdit.Forms { @@ -1217,6 +1219,21 @@ namespace Nikse.SubtitleEdit.Forms { buttonPreview.Enabled = false; labelPreviewPleaseWait.Visible = true; + + if (LibMpvDynamic.IsInstalled && Configuration.Settings.General.VideoPlayer == "MPV") + { + var temp = new Subtitle(_assaSubtitle); + var subFileName = GetAssaFileName(_inputVideoFileName); + FileUtil.WriteAllText(subFileName, new AdvancedSubStationAlpha().ToText(temp, null), new TextEncoding(Encoding.UTF8, "UTF8")); + + using (var form = new PreviewVideo(_inputVideoFileName, subFileName, _assaSubtitle)) + { + form.ShowDialog(this); + } + + return; + } + Cursor = Cursors.WaitCursor; // generate blank video diff --git a/src/ui/Forms/PreviewVideo.Designer.cs b/src/ui/Forms/PreviewVideo.Designer.cs new file mode 100644 index 000000000..dc4e4234f --- /dev/null +++ b/src/ui/Forms/PreviewVideo.Designer.cs @@ -0,0 +1,88 @@ +namespace Nikse.SubtitleEdit.Forms +{ + partial class PreviewVideo + { + /// + /// 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.components = new System.ComponentModel.Container(); + this.videoPlayerContainer1 = new Nikse.SubtitleEdit.Controls.VideoPlayerContainer(); + this.timerSubtitleOnVideo = new System.Windows.Forms.Timer(this.components); + this.SuspendLayout(); + // + // videoPlayerContainer1 + // + this.videoPlayerContainer1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(18)))), ((int)(((byte)(18))))); + this.videoPlayerContainer1.Chapters = null; + this.videoPlayerContainer1.CurrentPosition = 0D; + this.videoPlayerContainer1.Dock = System.Windows.Forms.DockStyle.Fill; + this.videoPlayerContainer1.FontSizeFactor = 1F; + this.videoPlayerContainer1.LastParagraph = null; + this.videoPlayerContainer1.Location = new System.Drawing.Point(0, 0); + this.videoPlayerContainer1.Name = "videoPlayerContainer1"; + this.videoPlayerContainer1.ShowFullscreenButton = true; + this.videoPlayerContainer1.ShowMuteButton = true; + this.videoPlayerContainer1.ShowStopButton = true; + this.videoPlayerContainer1.Size = new System.Drawing.Size(800, 450); + this.videoPlayerContainer1.SubtitleText = ""; + this.videoPlayerContainer1.TabIndex = 17; + this.videoPlayerContainer1.TextRightToLeft = System.Windows.Forms.RightToLeft.No; + this.videoPlayerContainer1.UsingFrontCenterAudioChannelOnly = false; + this.videoPlayerContainer1.VideoHeight = 0; + this.videoPlayerContainer1.VideoPlayer = null; + this.videoPlayerContainer1.VideoWidth = 0; + this.videoPlayerContainer1.Volume = 0D; + // + // timerSubtitleOnVideo + // + this.timerSubtitleOnVideo.Interval = 25; + this.timerSubtitleOnVideo.Tick += new System.EventHandler(this.timerSubtitleOnVideo_Tick); + // + // PreviewVideo + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + this.Controls.Add(this.videoPlayerContainer1); + this.KeyPreview = true; + this.Name = "PreviewVideo"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "PreviewVideo"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.PreviewVideo_FormClosing); + this.Shown += new System.EventHandler(this.PreviewVideo_Shown); + this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.PreviewVideo_KeyDown); + this.ResumeLayout(false); + + } + + #endregion + + private Controls.VideoPlayerContainer videoPlayerContainer1; + private System.Windows.Forms.Timer timerSubtitleOnVideo; + } +} \ No newline at end of file diff --git a/src/ui/Forms/PreviewVideo.cs b/src/ui/Forms/PreviewVideo.cs new file mode 100644 index 000000000..e6cd58907 --- /dev/null +++ b/src/ui/Forms/PreviewVideo.cs @@ -0,0 +1,100 @@ +using Nikse.SubtitleEdit.Logic; +using Nikse.SubtitleEdit.Logic.VideoPlayers; +using System; +using System.IO; +using System.Windows.Forms; +using Nikse.SubtitleEdit.Core.Common; + +namespace Nikse.SubtitleEdit.Forms +{ + public partial class PreviewVideo : Form + { + private string _videoFileName; + private readonly string _subtitleFileName; + private readonly Subtitle _subtitle; + + public PreviewVideo(string videoFileName, string subtitleFileName, Subtitle subtitle) + { + UiUtil.PreInitialize(this); + InitializeComponent(); + UiUtil.FixFonts(this); + _videoFileName = videoFileName; + _subtitleFileName = subtitleFileName; + _subtitle = subtitle; + } + + private void PreviewVideo_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Escape) + { + DialogResult = DialogResult.Cancel; + } + } + + private void PreviewVideo_FormClosing(object sender, FormClosingEventArgs e) + { + CloseVideo(); + } + + private void CloseVideo() + { + timerSubtitleOnVideo.Stop(); + + Application.DoEvents(); + if (videoPlayerContainer1.VideoPlayer != null) + { + videoPlayerContainer1.Pause(); + videoPlayerContainer1.VideoPlayer.DisposeVideoPlayer(); + videoPlayerContainer1.VideoPlayer = null; + } + + Application.DoEvents(); + _videoFileName = null; + videoPlayerContainer1.Visible = false; + } + + private void PreviewVideo_Shown(object sender, EventArgs e) + { + var videoInfo = UiUtil.GetVideoInfo(_videoFileName); + UiUtil.InitializeVideoPlayerAndContainer(_videoFileName, videoInfo, videoPlayerContainer1, VideoStartLoaded, VideoStartEnded); + Text = $"{LanguageSettings.Current.General.Preview} - {videoInfo.Width}x{videoInfo.Height}, {Path.GetFileName(_videoFileName)}"; + } + + private void VideoStartEnded(object sender, EventArgs e) + { + videoPlayerContainer1.Pause(); + if (videoPlayerContainer1.VideoPlayer is LibMpvDynamic libmpv) + { + libmpv.RemoveSubtitle(); + } + } + + private void VideoStartLoaded(object sender, EventArgs e) + { + videoPlayerContainer1.Pause(); + timerSubtitleOnVideo.Start(); + if (videoPlayerContainer1.VideoPlayer is LibMpvDynamic libmpv) + { + libmpv.LoadSubtitle(_subtitleFileName); + } + + if (_subtitle?.Paragraphs.Count > 0) + { + videoPlayerContainer1.CurrentPosition = _subtitle.Paragraphs[0].StartTime.TotalSeconds + 0.1; + } + } + + private void timerSubtitleOnVideo_Tick(object sender, EventArgs e) + { + if (videoPlayerContainer1 == null || videoPlayerContainer1.IsPaused) + { + return; + } + + if (!videoPlayerContainer1.IsPaused) + { + videoPlayerContainer1.RefreshProgressBar(); + } + } + } +} diff --git a/src/ui/Forms/PreviewVideo.resx b/src/ui/Forms/PreviewVideo.resx new file mode 100644 index 000000000..ef3cba408 --- /dev/null +++ b/src/ui/Forms/PreviewVideo.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 17, 17 + + \ No newline at end of file diff --git a/src/ui/SubtitleEdit.csproj b/src/ui/SubtitleEdit.csproj index 177d3142c..280a95bd9 100644 --- a/src/ui/SubtitleEdit.csproj +++ b/src/ui/SubtitleEdit.csproj @@ -385,6 +385,12 @@ GetVideoPosition.cs + + Form + + + PreviewVideo.cs + Form @@ -1665,6 +1671,9 @@ WordLists.cs + + PreviewVideo.cs + ShotChangesList.cs From 045d135f49f8047c3ac7c34e134c420cf3f90da5 Mon Sep 17 00:00:00 2001 From: niksedk Date: Sat, 1 Jul 2023 18:43:53 +0200 Subject: [PATCH 51/96] Update change log --- Changelog.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Changelog.txt b/Changelog.txt index bb3cce49f..870391461 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -15,8 +15,10 @@ * Update Russian translation - thx elfriob * Update Portuguese translation - thx hugok79 * Update Korean translation - thx domddol - * Update Tesseract OCR to 5.3.1 + * Update Tesseract OCR to 5.3.1 (64-bit only) * Improve convert of SSA to ASSA - thx Emiliano + * Update burn-in video preview to video - thx Masina86 + * Improve handling of invalid xml in ttml - thx m0ck69 * FIXED: * Fix "Find Double Words" - th uckthis * Fix "double dash" issue in "Fix common errors" - thx Joel @@ -25,6 +27,7 @@ * Fix to eager file locked check - thx OSokil * Preserve white space in "Multiple replace import" - thx OtaStrom * Fix frozen settings in "Batch convert" - thx OtaStrom + * Fix export image alignment when using font tag - thx Matt 3.6.13 (14th May 2023) From 6f0647bdf61c31fea49df93d1869d245afa72803 Mon Sep 17 00:00:00 2001 From: niksedk Date: Sat, 1 Jul 2023 20:26:01 +0200 Subject: [PATCH 52/96] Try to fix title bar bg color - thx abc16361 :) Fix #7052 --- src/ui/SubtitleEdit.csproj | 3 ++ src/ui/app.manifest | 61 +++++++++++++++++++++++++++++++++++--- 2 files changed, 60 insertions(+), 4 deletions(-) diff --git a/src/ui/SubtitleEdit.csproj b/src/ui/SubtitleEdit.csproj index 280a95bd9..6bc3015be 100644 --- a/src/ui/SubtitleEdit.csproj +++ b/src/ui/SubtitleEdit.csproj @@ -53,6 +53,9 @@ false + + app.manifest + True diff --git a/src/ui/app.manifest b/src/ui/app.manifest index ad312a1fe..96a8e4d13 100644 --- a/src/ui/app.manifest +++ b/src/ui/app.manifest @@ -4,23 +4,76 @@ + + - + + + + + + - + - + - + + + + + + + + + From a5b710f6215adfa70b7d592b931b2ee82f5283a7 Mon Sep 17 00:00:00 2001 From: niksedk Date: Sat, 1 Jul 2023 20:32:08 +0200 Subject: [PATCH 53/96] Change order of WebVTT properties/style toolbar icons --- src/ui/Forms/Main.Designer.cs | 4 ++-- src/ui/Forms/Main.resx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ui/Forms/Main.Designer.cs b/src/ui/Forms/Main.Designer.cs index 22d3071e8..f75386afd 100644 --- a/src/ui/Forms/Main.Designer.cs +++ b/src/ui/Forms/Main.Designer.cs @@ -690,8 +690,8 @@ namespace Nikse.SubtitleEdit.Forms this.toolStripButtonVisualSync, this.toolStripButtonBurnIn, this.toolStripButtonSpellCheck, - this.toolStripButtonXProperties, this.toolStripButtonAssStyleManager, + this.toolStripButtonXProperties, this.toolStripButtonAssProperties, this.toolStripButtonAssAttachments, this.toolStripButtonAssaDraw, @@ -2676,7 +2676,7 @@ namespace Nikse.SubtitleEdit.Forms this.toolStripMenuItemSelectedLines, this.toolStripMenuItemGoogleMicrosoftTranslateSelLine}); this.contextMenuStripListView.Name = "contextMenuStripListView"; - this.contextMenuStripListView.Size = new System.Drawing.Size(285, 848); + this.contextMenuStripListView.Size = new System.Drawing.Size(285, 826); this.contextMenuStripListView.Closed += new System.Windows.Forms.ToolStripDropDownClosedEventHandler(this.MenuClosed); this.contextMenuStripListView.Opening += new System.ComponentModel.CancelEventHandler(this.ContextMenuStripListViewOpening); this.contextMenuStripListView.Opened += new System.EventHandler(this.MenuOpened); diff --git a/src/ui/Forms/Main.resx b/src/ui/Forms/Main.resx index 8f61aec73..117661966 100644 --- a/src/ui/Forms/Main.resx +++ b/src/ui/Forms/Main.resx @@ -857,7 +857,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD2 - CAAAAk1TRnQBSQFMAgEBAgEAAdwBLgHcAS4BEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CAAAAk1TRnQBSQFMAgEBAgEAAeQBLgHkAS4BEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA From 2c7e546b1f35e55a9875be9ec8cfa79462775f3b Mon Sep 17 00:00:00 2001 From: niksedk Date: Sat, 1 Jul 2023 20:45:07 +0200 Subject: [PATCH 54/96] Fix merge non-consecutive lines - thx fesh0r :) Fix #7022 --- src/libse/Common/MergeLinesSameTextUtils.cs | 4 ---- src/ui/Forms/MergeDoubleLines.cs | 4 ---- 2 files changed, 8 deletions(-) diff --git a/src/libse/Common/MergeLinesSameTextUtils.cs b/src/libse/Common/MergeLinesSameTextUtils.cs index 24e060406..a84c1545f 100644 --- a/src/libse/Common/MergeLinesSameTextUtils.cs +++ b/src/libse/Common/MergeLinesSameTextUtils.cs @@ -50,10 +50,6 @@ namespace Nikse.SubtitleEdit.Core.Common mergedIndexes.Add(i - 1); } } - else - { - break; - } } } diff --git a/src/ui/Forms/MergeDoubleLines.cs b/src/ui/Forms/MergeDoubleLines.cs index e4501a680..bbeadd584 100644 --- a/src/ui/Forms/MergeDoubleLines.cs +++ b/src/ui/Forms/MergeDoubleLines.cs @@ -195,10 +195,6 @@ namespace Nikse.SubtitleEdit.Forms mergedIndexes.Add(i - 1); } } - else - { - break; - } } if (!removed.Contains(i - 1) && lineNumbers.Count > 0 && clearFixes) From 217023d71e2fe75dc40b8edb35698e5fd2d66f92 Mon Sep 17 00:00:00 2001 From: niksedk Date: Sat, 1 Jul 2023 21:05:36 +0200 Subject: [PATCH 55/96] Try to improve highlight bg color in listview in dark mode - thx THGhost :) Fix #6981 --- src/ui/Logic/DarkTheme.cs | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/src/ui/Logic/DarkTheme.cs b/src/ui/Logic/DarkTheme.cs index 6ed679dcc..613b50f7e 100644 --- a/src/ui/Logic/DarkTheme.cs +++ b/src/ui/Logic/DarkTheme.cs @@ -508,7 +508,7 @@ namespace Nikse.SubtitleEdit.Logic private static void ListView_DrawItem(object sender, DrawListViewItemEventArgs e) { - if (sender is ListView lv && !lv.Focused && (e.State & ListViewItemStates.Selected) != 0) + if (sender is ListView && (e.State & ListViewItemStates.Selected) != 0) { if (e.Item.Focused) { @@ -530,13 +530,7 @@ namespace Nikse.SubtitleEdit.Logic var backgroundColor = lv.Items[e.ItemIndex].SubItems[e.ColumnIndex].BackColor; var subBackgroundColor = Color.FromArgb(backgroundColor.A, Math.Max(backgroundColor.R - 39, 0), Math.Max(backgroundColor.G - 39, 0), Math.Max(backgroundColor.B - 39, 0)); - if (lv.Focused && backgroundColor == BackColor || lv.RightToLeftLayout) - { - e.DrawDefault = true; - return; - } - - if (e.Item.Selected) + if (e.Item.Selected || e.Item.Focused) { var subtitleFont = e.Item.Font; var rect = e.Bounds; @@ -562,14 +556,15 @@ namespace Nikse.SubtitleEdit.Logic CheckBoxRenderer.DrawCheckBox(e.Graphics, new Point(e.Bounds.X + 4, e.Bounds.Y + 2), checkBoxState); } + var foreColor = e.Item.ForeColor; if (lv.Columns[e.ColumnIndex].TextAlign == HorizontalAlignment.Right) { var stringWidth = (int)e.Graphics.MeasureString(e.Item.SubItems[e.ColumnIndex].Text, subtitleFont).Width; - TextRenderer.DrawText(e.Graphics, e.Item.SubItems[e.ColumnIndex].Text, subtitleFont, new Point(e.Bounds.Right - stringWidth - 7, e.Bounds.Top + 2), e.Item.ForeColor, TextFormatFlags.NoPrefix); + TextRenderer.DrawText(e.Graphics, e.Item.SubItems[e.ColumnIndex].Text, subtitleFont, new Point(e.Bounds.Right - stringWidth - 7, e.Bounds.Top + 2), foreColor, TextFormatFlags.NoPrefix); } else { - TextRenderer.DrawText(e.Graphics, e.Item.SubItems[e.ColumnIndex].Text, subtitleFont, new Point(e.Bounds.Left + 3 + addX, e.Bounds.Top + 2), e.Item.ForeColor, TextFormatFlags.NoPrefix); + TextRenderer.DrawText(e.Graphics, e.Item.SubItems[e.ColumnIndex].Text, subtitleFont, new Point(e.Bounds.Left + 3 + addX, e.Bounds.Top + 2), foreColor, TextFormatFlags.NoPrefix); } } else @@ -593,7 +588,7 @@ namespace Nikse.SubtitleEdit.Logic e.Graphics.FillRectangle(slightlyDarkerBrush, e.Bounds); } - int posY = Math.Abs(e.Bounds.Height - e.Font.Height) / 2; + var posY = Math.Abs(e.Bounds.Height - e.Font.Height) / 2; TextRenderer.DrawText(e.Graphics, e.Header.Text, e.Font, new Point(e.Bounds.X + 3, posY), ForeColor); if (Configuration.Settings.General.DarkThemeShowListViewGridLines && e.ColumnIndex != 0) @@ -622,8 +617,7 @@ namespace Nikse.SubtitleEdit.Logic } } - private static void ListView_HandleCreated(object sender, EventArgs e) => - SetWindowThemeDark((Control)sender); + private static void ListView_HandleCreated(object sender, EventArgs e) => SetWindowThemeDark((Control)sender); private class MyRenderer : ToolStripProfessionalRenderer { @@ -843,7 +837,7 @@ namespace Nikse.SubtitleEdit.Logic private Rectangle GetTabImageRect(int index) { var innerRect = _tabRects[index]; - int imgHeight = _imageSize.Height; + var imgHeight = _imageSize.Height; var imgRect = new Rectangle( new Point(innerRect.X + ImagePadding, innerRect.Y + ((innerRect.Height - imgHeight) / 2)), From 4e266de5ca7d100fa3ed40a20570c351aa57d4d9 Mon Sep 17 00:00:00 2001 From: niksedk Date: Sat, 1 Jul 2023 23:24:18 +0200 Subject: [PATCH 56/96] Fix settings window... --- src/ui/app.config | 4 ++-- src/ui/app.manifest | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/ui/app.config b/src/ui/app.config index 1b421acde..3c118de8d 100644 --- a/src/ui/app.config +++ b/src/ui/app.config @@ -14,7 +14,7 @@ - + diff --git a/src/ui/app.manifest b/src/ui/app.manifest index 96a8e4d13..15f47c0a2 100644 --- a/src/ui/app.manifest +++ b/src/ui/app.manifest @@ -51,14 +51,14 @@ also set the 'EnableWindowsFormsHighDpiAutoResizing' setting to 'true' in their app.config. Makes the application long-path aware. See https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation --> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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/ui/SubtitleEdit.csproj b/src/ui/SubtitleEdit.csproj index 6bc3015be..50cea20f5 100644 --- a/src/ui/SubtitleEdit.csproj +++ b/src/ui/SubtitleEdit.csproj @@ -250,6 +250,12 @@ VoskAudioToText.cs + + Form + + + BatchConvertOcrLanguage.cs + Form @@ -1604,6 +1610,9 @@ VoskAudioToText.cs + + BatchConvertOcrLanguage.cs + BatchConvertMkvEnding.cs From 4a94d50a794598b775adf478280d4ed308067c0f Mon Sep 17 00:00:00 2001 From: niksedk Date: Sun, 2 Jul 2023 14:30:43 +0200 Subject: [PATCH 61/96] Fix tab stop + Tesseract dictionary download --- .../Forms/BatchConvertOcrLanguage.Designer.cs | 19 +- src/ui/Forms/BatchConvertOcrLanguage.cs | 19 +- src/ui/Forms/Ocr/VobSubOcr.Designer.cs | 168 +++++++++--------- 3 files changed, 118 insertions(+), 88 deletions(-) diff --git a/src/ui/Forms/BatchConvertOcrLanguage.Designer.cs b/src/ui/Forms/BatchConvertOcrLanguage.Designer.cs index b990165e2..ecb27f5c3 100644 --- a/src/ui/Forms/BatchConvertOcrLanguage.Designer.cs +++ b/src/ui/Forms/BatchConvertOcrLanguage.Designer.cs @@ -34,6 +34,7 @@ this.label2 = new System.Windows.Forms.Label(); this.comboBoxLanguage = new System.Windows.Forms.ComboBox(); this.comboBoxOcrMethod = new System.Windows.Forms.ComboBox(); + this.buttonGetTesseractDictionaries = new System.Windows.Forms.Button(); this.SuspendLayout(); // // labelFileNameEnding @@ -52,7 +53,7 @@ this.buttonOK.Location = new System.Drawing.Point(287, 123); this.buttonOK.Name = "buttonOK"; this.buttonOK.Size = new System.Drawing.Size(75, 23); - this.buttonOK.TabIndex = 106; + this.buttonOK.TabIndex = 333; this.buttonOK.Text = "&OK"; this.buttonOK.UseVisualStyleBackColor = true; this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click); @@ -65,7 +66,7 @@ this.buttonCancel.Location = new System.Drawing.Point(368, 123); this.buttonCancel.Name = "buttonCancel"; this.buttonCancel.Size = new System.Drawing.Size(75, 23); - this.buttonCancel.TabIndex = 107; + this.buttonCancel.TabIndex = 335; this.buttonCancel.Text = "C&ancel"; this.buttonCancel.UseVisualStyleBackColor = true; this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click); @@ -86,7 +87,7 @@ this.comboBoxLanguage.Location = new System.Drawing.Point(83, 44); this.comboBoxLanguage.Name = "comboBoxLanguage"; this.comboBoxLanguage.Size = new System.Drawing.Size(180, 21); - this.comboBoxLanguage.TabIndex = 109; + this.comboBoxLanguage.TabIndex = 222; // // comboBoxOcrMethod // @@ -101,11 +102,22 @@ this.comboBoxOcrMethod.TabIndex = 111; this.comboBoxOcrMethod.SelectedIndexChanged += new System.EventHandler(this.comboBoxOcrMethod_SelectedIndexChanged); // + // buttonGetTesseractDictionaries + // + this.buttonGetTesseractDictionaries.Location = new System.Drawing.Point(269, 43); + this.buttonGetTesseractDictionaries.Name = "buttonGetTesseractDictionaries"; + this.buttonGetTesseractDictionaries.Size = new System.Drawing.Size(29, 23); + this.buttonGetTesseractDictionaries.TabIndex = 336; + this.buttonGetTesseractDictionaries.Text = "..."; + this.buttonGetTesseractDictionaries.UseVisualStyleBackColor = true; + this.buttonGetTesseractDictionaries.Click += new System.EventHandler(this.buttonGetTesseractDictionaries_Click); + // // BatchConvertOcrLanguage // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(455, 158); + this.Controls.Add(this.buttonGetTesseractDictionaries); this.Controls.Add(this.comboBoxOcrMethod); this.Controls.Add(this.label2); this.Controls.Add(this.comboBoxLanguage); @@ -135,5 +147,6 @@ private System.Windows.Forms.Label label2; private System.Windows.Forms.ComboBox comboBoxLanguage; private System.Windows.Forms.ComboBox comboBoxOcrMethod; + private System.Windows.Forms.Button buttonGetTesseractDictionaries; } } \ No newline at end of file diff --git a/src/ui/Forms/BatchConvertOcrLanguage.cs b/src/ui/Forms/BatchConvertOcrLanguage.cs index ef263b5f7..50803a5c6 100644 --- a/src/ui/Forms/BatchConvertOcrLanguage.cs +++ b/src/ui/Forms/BatchConvertOcrLanguage.cs @@ -5,6 +5,7 @@ using System.Windows.Forms; using Nikse.SubtitleEdit.Core.Common; using System.IO; using System.Linq; +using Nikse.SubtitleEdit.Forms.Ocr; namespace Nikse.SubtitleEdit.Forms { @@ -50,7 +51,7 @@ namespace Nikse.SubtitleEdit.Forms private void buttonOK_Click(object sender, EventArgs e) { - OcrLanguage = (comboBoxLanguage.SelectedItem as OcrLanguageItem).Id; + OcrLanguage = !(comboBoxLanguage.SelectedItem is OcrLanguageItem item) ? "en" : item.Id; DialogResult = DialogResult.OK; } @@ -122,6 +123,10 @@ namespace Nikse.SubtitleEdit.Forms } comboBoxLanguage.Items.Add(new OcrLanguageItem { Id = tesseractName, Text = cultureName }); + if (cultureName == Configuration.Settings.VobSubOcr.TesseractLastLanguage) + { + comboBoxLanguage.SelectedIndex = comboBoxLanguage.Items.Count - 1; + } } } } @@ -138,13 +143,25 @@ namespace Nikse.SubtitleEdit.Forms if (comboBoxOcrMethod.SelectedIndex == 1) { OcrEngine = "nOCR"; + buttonGetTesseractDictionaries.Visible = false; } else { OcrEngine = "Tesseract"; + buttonGetTesseractDictionaries.Visible = true; } InitLanguage(); } + + private void buttonGetTesseractDictionaries_Click(object sender, EventArgs e) + { + using (var form = new GetTesseractDictionaries(comboBoxLanguage.Items.Count == 0)) + { + form.ShowDialog(this); + Configuration.Settings.VobSubOcr.TesseractLastLanguage = form.ChosenLanguage; + InitLanguage(); + } + } } } diff --git a/src/ui/Forms/Ocr/VobSubOcr.Designer.cs b/src/ui/Forms/Ocr/VobSubOcr.Designer.cs index 45d831a30..b52cb81b6 100644 --- a/src/ui/Forms/Ocr/VobSubOcr.Designer.cs +++ b/src/ui/Forms/Ocr/VobSubOcr.Designer.cs @@ -55,13 +55,6 @@ namespace Nikse.SubtitleEdit.Forms.Ocr this.buttonCancel = new System.Windows.Forms.Button(); this.groupBoxOcrMethod = new System.Windows.Forms.GroupBox(); this.comboBoxOcrMethod = new System.Windows.Forms.ComboBox(); - this.groupBoxCloudVision = new System.Windows.Forms.GroupBox(); - this.checkBoxSeHandlesTextMerge = new System.Windows.Forms.CheckBox(); - this.checkBoxCloudVisionSendOriginalImages = new System.Windows.Forms.CheckBox(); - this.comboBoxCloudVisionLanguage = new System.Windows.Forms.ComboBox(); - this.labelCloudVisionLanguage = new System.Windows.Forms.Label(); - this.textBoxCloudVisionApiKey = new System.Windows.Forms.TextBox(); - this.labelCloudVisionApiKey = new System.Windows.Forms.Label(); this.groupBoxNOCR = new System.Windows.Forms.GroupBox(); this.label3 = new System.Windows.Forms.Label(); this.comboBoxNOcrLineSplitMinHeight = new System.Windows.Forms.ComboBox(); @@ -99,6 +92,13 @@ namespace Nikse.SubtitleEdit.Forms.Ocr this.groupBoxModiMethod = new System.Windows.Forms.GroupBox(); this.label1 = new System.Windows.Forms.Label(); this.comboBoxModiLanguage = new System.Windows.Forms.ComboBox(); + this.groupBoxCloudVision = new System.Windows.Forms.GroupBox(); + this.checkBoxSeHandlesTextMerge = new System.Windows.Forms.CheckBox(); + this.checkBoxCloudVisionSendOriginalImages = new System.Windows.Forms.CheckBox(); + this.comboBoxCloudVisionLanguage = new System.Windows.Forms.ComboBox(); + this.labelCloudVisionLanguage = new System.Windows.Forms.Label(); + this.textBoxCloudVisionApiKey = new System.Windows.Forms.TextBox(); + this.labelCloudVisionApiKey = new System.Windows.Forms.Label(); this.groupBoxOCRControls = new System.Windows.Forms.GroupBox(); this.labelStartFrom = new System.Windows.Forms.Label(); this.numericUpDownStartNumber = new System.Windows.Forms.NumericUpDown(); @@ -180,7 +180,6 @@ namespace Nikse.SubtitleEdit.Forms.Ocr this.timerHideStatus = new System.Windows.Forms.Timer(this.components); this.contextMenuStripListview.SuspendLayout(); this.groupBoxOcrMethod.SuspendLayout(); - this.groupBoxCloudVision.SuspendLayout(); this.groupBoxNOCR.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownNOcrMaxWrongPixels)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownNumberOfPixelsIsSpaceNOCR)).BeginInit(); @@ -189,6 +188,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr ((System.ComponentModel.ISupportInitialize)(this.numericUpDownPixelsIsSpace)).BeginInit(); this.GroupBoxTesseractMethod.SuspendLayout(); this.groupBoxModiMethod.SuspendLayout(); + this.groupBoxCloudVision.SuspendLayout(); this.groupBoxOCRControls.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownStartNumber)).BeginInit(); this.groupBoxOcrAutoFix.SuspendLayout(); @@ -502,11 +502,11 @@ namespace Nikse.SubtitleEdit.Forms.Ocr // groupBoxOcrMethod // this.groupBoxOcrMethod.Controls.Add(this.comboBoxOcrMethod); - this.groupBoxOcrMethod.Controls.Add(this.groupBoxNOCR); - this.groupBoxOcrMethod.Controls.Add(this.groupBoxImageCompareMethod); this.groupBoxOcrMethod.Controls.Add(this.GroupBoxTesseractMethod); this.groupBoxOcrMethod.Controls.Add(this.groupBoxModiMethod); this.groupBoxOcrMethod.Controls.Add(this.groupBoxCloudVision); + this.groupBoxOcrMethod.Controls.Add(this.groupBoxNOCR); + this.groupBoxOcrMethod.Controls.Add(this.groupBoxImageCompareMethod); this.groupBoxOcrMethod.Location = new System.Drawing.Point(13, 5); this.groupBoxOcrMethod.Name = "groupBoxOcrMethod"; this.groupBoxOcrMethod.Size = new System.Drawing.Size(392, 192); @@ -530,78 +530,6 @@ namespace Nikse.SubtitleEdit.Forms.Ocr this.comboBoxOcrMethod.TabIndex = 0; this.comboBoxOcrMethod.SelectedIndexChanged += new System.EventHandler(this.ComboBoxOcrMethodSelectedIndexChanged); // - // groupBoxCloudVision - // - this.groupBoxCloudVision.Controls.Add(this.checkBoxSeHandlesTextMerge); - this.groupBoxCloudVision.Controls.Add(this.checkBoxCloudVisionSendOriginalImages); - this.groupBoxCloudVision.Controls.Add(this.comboBoxCloudVisionLanguage); - this.groupBoxCloudVision.Controls.Add(this.labelCloudVisionLanguage); - this.groupBoxCloudVision.Controls.Add(this.textBoxCloudVisionApiKey); - this.groupBoxCloudVision.Controls.Add(this.labelCloudVisionApiKey); - this.groupBoxCloudVision.Location = new System.Drawing.Point(7, 38); - this.groupBoxCloudVision.Name = "groupBoxCloudVision"; - this.groupBoxCloudVision.Size = new System.Drawing.Size(372, 143); - this.groupBoxCloudVision.TabIndex = 8; - this.groupBoxCloudVision.TabStop = false; - this.groupBoxCloudVision.Text = "Cloud Vision API"; - // - // checkBoxSeHandlesTextMerge - // - this.checkBoxSeHandlesTextMerge.AutoSize = true; - this.checkBoxSeHandlesTextMerge.Location = new System.Drawing.Point(7, 105); - this.checkBoxSeHandlesTextMerge.Name = "checkBoxSeHandlesTextMerge"; - this.checkBoxSeHandlesTextMerge.Size = new System.Drawing.Size(134, 17); - this.checkBoxSeHandlesTextMerge.TabIndex = 5; - this.checkBoxSeHandlesTextMerge.Text = "SE handles text merge"; - this.checkBoxSeHandlesTextMerge.UseVisualStyleBackColor = true; - this.checkBoxSeHandlesTextMerge.CheckedChanged += new System.EventHandler(this.checkBoxSeHandlesTextMerge_CheckedChanged); - // - // checkBoxCloudVisionSendOriginalImages - // - this.checkBoxCloudVisionSendOriginalImages.AutoSize = true; - this.checkBoxCloudVisionSendOriginalImages.Location = new System.Drawing.Point(9, 80); - this.checkBoxCloudVisionSendOriginalImages.Name = "checkBoxCloudVisionSendOriginalImages"; - this.checkBoxCloudVisionSendOriginalImages.Size = new System.Drawing.Size(123, 17); - this.checkBoxCloudVisionSendOriginalImages.TabIndex = 4; - this.checkBoxCloudVisionSendOriginalImages.Text = "Send original images"; - this.checkBoxCloudVisionSendOriginalImages.UseVisualStyleBackColor = true; - this.checkBoxCloudVisionSendOriginalImages.Visible = false; - this.checkBoxCloudVisionSendOriginalImages.CheckedChanged += new System.EventHandler(this.checkBoxCloudVisionSendOriginalImages_CheckedChanged); - // - // comboBoxCloudVisionLanguage - // - this.comboBoxCloudVisionLanguage.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.comboBoxCloudVisionLanguage.FormattingEnabled = true; - this.comboBoxCloudVisionLanguage.Location = new System.Drawing.Point(87, 49); - this.comboBoxCloudVisionLanguage.Name = "comboBoxCloudVisionLanguage"; - this.comboBoxCloudVisionLanguage.Size = new System.Drawing.Size(279, 21); - this.comboBoxCloudVisionLanguage.TabIndex = 3; - // - // labelCloudVisionLanguage - // - this.labelCloudVisionLanguage.AutoSize = true; - this.labelCloudVisionLanguage.Location = new System.Drawing.Point(6, 52); - this.labelCloudVisionLanguage.Name = "labelCloudVisionLanguage"; - this.labelCloudVisionLanguage.Size = new System.Drawing.Size(54, 13); - this.labelCloudVisionLanguage.TabIndex = 2; - this.labelCloudVisionLanguage.Text = "Language"; - // - // textBoxCloudVisionApiKey - // - this.textBoxCloudVisionApiKey.Location = new System.Drawing.Point(87, 22); - this.textBoxCloudVisionApiKey.Name = "textBoxCloudVisionApiKey"; - this.textBoxCloudVisionApiKey.Size = new System.Drawing.Size(279, 21); - this.textBoxCloudVisionApiKey.TabIndex = 1; - // - // labelCloudVisionApiKey - // - this.labelCloudVisionApiKey.AutoSize = true; - this.labelCloudVisionApiKey.Location = new System.Drawing.Point(6, 25); - this.labelCloudVisionApiKey.Name = "labelCloudVisionApiKey"; - this.labelCloudVisionApiKey.Size = new System.Drawing.Size(44, 13); - this.labelCloudVisionApiKey.TabIndex = 0; - this.labelCloudVisionApiKey.Text = "API key"; - // // groupBoxNOCR // this.groupBoxNOCR.Controls.Add(this.label3); @@ -1181,6 +1109,78 @@ namespace Nikse.SubtitleEdit.Forms.Ocr this.comboBoxModiLanguage.TabIndex = 0; this.comboBoxModiLanguage.SelectedIndexChanged += new System.EventHandler(this.ComboBoxModiLanguageSelectedIndexChanged); // + // groupBoxCloudVision + // + this.groupBoxCloudVision.Controls.Add(this.checkBoxSeHandlesTextMerge); + this.groupBoxCloudVision.Controls.Add(this.checkBoxCloudVisionSendOriginalImages); + this.groupBoxCloudVision.Controls.Add(this.comboBoxCloudVisionLanguage); + this.groupBoxCloudVision.Controls.Add(this.labelCloudVisionLanguage); + this.groupBoxCloudVision.Controls.Add(this.textBoxCloudVisionApiKey); + this.groupBoxCloudVision.Controls.Add(this.labelCloudVisionApiKey); + this.groupBoxCloudVision.Location = new System.Drawing.Point(7, 38); + this.groupBoxCloudVision.Name = "groupBoxCloudVision"; + this.groupBoxCloudVision.Size = new System.Drawing.Size(372, 143); + this.groupBoxCloudVision.TabIndex = 8; + this.groupBoxCloudVision.TabStop = false; + this.groupBoxCloudVision.Text = "Cloud Vision API"; + // + // checkBoxSeHandlesTextMerge + // + this.checkBoxSeHandlesTextMerge.AutoSize = true; + this.checkBoxSeHandlesTextMerge.Location = new System.Drawing.Point(7, 105); + this.checkBoxSeHandlesTextMerge.Name = "checkBoxSeHandlesTextMerge"; + this.checkBoxSeHandlesTextMerge.Size = new System.Drawing.Size(134, 17); + this.checkBoxSeHandlesTextMerge.TabIndex = 5; + this.checkBoxSeHandlesTextMerge.Text = "SE handles text merge"; + this.checkBoxSeHandlesTextMerge.UseVisualStyleBackColor = true; + this.checkBoxSeHandlesTextMerge.CheckedChanged += new System.EventHandler(this.checkBoxSeHandlesTextMerge_CheckedChanged); + // + // checkBoxCloudVisionSendOriginalImages + // + this.checkBoxCloudVisionSendOriginalImages.AutoSize = true; + this.checkBoxCloudVisionSendOriginalImages.Location = new System.Drawing.Point(9, 80); + this.checkBoxCloudVisionSendOriginalImages.Name = "checkBoxCloudVisionSendOriginalImages"; + this.checkBoxCloudVisionSendOriginalImages.Size = new System.Drawing.Size(123, 17); + this.checkBoxCloudVisionSendOriginalImages.TabIndex = 4; + this.checkBoxCloudVisionSendOriginalImages.Text = "Send original images"; + this.checkBoxCloudVisionSendOriginalImages.UseVisualStyleBackColor = true; + this.checkBoxCloudVisionSendOriginalImages.Visible = false; + this.checkBoxCloudVisionSendOriginalImages.CheckedChanged += new System.EventHandler(this.checkBoxCloudVisionSendOriginalImages_CheckedChanged); + // + // comboBoxCloudVisionLanguage + // + this.comboBoxCloudVisionLanguage.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBoxCloudVisionLanguage.FormattingEnabled = true; + this.comboBoxCloudVisionLanguage.Location = new System.Drawing.Point(87, 49); + this.comboBoxCloudVisionLanguage.Name = "comboBoxCloudVisionLanguage"; + this.comboBoxCloudVisionLanguage.Size = new System.Drawing.Size(279, 21); + this.comboBoxCloudVisionLanguage.TabIndex = 3; + // + // labelCloudVisionLanguage + // + this.labelCloudVisionLanguage.AutoSize = true; + this.labelCloudVisionLanguage.Location = new System.Drawing.Point(6, 52); + this.labelCloudVisionLanguage.Name = "labelCloudVisionLanguage"; + this.labelCloudVisionLanguage.Size = new System.Drawing.Size(54, 13); + this.labelCloudVisionLanguage.TabIndex = 2; + this.labelCloudVisionLanguage.Text = "Language"; + // + // textBoxCloudVisionApiKey + // + this.textBoxCloudVisionApiKey.Location = new System.Drawing.Point(87, 22); + this.textBoxCloudVisionApiKey.Name = "textBoxCloudVisionApiKey"; + this.textBoxCloudVisionApiKey.Size = new System.Drawing.Size(279, 21); + this.textBoxCloudVisionApiKey.TabIndex = 1; + // + // labelCloudVisionApiKey + // + this.labelCloudVisionApiKey.AutoSize = true; + this.labelCloudVisionApiKey.Location = new System.Drawing.Point(6, 25); + this.labelCloudVisionApiKey.Name = "labelCloudVisionApiKey"; + this.labelCloudVisionApiKey.Size = new System.Drawing.Size(44, 13); + this.labelCloudVisionApiKey.TabIndex = 0; + this.labelCloudVisionApiKey.Text = "API key"; + // // groupBoxOCRControls // this.groupBoxOCRControls.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); @@ -2072,8 +2072,6 @@ namespace Nikse.SubtitleEdit.Forms.Ocr this.Resize += new System.EventHandler(this.VobSubOcr_Resize); this.contextMenuStripListview.ResumeLayout(false); this.groupBoxOcrMethod.ResumeLayout(false); - this.groupBoxCloudVision.ResumeLayout(false); - this.groupBoxCloudVision.PerformLayout(); this.groupBoxNOCR.ResumeLayout(false); this.groupBoxNOCR.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownNOcrMaxWrongPixels)).EndInit(); @@ -2086,6 +2084,8 @@ namespace Nikse.SubtitleEdit.Forms.Ocr this.GroupBoxTesseractMethod.PerformLayout(); this.groupBoxModiMethod.ResumeLayout(false); this.groupBoxModiMethod.PerformLayout(); + this.groupBoxCloudVision.ResumeLayout(false); + this.groupBoxCloudVision.PerformLayout(); this.groupBoxOCRControls.ResumeLayout(false); this.groupBoxOCRControls.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownStartNumber)).EndInit(); From c5ed54efa23f072e34cacd3a2dd65983fb09c8e3 Mon Sep 17 00:00:00 2001 From: niksedk Date: Sun, 2 Jul 2023 14:53:17 +0200 Subject: [PATCH 62/96] Remove non-existing file --- src/ui/SubtitleEdit.csproj | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ui/SubtitleEdit.csproj b/src/ui/SubtitleEdit.csproj index 50cea20f5..1e926306a 100644 --- a/src/ui/SubtitleEdit.csproj +++ b/src/ui/SubtitleEdit.csproj @@ -2241,7 +2241,6 @@ - From ca4a27eed10c907a59a33c34747e104dd7b8892d Mon Sep 17 00:00:00 2001 From: niksedk Date: Sun, 2 Jul 2023 18:52:04 +0200 Subject: [PATCH 63/96] Add more theme icons - thx jmaraujouy :) Related to #6921 --- Icons/Black/WaveformCenter.png | Bin 0 -> 2078 bytes Icons/Black/WaveformPause.png | Bin 0 -> 2083 bytes Icons/Black/WaveformPlay.png | Bin 0 -> 2142 bytes Icons/Black/WaveformPlayPause.png | Bin 0 -> 2147 bytes Icons/Black/WaveformPlaybackSpeed.png | Bin 0 -> 2250 bytes Icons/Black/WaveformZoomIn.png | Bin 0 -> 2191 bytes Icons/Black/WaveformZoomOut.png | Bin 0 -> 2182 bytes Icons/Black/WebVttProperties.png | Bin 2506 -> 2795 bytes Icons/Black/WebVttStyle.png | Bin 0 -> 2506 bytes Icons/DarkTheme/WaveformCenter.png | Bin 0 -> 2078 bytes Icons/DarkTheme/WaveformPause.png | Bin 0 -> 1877 bytes Icons/DarkTheme/WaveformPlay.png | Bin 0 -> 1937 bytes Icons/DarkTheme/WaveformPlayPause.png | Bin 0 -> 1942 bytes Icons/DarkTheme/WaveformPlaybackSpeed.png | Bin 0 -> 2044 bytes Icons/DarkTheme/WaveformZoomIn.png | Bin 0 -> 2190 bytes Icons/DarkTheme/WaveformZoomOut.png | Bin 0 -> 2181 bytes Icons/DarkTheme/WebVttProperties.png | Bin 2515 -> 2796 bytes Icons/DarkTheme/WebVttStyle.png | Bin 0 -> 2515 bytes Icons/DefaultTheme/WaveformCenter.png | Bin 0 -> 1875 bytes Icons/DefaultTheme/WaveformPause.png | Bin 0 -> 2071 bytes Icons/DefaultTheme/WaveformPlay.png | Bin 0 -> 2143 bytes Icons/DefaultTheme/WaveformPlayPause.png | Bin 0 -> 2149 bytes Icons/DefaultTheme/WaveformPlaybackSpeed.png | Bin 0 -> 2244 bytes Icons/DefaultTheme/WaveformZoomIn.png | Bin 0 -> 1987 bytes Icons/DefaultTheme/WaveformZoomOut.png | Bin 0 -> 1975 bytes Icons/DefaultTheme/WebVttProperties.png | Bin 2005 -> 2375 bytes Icons/DefaultTheme/WebVttStyle.png | Bin 0 -> 2005 bytes Icons/Legacy/WebVttStyle.png | Bin 0 -> 1614 bytes src/ui/Forms/Main.cs | 21 +++++++++++++--- src/ui/Forms/Options/Settings.Designer.cs | 24 +++++++++---------- 30 files changed, 30 insertions(+), 15 deletions(-) create mode 100644 Icons/Black/WaveformCenter.png create mode 100644 Icons/Black/WaveformPause.png create mode 100644 Icons/Black/WaveformPlay.png create mode 100644 Icons/Black/WaveformPlayPause.png create mode 100644 Icons/Black/WaveformPlaybackSpeed.png create mode 100644 Icons/Black/WaveformZoomIn.png create mode 100644 Icons/Black/WaveformZoomOut.png create mode 100644 Icons/Black/WebVttStyle.png create mode 100644 Icons/DarkTheme/WaveformCenter.png create mode 100644 Icons/DarkTheme/WaveformPause.png create mode 100644 Icons/DarkTheme/WaveformPlay.png create mode 100644 Icons/DarkTheme/WaveformPlayPause.png create mode 100644 Icons/DarkTheme/WaveformPlaybackSpeed.png create mode 100644 Icons/DarkTheme/WaveformZoomIn.png create mode 100644 Icons/DarkTheme/WaveformZoomOut.png create mode 100644 Icons/DarkTheme/WebVttStyle.png create mode 100644 Icons/DefaultTheme/WaveformCenter.png create mode 100644 Icons/DefaultTheme/WaveformPause.png create mode 100644 Icons/DefaultTheme/WaveformPlay.png create mode 100644 Icons/DefaultTheme/WaveformPlayPause.png create mode 100644 Icons/DefaultTheme/WaveformPlaybackSpeed.png create mode 100644 Icons/DefaultTheme/WaveformZoomIn.png create mode 100644 Icons/DefaultTheme/WaveformZoomOut.png create mode 100644 Icons/DefaultTheme/WebVttStyle.png create mode 100644 Icons/Legacy/WebVttStyle.png diff --git a/Icons/Black/WaveformCenter.png b/Icons/Black/WaveformCenter.png new file mode 100644 index 0000000000000000000000000000000000000000..52cfb9690a5f5e87388ed474d29535bf3c6eb572 GIT binary patch literal 2078 zcmb_dZEV{_7*31Uj&21?(P-h1<)MwSUi=X!{$QbWO}AEBx~k2zP6E;M`J7mdeV*+m zX<-tA@}r1JKmk>J6_DU3LSn!Kf^{%K`2naK;wKCw7y?!NM^HHDYhko>0wOs++t0nv z`#$e;cXK1d2ix0jX^TW6?L&j9QF`AIURzt}|G887JL&COckq}WiEQf(ucpYe&v!*4 zEo)Y0JQz%XFmTZ@zBawZ*B^RPe956c0T27Mv<-Id3V;M>IXgtlQ-F}?2 z24_4xHZz<-Gm}U)*xtLCeI<rEph`xcl58#r zT#e(3#bUG=ixMx(3971cyvT_npa|ekI{_>K$KP3tkitIlEH|)-!-Nr`PNsq+OH-}X zV7v9Oj$hS@D#n$d%L!3Ftf>q%P#xz^dHFKAfjFGUHg*D^Vud=^&5?lkIkG|M`scq8 zP;JxcI>)-X*mj-54+aXfjH)2(qW#RYi@8zklPM43fdWl)XIPD^^?Miw#LEzpuXSpq zmNFwsQJ%T|sO1=>=LbIf~dtrz{fP6uRznpu*~U3s0?^9 zBM2G=g)$X(sV(NDH=Xn8lpyWLc&zqt;LI#G}MCyI47kbXps7`~W%# z52cbUtvPC0hQ`MgC{MVq$GfD=rKc#NjL!$wfQN6rozsK^D8bl2%<4A zvm!xPMIj*p0qO`CrWB)rcoCq4AnP(x5maC;+F{S43k~KQqlQ@-<*XpoMW_QwR|SA% zNd*u?5hw;!B~g%|tj9w)mkpu~T0U*vbaj1<;p5d&-eSt0&>#xEo@7zjWNfh2*Vejv zTm^G=eldq>(0^!th21A+P=p@t%Tnz&H5a#G^28}%uOWRGdXVlh*z=RD=@FZOuA8?I z3~S{Ij!|8?_3khMVJ>@RLmnR%HjxM?ViHtzV8)>gP+T&AqDm&fiiu<_n{h=&HHjM~ zs+gYF;;JUmamDoiMxv_xCGT4)UZQ!^5~JZc7Ns%dfa_Hl($spf>&G{n-p0p<@0)#2+4AJY(#c(K&7D5+b*neA+EZ!{7MI`o zq}y#VmyX=g5&gOI*BdXL{~S2icXjW5clO~I9$hI(Ypv*;&n_%oce?53Z=d;UeD?!$ z+a|VrxwQYM=shdDfBRwT!UuuvcJ}7ZKk~|s)mvA-_m831jgT0;I zedc}M_j#Y0IXF1b*U|oHJ4I0){psWoxo?iHwpQ~0?dOH3$!&v|-WyQVy$?s%UDUhp zKSEKht9EuI9Lc<(8`z0K6X#H@6RD1>y$DY$`NN-&kUIvGc=Ifkx4!tn&t6A{uQ znL)Z2`-s+JfHeRBw4%j$g*ODn>ZAoA2pmv3US@e!2ZAn%bnV9wI^VSPq2zNlGV+vQ z@?q%d99JwBV?{BB{V|T$G>roSCkQM-utC`kVTpBvZS@FA6d1nkg*JBSC?d?^i7>&C zRI4>OUL&j<)N~?>aV6++d<;Z2Re+|^zHt)s8Eo2Cxf!ak zK*;iZ1O?g+P~sUAhVYhP)6gyKJCGD?J8%qfo;$|S4H@-bT);jdCfSLVEHW9r-wi_O z8mK>+U`Wj|+ctGsRdb3aDXb-#JZoBH1ObY(mLf6O0ix8JSG& zwY`QOx5ZqWU(6#C^d`-(vIp1-i_k|sV??`Knu}XEdF)OizbSnW`jG4~$PW^X#C97}d&6x@K+VHo8NHn7;0nb$J3fd2@+W(#yD}D6GuODyuLvzfX7jt|5uV%SsG0iLZ|0{-z_T{RRx&NBH z@~vqPCx)rKA_qe>Y#d4Cp>e1om+0h^Bdc}S>Pd3ko$pWfWYw8#7kivxYKg4(v#uqaQePOzWgXZ{yF|Uv_W$Gxzb~u6HiJW%cdbf8xj4 zA_wqeQmY+JD`s%TT=os%$ L4J1E(cJ#o%9AU1f literal 0 HcmV?d00001 diff --git a/Icons/Black/WaveformPlay.png b/Icons/Black/WaveformPlay.png new file mode 100644 index 0000000000000000000000000000000000000000..7a3bfa2545be59dc649bc1485b7a32d93aab4a78 GIT binary patch literal 2142 zcmb_eTWl0n7#>Vor3fT~VuZ%Yka(Y+Gnc*0lr7XQ(i*lj?N~|_;mnycyJL6fj5D*{ zZ9|AvA;BB(q!>tyBwlJ%9t=pp0E#@ANTN~`v4yCCcGbI$DO?piay>Aoh0Vdi&sqpJC=L3XeI=uF-oL zrtylc_XqvywHhM%2sDX-Bc;4c(G0UK zyJOhHy~ABP8XiEZ$*pW;VI9A!6IDzoL01qXAgrkjG*J!b7Q9@U+(ZJ-;XHN%pJK%t*3FWD_*pVb=-TUR z2&lH{bd6)iT=MxEg&(XQq-9hEnGx;lLoOD2uulpe!m9^qn#;p#T&>;1Fd&{zNN&1Q z-P0+vk`e*zL+fqFBt`$>x&b%^1Dxb&*JK_G%P3 z5bjJRIa+hXwoMHK3nrp6 zag|j831p~Bl$Iv~Ud0OHRVgO&7WKKAka09F*0NdW*>s}8Tz%9qE0acyVHgF-FnEA0 znHOcn;31$&K`2^K6=ekCICOK_AX2;sV1akB7V zlb7Gst>M%#D$^CZ<}0* z<~+?T9B3G8UUmEF5uNRu=otx^zCHBz`;pderg`G%?zzW~95^ubbLRu&Kdimda&fd} z{LJ9N!h(&X+lITQe%ib9^47ygmNmTjVRqg#AAFbCdUkH(`Jp#<9=h1~+(&1dkM584 zzx`C9A@jcblKAAOJ0d5?Cf;ip1IIf~_rAJJ8~ONxzIpo>`ev^QOkQe#Wa^cD`ko6- zU;VZC%r7r&>S}0xXKbQp?TMb36Tde_e%;bMe(BK3r3;=tf4_dN^|O737W*-NxpB*b zpTE0UPToD)tS_BfwSVJ|K61Q3^hKZCwfD|bUvB?%#ov#XwhtV9Ye{}&!=ZmR^?tkL YwNuKv6Ki%>w5S9hhx9^d@pzd>oqi~s-t literal 0 HcmV?d00001 diff --git a/Icons/Black/WaveformPlayPause.png b/Icons/Black/WaveformPlayPause.png new file mode 100644 index 0000000000000000000000000000000000000000..bc843c02ac94532caa58abaea0d46d2a83f41d95 GIT binary patch literal 2147 zcmb_eYitx%7@b8ZSSTRIN-%_RP$J0Px%1eaoq>gvZl#SZV!J6N2Ev^?ce<1A&WtnD z?zZ?K8sFkSj1nV1Ow@oOL3;8V!&w8JNu%T@(6L0*?FD& zo$ou}x%bWs>(;JrsGnEQFib;RYpR`|8^dE-9sNJDFSm@IZgpEX_zW}s_V9=>JKmVf zFm;!#OjppAUZY_rA4P_vlV~yTQZ&OXUs-e!?jZrIlWxmSa=(0Zh+{1y$*qs2VcKmb zS*vxxBOL>4GkBl}s|L4n1-rbc(Exc8Ahwv#*}hgxa;3N$y$&Dq99x0}JxQ)9BxJkN z>)2+;Bdi*Q07D2_MU4uIfJMbz%8F1Fd6?jZI1myV6g635D?g6Xd4{RAryi(~(Yqv< z4FXr=`9h%(El5$v>*fVjRe31#q6jDg`2BW(ioo_4RwJZ{k3Gu`EXQWUh)8#OgCs{& zE!U8DYhi7_q7zk&FCv#0qA;wf1T=6B=k|KJ61jnSk|TLy2R_9LHLRO;0>{rfR|#Ev zeFXv4Hl40MCE z1wb()2%11aS3;?03>2X2f(@*hj+aNYU@MQh3Gdq799xr7Yj$#uM~P{6QYnjcT5GfY z0NI$drIH-2IciykMiACxu{Z)UwII;rvJ6yHHbFv(2{BPhARXfB_>_Zt!_J1|%Puz@ zOk-STC4wL-YD}f&B?N$UISzCo9tVahO4u}GvP6t(w1+&4PBfGoA2rO%pb?QEOO!kT zXtX$xb(#>85;}+p#1!PXD5;Vjy18T!t<~~r>-sD6qk}wJxyo5=$rBpFq1Tff4x1ci zP=0JppvMg{SH>5zga*Av^UE~8V+IA}k*02{-F3~yUp0Bh?jzo~^j+j3y2cRCPjaT` z-%U-!EkB|DUEs=m@7@IKyR9O*$V#)~Ux(I=($ccoE zl!OG;s>I_Zs+t}unhdM+<7OnP$d9wg?k04F=DC|M=EnSA&T^t+u9(69Uom{RE|;Cm z|JUTDcjMM@YM9a^x-o>8wJnL>)HXF@Q=L4zWz~JKe~@7!)7w%_nZ&lylPA)Xnr0vU zb-}Zfh6-~QN0trF8D^HiPPUVspPjmD%A0qzPSsaMPDNJyG`rE8{BS=!^WdT_ub&z_ z{_|Hu`#X1U?-)LN&q?XS%$BheBf*mMd#ClZubeSw(Yx^F+ulC*z4u+T@sqm5nY$ZD zf4uh+{~~kl`FR_^J^TKemRZMNJ9^~8x$V2)XX&lG_G*v4^~X@b|9ivI_a?2dzxlIi z^!`oTder$BF7AE&{DP;yJoxcTOxvErJGUNVM&=F|2C>?(amFi=0~ap-Rjfaq`t*qr z<@9c5rf}e3=jz>)zmBZ=ZRY0iNl`WG=p$8!Jx literal 0 HcmV?d00001 diff --git a/Icons/Black/WaveformPlaybackSpeed.png b/Icons/Black/WaveformPlaybackSpeed.png new file mode 100644 index 0000000000000000000000000000000000000000..3e7d1c242c0da33632f9173183e02f7057401ccd GIT binary patch literal 2250 zcmb_ee{9rL9Pbb}JOYfF5u%8-(;!H%KX1KuJNN50w&0DyE@Aiscx~V9n%%Ws+wE?{ zpbVmzzz`II3IUSw54y<|4U;HSQ4$9x28q#tf{+l1!6h1gJAJ*~j$xP(;w8Pl_I=*x z`|I<4udmhB&YR?U$b(_nq?+pBB6OeTUK6s>|Dk=cB6NGetX^Vc*u)3jD+_yj+jI=e z9@4@MPDAJ!NipJHpc*ptCgUbTV_0!X(gaEqbZ{9qYI=b9{lGy2*VF*9*cYNhW(ACD z)$JCnZ?6q2?M;fP5+zUL#YqVf#GwQ5WIU$ZQZhiKcqKG;UsD90f;de9qRcgjH-zf& z3d4f9=%q=8rfFOdy^O#ptPq)tvoy<6w4Y)MNyabHti*G8`bQvhmKu>31*_7=&{Kej zI*ut(R3ee^COEHQHByWyiWJRKEK4E;X}9SPNRql;Fv1Xowqj|fqZvBxG6LCXaRLN# zbvTB&nW5F~be>Sgs3b5c#!I^~rGToE!I>>qEM;6(C>Vors5>^oG8wEHH5|i^8e>pr zrf)HTavKU|Y~0qDcsygmb}Cy@80m!E7Hx;yOh_$)w$WlKu(B1oS>Q%vN);9aj$wrj zBQ{d0x)GOgmiN;5lZ!Q7H4^shQ43%YI50qxWgY8VcgLX;lOq$8fxlM5F=R^IX#MLcuErzP+YAC z2*oWjREhL!?Kb(iE6eHii6}&*|55y5>$VYb62O9GjVO0_6c;t7^M>9Etx@iqzyfHG zftDR0B9;-yfoaAx1-P+Nt-6}-+)QK3in#Y+?oR(>2XjjY z|9`MWnusN z3!3e7aYiGBI%!-C;zt3 zvors#jW3KJDz3^cSUGNGOZTeT^pv&detNg^f)ABt)XvEZcjZ3%$(H`5eek_A0D&5_?sLIY`1B>I?UHRL?*u;(3u52kixA)BHsoVDC_H%>zSJvI=lLDVV z`%eGW@Z6V!1LLn7tM|9p?d&Qk3;dd$e7rNh{QdI-YRC0sLuzi_x?F1Wn|b2b` re6Hv4l);WSF046waR|RW??%q)SGCUb+mA)vuZ^0@+F(!l@{WH1AqV+J literal 0 HcmV?d00001 diff --git a/Icons/Black/WaveformZoomIn.png b/Icons/Black/WaveformZoomIn.png new file mode 100644 index 0000000000000000000000000000000000000000..1f4a1fe9749eccbab8eb593431a972f3b874c3ed GIT binary patch literal 2191 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 literal 0 HcmV?d00001 diff --git a/Icons/Black/WebVttProperties.png b/Icons/Black/WebVttProperties.png index 110e5501b657248689cafd792b060ee192e5220f..4fa31332598dd8afaa4edd5a16bd3143f0a7ae7f 100644 GIT binary patch delta 1449 zcma)(X;2df6vqQWAt;APLPa^OD7wk+LgYwL@S+$*&BOtO zx`0F}R1ixQ6)i=oa#Rrpq*TnvAr=*4)}1JFV~2n>YVs=Jz`04>R+9 z?QC0UG}{)lLSI`q8qE^Fgoc?>wPsvOXSRa+&Fq2=9{@QK5QHKi%HdHzn|mhyb%9XW zw8JO}vOV`CsnJjst|a$Luv9|K=71a+0RL60j#s6scE+pJ=xSA>YKO^X(!*>|T!E6R z9Z6WKn5|60;s`%=avTNH-MtY6ks~ky0YV{606YjG0Zag600M#p1oJQj$yHElx+99= zDmj7TDuoh9|89YBkV7iuasWhxAb=|n1d#Jd1%O~2f=h4&LID?}YUtj}U=WuJ5m*7> zd=djV3Iqd$0s#R)u$;hnJd7`dgzNxM5tVGQh;p@XSs@UBILdJB%d zqtWOnuB=JNL)P6+Oy+6nnuvUH-)cRV zDXx-~c}7g0vOg5jk;5oj!kF?5w+IT*=?mvA&)Eh=Rb+hn(-by(Q@rTqb7A!M_v#;v zBMn`#AHFwk`p}SkzB}GomgBZT^RjrIdsXjnMZY+AxI4Vqtu;)Pt?AMS2HWgZ2kmRL zv{S6oTGttBtT&8@xxS@89IAd6++}?3laq18ZEQeqReS%y zukF*acAp0)7NpxXIgKn;EZOzwAkuSiu(oGTBx7?)V_9czL!QmX>NMMtW=(^0XRh&S z&soXW%-JcjkbzH}Cpa^HjG4@eICy!w#pt8EoHZub(aQQ@T(dg9RiEEK_i;jaNcw$N zjU=MA?9FU?@N|cLab|XneeaNTGMc4!>al*EkaF65TtseL92?fiFJggC31dr2m4+0p z*B*>KQ+U5*_E*jK$%)b;fF{Jl$NIoVgZMt)KT)E%5%`hVwaqzFPG9G8CnY=ln zO}2KAUBgL3OIOaLbGZMi{}~0-%O@cRayRHCG}ocQ!48D zi$YIFJz2Le?m*RvslL(}BMrT6)vY7Xc(h(?AHOcaPd=?oi@mJ*YO__QAWPJGDoWeT z=dv~JJq`w3=^y`mPx+dI%)25v~s#>j+uMv zb}xg^tD%V~n|4%GoGo8jH?$!k z?(LS9=L0?Ny~vs>w=QivS01v^ao)=2dvB5pb|)NBd(_1j#mmg~H`0U+^!ID6?z)vr z(=ApF&D5$@hcoY7W%c{iC0$&1WyEmYJwxj+4M=o2D=5$X@R>!$ygscZa?kJPitdtK zM~2_LkR)zlcQ4pfh*cV;!NB~anSn?~NrJ4${z^>V8TaTLO8+s9qI2LC6&KnVzNTH) POEXP~G)!_Kcw5#Vb{In? delta 1040 zcmaDYdP;bLHb1v80|U1(Bg3pY5)2IN5*w}j7$@&#)S2ADXgc{N<2qhbT|<))Lvt%b zBP$cr$rqXAfFeegAQ2-|D+7zkOPCZKQABhNjI9g|loV2ut;bMlLP^HWl7m5e7FFw3Zz8d;bo8JZ;PTBMq!>L#0+r06CY z8XM_aCK{Th8KT;f_*VpX1z znrEwIWME{hYk=zfeAY5o3rmBf6vHG-U2{W=WZgtl6H{Fab4w#2E725Wk%?gn(Dm3% zf_mG)%E)ALKC8{-G&UbsVjPXvG;kn7OcR^z$sSqX(W;Zgz`zvY>Eaj?(famUd`5qw z2>XZgb>*YV3-bquGVm#hyygekV>80YCD=v1DHOOPpvVw&g zhg(}0_QYJ^5;tq>eqMR|+dKc)*LR<7&ENa=o6YmuefNv+eV$Xyb?Wr#Ue%)HQ~%-* z)HD8H)xfmoSbgLkSMh&OewG|Hp0z=3-reasq3q8V33gv-tgdL6ue7q@Gv2_GTG0_( zF;7C|t5ICv>K8q3&mUEbX&f|@=~TM**vwXNhOD_=lJ30}mpR9D?i>hFJhj%7&*YJK zmivSlo84wbrb3enSXUJYBpbZ0}B&jH~#2QD93pz-yf>7ITjzCTeD&N#uA@;kNt2 zGyR8Yw-#<;2z=_ND9QhL_KlrN|6D%RUG}w;$Wg1&J;Tc1vbw_Uf7VRSHYusiKd$o@{h?u>r-2!mNnLNP~@{v2u3Vda_9(!7wByEXBvUl`M+#Hlw VIiYIMbDseSJYD@<);T3K0RR_cmZAUv diff --git a/Icons/Black/WebVttStyle.png b/Icons/Black/WebVttStyle.png new file mode 100644 index 0000000000000000000000000000000000000000..110e5501b657248689cafd792b060ee192e5220f GIT binary patch literal 2506 zcmb_e3sBQ`7_V$7kD*gR7$-Bv7kZ?5v?*2z+l-Q3U#;y9;s!#SO|Ii2Ff&Br_)KBlMpr!AfC@NwRHm*z|I`+wi> z_dW8@{OqjJF;R(83WXxZoN3GfXGlIGx`KbPqT(-biu7bo78Q!<-ty5!v3hNSLeVY3 zVa=6tEn_K$cPVL>w{c3Z%LC8~McQz$hh|DR39@m84!0iuvwjZ@IaobBiL_uAPX<@y z$gB{!2^CpZrlN$=vGDM8D9uX&2QE&cA+O8n7AdbD_WPxPE#F3A$PbZ9^sqq=2<2L` zp$uN&Ae|CJ7!1RpRGkt}#Tg>io&pgVL7HN@`T*F#bBO5#!xTqL2)G}Yw`nGCWP~p3Qm7;mO(iu=i=Ow2(Wkv>nY+T zUM%7t;yU#BfdC-47E35br(9gFPzX^n%>Xij3F#CqTFX5gn!|~Fslafi8Gz;hS&fIv z5I9=m1uM@xJ1UjkK^Y>{N(@S#5lbAo+*_p+p(Sn>+M>MRO<*Eq9zF(u>l*g*+>Rq2!_B(lEyhAkOdHboZtYXMLVC` z514>|6?S+r07W7wofw>tk#u3uayrswnNLbH4V8xhEP?`7z!CcBi2fF(G95C5@?hKv z-1HCw$lsL|&B)WHhZ(ueI2I1xc63saC(CHSZCMcqoIaxc0x*%cOJ%gc845x59^2mN z!^n&Dj7L+~>M$FN+jK}Ou4NFK1Y@90)e*p=Nx7ZWI18GgGwQ){z$il9F%C~dJ?NV$ zqTPiYcz2`l(~Ehs$#{gA`)B+A6XS2vK!>6KZ9f0A``+#yoeZ`N*$iz~;3Bl$ac+<& z0c>XTd?_}CA}rTzG+1+emyS&>T0+NmyYk(vDQlwZ;^LiG+ZG6hjVnw??nJ(1TLI^1 zUQWKWH)-gYfo4~HpRdDnGB?zDYLlCMzS`>imZ*5m+=XrBKVQE*?!u4thkX3*_UmbF zGrv3~p1ihJj5=`e;G#hSbKvgOhS$2>+wywY2hEdrnd0xBy(N96TD@a%%`b1KOzd`U zL(hdRZ&Z4#`ju1K?y4Qna^88bcxw`3+lhk3ThCXIYCBWeC%IA6cRqZqRip2@GAT9P zhMZ)LYnxL}G+6r|*kQvOl;b~?xHj)zyz|(6 zd&)sNv7l~$V)m+D_r=n8 zZ_EihTGRAQO56fd-iWH~v|{$c%=t?z59#uoy^RM?o}agg{P@PK%CozcS@+&vIeWKu zUH`))HjjwT8$U5OFK^7a}7+sB6%RReEpr z@5lS)c`3`k)XG>dsl_4KKv7>lwL+^_XNA|5xZf_)aEeY#R6Il_Q zx^c+GrcHFj`BC*P=g`ykpK3o*jQ=gG{|h}@*Bt*GzH7WX>xd;i!8!O<Caly>ZLX?ascrDdEqpm@~UJJlaRM hXT2QuJ#%YwD>?*PyMGW?eM(TXy^a{ literal 0 HcmV?d00001 diff --git a/Icons/DarkTheme/WaveformCenter.png b/Icons/DarkTheme/WaveformCenter.png new file mode 100644 index 0000000000000000000000000000000000000000..31d4b8550bfb994843586ccf4e49dcb7bdcf629c GIT binary patch literal 2078 zcmb_dUu@e%98M{!)~*G{#u$IZj0Y9_bMc=zb?nYmqv_UYOB;0&Ed!*U@6L&7;xo3J zq!krxst`;dO_M;?SjAo^3J+rwlP0u+(8MDkBp!I6+8)>gh&>G?Cg7Z;SvFca0g)V^ z?eBiy@Av(_yL&S;w6Ck<;f_co(v=!ajM}gVP>4I6ag_(-TO;eBaaD?uyO=6iEQNO0nShdd1+YadkEhUkf}}g#;4@zb7Q* z#?l$CpL>q9Q<|C~~S6l~f7IsyqXy2M^a@pSj0933MdAcL!%7XTo2LQw^K_Na zjnB6bFm2Q62FHrI6pIZCKNu*nGU|e?i1xEnE)hnEPbWP@21+c=ZDBR8-tQ3@P%leq zVYyS8<&-&DiHh7)qqc)-+27tYfh1u-44!o@2E;g!l&qxclB~yMAjWi2tU=Qh+tySw zR0X1(l_Z^k;_+Lc%rh7Ua7{2qx<$PrWChzrm?MJgtX_`F@#NkFxG%2DGD$x1p~>FO$DQbA~L6k3bFY~iYCL(hVyGK z#}u&`H(8NnYO>U$01281U`vSs6N@rHJ(6mwNJB6Im!l1PHd|=0&>S_)3Wr(6Av9%Z z0>#uMfK){TkU$wEFw_)TQlM(aLpRs*8nk`Zx~cm5I7nWuj|w(d^@I*l=yiifVUr1~ zr}o-jNsl{WuFo&$2@CoU&9Bk;)C$VbBYSd8yEV-vteQM^O2lhQ--RAzdkpb>gSR|d z+1~3y_3`RH9n( zgoc(SZkDKKdQp#Sy28e__3>{cs>_e^(8&?DLks+WDCUm*U(53E#oV@n|G#2{a9^%D zS-9Qg)o)FEI5SN36+0NhVdF?*4~;{OI7}yx9a%U2JpLg&?k=U0d$NhQe}3oFuFu6y zvlmZw9_#LMwmg1daoueD*x{p_U)nKuckHf>$2R1Tzux`G9Dgrfc;eDPM`mdH%q!RD zhu?jbN1grS@*6wv`+ok+uANJfM_Xrl7N6Z7pV{DC-ZXgRO8msP-IuRVZT<4_xsR9H zznbBHcr3U0&|J&t>E!u^;j8;k?(hBNyfKa!uHJu7X~*6xU;noCtr>N=wRfrQh1us1 zq4{f1Mqhg%)4Klj1$W^6YwvxR{{5SCpQUe{N-7`}IeoWnU-%qMiBagYX1T M4GbkedS?8{Uwi_h*Z=?k literal 0 HcmV?d00001 diff --git a/Icons/DarkTheme/WaveformPause.png b/Icons/DarkTheme/WaveformPause.png new file mode 100644 index 0000000000000000000000000000000000000000..a899839d68861f52c650139af9ac9db9a7e4d7ae GIT binary patch literal 1877 zcmbVNe`wrP96#r*wzG=AN0k{e3br%JOD>m7(q*;wT3hw5wLM+MseSkIau<5Zi%HtM z78P2>F=R3X5w|k-hvE?2A8xXVgHBc){$LYPP;gWxC<;^m5e6doa=&(yb{mHLcu79* z^ZEXI-?wWt^H6(RM_ViwYabp;jnU_w(RD)$y)Pdr_RvSGH}qr>i*2|qx~_@sUECOp zwTO0hBAiG+sw3j?&?Gs`mmQCyW3jEhWe=h$95Okaw_St%Bo=AhV*N+SK z(43FQ=Q3F|H-$8l?cK&~E$fuP!69VIPSFkYvcXn(bvlkd3oKKCgi{9F7YQ;G=~1Si z_?Xdnz##wtlhk-IDIzIp-Oorsk_4a%qQZ%)4kTTUGqr=Ia=vNlW2wQK7=1I?LKu3w zAe2faz7*$)pBF?;(*z(1lEhI27tFdLEOTzKxz3Qn0rG7xw28|^j4(&0LxZKJR(){1 z2CW;^;zT1Rl%XexJcxX%08P}udDDKeB5oo97qNrgFrZkmf%OU`Bte0!LEZR$i2#jl zI^ED%)fUHTNCe@)40WRxkX6w^cGknf7!Js^kMO_@HFI<1ji>kf7>2~p5>l*ZYP4=L zBgs5q?%Qs=CMgA7O%remhS*?f*5VvUaH5B4nP%}CZ=u8Hbavfkg}qv zN2huTl-7(1LwH57iFAwj4x|p-4$Nc0bMq|I2&3Llio~bF)Vg@Ziga2Zc7qVQ2oI+W zmio-wwyCR@W+k*_l2b%Q%trI8Rc;bQIWDRy zK-FL_k>u1|T;UW&);JX-jk6RgqhQm52-ev~e48#bSZrpEtTHJh&{Vn}k|GCz1~{0L zMNUnqG94*$LXqP@7Okk7D+Qtt*#S-6Y;Apv^GV3K_Ai{gZ;o@EuT0H^t_^t zVC1VX>gnahXh>Pn{Sdvl0ZE&BfxqFVS-0lIliJG8(?&InN} zt0rIgZ(UUWHMPAuoc7Xa*y!T)rLhlSms0z*%Xj>>^Ip0`d_J7&%c{H2fBT7j@`2me zfA#L3b>Ye*U(fdp>0WlB+iT5iICP@(yI)Uq9((D+2c_u)_Z+$D*-tkyM+m`1c?C z>BB!sc%f~7d#3B1pMPKOoZNY4->#eImkxA|4;~+o@Ts#Y=jHD=k=ADx-u!W?W5>uh zgU6hsr$^^+ncA^#X>#g^Q+F?Jy6)&Jx309DFCP4C%if;-=%c@1{cYu++1}+Bx4iKd Sd2ck@_=X2EsY4G=F8m9~9B4oQ literal 0 HcmV?d00001 diff --git a/Icons/DarkTheme/WaveformPlay.png b/Icons/DarkTheme/WaveformPlay.png new file mode 100644 index 0000000000000000000000000000000000000000..72f2f7590e57cf59fa7cdd77babbc827f17212dc GIT binary patch literal 1937 zcmbVNYitx%6dp=|K7#&045>eu4AJnKojWu8nrXLKy2TdRwzS){YE|yuxwAXz?%ZK! zy1T8KAPGNAFd-p6f&_^MP!lkkq6wzZYJ-{>An_F?q7nl|B`q<5n5cMXce^a6JmMy^ z^ZM@j&iT%F&%Dsp@yO!Z`dWrz7Pq%WyXpCU@2Fl#|0hS&4fIrFwLRuAOx+Uin8)nd zyNqELiblNO?T>9z5y|+VMiSVU&sY@AFpcZ-7DR*CWfM4Qm=SLJqZ1r!Xc4Y25Cbu* z1*eR*5gYf6bi~ofAW}4LT@%}wS80F@b|IV3q)kW7N4P>=Cm4 zu`afS*qBv(fJXoTHl+B(kcgy^zLu4MBncoah(TTqt3XoyGF$p_l+M<4wL7|@L`Lr- zT*`GVRSqUeKGUP@$ znrg9zj8zV6IwhT`VnQBTg6IQYO$DHa$~bGtP8Y~EB;Yj8VAFLdRxD$!6mf}@BDV-# zeti=G)ixF@bIh4bCR3(x+}12Dqa?_jXeT~wVWAs4WXMLiHA~Z6;Z^*HMQDs@hCW;g z4e>yVi=ql>j{`SBsb@6k!aIUBr0T@ZKw7Yofk`Y_W|CveGO8^kO>9a`vy%&1#A0f@ z>A28DxIG%-Xw5#u(9{G9Yav}nd_WJ%d;<9;J`vRYJi?k1)`Nbm05rQkO3;wkS#N#O z`+vrMt}N{Qw){r{1uBtJ?)Gl}Vh z7C5gM!5d}8<_rJzMd4k=*qepZS?XPur#QVSe+RHhL)&!9Kl#?{bqq6aVSBVW9)9ui z*Aua-=KD@wS$?wW>M4A9{OJ5CreRm@WbMG}UH6RFj?SNYxZzA)P96W`wVKKCW5=vN z9)0M$A2$6%&RrY({OSj14?9!m*M8+}7w&y-;N5Q*Tv$1?v-OEBCw~0&%92jdcG`LN z_puMVcQ2h@cJSzgboiY$;lUjb?A&}l=5Ed|Nb=T>RU1Cu_xLYoYWDUXs*)QIR_*TD zR&#oJ_w#*?2daAetZxp@G%fneUOlsUXu&Iq^)GXiTl*|{@wd-TP4}L&W;R~mUw^Hp zY3Y~m{dxRS=%)tpsROTGdb@gh|M%M#y>WTt=*XHQ&%C*3{H1EVt0Opi@#m)}i)n$l$?Uwo z`+etp=iD>nJ>3u1*EZD>1W_O94EN&mUG7m+jsHJ-JGBL$R+*iT*aT5`r+avamtJWk zh-yxc4LAeQE?GfoFHlh&dUI(LqX}YbYt979Aauw$Oz1|4T6ph$iqzE*)$fb4QL`N; z_0ACs?i%TiDI!4ade!Ud_#sy?fltqqa1({_F&?r)MZMYH| zpjke~aWWf_MfN%QgRhd(KilX@-Er|i14rn5v<8hv)wSX85iXadaSgEu=jFcg_vhMmq zm#av@9M@DK$MFHlC*kyh91Y^4pN?~WKdnl zybui1n9Wa%aZ#gz5RB744r-j}=LJcKyWN~`5V=#gap{JO`(qb8P`pa%WWFb4pt!vr zq7=8tZUlwL`VxNJl5%lDmGKJhLEn2ea|BppQ`;{ax z5)e;lhH{f(+)-92KJ(wc$iJ%?dnGuYrS4^UisPH|cK{lg+QL(QV$=Nx2*Ohr3Ae?9 zhkyCvgXs3QJ3e0A@O0JjL_=>?=HSLzPi+6mZ6~+Mvkix8NBhWi&#t`qt!I6vrf&GQ zhoxh`Zan(fk0FXKdvb6?(Mq(R)6){*bRm*@A!FYVgB-4 z0|U2@e)r~YV{`q}O8pEUpVtV?r=DEdaOU@!`MFP1 nd-gn!tTBCR!|EYfgB94Y% literal 0 HcmV?d00001 diff --git a/Icons/DarkTheme/WaveformPlaybackSpeed.png b/Icons/DarkTheme/WaveformPlaybackSpeed.png new file mode 100644 index 0000000000000000000000000000000000000000..08de6941f5e85e78a89d73a1bc285ba286d92ff8 GIT binary patch literal 2044 zcmbVNTWl0n7#`F%+}dJ<+8`~%6jUg)bK7NhhAwpJQn$bs($-LjDLpfDb~|==W;!$7 z-Bt~45o584F9k)2cnJg_fCn!SP)clU`k)vUHC6-h5{XgdqJW{OXSUmAHRTdFnVmCp zzW@9F+xe$wP0b^DlV?uGFf6Y+7^p?}Lg$*8i~a}RiY`XCNk(v;g<(_fbFK;4&Rsfvbv-SnCPVA)^vD ztHBNv)^*g>%N;GUpb$%!;N?jX5yYSk@MJ8iSz^*hq2U%u8QO_vA2Db$(vKZFQ7(fB5F%W^2p+yKhlSZ*pkLo58M&5BL zFG3-)TC;4R$*?-$BT&pPRaHdE%_|(sNu<{cBvRttUee1-Jjn@O4lIJa5El3``+zRD zIhA$nN4s3nWyEnqRRA2vaBdG7UL^A*^tf445M-HTd5;93%t(rx8Dm>*s_3ABXf~_k zm4X;$NOLk&SP}xpO}e3*Aq5G#NybAf-mnCC21rgfry4{Isun6;d-{CT!PfLDs^Y1h z5P|IUx{r{ZB145pzgEY|#~mrB?Gw!qk=~;Cqw1C(wiCdF{s_w5ZJUd_sq?xPhh~=h z1~37dG0?PpMA+10I53Q;Dg!50Dy}K%lbfjyZtM7sUb(4`1>(0((Vex-XzbZ38n@~H zPm0p%mz#kWfoMWggcA(qjIz<MS!;96e;d15iWMCYth36@JNK z*o4;VfWO|m^;F-9w(g2)&n&&Tu=83;ckw{}o=tCbSLF1}Yw)kic|50QMsUHz;=}i! zi#O$8JGk(05mhpBdU)^nGGTl}tPN_S&A$2OH;J-o3YaGv@a7`-@*&HfM=VcD`pm*D!eGi&q1Yf1(io#)BvoRp`oj+d34e%bQTah27!+xZ28{^@1(l>kASyb0y&i`tA5kya zo!OaZ-jC;fX6Bw-+w#QR%IZprqUJU?MOsN)+v^u1w@q4N;8GtAU` z4(ayjTDk$-hz|Jxs{#OMIppJIUKM2hFjg+d$bp33Vcev{f`~It88xV_Xhe9Pa~OPI;iF7I9X_PUW3zDu+@ijZD`eSiXq0lGw#g z65qmfar!0)gxhGe=wr%Q(&?fL$8GE;X%q;V679r#EX1`U2WM;*HFlFQmw4G&N`sA{ zi|rW3smV&MoeY^4L?57Q)*GgVvrcWv0u+HR3Nxf?eij5+UX1aw!i$P1v%s$aFaeEX z&Cq*Fp=4T!@w`Gn0pTVn(ToONct^0NDmu2)kR)uRVFGcMnPBK5jYA28TQFA2Bkeq#np((m1`TanTvl@Ur%Lhcn#-$*MDJaK9LDvK!u1>CxU^U}a z)>}WJat*7*#tpAR5FsRMA{z=Ki3LEESSZ8;tgOo+A%r9q`o&3WYixsTG?*&2>P4jy zi&8)f1SDBvB_W`*AxY%fpcEu8QC0b%E&(WMo|^LlQJM^gl&+_+KiW`Np_ek~ye1T= zdRh-Ns#j#BF@<4c3O?@2b76fpiHOnL6o10IgLO9xZB(Bi+}%-J+%1F0W;e1+!ndFe z$r*!eC(P(JPSen`Qick>T)A#jE9~52b!ZpUH?(p~KMw4^Jw>`8`T2M-&O%;8ERaQ! zg}RJbLG<%72nYgcCMhnZs3>}%kR^rv@oy+9(61(;nLy-(=9vGG%w6e!BFZU~Dc!;U zUoxC`E>9?#`=`kBb0udu5lnuFTnt{fcqNgK;-!X6!jny|tPO|jR#H@%)Eudg1qXiK zb)@TKFu!rHzqao%*HYd!>#gbMM`CrK*SD5ETvsu+@H@AzVsXW{Uv72A)-hGbMppM8 zKbahQs`;}mqZhiQIn&$5K6&VL?UCnS|KiH#^Hn3&HT~_gFH-mQpX<5)VN2~%BT{*gL{_M@$UmAI3{Edx$+^h2*`Q^_U?aaBR4evhsTIQsCVqiEn%$(}x zt(~XeTh!KnaPc>%7A{@4ze2Be21oZtHXKlg?ytJox2t10{o{kzqQhsd&M`h3I@;0E ze>(Hd{I@Tyy0UcJnV7{l_;x^EXjL-U0vs literal 0 HcmV?d00001 diff --git a/Icons/DarkTheme/WaveformZoomOut.png b/Icons/DarkTheme/WaveformZoomOut.png new file mode 100644 index 0000000000000000000000000000000000000000..a161433d211d432acbac8d8691a00b5733998604 GIT binary patch literal 2181 zcmb_eZEO@p7+z{=Xo3DvLr4{}EQz7ez5TwuT{vp#Rqup@ww$5#2Qarg+gp0Kv+VAD zw22W)h#KP$Vl>1cF&c>aLrK9{Gdk$Njf3kG+F-w?=v3=!a#caa0W#17WFeEbT(uCUig8u^?7wCxvIz0|!&IA3 zNcO}#$#&#GQVFoM##h(&-2h=xUB>dnU3-KO#t? ztQV$ms-+q-b|tLkmUY64F$G{VT!8g!Dgt$_g0r(ux=5~T3{1lev^*DMxeC@!ArHAJ zbeqtX;ado>w()p{W5!%EnF@vLb>wgvWkF^{yNLlCGTqQcSx18%Ih^KFzZzR@cOdYP zlRzjv-Koy$lu2F;u;j8$rlq62+gvpPMt}#y6z-Zpvl7jT2~JiyQ59vH6;zfjLE}g_ zje%+?9_AAqr(%%A-U7v*(SZl<3f48%Ku!kWg3S!*gN$wUQDj9%wH>9AgNbo=LNSYY zT#Z?-2P_T7B4G;G9578?g)9_8lEKk(kdtX6C`xpaEhN6l-I{bxTE}(Hp!wVRG|4@ z4^x`oWT;c+*X9g*+!J$oem(_p&^t80#O@-)%L50t^tzA@ZhIZp-6>+?^!~1)<3DP^UwJAk!KYAsvD; zz?M!X@lcQt^4zq<)e==q&#G)?ecX>kW%;!fu=*h0p&9D_i@7)dm$IC(nCcb${}sdd z`*O+2%zsT@9IM*Hv0;j@@WJ3eR*oe6qjIQ03+v?IBdhCr_8o$lMaLp-iO@@zUOCk@ z%FgT9y0BsVz}llV-8CMuNMF%&o>=}y?a|%w<3`R31e=<|>F?)l`gtLm1}uM=?g#hvO@c4YAtrDyZ2t?v61^7tHar2cAW&z07H z-kX?nt@cC>6FXGXcx~)~-LnG|N9;3C_jWZlU93Bw9UI-%+?+eTmtNNN>^B!KABw;G zu=MqXv8Sec&wV@nPvzIyzTMbEuG z9)9zOSs(wg|7>(^)IK`CI=kS;$%ET|68dAxwc+oe Q|3@L#u|9HS&9dH%QYQ*y) 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 literal 0 HcmV?d00001 diff --git a/Icons/DefaultTheme/WaveformCenter.png b/Icons/DefaultTheme/WaveformCenter.png new file mode 100644 index 0000000000000000000000000000000000000000..60a92be13a831be00e4861803da4fd56e29d1e1e GIT binary patch literal 1875 zcmbVNO>Epm6kgh@zeGUNG-=Dhaz$vPjy?8zqF&E4Ihj zPIeOs#7_?t2~>gjQPmS%dO%exKuDn#1)@?wT&f;Ga0UU5BEgAEVZ47`P(mtJ@_KB4 z^S<}K_xbtE+WYAVS6U89I^ZAFTKY&yt8UNYVB({OTv4@|Ru_Gywt(A>>p|kW>lFs&$x?p)89qElPbrO6yS8l_XdH@r*7oEqy9`v`)sZGJGkD zd|edF<+4yt3N$E+lBQ`Qltozv3<1IgFG3aIg$EiDvLwWT?MF8CxHuv*=vc?iaH`}c7KuY#;zc3DN=>X^q7e;Cbe+)6$NwN; z+U9aijx}>}-6lmCjm)z$>Vm9^4)Y5>5vNE<=K@Sd=2@Bt;%a<-I3OsZL7q~l(W%Ks z%ABkSkUKbSdnPT1hgvp}EQ&~mXI)DIm;#cLmsDMn^`s17Qirex%~8{~7FwYyfO1}f zdP>t3wr+tk&zLAe8-h)&TQqPHE7*2Xk%+!mNPv{88UeEA2ZZa|X`fYnH zJ?@3MzQ0@|Ea-nUzs4R?D=MRa3>BGn8=6a8H+kyKlb|Ji9|efb7!rgT-U_J8A>Vgw zjN)3wdC#oBxy|ly5#{cBWnG>S&2J#lJz1t!d#glin*RStRF@x@kXIyZLW_J{j2Mry zTJyz!`=a`+W$ZQJY?j8$<`ica&F=v5Sm=OF`GJGTVPA+FW7(m6`qh;;ueN;-cb^`7 z@BXtrZJm#hcbk LCbAcg6khxr%LriW literal 0 HcmV?d00001 diff --git a/Icons/DefaultTheme/WaveformPause.png b/Icons/DefaultTheme/WaveformPause.png new file mode 100644 index 0000000000000000000000000000000000000000..076d8c1f8ce6f84508cc5aab4e26257600ee6810 GIT binary patch literal 2071 zcmb_dU1%It7~M5B#As}!8j4Tj1hM|yojbGhZ`L-=rcEH5hGeCQAno0mJG*0c=8iLy z-A!H;?TgTYC{?0`_Mx_FR1}2fdN6zPMg)cT;VRr7! zocn#}JKwqYzA!Pqv#0ys?nENdGdhx;r1!q)>guHbpM6w*l-_RhMrMLU;`U9^l}x;L zXmcXbxoYR9!|B|ZZV)GhOj5w9n&VM)A~CSF<{@JihfDz%Z8yXI@$pHPvCRy-Tgt(l zH-t;}$byfj7RK|&!mOd0?AFJaftpSOI5eNJwG9!p7$ZXkdyC$gy54KIfSrp<7OS_f^Py)P|=M|k#>mmd&twY#==7?!q^X*Ut zKq1fbI!_xcT?M6{F;R%F3pNeiBEExY!M1~nnDg8s%fvG3L!?Z6nwYXn*IDFp`luU( z$Tje2Hp9}IQ?_mDP~}BMlq`TT(f}%mX`pHX4-k~FA!4k_rqY_9CB|IT*=T;l+P^lCfza1GS><@@=}%P`N#7#LA3VX)0Y0N<>40 z5i1_3k}A@XEK0JNh9Yl8Zmt_dAF%`4y7}h%n8HstM`fF-dqPJ>v>A6B6c%SJurFpvtu+QfV(GO;Lc%%PP4$ZMQU(Aj9zrk|NV%k^m|5pqb?aK`(bN@AY{af1} zP7PCkMGuB(7#~UWAwJZwOLg+;k#+X2A2fR0ogB>$=G6n|4}Q?|DeN8I)7w$o@Y|LT zljYvc_iZ|QtULeB*h<&MuKh2*B=pxhrq1m<)yF8WZ2OWN`e*La-JgHG>z?gL_Vo?F zxib0s@0a09&*`OF;t4JJ)Z$y;?(aC`eSi7H-kH(sG;p>RqG5J+_HNU=on?31 zyP{2u!4N|<1|J}VKzI-zXlP7GjM0chth^a8G#X;4F)&e-{;R1Hn7`bx9b(3;~sq?ycTdr zj;`dmhJWmAf6$+KNyoGpK_)dwq+E0vn&UQZF1rX1kbpNx&UTW*)MsY}-Zqm$Uo-JE%u^Edl|C5b|*?BE=;v$E|018OpK<6QUFYQbLEat}1-(BQQD7wDj$%tu-uR4PSEN`!hjQPMO`gt92hfFXcC>;$L`9DmI$LyGv=v)#a^4j(cigAN8s zfrVPlq3G6W9lus5Rxz=RTv3X^FsBO8#C4oI=oKpBCKgG76p0h~3@g>KZk`6z&(nFR z>#uJUV71L;>Kb>9rC6*>_(A6oOQTkhJEHyUuuH`4#HWKECY?hp%r#*)uHNAh6i_cq zX<@cgJ+mS6vKoQ>+CJMcX~|zVX97u~fFuRhH3h&ZkkqUc*Cj<)H2@VI!YVXFP1_ot z3ylLPXC+COWL-(z24$WxQGo6VHnDC|uZUQ}b`j->=sG!pua{BppatqNVHTZIi6WEH z(~ch?2a|LvDX^R)wr#Qqplrk~8EB>&1;|tpNRWg92r{&|Dk-L<;o12qiU-5ahV!c~ zHz{Tuw^UV_z=p<%pe#Y45fuYXj!D2`J~tBziN>XRG}}CzEi_b^%Nj;yGR7D|QHTu# zKx`>MQd9#V2o->kWFbvbFpQJX%@u>_UAE6!H(XmEJIJ2eQ^Dpdp3o5vy`B_s*kob~ zwPE`X^|&wP+Wb28+amX=iE4SVqKA`+9ugt6CqoKQ($iN9RZdn*at(XD~tjfTMSt`K9)Dl)q zB^qRwspdYnM6;%cY-3{%sjiO)DN&6Z=aG{mY=;(w2T$hy{6Bv(x2@p+FBvi1m#a<| z|7-HfyE%I}GfZWO9Sq@P{YYXz>W3O}Se-m}WNkjSbA;m-Jd#eeXA|#Uzx;9LtLK)F z&m3R&aCzZ(7g4M$*0}op#f>e^>CSYl>oCU#-aNQ;>xG7s<iBwfhhEy&v12K5^(+?yv95^uv+f&rckm zXgYA_+Ud#BmWY&kyYFJ><>sT&Z=P&j+4%anu)lk9bkBPD^~idtFFZW`cdWU54zKSi zEy|5FP5EDbyZ@o7Y@gfGYCf~&si8%OCcaoYdgHZUmh2k)^RZPwx1MV=^xmuS8x3!O z@l%g0$z?wkUtaBQJM-#+-m&w8S5J*h?%a3j#kSwBOizzZu8WL*aO{&sR`boXCr8B# XJJoGR+S{*(e*w~+-Ko=CcE9y6{L96e literal 0 HcmV?d00001 diff --git a/Icons/DefaultTheme/WaveformPlayPause.png b/Icons/DefaultTheme/WaveformPlayPause.png new file mode 100644 index 0000000000000000000000000000000000000000..fd4b297dcd06d617d52ab94b84048900f43b4818 GIT binary patch literal 2149 zcmb_eYitx%7@evV0ZWMuFQ1b^Q3-cv?#%4YgN{(TrETJtrd??X2DmeGcROKsW|*1o zqruRCpoR!B#zzPuMiCQ?VuBAOghzy!_(!6NX)qBJ!w+ktr1%FPcxPV}Qyw91GCQwx zzwdnKJNMpsvAe6iVfua3DT-?7?1=Y}^PKRwyPo`ic{sC#oTj-Qt9^=^(G(ta)b2g= zD60M+E7>3PC!SIbCmTVgqvJ>+>k>3YH7_l=$k>1bTE}V2)|lUp9%pFF)R?|#f=jrq zc);oy@^J4^SJD{TU??WD^hvt8pppPt93Z-o&Dg$L(3nzOm0X99S%xk_f(;te5+PXE4wh zLbY5&)~$uL{fbURF}8qQ7Dl+RrV`LJYB+b$%aoFv28%N|i|xQCSXjfl15V)h1I~3q z*Ir+ffM}aY)N)M9C7Z3K@PoD-DWf9Dq-Z}`bTQk5eP_@!a9fVhTo6{{s;wSIf#W3| zCsXZIca<{DixG}~yw9>tC+|NoVE~S!0Ba2CngF;cfMOC#Dil=_0!~mlt_)2$rj;sA zgi3(plMt$qSB2O$P~sUA1?Z+=(@;~6mqnytD~r;Yb?r1m*JM;%os8p=#DtwtVv$Iw zowgq!+rXW1jUhEhEXySR;w4kkAuyu~1d1+3fed9HL{W@*9Ezf;!|M3BV+@9!4ab*V zZaM~uaWyN3ke8IGLdugNK)M(MI*i4Dsqli4N<~Eho7HG5J&Q~=t*UjUj+>IrIM$|A;Q4ADO;(?SB5zuv>11U+A zWf4iTz$sOUCrVT`JtwImS2g|ZNK}#E7(jL!lNFj}ZoimY^M9G;WW`)Fga5x`*l=Ag zJDL5j$xH7htl`8krAK6A2rp|}61k~uYS<<^d1T9aVgBejimGeqjJG7^m&U$3nONR3 z>&(T6x8JdM_E%>YZKWp+=op|=>nlGH< q*n6)5aHj9b$-_Gv|GqM1bKOrrXcwARoSPPY2z0h}#XnrWe#^hM$H(XZ literal 0 HcmV?d00001 diff --git a/Icons/DefaultTheme/WaveformPlaybackSpeed.png b/Icons/DefaultTheme/WaveformPlaybackSpeed.png new file mode 100644 index 0000000000000000000000000000000000000000..0f92f18c305b1835427a15b0ece55ae20f161038 GIT binary patch literal 2244 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 literal 0 HcmV?d00001 diff --git a/Icons/DefaultTheme/WaveformZoomOut.png b/Icons/DefaultTheme/WaveformZoomOut.png new file mode 100644 index 0000000000000000000000000000000000000000..3554a6f49bf55fc0cd510b974a7bc6ddf96fa92a GIT binary patch literal 1975 zcmbVNYitx%6rQ$FN(uErH3rcPLj-M^oyR_AckD`Px3sn0y0i-|6)SgV?(B};c{nre zZmS7ZV^YPIHW4doQZSkVgNM2>3t+qD>@XjpCi%?Xs8_h?~sL z<9_%1&iT%nGcSf3YgQJoF2*oyWnFEc37zk>kD@~KKXoYnAUZAAYqy&iwqliiEc%HScaRS1 zRWK&k_873ar!g$_bO=6?*z^!yk>nA90xf_imAGp1Nk5U|< z8Vuo8ngMa2gC+%gvs<-5l2pxg^9%uK3Wls(vZmrTBZz37 zmY+bOrgKpAEUjv0d_s;slLN?a5u7>5c}EfZmxELM+cmS)DZ zMX0mO*9ahQgTbuEg0Uz{R>HKZyHFY#Ll#7v;cgvLP0-Xj4FOhnp)l9k+30+g0fD6% zVNHwAS1L3gGS0djG=6`JtcqH~d?0573;+xI2~;&FNxMnL6=pb|aq%vWq@6rXr=dYj zl%?)mC|YL241*9neJvFAj0h}nL$E0Dl4d9XB`hl-3MpNU5_r}|zDkR01`1}Ymvq`>KIlaTbE2Dpl24)|!0zT$gYdPoiAvXZT@H31Gm=DDv)x%|$I5yryEUIIIuIpQLb1jq3J=dZIoBsb; zl(Aok0W}KIgr*2P8Ok1I>EcuW?Tge}&e)rWqgiTSW~Vs1$$kf*il_}V<(HOi{|v+O zHr53y!`}XjdndPiPTyKRvafXT_T&AJ?a2Qb_YFk@7tHJxztwhW&V423>Sn3fB9zO?t|m! zFFrs1#gKUdzop{I+s3~>F#S?-%u?^`p3495>6ub`Vt8Of!3_3C-#rJ6(|ZSwg@`7l z<5YuR9okk_^VZmaT6VcNnOO4b=EfHe?H48nN-sRyzkcMWqZ4i4)$hO5@I!?<*nX;f zsso-`+xYg_DAzo>_RrO`M^3iZU%9+~CV!cG#~i=47oHJLGspBj&kXI#FVRN|cVBs; a`2;r|47BfhS3PcjTI;GC1EUY`eC}U$L7Dyl literal 0 HcmV?d00001 diff --git a/Icons/DefaultTheme/WebVttProperties.png b/Icons/DefaultTheme/WebVttProperties.png index 5a2042ec384490d1b84c15b3972043f043628e80..a9cb82fd36562d8647b7abbd79482cf3c5995dfc 100644 GIT binary patch delta 1387 zcmcc0e_UvSHb37H1_r((j8nDwq!}1k_iVKCW1PH&(R6YLqt4`)jO%#Kbq$O{3=OSJ z46KaICZA_g$Uza&H88d^Fi=vc$Stt)%}>cpt8_^$NwrlnGB7gMHNdL0AS1sdzc?em zz{)v4C%*`&3#i^$Ng*ZKDlNY#H?hQ4DKj@QJypLTFMYBBvy6(dK}wRPiE*-Sig{Y1 zu2Hf{qOPTdMXIi$aZ+lcnOUN_rJ?2I0%8?zU{ zi%as0ih;64DQQ+tiRn;QPNp3&5cE-j33{q0efetn>Hnz}BwKOr+O-xBO)HN|S zG)qlOGZsrrOii=V2k8guf*1s3Og_V`V}v9ORsgX;ACF5W|6~qzCCWz%#U-v~C06Ab zsd-pqX!2y1ne{y1n|?4bFdKThIEF;D9=#sh5gIDO{^5S8`(;Vh&#LWmmsVbIX_?2g zQDM`fMNOMdba0(&SNgTVtzFJ%(He&fFPs%SR!o`6rR6R3NpTTJQw>M)F9WA$L9b&u zTl!b-v|UrXED5Y!9DV^#Si^1j(%U%DZh- zHBb1W#RleGu@yq~^UWH2*u@g6s`ktBKalPb$w^O^J$EEK^G!L=qbbj$wVyex%`XtM zJ93ou_Fs$rN3HHJTyF5qa^0beA302JH&##noIW{thn?;>wmR(_=a1ODIkG!*4g22A zwaZrvS(w+ZJKMXrHN0^0Gs_M2!sQ7T=J#etuNG=dlQ>qYnya07==6vEDj#g??4}0Z zRL)=*pJKSmE5R`Akq3Uv^&44& zH@ZK56saJT*Jd%#{$lIN%sP?dm;Qv*=#)JOx)a)VAZU-K$zQHJ?WbL5o)xn;ZquLi zc2dgxsShf5u*oN`_c)-qaGv=z#S5MCm%qPV#Fcj}_)*`BV^<&DtFV|@CBuF>e_H3N zn_b_FU%zutmsFIxeB#Ue4^>4qiAtNCA77ePKP@L+j7gzSq2F`GRK)_B&&BVVAFYW$ zU|C^leqFJu_ng;z_K))fmNH)CPO+Hu?7tRE!GX?RpXDdI z{b!r1L~qa%KkBrn`R<~YzRsL^&G9bN(q||xvTdrr6v3X>X{V%oO?}ntHY3j+{x1%E zKKU^#@OZtmZ%+Sm_5MH^zx%sg7p*&@d?P%Jb9?8JD1D`9tu(@A2ha3}x5f6aRXy~#B6_jQY@rh(>rS7P{lM-tAx=d1 zR`UE~a^2*V-*A^=tpIR_U;P3qzAGZC8 Y4^=tfCUelukpT!iUHx3vIVCg!0Dfyfb^rhX delta 883 zcmX>ubd`UCHb1v80|U1(Bg3pY5)2G1?>1WbF;3pgs57~P(RA`l#&x`=x`rkphUQj= zMph=KlP@yK0Y!`~Lk!KVObx6|EhaBvQgB2O(KRr(GB8k5NJ+Lz%P-1JEU{I}%uP&B z)i20PS5hd*$S=t+&d4vYa?a1mFY?V#Nwrlno@~G@Gr5pOWpV+O-oUH^;xj5uKF$&f zmT_PeL32wY>&$wYRrgvM7?^rJT^vIqTHjvx%?JsXIQH?rti4di?tqeq?v6)~a_CLj z5)g2uW1CpW1tGzMi<&M?b#)XfT;6S{Aflky;d5>qzlg7s1h3_i=J-3yAZ|ym2nOg8t&(itzOf#4&0fLrjcAZee)Hen=BVkP9_l>mM2ZI>vFK!!@Egaz`ukj`^lD>{fhq zi#hQ5#*6lf*cPb|rhaZ6xj%XvIi@`B-oH`OmR0ikR+i}o@f}5`(JgZ;I&~js=zZI( zT2(4kcJO&b@8cJ8?w@_`)?0|#?)TWTbncDLoi7&O(mE3={q)Dwdo%W|DBpxwm@@M zS{84@&lNq9{2MojWTsu)|GM8Pd&l~1EDEx$Gf&%iAM!N4Gbb%DL+D(qlDoe}{emj* z9gSNL9Xi2$rG<5;aJDtr1; zEn3zc)cw5dSExl1is>^F2`8^lmqo%-aOrW2uVlZ_^bdZ4czlIsRSph_uzr zX<>U#+1GfdNNwa-fAsa+3riK*{G*aJ4f!AIlcPRbrI$$QOK=(XNVUjb>*+6GuP)Tj zHn9DE(ADPPOAl*v%U8R%1ckfU98NqV$$CKh3sDa&3KJdD=zImjg=VjLbK zt(EC&#MQ98&~62?ikWboFyt=akR{ E00%5~jsO4v diff --git a/Icons/DefaultTheme/WebVttStyle.png b/Icons/DefaultTheme/WebVttStyle.png new file mode 100644 index 0000000000000000000000000000000000000000..5a2042ec384490d1b84c15b3972043f043628e80 GIT binary patch literal 2005 zcmbVN3s4kg9KS#UanL#+!$Wdg5Cz%W2b|ok90VMX8$BSr`>9|}*VmDa;S|o~&wOc4UpAn#3CXY2M;G3;&FvRK|hZG+Rl#0v_fi!P@y6g`r`HkgtH_oCYDSIvq;j zcm|S7Foec142qIV@F<)nqV(Yqfe{3X$xwVQg3CyZAR{B7(E|qNc%7ciP$rEU15XOr zAP5!`MT?4xBt;Ptj?Y7Jxm=E71WFJHKp@s)vq0Gqvo&apLCIKYp0x-pXNH`NR4!)| z6fkggM1#rVqBUDb;{+mx+9?Z)OE9OVVW5t7;Vd@ZIBZ-;ql}R;F=oLEu(%6rF>nHB zHE{nz?fU$L0T5fY+GXRZzL-od6ILOy5Xcw}$Wzf)O|gYRGZ-sp<7p8vjE)khXM%M!spohT1q8DuDvv=e<~$g3g^^6) zj2sUP1Meb+y-=%3mDws#W|~nc6)?~&VObrimtoRKIgyJ*N(mgv1#2WXS4tx^K@+%C zO5qGKq5|w!ag7Hk`90$Q0HJl2ts~5eu1u(Up;fhO2<2 zXlHdRVA`2hMhB0+W}iC(BeX>Z29W+ox<_DEPA?QuJQJ4(qV>#jLV@$Bvkymfp#PLO z{Oz%x9fN~G;9R;!5O{D6F~$rg7Y|0%^iMBTi9~L7DrKBTTQzW2ZO~-;9vQqC7%Mik zrVE#o<2pONB+OFfd1%4UvT2I8l)byRo?CsOf9LtI6K@3kdgng(nct;#c>T%7 ztjRrxV`Z7~5f8iCP8}bJZ(73thIF^A;Kj>{_CWWONu`-JCqL{B>)CV*e|YS@!tJ5; z`ei;j_nK-KPip>h3ajsF`+aSEe#;m8$3cM}TaHK1?@&p9YS6!K5dTmGC#T7_m&|V| z-`CM`)ctg&$AP%!o!m=37tV;6J63hf_WUHPrZJ%F{YA$H*xgu}qI>A<_27f=FtW-$ z4rHkD`|hH-+10I0xwefHCSD5p>PD;g^no1Y2=l7vKpy0$Xg4=}ch~Q50J&x3qJzg` zOXutSn^2eQid2k@t=~r6D4bn>n$vnXy_4USU{VM}|YS&sk-zq@!F~wa+VzlFG z%DgD~wbs2Enab!x)CoV2_Bpq`*_b&g*F4uZUbS3a8n(dUJ$*_Td2sXIqw^WN)(u2WJnH=MsuEL`d*X8{{stbE(gFYg literal 0 HcmV?d00001 diff --git a/Icons/Legacy/WebVttStyle.png b/Icons/Legacy/WebVttStyle.png new file mode 100644 index 0000000000000000000000000000000000000000..8e801d04874ebd7fa1c10a64be2c159f3d0a53c0 GIT binary patch literal 1614 zcmV-U2C?~xP)aB^>EX>4U6ba`-PAVE-2F#rGvnd3@N%}XuHOjal;%1_J8 zN##-i17i~|6H60IqeKG(0}BHPFf=eQHUyGJK(;wlDA51~m>QT_ni-oJngcP2&jkQT zwiL-a)I%}=00o*!L_t(oh2@ujOqEp_$3N%2zqp`y0~C}HTKqFdftQPc#N@y{>UNrD>k;?_{kJBIT z%jI6c3&fv&w|DRRp7WgN`JU%_&Uwy(|2ss)-i=2LbQ<#!WPzLmauP!LB94*h5cDJY z6Uom=?|DwY<{BS?jYkZ)^m{;TLtq@kL?T1Vlk^+5ac1q^(Fv3sdk!Hl05KCbJegoz_qq6zN&7b^I98Bw}9EG>Qp_k4qNHx;RH%5 zt|Lf62stjl^Pb$)^%5k)|2C;7`# z_-xCP5fw@)ky0YYkq>jHTj-OLx|$}4k5ThMFq@exJ{7F4$U<@jP~GEIxVS5m)}Kys z&ue1m&K*HxhYlUW?RFCv7e`f96;`VitJR9b;h?#>nY_F_oK7c=jg6$Fq+m9ixpCtr zQL>jcn|HFJ{4Z{`*dcmgWy=BuNqUg#y&j%TOC&da77fjI_U+qCV`C!#O-)Vg-Mg2z zwl>n!(^;@!0bZ|{va&LqPA7{OFD4-&0jt%@ym|Aeudk=FvXZ2vL=uu`vGC~`tj>H4 zI@}??QReGG&J5;apAT!i8Gu*TtmW*v3)IxqkeZsx<;#~5LQqgpKw4TFX=!QH*4A?F z+&S{|^C>JW40C&XdpjPFhpk(;VzF2Nh>P+ME=K?Yk0?lC3JEZJMa|2MjKySUXLIGs z6B#dnK?K-5D4bPPy_-2P32&pL8lDec?=5B8Y02nuHN8pVPPS5yPX3E z4$$1(%*vH3(d+;Fs<`9oRaaSX!s4!i;P+sI#mx5&x46}=#wj;9mxP1_4j(>@*=%O{ z^5tO)JsuA&EiH6+cMmhx-rkPgZV!3_;Cy`xOpXeXl2>)iDd<2@f?x_pJ@RG;fhYs{ z3uj<37%-Vkc)ebVi;Ky~$OtpycDr#po#f``lAN3z*5`0Ih>wpaCnpD^(Mb8Ft5lq* zhomWkLOQWSjmWBs1Hg6w`h3vcN6o>P$ex=xs$0i`+b$2YH-5wYu3oi1sI{RA+xi?u zlQ{@d^;NVH6v5J+XQ=$G^}$-lhz5Hnshe!vztaU%V?uI3?uXEvTvf3Z_z(cS0v$cz z>fxEZCwcpYrg#-Wra>)kiLu}tC`KH`w*J*{0stlDA0fmW znkIE;babhG@iCxN!n1fJ2%*Y2d(?1Fi-jn?TFwEatj1RQd{BItf>06z5&;SQ{>X-h z!k`142;X?5yo9YZFO2VqgI8B%5s)VkV*2>3J^&IA$k(xz9v|8jxug}9XQHqNAx18Z z;6}_lvjlK?>3vSJ*69B1kipwkO3?w&A#u|NTI5OP7ud8d|5)e@qtT1yNN4VZx_ zO;)dsjTmO#D1Ao2q$xH7@qmw;wO?Y0PNm!Kpts8jJgkuzNV&*bwtQpgeVKuAw%Ay?Aa>*1z61ra^cRqP5=M^ M07*qoM6N<$g1B( Date: Sun, 2 Jul 2023 20:48:31 +0200 Subject: [PATCH 64/96] Turn of scaling of waveform icons + use "WaveformPlaybackSpeedSelected" --- src/ui/Forms/Main.Designer.cs | 41 ++++++++++++++--------------- src/ui/Forms/Main.cs | 12 ++++----- src/ui/Forms/Main.resx | 49 ----------------------------------- 3 files changed, 25 insertions(+), 77 deletions(-) diff --git a/src/ui/Forms/Main.Designer.cs b/src/ui/Forms/Main.Designer.cs index f75386afd..8b45f33fa 100644 --- a/src/ui/Forms/Main.Designer.cs +++ b/src/ui/Forms/Main.Designer.cs @@ -62,8 +62,8 @@ namespace Nikse.SubtitleEdit.Forms this.toolStripButtonVisualSync = new System.Windows.Forms.ToolStripButton(); this.toolStripButtonBurnIn = new System.Windows.Forms.ToolStripButton(); this.toolStripButtonSpellCheck = new System.Windows.Forms.ToolStripButton(); - this.toolStripButtonXProperties = new System.Windows.Forms.ToolStripButton(); this.toolStripButtonAssStyleManager = new System.Windows.Forms.ToolStripButton(); + this.toolStripButtonXProperties = new System.Windows.Forms.ToolStripButton(); this.toolStripButtonAssProperties = new System.Windows.Forms.ToolStripButton(); this.toolStripButtonAssAttachments = new System.Windows.Forms.ToolStripButton(); this.toolStripButtonAssaDraw = new System.Windows.Forms.ToolStripButton(); @@ -571,7 +571,6 @@ namespace Nikse.SubtitleEdit.Forms this.contextMenuStripEmpty = new System.Windows.Forms.ContextMenuStrip(this.components); this.insertLineToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.aSSStylesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.imageListPlayRate = new System.Windows.Forms.ImageList(this.components); this.timerTextUndo = new System.Windows.Forms.Timer(this.components); this.timerOriginalTextUndo = new System.Windows.Forms.Timer(this.components); this.contextMenuStripShowVideoControls = new System.Windows.Forms.ContextMenuStrip(this.components); @@ -868,18 +867,6 @@ namespace Nikse.SubtitleEdit.Forms this.toolStripButtonSpellCheck.Text = "Spell check"; this.toolStripButtonSpellCheck.Click += new System.EventHandler(this.SpellCheckToolStripMenuItemClick); // - // toolStripButtonXProperties - // - this.toolStripButtonXProperties.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.toolStripButtonXProperties.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F); - this.toolStripButtonXProperties.Image = global::Nikse.SubtitleEdit.Properties.Resources.itt; - this.toolStripButtonXProperties.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; - this.toolStripButtonXProperties.ImageTransparentColor = System.Drawing.Color.Magenta; - this.toolStripButtonXProperties.Name = "toolStripButtonXProperties"; - this.toolStripButtonXProperties.Size = new System.Drawing.Size(36, 37); - this.toolStripButtonXProperties.Text = "Properties"; - this.toolStripButtonXProperties.Click += new System.EventHandler(this.toolStripMenuItemFileFormatProperties_Click); - // // toolStripButtonAssStyleManager // this.toolStripButtonAssStyleManager.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; @@ -893,6 +880,18 @@ namespace Nikse.SubtitleEdit.Forms this.toolStripButtonAssStyleManager.Visible = false; this.toolStripButtonAssStyleManager.Click += new System.EventHandler(this.toolStripButtonAssStyleManager_Click); // + // toolStripButtonXProperties + // + this.toolStripButtonXProperties.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolStripButtonXProperties.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F); + this.toolStripButtonXProperties.Image = global::Nikse.SubtitleEdit.Properties.Resources.itt; + this.toolStripButtonXProperties.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; + this.toolStripButtonXProperties.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButtonXProperties.Name = "toolStripButtonXProperties"; + this.toolStripButtonXProperties.Size = new System.Drawing.Size(36, 37); + this.toolStripButtonXProperties.Text = "Properties"; + this.toolStripButtonXProperties.Click += new System.EventHandler(this.toolStripMenuItemFileFormatProperties_Click); + // // toolStripButtonAssProperties // this.toolStripButtonAssProperties.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; @@ -3383,6 +3382,7 @@ namespace Nikse.SubtitleEdit.Forms // this.toolStripButtonWaveformZoomOut.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; this.toolStripButtonWaveformZoomOut.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonWaveformZoomOut.Image"))); + this.toolStripButtonWaveformZoomOut.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; this.toolStripButtonWaveformZoomOut.ImageTransparentColor = System.Drawing.Color.Magenta; this.toolStripButtonWaveformZoomOut.Name = "toolStripButtonWaveformZoomOut"; this.toolStripButtonWaveformZoomOut.Size = new System.Drawing.Size(23, 22); @@ -3400,6 +3400,7 @@ namespace Nikse.SubtitleEdit.Forms // this.toolStripButtonWaveformZoomIn.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; this.toolStripButtonWaveformZoomIn.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonWaveformZoomIn.Image"))); + this.toolStripButtonWaveformZoomIn.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; this.toolStripButtonWaveformZoomIn.ImageTransparentColor = System.Drawing.Color.Magenta; this.toolStripButtonWaveformZoomIn.Name = "toolStripButtonWaveformZoomIn"; this.toolStripButtonWaveformZoomIn.Size = new System.Drawing.Size(23, 22); @@ -3416,6 +3417,7 @@ namespace Nikse.SubtitleEdit.Forms this.toolStripButtonWaveformPause.AutoToolTip = false; this.toolStripButtonWaveformPause.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; this.toolStripButtonWaveformPause.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonWaveformPause.Image"))); + this.toolStripButtonWaveformPause.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; this.toolStripButtonWaveformPause.ImageTransparentColor = System.Drawing.Color.Magenta; this.toolStripButtonWaveformPause.Name = "toolStripButtonWaveformPause"; this.toolStripButtonWaveformPause.Size = new System.Drawing.Size(23, 22); @@ -3428,6 +3430,7 @@ namespace Nikse.SubtitleEdit.Forms this.toolStripButtonWaveformPlay.AutoToolTip = false; this.toolStripButtonWaveformPlay.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; this.toolStripButtonWaveformPlay.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonWaveformPlay.Image"))); + this.toolStripButtonWaveformPlay.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; this.toolStripButtonWaveformPlay.ImageTransparentColor = System.Drawing.Color.Magenta; this.toolStripButtonWaveformPlay.Name = "toolStripButtonWaveformPlay"; this.toolStripButtonWaveformPlay.Size = new System.Drawing.Size(23, 22); @@ -3438,6 +3441,7 @@ namespace Nikse.SubtitleEdit.Forms // this.toolStripButtonLockCenter.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; this.toolStripButtonLockCenter.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonLockCenter.Image"))); + this.toolStripButtonLockCenter.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; this.toolStripButtonLockCenter.ImageTransparentColor = System.Drawing.Color.Magenta; this.toolStripButtonLockCenter.Name = "toolStripButtonLockCenter"; this.toolStripButtonLockCenter.Size = new System.Drawing.Size(23, 22); @@ -3448,6 +3452,7 @@ namespace Nikse.SubtitleEdit.Forms // this.toolStripSplitButtonPlayRate.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; this.toolStripSplitButtonPlayRate.Image = ((System.Drawing.Image)(resources.GetObject("toolStripSplitButtonPlayRate.Image"))); + this.toolStripSplitButtonPlayRate.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; this.toolStripSplitButtonPlayRate.ImageTransparentColor = System.Drawing.Color.Magenta; this.toolStripSplitButtonPlayRate.Name = "toolStripSplitButtonPlayRate"; this.toolStripSplitButtonPlayRate.Size = new System.Drawing.Size(32, 22); @@ -5599,13 +5604,6 @@ namespace Nikse.SubtitleEdit.Forms this.aSSStylesToolStripMenuItem.Text = "ASS styles..."; this.aSSStylesToolStripMenuItem.Click += new System.EventHandler(this.aSSStylesToolStripMenuItem_Click); // - // imageListPlayRate - // - this.imageListPlayRate.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageListPlayRate.ImageStream"))); - this.imageListPlayRate.TransparentColor = System.Drawing.Color.Transparent; - this.imageListPlayRate.Images.SetKeyName(0, "FastForward.png"); - this.imageListPlayRate.Images.SetKeyName(1, "FastForwardHighLight.png"); - // // timerTextUndo // this.timerTextUndo.Interval = 700; @@ -5965,7 +5963,6 @@ namespace Nikse.SubtitleEdit.Forms private System.Windows.Forms.ToolStripMenuItem openOriginalToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem removeOriginalToolStripMenuItem; private System.Windows.Forms.ToolStripSplitButton toolStripSplitButtonPlayRate; - private System.Windows.Forms.ImageList imageListPlayRate; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemSetAudioTrack; private System.Windows.Forms.Button buttonSplitLine; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemChangeFrameRate2; diff --git a/src/ui/Forms/Main.cs b/src/ui/Forms/Main.cs index c428a29ab..7c6dd2d22 100644 --- a/src/ui/Forms/Main.cs +++ b/src/ui/Forms/Main.cs @@ -6002,7 +6002,8 @@ namespace Nikse.SubtitleEdit.Forms TryLoadIcon(toolStripButtonWaveformPlay, "WaveformPlay"); TryLoadIcon(toolStripButtonLockCenter, "WaveformCenter"); TryLoadIcon(toolStripSplitButtonPlayRate, "WaveformPlaybackSpeed"); - // IttProperties, WebVttProperties, WebVttStyle, EbuProperties + + // Other images: IttProperties, WebVttProperties, WebVttStyle, EbuProperties } toolStripButtonFileNew.Visible = gs.ShowToolbarNew; @@ -17719,7 +17720,7 @@ namespace Nikse.SubtitleEdit.Forms { mediaPlayer.VideoPlayer.PlayRate = 1.0; InitializePlayRateDropDown(); - //toolStripSplitButtonPlayRate.Image = imageListPlayRate.Images[0]; + TryLoadIcon(toolStripSplitButtonPlayRate, "WaveformPlaybackSpeed"); } } else if (audioVisualizer.Focused && audioVisualizer.NewSelectionParagraph != null && e.KeyData == _shortcuts.WaveformAddTextAtHere) @@ -25245,13 +25246,12 @@ namespace Nikse.SubtitleEdit.Forms playRateDropDownItem.Checked = true; if (Math.Abs(factor - 1) < 0.01) { + TryLoadIcon(toolStripSplitButtonPlayRate, "WaveformPlaybackSpeed"); } else { - toolStripSplitButtonPlayRate.Select(); + TryLoadIcon(toolStripSplitButtonPlayRate, "WaveformPlaybackSpeedSelected"); } - - //toolStripSplitButtonPlayRate.Image = Math.Abs(factor - 1) < 0.01 ? imageListPlayRate.Images[0] : imageListPlayRate.Images[1]; } try @@ -33075,7 +33075,7 @@ namespace Nikse.SubtitleEdit.Forms TryLoadIcon(toolStripButtonXProperties, "WebVttProperties"); toolStripButtonAssStyleManager.Visible = true; - toolStripButtonAssStyleManager.ToolTipText = string.Format(LanguageSettings.Current.WebVttStyleManager.Title, new WebVTT().Name); + toolStripButtonAssStyleManager.ToolTipText = string.Format(LanguageSettings.Current.WebVttStyleManager.Title, new WebVTT().Name); toolStripButtonAssStyleManager.Image = Properties.Resources.webvtt; TryLoadIcon(toolStripButtonAssStyleManager, "WebVttStyle"); diff --git a/src/ui/Forms/Main.resx b/src/ui/Forms/Main.resx index 117661966..311d7a496 100644 --- a/src/ui/Forms/Main.resx +++ b/src/ui/Forms/Main.resx @@ -849,55 +849,6 @@ 17, 95 - - 17, 56 - - - - AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w - LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD2 - CAAAAk1TRnQBSQFMAgEBAgEAAeQBLgHkAS4BEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo - AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA - AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 - AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA - AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm - AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM - AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA - ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz - AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ - AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM - AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA - AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA - AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ - AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/ - AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA - AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm - ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ - Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz - AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA - AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM - AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM - ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM - Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA - AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM - AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ - AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz - AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm - AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw - AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/xEAEHUwABB1MAAQdSQA - AewB9AQAAewB9AQABHUB7AV1AewFdSQAAewBDwHyAwAB7AEPAfIDAAR1AewBDwR1AewBDwR1JAAB7AFJ - AQ8B8gIAAewBSQEPAfICAAR1AewBSQEPA3UB7AFJAQ8DdSAAAewBEQFDARUBFAFyAUkBDwEHAesBFAFy - AUkBDwHyAQAB7AERAUMBFQEUAXIBSQEPAQcB6wEUAXIBSQEPAnUgAAHtAQgBeARyAUkBDwRyAUkBDwHy - Ae0BCAF4BHIBSQEPBHIBSQEPAXUgAAGSAQgDmAJ4AnIBbQGYAngCcgFtAZIBCAOYAngCcgFtAZgCeAJy - AW0gAAEcAcIECAJ4AewBmQIIAngB7AHzARwBwgQIAngB7AGZAggCeAHsAXUgAAGYARwBkgHtAewBCAGY - AewB8AHvAewBCAGYAewB8wEAAZgBHAGSAe0B7AEIAZgB7AHwAe8B7AEIAZgB7AJ1JAAB7QEIAewB8wIA - Ae0BCAHsAfMCAAR1Ae0BCAHsA3UB7QEIAewDdSQAAZIB7AHzAwABkgHsAfMDAAR1AZIB7AR1AZIB7AR1 - JAABHAH0BAABHAH0BAAEdQEcBXUBHAV1MAAQdTAAEHUgAAFCAU0BPgcAAT4DAAEoAwABQAMAARADAAEB - AQABAQUAAYAXAAP/AQAC/wYAAv8GAAL/BgAB8wHPBgAB8QHHBgAB8AHDBwABAR8AAQEGAAHwAcMGAAHx - AccGAAHzAc8GAAL/BgAC/wYACw== - - 339, 89 From dc5db7213675c81c01d94cd1a14774c306163e5c Mon Sep 17 00:00:00 2001 From: niksedk Date: Sun, 2 Jul 2023 21:38:15 +0200 Subject: [PATCH 65/96] Work on WaveformPlaybackSpeedSelected - thx jmaraujouy :) --- Icons/Black/WaveformPlaybackSpeed.png | Bin 2250 -> 2369 bytes Icons/Black/WaveformPlaybackSpeedSelected.png | Bin 0 -> 2345 bytes Icons/DarkTheme/WaveformPlaybackSpeed.png | Bin 2044 -> 2081 bytes .../WaveformPlaybackSpeedSelected.png | Bin 0 -> 2345 bytes Icons/DefaultTheme/WaveformPlaybackSpeed.png | Bin 2244 -> 2082 bytes .../WaveformPlaybackSpeedSelected.png | Bin 0 -> 2353 bytes src/libse/Common/Settings.cs | 9 + src/ui/Forms/Main.Designer.cs | 522 +++++++++--------- src/ui/Forms/Options/Settings.Designer.cs | 31 +- src/ui/Forms/Options/Settings.cs | 14 + src/ui/Logic/Language.cs | 1 + src/ui/Logic/LanguageStructure.cs | 1 + 12 files changed, 316 insertions(+), 262 deletions(-) create mode 100644 Icons/Black/WaveformPlaybackSpeedSelected.png create mode 100644 Icons/DarkTheme/WaveformPlaybackSpeedSelected.png create mode 100644 Icons/DefaultTheme/WaveformPlaybackSpeedSelected.png diff --git a/Icons/Black/WaveformPlaybackSpeed.png b/Icons/Black/WaveformPlaybackSpeed.png index 3e7d1c242c0da33632f9173183e02f7057401ccd..acbc0c539e5cfa1bee92f7577e1fa59b67806418 100644 GIT binary patch delta 827 zcmX>lcu;7=2_|+kD?@WDV~fe>nbhFyKTH8C$wp>r#%4)Ix|SBk2D+xkCWg8erfEjH ziH4~LDJDi17RKfllM9%&R7{Lb5{(j#EOe8TQ%rQtl1)r?Et1j_b(4}!QqnAqQq2?1 zQzq|YR#7oCH8V3aHnq^TNHej}H8(La0Ge%P0@P=gVqlPJY?zj4Hkpkjj5vi2EdN!~ zER&4Q%q&cFEsaf*byE#Zl5~?yj4gEyOiYqfla0*H6O&UW7qCfzJO)GtlP9tTO%`J_ zBhqsajo{Fk$hNvZ;%NSP1_s8Lo-U3d7QJ()Z1j_M6lk-TRu&OouDv*?I6tAH!DCt1 zrI~$~@)>Lz-}asJbAPUVxiIw-%OV?wXPlc@`3rcbt(cVbKXLlwo(=VxTdT{B@1J{f zCil1{y8)YD<9Ubqcek+pW4PbAN&SUr!3O0ESJ?M4I5)^CUh)m#uMat}_ZkDM0fSqV zc`3u3vN^^5d;IP*8!zxl*m|vU(@BXLTXHtM+vcGCz~e&kgZ0N2w%Pg%-ClL@MS1iB z^{D%dpH*hX95$M9YT1PI+!e!mTlUewb7}CI`y|ZOdic_C~ulploPCb zW8*dNv&O~-8`S4zDjt@0y?mvse!@-Ngw-bS)FO9Ajp>@K^39Ddvt?!%Kg1o9l!1 z9!$ADH%TjaS|hj9RPiHR`O51TxNZ4UDePM8wCCi##j`5*pLv@)z2NiWxzAecvp2F< zD9-soYigd*}3~HS9I2WhdOt#8>$4tnu+b@HB2(s`dlM q9}G22-?ld_i(=m2;Jx4ve=d8me0!ClD+2=qCxfS}pUXO@geCx7|3Xaw delta 707 zcmX>obV_i;2_|+!D??)|1JlXpnbhFyKTH8CMwV%2$*HNSx=D#9=DL=qCW*S17Ut%< z$)*NIiAE+yCYC1VlM9%&R4fyXjSY=WOm%_k&2>{vO^kFcEt8XVjm%Ax5>t~6lTu6! zC+}lcQAtiUFiuWQG15&-_{agO?X7iH@n<8$TJ1wF! zDwI!enz5fDt}({UfmtF!c{h8uuED)RzBgOA7KqNA7|Zg{#!W!Ej;X$`bZw)i0e{Ey zTdQ4PCF=|Q_6vR>9l^fOU$@`XAb8{EbLw9l^rub{vOMM_`0G%gxy9L46OVjj%3OM<_dZ9wT#0&y zo4MP6#iM7pGM?JlAF%eo-Kk3+xEU<9UKp6vTzxot-Esa8O_N`>JbCv|;k)}E_J{46 Vf_*RNUd~_u0#8>zmvv4FO#oUo3jY8A diff --git a/Icons/Black/WaveformPlaybackSpeedSelected.png b/Icons/Black/WaveformPlaybackSpeedSelected.png new file mode 100644 index 0000000000000000000000000000000000000000..d2180ab0d98a4373c9aa01f250dbf1ad60e4c7bf GIT binary patch literal 2345 zcmb_e4Q$k881C3|zz72(F(5K($CSTb+iUNya$|FM;}*EFY(oYLqt||SSGa3y+uhFw zY{8!Z4v2yhfq*dq5^<9#5J3Yd2n>u)Fa#J0BOrf*f0jz~SHSa=#?i+F|MzVTKMzlR74LKnLHa#m92v;!wL=iZ z^p99otylXdv%DNJbAs##=6FPbXapHQA+B)zT%e*fgt;^eM$4 zBzo&qP+3=2#n;W{odPzY039D^VSotGIW!&#OBx$@Vad2Gyfz*a7@CCWb6r@GL5NoS z%F$w31*p?Z;yg)`sNHF%>=bXY2gacm(qbV<2SM3z%E6KrmZ8zq4})~75MV3ZB`Gp^ z=fXm|uCN3Vi^a?_+AOOMjhX+F3(HNr#oRlul4FBF-rUWhRZ9l0bn^^F>Q3W0l>}az=grC(KuOBH2fA(|%dfkMv+oX$NIEbweVRwEoNSd4H%KqyiWL(?*{#d26yAu-I3 zPG;frv89rxa}p0q-7XB)Y!*d zSVWVaU^(9Kx(nltCIbOWJr;Y=g8Us|#g#}bOf^v!y7J1I7m5540YUZZ9gX%JR*DLqs(YWY?B?>tGw9N)R z;-ncK2NdJS{S58INrvG8T*mAipO(10L}}AQ-=|IgI1;7g=R=$n1aO5Wu*Wav(fr?; zWsk*lpTYlMF@&)$cRHE)ugR0|x~<{RFv&-7V=yk$TN1oUZ)!k-I;n8Wns{ae+&446 zFLf7HIhHoRLzU$f4fL$XCwZ5h@1tdY+Phj@gR`%~`2tQD;ZQ*cn{)U8TGUc43aS-1e+F3UeL?_N^u83anXAO{; z_0B?1L1m?{Y*S=Bg_{BY&ROy@&Q}K62{vojVhmDxT=iFdimO}%E{Y;Lq8iiHQ{Ty792eIhn4H>a!aV}p#4O_oYq^1 z4=s55ZE3;Qqf2fCnkQt;I((p}y1l6B`WyOhYjR89T6JYp<4>kbw-()4`r*NvLGqU6 mJ2SpO)(qOQ`t)t;@80hnnAd=tw`Uq3Go_v~cgqX27yb(>KOxHi literal 0 HcmV?d00001 diff --git a/Icons/DarkTheme/WaveformPlaybackSpeed.png b/Icons/DarkTheme/WaveformPlaybackSpeed.png index 08de6941f5e85e78a89d73a1bc285ba286d92ff8..46d44440198c83531b92bc422a010d8453dd0630 100644 GIT binary patch delta 695 zcmeyvzffSq2_|+kD??K&Q-jIpnbhFyKTH8CmZpg*CW%H#x+zI1$+{*+CI-5eiN=Py zscGg$N#-f0mdWPHlM9%&R7}%Mj7*ITOmr<%OwDyo%}tDTEsaf0bd4>NEt4$`O;SwF zQYY_YR#CAuPEAcUG&RySwzLGQF)~ThO)^bQ(oHl;wKO)iFi9~?Hkr)E5=NZD2A2QC zxv_yogx6fxz$nBJ=GBEPHj~)$>({-k?qOhHoaX7`7-G@8b?U*wLk0q_@-syq?AG^U zbzp7e^I`X6ZR9#2Dxjqx+rsyVk4g5&p}Vpc?6t1hiD@Se)~C4}U9wvnrfv9gSD)b* z6E4vTwjFWnzaNtgUOwPF>{f380m zB66UAf&78)H#*$+r_PLCGC?GUA^z3*#@^0lQ(I-@&!2aY&*GFN^S#Ng;YQl* zI$I|z8@k$l2s>bDSFXAtAwu$l?&${et+z$qbXew^7`jZ#YCHd$X@%*3o%=>EvIkmk zH8Wm0GKXzy*QJ-cjgk*;XSiy(&oA22!u6s`{RP>y)jvwE9%DCLCibSIk~#j*w*^5N z*^BO8UeA$!FypK0;VR#K{6}QhcC_!|7iQY=u#UCm;{xM4_OPwDd>+?7;Qr{MtCF$U zQu5!I_9rRg9ifFmv*WrJgdLFGK2<0rDvZJWM{rzn-g)~cB3C@u+&jBkEm`0&F??*$X6atE}D_W@cBaj!i)bt*D*fsE65k?yyD3K N1fH&bF6*2UngISA3n2gi delta 658 zcmZ1|@P~iH2_|+!D+3EFQ{&0!nbhFyKTH8CNhang#zw|Tx)v6RNxDhqCKkFDMoH$n z#+DYwiDs$hmT8velM9%&R4fyXjSY=WOm)-DlFfBfO-+n+EiIFib&bqTlM+*t4U)lbC(@3-@sQhKT0k;VOdi8T>lrzqAF7lILa<^QnV}4ZP;7X z9dUf;HJR@-ydQZK_Wxg39e?LJ^MoIkdAG|{kC(Iv%$XLqsyT`O)7!>d62Xq~T|CRD zuaDyQ@U~jXAg1*7BX8rm#N&sREkYF=(jRDlsE_<u)Fa#J0BOrf*f0jz~SHSa=#?i+F|MzVTKMzlR74LKnLHa#m92v;!wL=iZ z^p99otylXdv%DNJbAs##=6FPbXapHQA+B)zT%e*fgt;^eM$4 zBzo&qP+3=2#n;W{odPzY039D^VSotGIW!&#OBx$@Vad2Gyfz*a7@CCWb6r@GL5NoS z%F$w31*p?Z;yg)`sNHF%>=bXY2gacm(qbV<2SM3z%E6KrmZ8zq4})~75MV3ZB`Gp^ z=fXm|uCN3Vi^a?_+AOOMjhX+F3(HNr#oRlul4FBF-rUWhRZ9l0bn^^F>Q3W0l>}az=grC(KuOBH2fA(|%dfkMv+oX$NIEbweVRwEoNSd4H%KqyiWL(?*{#d26yAu-I3 zPG;frv89rxa}p0q-7XB)Y!*d zSVWVaU^(9Kx(nltCIbOWJr;Y=g8Us|#g#}bOf^v!y7J1I7m5540YUZZ9gX%JR*DLqs(YWY?B?>tGw9N)R z;-ncK2NdJS{S58INrvG8T*mAipO(10L}}AQ-=|IgI1;7g=R=$n1aO5Wu*Wav(fr?; zWsk*lpTYlMF@&)$cRHE)ugR0|x~<{RFv&-7V=yk$TN1oUZ)!k-I;n8Wns{ae+&446 zFLf7HIhHoRLzU$f4fL$XCwZ5h@1tdY+Phj@gR`%~`2tQD;ZQ*cn{)U8TGUc43aS-1e+F3UeL?_N^u83anXAO{; z_0B?1L1m?{Y*S=Bg_{BY&ROy@&Q}K62{vojVhmDxT=iFdimO}%E{Y;Lq8iiHQ{Ty792eIhn4H>a!aV}p#4O_oYq^1 z4=s55ZE3;Qqf2fCnkQt;I((p}y1l6B`WyOhYjR89T6JYp<4>kbw-()4`r*NvLGqU6 mJ2SpO)(qOQ`t)t;@80hnnAd=tw`Uq3Go_v~cgqX27yb(>KOxHi literal 0 HcmV?d00001 diff --git a/Icons/DefaultTheme/WaveformPlaybackSpeed.png b/Icons/DefaultTheme/WaveformPlaybackSpeed.png index 0f92f18c305b1835427a15b0ece55ae20f161038..6ac68f9d9963c2e89c633e2222f4186b7d3b148a 100644 GIT binary patch delta 692 zcmX>ixJY1vC8Oa+t3D=nGb=+=D`TU{=b6;t>_1EaDu!l;#wjVriMpv~#wofcmL@5> z7KX`|x@kr!DHaAP#%X4jhLa1JwN#7~jSLNpQj&BNO;b{J%?wS9brX{;4Rj4HER)R4 zEi6rp(o!eyV^&eINJ=#~FfzB$O|wik&^0kKNz+YCNwd&RwXiTZF)&X|OiMJK%*GN% zoWcf{|3tcxO$zR@iEOLuOE2EgVqjpL?&;zfV$pkb>c+xD4g#+7a^eew&doGlz|_s> z!d}GMc0o|U@<>R6RRiA|J{_a<6)dF+?BCCC7rHc~oGH!FTYWwp$i8;tS?ByTWj8cbXoWqta1Y`x26eOI;` zM#~R;HYdCyEAC0$f2041$0Eayb=r}lY{{tT)60W=y6*^C*JPSbV9=jC{amUT-;9-$ zrs+(pP(7r%;kft2OZ_ZArl=m+d@OYO4MEejPb7?9CN*6*W##%gz3Z&=wML7}JB(Ra z11~qkL|WPApNZ=@>rmVC{&EzfUt~zV>?PA>A$ww4I~`?`z29`~YRs>z4v4*UD`of6 zyMpJ07H>cQ;&|}$O7}Gxel|~X3pkF59+nmO#_UzYD%N_;<@f$0>W@03CN(Ur5&HA; z`@xfb0=plr*!Vk;<%&{F@l8#}olm)ri2j=*&J&|me?W8P;vG@(_uOvEd{B+=ZmHO> zbJ%Q=>bfn42h;0x#kw|%hpoPQ;B=tTnq>KJ6`WqXEq;~%-y{E0G|hO=we-0RK;Y@> K=d#Wzp$Py*`V4vi delta 728 zcmZ1^a71u|CF8%1R((wDhE|3~Rwf3M&oimP*?*Vl&GxCMBjO z8z!Zg7*5{DtfG>fYG9n4nqs7znrLXEYm#bWsB4*&YNBgsYLH@)mXv62n3yz~jU|jY zg$*qKRgz51Q;dy_lXNXC5|eb3%uOtGEsT=Pb&V}8j1$dL%`MX`%_ldoi13>08W@Eb z8d@1xSeY76UdUoIiA`*>3XACEI95gCe2Q!eB*4I?~f z_M3}W-@d!Q`u~zZBOd1K2kwSOG+wbfnIqmc{Q&ob)9f!Ap`U_)88a1s#s)l36_c?XAisqW^;!&$woN-fm&F`^eJmVp%L7p43nLCb6<;?gN&8 z(T40ok?-H^ud3X7dBK60C~4()4Zj1*6CVH2O`cix{O6AORh+3U6)P9@97xxhl6Piq zMeoHmT_SnsCxoqvZSSzYxm#_w$jq#qznq3Myia!ADPhsRYVvNG|DEK#io;KTFwQd! llAU#ak;T7T~y}o|m@Bjb* z{=e`0x;S^-sFdWM$ry&EGB`xFtvgU`5vXG9@7?v@#Ob1div~WKxR8$XfVb>l4S7Z+{CCx|s^ekAU zjGk@4Nwdf0NwbS3K_-S~;u&QkA_zeX;ANqpYKmnZBFZbGYx^-p;8BQG>>-BR0r7la zE}o?s5EmRYDbX~Iy95X0VkD<4Fa&qfPA5gXDTXH*w@5ohj>Tg?0);c=fH=`RG8PQo zd59v*(nX32hr^CA>(GosiV*~XqMek}Ng@Pkma7&hBUQ6s8-o{`lA-99qN%ve2>e=! z)Qe#ZGFCYj63EM3dKX1R(2^WBPPfl(Pmz`4ylRI)JhBqW|yKg``Oj#VwM4c zr5Sme7HsQOZd=N@lXKAcz$uCk1aa# zsl@KAJ-*fDvL+#pTTxjKGEM>TBy7qF|2?T(6oqm}W(&zvXxVCJ@8w#3eAlRPO z&Pqm%d>YU5Y?_;N2M~pe<7iTF^BgHjyiC)OWdeY=-5fQDI9f4L>&j#EV-kEZb`@0c zs3$}q*AfWi2!595-5e>f zoJ2x~^CRD|0!ee61kp0)0#aP!_7cTSk9<$Jnf_rUipeh(0ksgK6`CR*zL*E|e`}U^ zET;Vo{{M=h>~*=-$<%*M9(~tt4M&EFK0+IVeHq`9&`o?(gDTR=KwDOzWM(mjB^=N3 z4$pHh-BJ0rI*obal|8+(x8|)HRih6%o;Y^Q1m$4zB>qSx9N1~l*n|5@K|a--n|?l_ zY2%WH<$68Q9oGJ{c6{@+)Q_rXd>Wk5cW!28<~6c(SD(FSW=N6V*RkGL_|Uu!wX?!4 z+Xk%(?yG$&a&~EL!T8$!j&HwPy)ohac{`f0{)an`oOMQgq_OjWH-~1Nd>K1E?9|Mq zO`e?xdaU_u$oBKq!-^wcZro6Da!_LTU&pTxt!I{{lZV+IeJd7TsoLyMUsGT8{W?!g z$BvN^D|5dKOs#saOT)^7 z<#jbbCT1OfjN9q_IHll&-B!gjsZ~{DUP$_5vwGP>xqc)jb5gI&55TsD%9)hNT7 z=N-*0dH2%XNai`Or>=U1FDs*k?@*b!>BAmd8mWa_o{cOyv(~>gj_>!0pTIrq}kWBa>aIyGuAxyV&~Bl+S)^X~;a$Th*;37Z=)zIL{} z9wgTUSL_bY>&{I7jruvI>xAEHyKNtI^XNBMspARr=YQ1@R_%|Poa}MlZ6jvR{}-F} BHP`?E literal 0 HcmV?d00001 diff --git a/src/libse/Common/Settings.cs b/src/libse/Common/Settings.cs index b7dd14278..93321a4b6 100644 --- a/src/libse/Common/Settings.cs +++ b/src/libse/Common/Settings.cs @@ -1354,6 +1354,7 @@ $HorzAlign = Center public string VideoPlayerPreviewFontName { get; set; } public int VideoPlayerPreviewFontSize { get; set; } public bool VideoPlayerPreviewFontBold { get; set; } + public int VideoPlayerPreviewVerticalMargin { get; set; } public bool VideoPlayerShowStopButton { get; set; } public bool VideoPlayerShowFullscreenButton { get; set; } public bool VideoPlayerShowMuteButton { get; set; } @@ -1562,6 +1563,7 @@ $HorzAlign = Center VideoPlayerPreviewFontName = "Tahoma"; VideoPlayerPreviewFontSize = 12; VideoPlayerPreviewFontBold = true; + VideoPlayerPreviewVerticalMargin = 12; VideoPlayerShowStopButton = true; VideoPlayerShowMuteButton = true; VideoPlayerShowFullscreenButton = true; @@ -3814,6 +3816,12 @@ $HorzAlign = Center settings.General.VideoPlayerPreviewFontBold = Convert.ToBoolean(subNode.InnerText, CultureInfo.InvariantCulture); } + subNode = node.SelectSingleNode("VideoPlayerPreviewVerticalMargin"); + if (subNode != null) + { + settings.General.VideoPlayerPreviewVerticalMargin = Convert.ToInt32(subNode.InnerText, CultureInfo.InvariantCulture); + } + subNode = node.SelectSingleNode("VideoPlayerShowStopButton"); if (subNode != null) { @@ -10373,6 +10381,7 @@ $HorzAlign = Center textWriter.WriteElementString("VideoPlayerPreviewFontName", settings.General.VideoPlayerPreviewFontName); textWriter.WriteElementString("VideoPlayerPreviewFontSize", settings.General.VideoPlayerPreviewFontSize.ToString(CultureInfo.InvariantCulture)); textWriter.WriteElementString("VideoPlayerPreviewFontBold", settings.General.VideoPlayerPreviewFontBold.ToString(CultureInfo.InvariantCulture)); + textWriter.WriteElementString("VideoPlayerPreviewVerticalMargin", settings.General.VideoPlayerPreviewVerticalMargin.ToString(CultureInfo.InvariantCulture)); textWriter.WriteElementString("VideoPlayerShowStopButton", settings.General.VideoPlayerShowStopButton.ToString(CultureInfo.InvariantCulture)); textWriter.WriteElementString("VideoPlayerShowMuteButton", settings.General.VideoPlayerShowMuteButton.ToString(CultureInfo.InvariantCulture)); textWriter.WriteElementString("VideoPlayerShowFullscreenButton", settings.General.VideoPlayerShowFullscreenButton.ToString(CultureInfo.InvariantCulture)); diff --git a/src/ui/Forms/Main.Designer.cs b/src/ui/Forms/Main.Designer.cs index 8b45f33fa..9277bffd1 100644 --- a/src/ui/Forms/Main.Designer.cs +++ b/src/ui/Forms/Main.Designer.cs @@ -40,9 +40,9 @@ namespace Nikse.SubtitleEdit.Forms { this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Main)); + Nikse.SubtitleEdit.Core.Common.TimeCode timeCode3 = new Nikse.SubtitleEdit.Core.Common.TimeCode(); Nikse.SubtitleEdit.Core.Common.TimeCode timeCode1 = new Nikse.SubtitleEdit.Core.Common.TimeCode(); Nikse.SubtitleEdit.Core.Common.TimeCode timeCode2 = new Nikse.SubtitleEdit.Core.Common.TimeCode(); - Nikse.SubtitleEdit.Core.Common.TimeCode timeCode3 = new Nikse.SubtitleEdit.Core.Common.TimeCode(); this.statusStrip1 = new System.Windows.Forms.StatusStrip(); this.labelStatus = new System.Windows.Forms.ToolStripStatusLabel(); this.toolStripSelected = new System.Windows.Forms.ToolStripStatusLabel(); @@ -357,7 +357,6 @@ namespace Nikse.SubtitleEdit.Forms this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog(); 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(); @@ -393,7 +392,6 @@ namespace Nikse.SubtitleEdit.Forms 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(); @@ -411,7 +409,6 @@ namespace Nikse.SubtitleEdit.Forms 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(); @@ -464,14 +461,12 @@ namespace Nikse.SubtitleEdit.Forms this.splitContainerMain = new System.Windows.Forms.SplitContainer(); this.splitContainer1 = new System.Windows.Forms.SplitContainer(); 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.numericUpDownLayer = new System.Windows.Forms.NumericUpDown(); this.labelLayer = new System.Windows.Forms.Label(); this.panelBookmark = new System.Windows.Forms.Panel(); this.labelBookmark = new System.Windows.Forms.Label(); - this.textBoxListViewText = new Nikse.SubtitleEdit.Controls.SETextBox(); this.contextMenuStripTextBoxListView = new System.Windows.Forms.ContextMenuStrip(this.components); this.toolStripSeparatorSpellCheckSuggestions = new System.Windows.Forms.ToolStripSeparator(); this.toolStripMenuItemSpellCheckSkipOnce = new System.Windows.Forms.ToolStripMenuItem(); @@ -533,13 +528,11 @@ namespace Nikse.SubtitleEdit.Forms this.labelTextOriginalLineLengths = new System.Windows.Forms.Label(); this.labelOriginalText = new System.Windows.Forms.Label(); this.labelText = new System.Windows.Forms.Label(); - this.textBoxListViewTextOriginal = new Nikse.SubtitleEdit.Controls.SETextBox(); this.buttonAutoBreak = new System.Windows.Forms.Button(); this.labelTextLineLengths = new System.Windows.Forms.Label(); 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(); @@ -567,7 +560,6 @@ namespace Nikse.SubtitleEdit.Forms this.startOfLefttorightOverrideLROToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.startOfRighttoleftOverrideRLOToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 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.aSSStylesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -575,6 +567,14 @@ namespace Nikse.SubtitleEdit.Forms this.timerOriginalTextUndo = new System.Windows.Forms.Timer(this.components); this.contextMenuStripShowVideoControls = new System.Windows.Forms.ContextMenuStrip(this.components); this.toolStripMenuItemShowVideoControls = new System.Windows.Forms.ToolStripMenuItem(); + this.SubtitleListview1 = new Nikse.SubtitleEdit.Controls.SubtitleListView(); + this.textBoxListViewText = new Nikse.SubtitleEdit.Controls.SETextBox(); + this.textBoxListViewTextOriginal = new Nikse.SubtitleEdit.Controls.SETextBox(); + this.timeUpDownStartTime = new Nikse.SubtitleEdit.Controls.TimeUpDown(); + 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.statusStrip1.SuspendLayout(); this.toolStrip1.SuspendLayout(); this.menuStrip1.SuspendLayout(); @@ -3266,55 +3266,6 @@ namespace Nikse.SubtitleEdit.Forms 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.Chapters = null; - this.audioVisualizer.ChaptersColor = System.Drawing.Color.Empty; - this.audioVisualizer.ClosenessForBorderSelection = 15; - this.audioVisualizer.Color = System.Drawing.Color.GreenYellow; - this.audioVisualizer.CursorColor = System.Drawing.Color.Empty; - this.audioVisualizer.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F); - this.audioVisualizer.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(155)))), ((int)(((byte)(155))))); - 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.Move100MsLeft = System.Windows.Forms.Keys.None; - this.audioVisualizer.Move100MsRight = System.Windows.Forms.Keys.None; - this.audioVisualizer.MoveOneSecondLeft = System.Windows.Forms.Keys.None; - this.audioVisualizer.MoveOneSecondRight = System.Windows.Forms.Keys.None; - this.audioVisualizer.Name = "audioVisualizer"; - this.audioVisualizer.NewSelectionParagraph = null; - this.audioVisualizer.ParagraphColor = System.Drawing.Color.LimeGreen; - this.audioVisualizer.SelectedColor = System.Drawing.Color.Red; - this.audioVisualizer.ShotChanges = ((System.Collections.Generic.List)(resources.GetObject("audioVisualizer.ShotChanges"))); - 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; @@ -3355,7 +3306,7 @@ namespace Nikse.SubtitleEdit.Forms this.panelWaveformControls.Controls.Add(this.toolStripWaveControls); this.panelWaveformControls.Location = new System.Drawing.Point(474, 265); this.panelWaveformControls.Name = "panelWaveformControls"; - this.panelWaveformControls.Size = new System.Drawing.Size(205, 30); + this.panelWaveformControls.Size = new System.Drawing.Size(212, 30); this.panelWaveformControls.TabIndex = 10; // // toolStripWaveControls @@ -3745,28 +3696,6 @@ namespace Nikse.SubtitleEdit.Forms this.tabPageCreate.Text = "Create"; this.tabPageCreate.UseVisualStyleBackColor = true; // - // timeUpDownVideoPosition - // - this.timeUpDownVideoPosition.AutoSize = true; - this.timeUpDownVideoPosition.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.timeUpDownVideoPosition.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.timeUpDownVideoPosition.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F); - this.timeUpDownVideoPosition.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(155)))), ((int)(((byte)(155))))); - this.timeUpDownVideoPosition.Location = new System.Drawing.Point(90, 190); - this.timeUpDownVideoPosition.Margin = new System.Windows.Forms.Padding(4); - this.timeUpDownVideoPosition.Name = "timeUpDownVideoPosition"; - this.timeUpDownVideoPosition.Size = new System.Drawing.Size(113, 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); @@ -3987,28 +3916,6 @@ namespace Nikse.SubtitleEdit.Forms this.tabPageAdjust.Text = "Adjust"; this.tabPageAdjust.UseVisualStyleBackColor = true; // - // timeUpDownVideoPositionAdjust - // - this.timeUpDownVideoPositionAdjust.AutoSize = true; - this.timeUpDownVideoPositionAdjust.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.timeUpDownVideoPositionAdjust.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.timeUpDownVideoPositionAdjust.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F); - this.timeUpDownVideoPositionAdjust.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(155)))), ((int)(((byte)(155))))); - this.timeUpDownVideoPositionAdjust.Location = new System.Drawing.Point(90, 215); - this.timeUpDownVideoPositionAdjust.Margin = new System.Windows.Forms.Padding(4); - this.timeUpDownVideoPositionAdjust.Name = "timeUpDownVideoPositionAdjust"; - this.timeUpDownVideoPositionAdjust.Size = new System.Drawing.Size(113, 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); @@ -4509,39 +4416,6 @@ namespace Nikse.SubtitleEdit.Forms this.splitContainerListViewAndText.TabIndex = 2; this.splitContainerListViewAndText.VisibleChanged += new System.EventHandler(this.ListViewVisibleChanged); // - // 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(740, 105); - 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.MouseDown += new System.Windows.Forms.MouseEventHandler(this.SubtitleListview1_MouseDown); - this.SubtitleListview1.MouseEnter += new System.EventHandler(this.SubtitleListview1_MouseEnter); - this.SubtitleListview1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.SubtitleListview1_MouseUp); - // // imageListBookmarks // this.imageListBookmarks.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit; @@ -4635,43 +4509,6 @@ namespace Nikse.SubtitleEdit.Forms this.labelBookmark.Text = "labelBookmark"; this.labelBookmark.DoubleClick += new System.EventHandler(this.labelBookmark_DoubleClick); // - // 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.BackColor = System.Drawing.SystemColors.WindowFrame; - this.textBoxListViewText.ContextMenuStrip = this.contextMenuStripTextBoxListView; - this.textBoxListViewText.CurrentLanguage = ""; - this.textBoxListViewText.CurrentLineIndex = 0; - this.textBoxListViewText.Enabled = false; - this.textBoxListViewText.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold); - this.textBoxListViewText.HideSelection = false; - this.textBoxListViewText.IsDictionaryDownloaded = true; - this.textBoxListViewText.IsSpellCheckerInitialized = false; - this.textBoxListViewText.IsSpellCheckRequested = false; - this.textBoxListViewText.IsWrongWord = false; - this.textBoxListViewText.LanguageChanged = false; - this.textBoxListViewText.Location = new System.Drawing.Point(184, 27); - this.textBoxListViewText.Multiline = true; - this.textBoxListViewText.Name = "textBoxListViewText"; - this.textBoxListViewText.Padding = new System.Windows.Forms.Padding(1); - this.textBoxListViewText.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Both; - this.textBoxListViewText.SelectedText = ""; - this.textBoxListViewText.SelectionLength = 0; - this.textBoxListViewText.SelectionStart = 0; - this.textBoxListViewText.Size = new System.Drawing.Size(430, 84); - this.textBoxListViewText.TabIndex = 5; - this.textBoxListViewText.TextBoxFont = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold); - this.textBoxListViewText.TextChanged += new System.EventHandler(this.TextBoxListViewTextTextChanged); - this.textBoxListViewText.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TextBoxListViewTextKeyDown); - this.textBoxListViewText.MouseClick += new System.Windows.Forms.MouseEventHandler(this.TextBoxListViewTextMouseClick); - this.textBoxListViewText.Enter += new System.EventHandler(this.TextBoxListViewTextEnter); - 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); - // // contextMenuStripTextBoxListView // this.contextMenuStripTextBoxListView.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -5182,43 +5019,6 @@ namespace Nikse.SubtitleEdit.Forms this.labelText.TabIndex = 5; this.labelText.Text = "Text"; // - // textBoxListViewTextOriginal - // - this.textBoxListViewTextOriginal.AllowDrop = true; - this.textBoxListViewTextOriginal.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.textBoxListViewTextOriginal.BackColor = System.Drawing.SystemColors.WindowFrame; - this.textBoxListViewTextOriginal.ContextMenuStrip = this.contextMenuStripTextBoxListView; - this.textBoxListViewTextOriginal.CurrentLanguage = ""; - this.textBoxListViewTextOriginal.CurrentLineIndex = 0; - this.textBoxListViewTextOriginal.Enabled = false; - this.textBoxListViewTextOriginal.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold); - this.textBoxListViewTextOriginal.HideSelection = false; - this.textBoxListViewTextOriginal.IsDictionaryDownloaded = true; - this.textBoxListViewTextOriginal.IsSpellCheckerInitialized = false; - this.textBoxListViewTextOriginal.IsSpellCheckRequested = false; - this.textBoxListViewTextOriginal.IsWrongWord = false; - this.textBoxListViewTextOriginal.LanguageChanged = false; - this.textBoxListViewTextOriginal.Location = new System.Drawing.Point(946, 28); - this.textBoxListViewTextOriginal.Multiline = true; - this.textBoxListViewTextOriginal.Name = "textBoxListViewTextOriginal"; - this.textBoxListViewTextOriginal.Padding = new System.Windows.Forms.Padding(1); - this.textBoxListViewTextOriginal.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Both; - this.textBoxListViewTextOriginal.SelectedText = ""; - this.textBoxListViewTextOriginal.SelectionLength = 0; - this.textBoxListViewTextOriginal.SelectionStart = 0; - this.textBoxListViewTextOriginal.Size = new System.Drawing.Size(16, 84); - this.textBoxListViewTextOriginal.TabIndex = 33; - this.textBoxListViewTextOriginal.TextBoxFont = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold); - this.textBoxListViewTextOriginal.Visible = false; - this.textBoxListViewTextOriginal.TextChanged += new System.EventHandler(this.textBoxListViewTextOriginal_TextChanged); - this.textBoxListViewTextOriginal.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TextBoxListViewTextOriginalKeyDown); - this.textBoxListViewTextOriginal.MouseClick += new System.Windows.Forms.MouseEventHandler(this.TextBoxListViewTextOriginalMouseClick); - this.textBoxListViewTextOriginal.Enter += new System.EventHandler(this.TextBoxListViewTextOriginalEnter); - this.textBoxListViewTextOriginal.KeyUp += new System.Windows.Forms.KeyEventHandler(this.TextBoxListViewTextOriginalKeyUp); - this.textBoxListViewTextOriginal.MouseMove += new System.Windows.Forms.MouseEventHandler(this.TextBoxListViewTextOriginalMouseMove); - // // buttonAutoBreak // this.buttonAutoBreak.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); @@ -5271,28 +5071,6 @@ namespace Nikse.SubtitleEdit.Forms 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.BackColor = System.Drawing.SystemColors.Control; - this.timeUpDownStartTime.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F); - this.timeUpDownStartTime.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(155)))), ((int)(((byte)(155))))); - 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(113, 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; @@ -5551,35 +5329,6 @@ namespace Nikse.SubtitleEdit.Forms 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.Chapters = null; - 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.SubtitleText = ""; - this.mediaPlayer.TabIndex = 5; - this.mediaPlayer.TextRightToLeft = System.Windows.Forms.RightToLeft.No; - this.mediaPlayer.UsingFrontCenterAudioChannelOnly = false; - 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[] { @@ -5628,6 +5377,257 @@ namespace Nikse.SubtitleEdit.Forms this.toolStripMenuItemShowVideoControls.Text = "Show video controls"; this.toolStripMenuItemShowVideoControls.Click += new System.EventHandler(this.toolStripMenuItemShowVideoControls_Click); // + // 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(740, 105); + 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.MouseDown += new System.Windows.Forms.MouseEventHandler(this.SubtitleListview1_MouseDown); + this.SubtitleListview1.MouseEnter += new System.EventHandler(this.SubtitleListview1_MouseEnter); + this.SubtitleListview1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.SubtitleListview1_MouseUp); + // + // 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.BackColor = System.Drawing.SystemColors.WindowFrame; + this.textBoxListViewText.ContextMenuStrip = this.contextMenuStripTextBoxListView; + this.textBoxListViewText.CurrentLanguage = ""; + this.textBoxListViewText.CurrentLineIndex = 0; + this.textBoxListViewText.Enabled = false; + this.textBoxListViewText.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold); + this.textBoxListViewText.HideSelection = false; + this.textBoxListViewText.IsDictionaryDownloaded = true; + this.textBoxListViewText.IsSpellCheckerInitialized = false; + this.textBoxListViewText.IsSpellCheckRequested = false; + this.textBoxListViewText.IsWrongWord = false; + this.textBoxListViewText.LanguageChanged = false; + this.textBoxListViewText.Location = new System.Drawing.Point(184, 27); + this.textBoxListViewText.Multiline = true; + this.textBoxListViewText.Name = "textBoxListViewText"; + this.textBoxListViewText.Padding = new System.Windows.Forms.Padding(1); + this.textBoxListViewText.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Both; + this.textBoxListViewText.SelectedText = ""; + this.textBoxListViewText.SelectionLength = 0; + this.textBoxListViewText.SelectionStart = 0; + this.textBoxListViewText.Size = new System.Drawing.Size(430, 84); + this.textBoxListViewText.TabIndex = 5; + this.textBoxListViewText.TextBoxFont = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold); + this.textBoxListViewText.TextChanged += new System.EventHandler(this.TextBoxListViewTextTextChanged); + this.textBoxListViewText.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TextBoxListViewTextKeyDown); + this.textBoxListViewText.MouseClick += new System.Windows.Forms.MouseEventHandler(this.TextBoxListViewTextMouseClick); + this.textBoxListViewText.Enter += new System.EventHandler(this.TextBoxListViewTextEnter); + 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); + // + // textBoxListViewTextOriginal + // + this.textBoxListViewTextOriginal.AllowDrop = true; + this.textBoxListViewTextOriginal.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.textBoxListViewTextOriginal.BackColor = System.Drawing.SystemColors.WindowFrame; + this.textBoxListViewTextOriginal.ContextMenuStrip = this.contextMenuStripTextBoxListView; + this.textBoxListViewTextOriginal.CurrentLanguage = ""; + this.textBoxListViewTextOriginal.CurrentLineIndex = 0; + this.textBoxListViewTextOriginal.Enabled = false; + this.textBoxListViewTextOriginal.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold); + this.textBoxListViewTextOriginal.HideSelection = false; + this.textBoxListViewTextOriginal.IsDictionaryDownloaded = true; + this.textBoxListViewTextOriginal.IsSpellCheckerInitialized = false; + this.textBoxListViewTextOriginal.IsSpellCheckRequested = false; + this.textBoxListViewTextOriginal.IsWrongWord = false; + this.textBoxListViewTextOriginal.LanguageChanged = false; + this.textBoxListViewTextOriginal.Location = new System.Drawing.Point(946, 28); + this.textBoxListViewTextOriginal.Multiline = true; + this.textBoxListViewTextOriginal.Name = "textBoxListViewTextOriginal"; + this.textBoxListViewTextOriginal.Padding = new System.Windows.Forms.Padding(1); + this.textBoxListViewTextOriginal.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Both; + this.textBoxListViewTextOriginal.SelectedText = ""; + this.textBoxListViewTextOriginal.SelectionLength = 0; + this.textBoxListViewTextOriginal.SelectionStart = 0; + this.textBoxListViewTextOriginal.Size = new System.Drawing.Size(16, 84); + this.textBoxListViewTextOriginal.TabIndex = 33; + this.textBoxListViewTextOriginal.TextBoxFont = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold); + this.textBoxListViewTextOriginal.Visible = false; + this.textBoxListViewTextOriginal.TextChanged += new System.EventHandler(this.textBoxListViewTextOriginal_TextChanged); + this.textBoxListViewTextOriginal.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TextBoxListViewTextOriginalKeyDown); + this.textBoxListViewTextOriginal.MouseClick += new System.Windows.Forms.MouseEventHandler(this.TextBoxListViewTextOriginalMouseClick); + this.textBoxListViewTextOriginal.Enter += new System.EventHandler(this.TextBoxListViewTextOriginalEnter); + this.textBoxListViewTextOriginal.KeyUp += new System.Windows.Forms.KeyEventHandler(this.TextBoxListViewTextOriginalKeyUp); + this.textBoxListViewTextOriginal.MouseMove += new System.Windows.Forms.MouseEventHandler(this.TextBoxListViewTextOriginalMouseMove); + // + // timeUpDownStartTime + // + this.timeUpDownStartTime.AutoSize = true; + this.timeUpDownStartTime.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.timeUpDownStartTime.BackColor = System.Drawing.SystemColors.Control; + this.timeUpDownStartTime.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F); + this.timeUpDownStartTime.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(155)))), ((int)(((byte)(155))))); + 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(113, 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; + // + // 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.Chapters = null; + 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.SubtitleText = ""; + this.mediaPlayer.TabIndex = 5; + this.mediaPlayer.TextRightToLeft = System.Windows.Forms.RightToLeft.No; + this.mediaPlayer.UsingFrontCenterAudioChannelOnly = false; + 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.Chapters = null; + this.audioVisualizer.ChaptersColor = System.Drawing.Color.Empty; + this.audioVisualizer.ClosenessForBorderSelection = 15; + this.audioVisualizer.Color = System.Drawing.Color.GreenYellow; + this.audioVisualizer.CursorColor = System.Drawing.Color.Empty; + this.audioVisualizer.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F); + this.audioVisualizer.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(155)))), ((int)(((byte)(155))))); + 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.Move100MsLeft = System.Windows.Forms.Keys.None; + this.audioVisualizer.Move100MsRight = System.Windows.Forms.Keys.None; + this.audioVisualizer.MoveOneSecondLeft = System.Windows.Forms.Keys.None; + this.audioVisualizer.MoveOneSecondRight = System.Windows.Forms.Keys.None; + this.audioVisualizer.Name = "audioVisualizer"; + this.audioVisualizer.NewSelectionParagraph = null; + this.audioVisualizer.ParagraphColor = System.Drawing.Color.LimeGreen; + this.audioVisualizer.SelectedColor = System.Drawing.Color.Red; + this.audioVisualizer.ShotChanges = ((System.Collections.Generic.List)(resources.GetObject("audioVisualizer.ShotChanges"))); + 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.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.timeUpDownVideoPosition.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F); + this.timeUpDownVideoPosition.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(155)))), ((int)(((byte)(155))))); + this.timeUpDownVideoPosition.Location = new System.Drawing.Point(90, 190); + this.timeUpDownVideoPosition.Margin = new System.Windows.Forms.Padding(4); + this.timeUpDownVideoPosition.Name = "timeUpDownVideoPosition"; + this.timeUpDownVideoPosition.Size = new System.Drawing.Size(113, 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; + // + // timeUpDownVideoPositionAdjust + // + this.timeUpDownVideoPositionAdjust.AutoSize = true; + this.timeUpDownVideoPositionAdjust.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.timeUpDownVideoPositionAdjust.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.timeUpDownVideoPositionAdjust.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F); + this.timeUpDownVideoPositionAdjust.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(155)))), ((int)(((byte)(155))))); + this.timeUpDownVideoPositionAdjust.Location = new System.Drawing.Point(90, 215); + this.timeUpDownVideoPositionAdjust.Margin = new System.Windows.Forms.Padding(4); + this.timeUpDownVideoPositionAdjust.Name = "timeUpDownVideoPositionAdjust"; + this.timeUpDownVideoPositionAdjust.Size = new System.Drawing.Size(113, 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; + // // Main // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); diff --git a/src/ui/Forms/Options/Settings.Designer.cs b/src/ui/Forms/Options/Settings.Designer.cs index adcefa531..99b8f801c 100644 --- a/src/ui/Forms/Options/Settings.Designer.cs +++ b/src/ui/Forms/Options/Settings.Designer.cs @@ -441,6 +441,8 @@ this.labelUpdateFileTypeAssociationsStatus = new System.Windows.Forms.Label(); this.imageListFileTypeAssociations = new System.Windows.Forms.ImageList(this.components); this.toolTipDialogStylePreview = new System.Windows.Forms.ToolTip(this.components); + this.numericUpDownMarginVertical = new System.Windows.Forms.NumericUpDown(); + this.labelMarginVertical = new System.Windows.Forms.Label(); this.panelGeneral.SuspendLayout(); this.groupBoxMiscellaneous.SuspendLayout(); this.groupBoxGeneralRules.SuspendLayout(); @@ -523,6 +525,7 @@ this.groupBoxProxySettings.SuspendLayout(); this.groupBoxProxyAuthentication.SuspendLayout(); this.panelFileTypeAssociations.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownMarginVertical)).BeginInit(); this.SuspendLayout(); // // buttonOK @@ -2382,6 +2385,8 @@ // this.groupBoxVideoPlayerDefault.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); + this.groupBoxVideoPlayerDefault.Controls.Add(this.numericUpDownMarginVertical); + this.groupBoxVideoPlayerDefault.Controls.Add(this.labelMarginVertical); this.groupBoxVideoPlayerDefault.Controls.Add(this.panelMpvBackColor); this.groupBoxVideoPlayerDefault.Controls.Add(this.buttonMpvBackColor); this.groupBoxVideoPlayerDefault.Controls.Add(this.panelMpvOutlineColor); @@ -5292,14 +5297,35 @@ this.toolTipDialogStylePreview.InitialDelay = 500; this.toolTipDialogStylePreview.ReshowDelay = 100; // + // numericUpDownMarginVertical + // + this.numericUpDownMarginVertical.Location = new System.Drawing.Point(380, 153); + this.numericUpDownMarginVertical.Maximum = new decimal(new int[] { + 1000, + 0, + 0, + 0}); + this.numericUpDownMarginVertical.Name = "numericUpDownMarginVertical"; + this.numericUpDownMarginVertical.Size = new System.Drawing.Size(44, 21); + this.numericUpDownMarginVertical.TabIndex = 21; + // + // labelMarginVertical + // + this.labelMarginVertical.AutoSize = true; + this.labelMarginVertical.Location = new System.Drawing.Point(325, 155); + this.labelMarginVertical.Name = "labelMarginVertical"; + this.labelMarginVertical.Size = new System.Drawing.Size(42, 13); + this.labelMarginVertical.TabIndex = 20; + this.labelMarginVertical.Text = "Vertical"; + // // Settings // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(1092, 574); this.Controls.Add(this.labelUpdateFileTypeAssociationsStatus); - this.Controls.Add(this.panelToolBar); this.Controls.Add(this.panelVideoPlayer); + this.Controls.Add(this.panelToolBar); this.Controls.Add(this.panelTools); this.Controls.Add(this.panelWaveform); this.Controls.Add(this.panelGeneral); @@ -5437,6 +5463,7 @@ this.groupBoxProxyAuthentication.ResumeLayout(false); this.groupBoxProxyAuthentication.PerformLayout(); this.panelFileTypeAssociations.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownMarginVertical)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -5856,5 +5883,7 @@ private System.Windows.Forms.PictureBox pictureBoxWebVttProperties; private System.Windows.Forms.PictureBox pictureBoxIttProperties; private System.Windows.Forms.PictureBox pictureBoxWebVttStyle; + private System.Windows.Forms.NumericUpDown numericUpDownMarginVertical; + private System.Windows.Forms.Label labelMarginVertical; } } \ No newline at end of file diff --git a/src/ui/Forms/Options/Settings.cs b/src/ui/Forms/Options/Settings.cs index dce4b861e..bc40c0023 100644 --- a/src/ui/Forms/Options/Settings.cs +++ b/src/ui/Forms/Options/Settings.cs @@ -266,6 +266,16 @@ namespace Nikse.SubtitleEdit.Forms.Options comboBoxlVideoPlayerPreviewFontSize.SelectedIndex = 3; } + var verticalMargin = gs.VideoPlayerPreviewVerticalMargin; + if (verticalMargin >= numericUpDownMarginVertical.Minimum && verticalMargin <= numericUpDownMarginVertical.Maximum) + { + numericUpDownMarginVertical.Value = verticalMargin; + } + else + { + numericUpDownMarginVertical.Value = 10; + } + numericUpDownMpvOutline.Value = gs.MpvPreviewTextOutlineWidth; numericUpDownMpvShadowWidth.Value = gs.MpvPreviewTextShadowWidth; checkBoxVideoPlayerPreviewFontBold.Checked = gs.VideoPlayerPreviewFontBold; @@ -642,6 +652,9 @@ namespace Nikse.SubtitleEdit.Forms.Options buttonMpvPrimaryColor.Text = LanguageSettings.Current.SubStationAlphaStyles.Primary; buttonMpvOutlineColor.Text = LanguageSettings.Current.SubStationAlphaStyles.Outline; buttonMpvBackColor.Text = LanguageSettings.Current.SubStationAlphaStyles.Shadow; + labelMarginVertical.Text = language.PreviewVerticalMargin; + numericUpDownMarginVertical.Left = labelMarginVertical.Right + 5; + checkBoxVideoPlayerPreviewFontBold.Text = language.SubtitleBold; var left = labelVideoPlayerPreviewFontName.Left + 5 + Math.Max(labelVideoPlayerPreviewFontName.Width, labelVideoPlayerPreviewFontSize.Width); @@ -2020,6 +2033,7 @@ namespace Nikse.SubtitleEdit.Forms.Options gs.VideoPlayerShowFullscreenButton = checkBoxVideoPlayerShowFullscreenButton.Checked; gs.VideoPlayerPreviewFontName = comboBoxVideoPlayerPreviewFontName.SelectedItem.ToString(); gs.VideoPlayerPreviewFontSize = int.Parse(comboBoxlVideoPlayerPreviewFontSize.Items[0].ToString()) + comboBoxlVideoPlayerPreviewFontSize.SelectedIndex; + gs.VideoPlayerPreviewVerticalMargin = (int)numericUpDownMarginVertical.Value; gs.VideoPlayerPreviewFontBold = checkBoxVideoPlayerPreviewFontBold.Checked; gs.MpvPreviewTextPrimaryColor = panelMpvPrimaryColor.BackColor; gs.MpvPreviewTextOutlineColor = panelMpvOutlineColor.BackColor; diff --git a/src/ui/Logic/Language.cs b/src/ui/Logic/Language.cs index 7ee6cd7b4..b143f9581 100644 --- a/src/ui/Logic/Language.cs +++ b/src/ui/Logic/Language.cs @@ -2616,6 +2616,7 @@ can edit in same subtitle file (collaboration)", ShowFullscreenButton = "Show fullscreen button", PreviewFontName = "Subtitle preview font name", PreviewFontSize = "Subtitle preview font size", + PreviewVerticalMargin = "Vertical margin", MainWindowVideoControls = "Main window video controls", CustomSearchTextAndUrl = "Custom search text and URL", WaveformAppearance = "Waveform appearance", diff --git a/src/ui/Logic/LanguageStructure.cs b/src/ui/Logic/LanguageStructure.cs index a04e76159..a16ea426a 100644 --- a/src/ui/Logic/LanguageStructure.cs +++ b/src/ui/Logic/LanguageStructure.cs @@ -2463,6 +2463,7 @@ namespace Nikse.SubtitleEdit.Logic public string ShowFullscreenButton { get; set; } public string PreviewFontName { get; set; } public string PreviewFontSize { get; set; } + public string PreviewVerticalMargin { get; set; } public string MainWindowVideoControls { get; set; } public string CustomSearchTextAndUrl { get; set; } public string WaveformAppearance { get; set; } From f95222876b5959f9e3fb239376eaba64f78635fd Mon Sep 17 00:00:00 2001 From: niksedk Date: Sun, 2 Jul 2023 21:49:00 +0200 Subject: [PATCH 66/96] Fix black theme play speed icons --- Icons/Black/WaveformPlaybackSpeed.png | Bin 2369 -> 2068 bytes Icons/Black/WaveformPlaybackSpeedSelected.png | Bin 2345 -> 2369 bytes LanguageBaseEnglish.xml | 1 + src/ui/Logic/LanguageDeserializer.cs | 3 +++ 4 files changed, 4 insertions(+) diff --git a/Icons/Black/WaveformPlaybackSpeed.png b/Icons/Black/WaveformPlaybackSpeed.png index acbc0c539e5cfa1bee92f7577e1fa59b67806418..dd3264e769de69ae20117c79b72ece8b7a1b0911 100644 GIT binary patch delta 506 zcmVb zmBDesFc3u_nH1nV7o`HAfROnl z8R;e(rW&M}7+F{tn_EmSVAfJGF*ZpwN;I<2O-@cR(KSmpG1aw5N=wvDN;XMJvouOI zPc%>2ypK78X|f87=;Sz7MdFNZU=iUp*EKK-F*LI>1Uqjbi_Ijqg8HNR=NT9nUwXPY zhFJ8@owCtS+EJj*URqg1e7W}GoZ|e1iUyBmU6*F|UCL*$X?)vv&d>e1_T|FVODv0Q z7@l!%V&yO3owj09(*MNik9#)MXKt-7H@<)F&6(Wemh1*>evRiH=HK1I_K)Fy<0kbN zq6Hh2FI-{Y$Kc!`r+CRXfIp=Ez}{;NtOg8jQRbx#bIRrv_wVt$&uqNFCt>Tg%1tLF zW^BpX@NS!f_5+U##ShjWTi9mnFLZm=!58Jx3)G|TGk#W?6?52V#;Ii!&U05BxBTv( zz5cG^5?i)ud)7v$7V6aB?l5^Yv!T3cT2W50?v0Jtyw4gN8*EUYm#KJI+V%34t_k%w zbr){sx;eM|VQ|6HpE`^@o#|Oxote%W3r^N(bJX%I^e?uoa1AtB5IiY_^SG%`jlg3& z*6K$)9W(yDHeXOF^p;iM`q1)(Ex&o+{<>RXr<_*etMjQB3*RpQM;OVhu0-$!!j<*LyJK`rIU~;AxHAPE*B?aOEqnU*NXo zPo=PHvD2QD_ZH8p*nj42>hyxoi|0OTvCrPfTA?`q%b}?9ImPxI=KC{UJN7)N{iJeN z;qRT(o7S+`sFs~@HxpmsyR*i}|G?9@X{p)|7=JL-Fn!zJuq=vse}ngeKm57u#q#Y{ ShOP`iz~SlY=d#Wzp$P#0rz2ee diff --git a/Icons/Black/WaveformPlaybackSpeedSelected.png b/Icons/Black/WaveformPlaybackSpeedSelected.png index d2180ab0d98a4373c9aa01f250dbf1ad60e4c7bf..acbc0c539e5cfa1bee92f7577e1fa59b67806418 100644 GIT binary patch delta 671 zcmZ1}bWmu+IVMJn$>*7LfaD*h0F`7TvovF~BqLo*3u6OaQ)3fDT?^ARBi%&9RD%=~ zBMS>-bBoCZ%vvfY#wLkIiAEN>$;l}ux@O5Hrn(kMX^FZ?$tEdjmPV=OiRLMr_c8Y| z5osiw0?-8$*;dy_9L+z^z`*#@)5S5wqId3;jegRO0&Vuv$|B;+wHN0U=O zG_&tgK7&o;+rD#t?$5O^7p7ifS!BcTjB^t!e*y2b6_b+wCr*Fdv!On7YjwHt{c~^5 zK?Jnu07?iRLx4EGy1slN~{*r0sj3j00==LR{&OTGd8^&toLUSnW2U~r2v zFJ+ihHmA6MkKcV};{`qmTd!4aIw>(@OU{OO+Z?nXcw8ucu>RP>Hd}w8+p7+~D34yC z9(AAbv&yWP!$vbsEt_zjyW+UzcmM45cNLe|vQ68wHafLXr~Y<_$)lMK@Vv1Ns8pvi*ZNguF%#oQ5Vcov{GopIVMJf$>*7LfaD*h02PZQV~dnzi!@yWV@pF_V*?XYT}x976J6sZV{=2p z)Z{dSl+?)u%vvgGrpbn>Nl7WXCPqoAx<+Xxsk#Eak-(Yto4p`Ws&fa`o+Z;!rb9L3C=*&{MLJbc|= zNHeH!sAZ})Hc~4&){?`b&BrjOf$tZ?Mvcc)AuA_`k`_h*AImZ-Q#v!n`AR>RO4NU+5 diff --git a/LanguageBaseEnglish.xml b/LanguageBaseEnglish.xml index 90964ad46..f12a23665 100644 --- a/LanguageBaseEnglish.xml +++ b/LanguageBaseEnglish.xml @@ -2278,6 +2278,7 @@ can edit in same subtitle file (collaboration) Show fullscreen button Subtitle preview font name Subtitle preview font size + Vertical margin Main window video controls Custom search text and URL Waveform appearance diff --git a/src/ui/Logic/LanguageDeserializer.cs b/src/ui/Logic/LanguageDeserializer.cs index 165af52bc..b711c88f0 100644 --- a/src/ui/Logic/LanguageDeserializer.cs +++ b/src/ui/Logic/LanguageDeserializer.cs @@ -6175,6 +6175,9 @@ namespace Nikse.SubtitleEdit.Logic case "Settings/PreviewFontSize": language.Settings.PreviewFontSize = reader.Value; break; + case "Settings/PreviewVerticalMargin": + language.Settings.PreviewVerticalMargin = reader.Value; + break; case "Settings/MainWindowVideoControls": language.Settings.MainWindowVideoControls = reader.Value; break; From 0bc0941f492fb8c4c971452bd17d5c20253936ba Mon Sep 17 00:00:00 2001 From: niksedk Date: Sun, 2 Jul 2023 22:02:48 +0200 Subject: [PATCH 67/96] Add/use MpvPreviewTextMarginVertical --- src/libse/Common/Settings.cs | 10 +--------- src/ui/Forms/Options/Settings.cs | 4 ++-- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/src/libse/Common/Settings.cs b/src/libse/Common/Settings.cs index 93321a4b6..5b779f7ee 100644 --- a/src/libse/Common/Settings.cs +++ b/src/libse/Common/Settings.cs @@ -1354,7 +1354,6 @@ $HorzAlign = Center public string VideoPlayerPreviewFontName { get; set; } public int VideoPlayerPreviewFontSize { get; set; } public bool VideoPlayerPreviewFontBold { get; set; } - public int VideoPlayerPreviewVerticalMargin { get; set; } public bool VideoPlayerShowStopButton { get; set; } public bool VideoPlayerShowFullscreenButton { get; set; } public bool VideoPlayerShowMuteButton { get; set; } @@ -1563,7 +1562,6 @@ $HorzAlign = Center VideoPlayerPreviewFontName = "Tahoma"; VideoPlayerPreviewFontSize = 12; VideoPlayerPreviewFontBold = true; - VideoPlayerPreviewVerticalMargin = 12; VideoPlayerShowStopButton = true; VideoPlayerShowMuteButton = true; VideoPlayerShowFullscreenButton = true; @@ -3816,12 +3814,6 @@ $HorzAlign = Center settings.General.VideoPlayerPreviewFontBold = Convert.ToBoolean(subNode.InnerText, CultureInfo.InvariantCulture); } - subNode = node.SelectSingleNode("VideoPlayerPreviewVerticalMargin"); - if (subNode != null) - { - settings.General.VideoPlayerPreviewVerticalMargin = Convert.ToInt32(subNode.InnerText, CultureInfo.InvariantCulture); - } - subNode = node.SelectSingleNode("VideoPlayerShowStopButton"); if (subNode != null) { @@ -4205,6 +4197,7 @@ $HorzAlign = Center { settings.General.MpvPreviewTextMarginVertical = Convert.ToInt32(subNode.InnerText.Trim()); } + subNode = node.SelectSingleNode("MpcHcLocation"); if (subNode != null) { @@ -10381,7 +10374,6 @@ $HorzAlign = Center textWriter.WriteElementString("VideoPlayerPreviewFontName", settings.General.VideoPlayerPreviewFontName); textWriter.WriteElementString("VideoPlayerPreviewFontSize", settings.General.VideoPlayerPreviewFontSize.ToString(CultureInfo.InvariantCulture)); textWriter.WriteElementString("VideoPlayerPreviewFontBold", settings.General.VideoPlayerPreviewFontBold.ToString(CultureInfo.InvariantCulture)); - textWriter.WriteElementString("VideoPlayerPreviewVerticalMargin", settings.General.VideoPlayerPreviewVerticalMargin.ToString(CultureInfo.InvariantCulture)); textWriter.WriteElementString("VideoPlayerShowStopButton", settings.General.VideoPlayerShowStopButton.ToString(CultureInfo.InvariantCulture)); textWriter.WriteElementString("VideoPlayerShowMuteButton", settings.General.VideoPlayerShowMuteButton.ToString(CultureInfo.InvariantCulture)); textWriter.WriteElementString("VideoPlayerShowFullscreenButton", settings.General.VideoPlayerShowFullscreenButton.ToString(CultureInfo.InvariantCulture)); diff --git a/src/ui/Forms/Options/Settings.cs b/src/ui/Forms/Options/Settings.cs index bc40c0023..f943cb88b 100644 --- a/src/ui/Forms/Options/Settings.cs +++ b/src/ui/Forms/Options/Settings.cs @@ -266,7 +266,7 @@ namespace Nikse.SubtitleEdit.Forms.Options comboBoxlVideoPlayerPreviewFontSize.SelectedIndex = 3; } - var verticalMargin = gs.VideoPlayerPreviewVerticalMargin; + var verticalMargin = gs.MpvPreviewTextMarginVertical; if (verticalMargin >= numericUpDownMarginVertical.Minimum && verticalMargin <= numericUpDownMarginVertical.Maximum) { numericUpDownMarginVertical.Value = verticalMargin; @@ -2033,7 +2033,7 @@ namespace Nikse.SubtitleEdit.Forms.Options gs.VideoPlayerShowFullscreenButton = checkBoxVideoPlayerShowFullscreenButton.Checked; gs.VideoPlayerPreviewFontName = comboBoxVideoPlayerPreviewFontName.SelectedItem.ToString(); gs.VideoPlayerPreviewFontSize = int.Parse(comboBoxlVideoPlayerPreviewFontSize.Items[0].ToString()) + comboBoxlVideoPlayerPreviewFontSize.SelectedIndex; - gs.VideoPlayerPreviewVerticalMargin = (int)numericUpDownMarginVertical.Value; + gs.MpvPreviewTextMarginVertical = (int)numericUpDownMarginVertical.Value; gs.VideoPlayerPreviewFontBold = checkBoxVideoPlayerPreviewFontBold.Checked; gs.MpvPreviewTextPrimaryColor = panelMpvPrimaryColor.BackColor; gs.MpvPreviewTextOutlineColor = panelMpvOutlineColor.BackColor; From 84492063050538716c5d5eef9afdcca04857f46b Mon Sep 17 00:00:00 2001 From: bovirus <1262554+bovirus@users.noreply.github.com> Date: Mon, 3 Jul 2023 08:19:41 +0200 Subject: [PATCH 68/96] Update italian language --- src/ui/Languages/it-IT.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ui/Languages/it-IT.xml b/src/ui/Languages/it-IT.xml index fbd46d86f..40d646a93 100644 --- a/src/ui/Languages/it-IT.xml +++ b/src/ui/Languages/it-IT.xml @@ -3,7 +3,7 @@ Subtitle Edit 3.6.13 - Tradotto da NAMP e bovirus - Data traduzione: 02.07.2023 + Tradotto da NAMP e bovirus - Data traduzione: 03.07.2023 it-IT OK @@ -2278,6 +2278,7 @@ stesso file di sottotitolo (collaborazione) Visualizza pulsante schermo intero Nome font anteprima sottotitolo Anteprima dimensione font sottotitolo + Margine verticale Controlli video nella finestra principale Ricerca personalizzata testo e URL Apparenza forma onda From a285ed6003e54b02ea9c85426936e700afa38cbf Mon Sep 17 00:00:00 2001 From: niksedk Date: Mon, 3 Jul 2023 17:08:03 +0200 Subject: [PATCH 69/96] Update Korean translation - thx domddol :) --- src/ui/Languages/ko-KR.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/ui/Languages/ko-KR.xml b/src/ui/Languages/ko-KR.xml index 68dd43b00..5ac2e8d00 100644 --- a/src/ui/Languages/ko-KR.xml +++ b/src/ui/Languages/ko-KR.xml @@ -1385,6 +1385,9 @@ FFmpeg를 다운로드하고 사용하시겠습니까? 시간 제한 텍스트 - 언어 설정 SAMI - 클래스 설정 Nuendo - 문자 설정 + WebVTT - 스타일 설정 + WebVTT - 음성 설정 + WebVTT - 브라우저 미리보기 잘라내기 복사 붙여넣기 @@ -2274,6 +2277,7 @@ FFmpeg를 다운로드하고 사용하시겠습니까? 전체 화면 버튼 표시 자막 미리보기 글꼴 이름 미리 보기의 글자 크기: + 세로 여백 메인 창의 비디오 컨트롤 사용자 지정 검색 서비스 / URL 파형 스타일 From c027e1185301c7c213c96d21bdeef2968621a741 Mon Sep 17 00:00:00 2001 From: Hugo Carvalho Date: Mon, 3 Jul 2023 23:00:18 +0100 Subject: [PATCH 70/96] Update pt-PT.xml For commits: 7f67fef675af1f9bb176babf5b63a9bd87cac79c 39e86258427e358ddec3ed698a8ffc1a73df7e6e 36b8a772b7d85966cbd7e0ae6b49ea2935c9471b f95222876b5959f9e3fb239376eaba64f78635fd One minor correction --- src/ui/Languages/pt-PT.xml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/ui/Languages/pt-PT.xml b/src/ui/Languages/pt-PT.xml index d886f338c..64305cd50 100644 --- a/src/ui/Languages/pt-PT.xml +++ b/src/ui/Languages/pt-PT.xml @@ -38,6 +38,7 @@ E-mail: mailto:hugokarvalho@hotmail.com Actor Intervalo Região + Camada # Número Texto @@ -1379,6 +1380,7 @@ Para usar a chave API, vá a "Opções -> Definições -> Ferramentas" par Ajustar o tamanho das colunas para caber Definir estilo Definir actor + Definir camada Ferramentas ASSA Estilos Sub Station Alpha... Estilos Advanced Sub Station Alpha... @@ -1388,6 +1390,9 @@ Para usar a chave API, vá a "Opções -> Definições -> Ferramentas" par Timed Text - Definir o idioma Sami - Definir classe Nuendo - Definir carácter + WebVTT - definir estilo + WebVTT - definir voz + WebVTT - pré-visualização do navegador Cortar Copiar Colar @@ -2269,11 +2274,12 @@ editar o mesmo ficheiro de legenda (colaboração) VLC media player libvlc.dll do VLC media player 1.1.0 ou superior Directoria do VLC (apenas é necessário se estiver a usar a versão portátil do VLC) - Mostrar botão parar + Mostrar botão (Parar) Mostrar botão (Sem som) Mostrar botão (Ecrã inteiro) Pré-visualização do tipo de letra Tamanho na pré-visualização + Margem vertical Controlos de vídeo na janela principal Procura de texto e URL personalizada Aparência da forma de onda @@ -3213,4 +3219,7 @@ Manter as alterações? WebVTT - definir nova voz Nome da voz + + Estilos WebVTT + \ No newline at end of file From 383ddc0073b81a729e8336761051114bfd95c548 Mon Sep 17 00:00:00 2001 From: niksedk Date: Tue, 4 Jul 2023 16:40:07 +0200 Subject: [PATCH 71/96] Fix fontsize/opaque box in burn-in preview via mpv - thx David :) --- src/ui/Forms/GenerateVideoWithHardSubs.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/ui/Forms/GenerateVideoWithHardSubs.cs b/src/ui/Forms/GenerateVideoWithHardSubs.cs index 7ac056ed4..a3ecad128 100644 --- a/src/ui/Forms/GenerateVideoWithHardSubs.cs +++ b/src/ui/Forms/GenerateVideoWithHardSubs.cs @@ -1223,6 +1223,11 @@ namespace Nikse.SubtitleEdit.Forms if (LibMpvDynamic.IsInstalled && Configuration.Settings.General.VideoPlayer == "MPV") { var temp = new Subtitle(_assaSubtitle); + if (!_isAssa) + { + SetStyleForNonAssa(temp); + } + FixRightToLeft(temp); var subFileName = GetAssaFileName(_inputVideoFileName); FileUtil.WriteAllText(subFileName, new AdvancedSubStationAlpha().ToText(temp, null), new TextEncoding(Encoding.UTF8, "UTF8")); From cf429947956e60d9f3236b9c2153e8bdcea503b1 Mon Sep 17 00:00:00 2001 From: niksedk Date: Tue, 4 Jul 2023 17:54:05 +0200 Subject: [PATCH 72/96] Update Whisper CPP model download links Related to #7060 --- src/libse/AudioToText/WhisperCppModel.cs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/libse/AudioToText/WhisperCppModel.cs b/src/libse/AudioToText/WhisperCppModel.cs index 54d960df8..6fa2d6e64 100644 --- a/src/libse/AudioToText/WhisperCppModel.cs +++ b/src/libse/AudioToText/WhisperCppModel.cs @@ -39,55 +39,55 @@ namespace Nikse.SubtitleEdit.Core.AudioToText { Name = "tiny.en", Size = "74 MB", - Urls = new []{ "https://huggingface.co/datasets/ggerganov/whisper.cpp/resolve/main/ggml-tiny.en.bin" }, + Urls = new []{ "https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-tiny.en.bin" }, }, new WhisperModel { Name = "tiny", Size = "74 MB", - Urls = new []{ "https://huggingface.co/datasets/ggerganov/whisper.cpp/resolve/main/ggml-tiny.bin" }, + Urls = new []{ "https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-tiny.bin" }, }, new WhisperModel { Name = "base.en", Size = "141 MB", - Urls = new []{ "https://huggingface.co/datasets/ggerganov/whisper.cpp/resolve/main/ggml-base.en.bin" }, + Urls = new []{ "https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-base.en.bin" }, }, new WhisperModel { Name = "base", Size = "141 MB", - Urls = new []{ "https://huggingface.co/datasets/ggerganov/whisper.cpp/resolve/main/ggml-base.bin" }, + Urls = new []{ "https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-base.bin" }, }, new WhisperModel { Name = "small.en", Size = "465 MB", - Urls = new []{ "https://huggingface.co/datasets/ggerganov/whisper.cpp/resolve/main/ggml-small.en.bin" }, + Urls = new []{ "https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-small.en.bin" }, }, new WhisperModel { Name = "small", Size = "465 MB", - Urls = new []{ "https://huggingface.co/datasets/ggerganov/whisper.cpp/resolve/main/ggml-small.bin" }, + Urls = new []{ "https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-small.bin" }, }, new WhisperModel { Name = "medium.en", Size = "1.42 GB", - Urls = new []{ "https://huggingface.co/datasets/ggerganov/whisper.cpp/resolve/main/ggml-medium.en.bin" }, + Urls = new []{ "https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-medium.en.bin" }, }, new WhisperModel { Name = "medium", Size = "1.42 GB", - Urls = new []{ "https://huggingface.co/datasets/ggerganov/whisper.cpp/resolve/main/ggml-medium.bin" }, + Urls = new []{ "https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-medium.bin" }, }, new WhisperModel { Name = "large", Size = "2.88 GB", - Urls = new []{ "https://huggingface.co/datasets/ggerganov/whisper.cpp/resolve/main/ggml-large.bin" }, + Urls = new []{ "https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-large.bin" }, }, }; } From 96f6c6a4cd4864cc6ff5837cb7fb8a99f5233479 Mon Sep 17 00:00:00 2001 From: niksedk Date: Tue, 4 Jul 2023 18:57:21 +0200 Subject: [PATCH 73/96] Add support for custom video player gfx --- Icons/Black/VideoPlayer/Background.png | Bin 0 -> 1117 bytes Icons/Black/VideoPlayer/FastForward.png | Bin 0 -> 356 bytes .../VideoPlayer/FastForwardMouseDown.png | Bin 0 -> 356 bytes .../VideoPlayer/FastForwardMouseOver.png | Bin 0 -> 356 bytes Icons/Black/VideoPlayer/Fullscreen.png | Bin 0 -> 344 bytes Icons/Black/VideoPlayer/FullscreenDown.png | Bin 0 -> 839 bytes Icons/Black/VideoPlayer/FullscreenOver.png | Bin 0 -> 861 bytes Icons/Black/VideoPlayer/Mute.png | Bin 0 -> 1174 bytes Icons/Black/VideoPlayer/MuteDown.png | Bin 0 -> 1247 bytes Icons/Black/VideoPlayer/MuteOver.png | Bin 0 -> 1262 bytes Icons/Black/VideoPlayer/NoFullScreen.png | Bin 0 -> 343 bytes Icons/Black/VideoPlayer/NoFullScreenDown.png | Bin 0 -> 843 bytes Icons/Black/VideoPlayer/NoFullScreenOver.png | Bin 0 -> 864 bytes Icons/Black/VideoPlayer/Pause.png | Bin 0 -> 1616 bytes Icons/Black/VideoPlayer/PauseDown.png | Bin 0 -> 1710 bytes Icons/Black/VideoPlayer/PauseOver.png | Bin 0 -> 1710 bytes Icons/Black/VideoPlayer/Play.png | Bin 0 -> 1693 bytes Icons/Black/VideoPlayer/PlayDown.png | Bin 0 -> 1687 bytes Icons/Black/VideoPlayer/PlayOver.png | Bin 0 -> 1587 bytes Icons/Black/VideoPlayer/ProgressBar.png | Bin 0 -> 934 bytes .../VideoPlayer/ProgressbarBackground.gif | Bin 0 -> 1266 bytes Icons/Black/VideoPlayer/Reverse.png | Bin 0 -> 307 bytes Icons/Black/VideoPlayer/ReverseMouseDown.png | Bin 0 -> 307 bytes Icons/Black/VideoPlayer/ReverseMouseOver.png | Bin 0 -> 307 bytes Icons/Black/VideoPlayer/Stop.png | Bin 0 -> 1020 bytes Icons/Black/VideoPlayer/StopDown.png | Bin 0 -> 1216 bytes Icons/Black/VideoPlayer/StopOver.png | Bin 0 -> 1215 bytes Icons/Black/VideoPlayer/VolumeBar.png | Bin 0 -> 934 bytes .../Black/VideoPlayer/VolumeBarBackground.png | Bin 0 -> 1011 bytes Icons/DarkTheme/VideoPlayer/Background.png | Bin 0 -> 453 bytes Icons/DarkTheme/VideoPlayer/FastForward.png | Bin 0 -> 356 bytes .../VideoPlayer/FastForwardMouseDown.png | Bin 0 -> 356 bytes .../VideoPlayer/FastForwardMouseOver.png | Bin 0 -> 356 bytes Icons/DarkTheme/VideoPlayer/Fullscreen.png | Bin 0 -> 382 bytes .../DarkTheme/VideoPlayer/FullscreenDown.png | Bin 0 -> 679 bytes .../DarkTheme/VideoPlayer/FullscreenOver.png | Bin 0 -> 687 bytes Icons/DarkTheme/VideoPlayer/Mute.png | Bin 0 -> 656 bytes Icons/DarkTheme/VideoPlayer/MuteDown.png | Bin 0 -> 757 bytes Icons/DarkTheme/VideoPlayer/MuteOver.png | Bin 0 -> 811 bytes Icons/DarkTheme/VideoPlayer/NoFullScreen.png | Bin 0 -> 343 bytes .../VideoPlayer/NoFullScreenDown.png | Bin 0 -> 696 bytes .../VideoPlayer/NoFullScreenOver.png | Bin 0 -> 695 bytes Icons/DarkTheme/VideoPlayer/Pause.png | Bin 0 -> 1307 bytes Icons/DarkTheme/VideoPlayer/PauseDown.png | Bin 0 -> 1245 bytes Icons/DarkTheme/VideoPlayer/PauseOver.png | Bin 0 -> 1299 bytes Icons/DarkTheme/VideoPlayer/Play.png | Bin 0 -> 1301 bytes Icons/DarkTheme/VideoPlayer/PlayDown.png | Bin 0 -> 1233 bytes Icons/DarkTheme/VideoPlayer/PlayOver.png | Bin 0 -> 1316 bytes Icons/DarkTheme/VideoPlayer/ProgressBar.png | Bin 0 -> 174 bytes .../VideoPlayer/ProgressbarBackground.gif | Bin 0 -> 496 bytes Icons/DarkTheme/VideoPlayer/Reverse.png | Bin 0 -> 307 bytes .../VideoPlayer/ReverseMouseDown.png | Bin 0 -> 307 bytes .../VideoPlayer/ReverseMouseOver.png | Bin 0 -> 307 bytes Icons/DarkTheme/VideoPlayer/Stop.png | Bin 0 -> 1020 bytes Icons/DarkTheme/VideoPlayer/StopDown.png | Bin 0 -> 615 bytes Icons/DarkTheme/VideoPlayer/StopOver.png | Bin 0 -> 615 bytes Icons/DarkTheme/VideoPlayer/VolumeBar.png | Bin 0 -> 174 bytes .../VideoPlayer/VolumeBarBackground.png | Bin 0 -> 303 bytes Icons/DefaultTheme/VideoPlayer/Background.png | Bin 0 -> 1117 bytes .../DefaultTheme/VideoPlayer/FastForward.png | Bin 0 -> 356 bytes .../VideoPlayer/FastForwardMouseDown.png | Bin 0 -> 356 bytes .../VideoPlayer/FastForwardMouseOver.png | Bin 0 -> 356 bytes Icons/DefaultTheme/VideoPlayer/Fullscreen.png | Bin 0 -> 344 bytes .../VideoPlayer/FullscreenDown.png | Bin 0 -> 839 bytes .../VideoPlayer/FullscreenOver.png | Bin 0 -> 861 bytes Icons/DefaultTheme/VideoPlayer/Mute.png | Bin 0 -> 1174 bytes Icons/DefaultTheme/VideoPlayer/MuteDown.png | Bin 0 -> 1247 bytes Icons/DefaultTheme/VideoPlayer/MuteOver.png | Bin 0 -> 1262 bytes .../DefaultTheme/VideoPlayer/NoFullScreen.png | Bin 0 -> 343 bytes .../VideoPlayer/NoFullScreenDown.png | Bin 0 -> 843 bytes .../VideoPlayer/NoFullScreenOver.png | Bin 0 -> 864 bytes Icons/DefaultTheme/VideoPlayer/Pause.png | Bin 0 -> 1616 bytes Icons/DefaultTheme/VideoPlayer/PauseDown.png | Bin 0 -> 1710 bytes Icons/DefaultTheme/VideoPlayer/PauseOver.png | Bin 0 -> 1710 bytes Icons/DefaultTheme/VideoPlayer/Play.png | Bin 0 -> 1693 bytes Icons/DefaultTheme/VideoPlayer/PlayDown.png | Bin 0 -> 1687 bytes Icons/DefaultTheme/VideoPlayer/PlayOver.png | Bin 0 -> 1587 bytes .../DefaultTheme/VideoPlayer/ProgressBar.png | Bin 0 -> 934 bytes .../VideoPlayer/ProgressbarBackground.gif | Bin 0 -> 1266 bytes Icons/DefaultTheme/VideoPlayer/Reverse.png | Bin 0 -> 307 bytes .../VideoPlayer/ReverseMouseDown.png | Bin 0 -> 307 bytes .../VideoPlayer/ReverseMouseOver.png | Bin 0 -> 307 bytes Icons/DefaultTheme/VideoPlayer/Stop.png | Bin 0 -> 1020 bytes Icons/DefaultTheme/VideoPlayer/StopDown.png | Bin 0 -> 1216 bytes Icons/DefaultTheme/VideoPlayer/StopOver.png | Bin 0 -> 1215 bytes Icons/DefaultTheme/VideoPlayer/VolumeBar.png | Bin 0 -> 934 bytes .../VideoPlayer/VolumeBarBackground.png | Bin 0 -> 1011 bytes Icons/Legacy/VideoPlayer/Background.png | Bin 0 -> 1117 bytes Icons/Legacy/VideoPlayer/FastForward.png | Bin 0 -> 356 bytes .../VideoPlayer/FastForwardMouseDown.png | Bin 0 -> 356 bytes .../VideoPlayer/FastForwardMouseOver.png | Bin 0 -> 356 bytes Icons/Legacy/VideoPlayer/Fullscreen.png | Bin 0 -> 344 bytes Icons/Legacy/VideoPlayer/FullscreenDown.png | Bin 0 -> 839 bytes Icons/Legacy/VideoPlayer/FullscreenOver.png | Bin 0 -> 861 bytes Icons/Legacy/VideoPlayer/Mute.png | Bin 0 -> 1174 bytes Icons/Legacy/VideoPlayer/MuteDown.png | Bin 0 -> 1247 bytes Icons/Legacy/VideoPlayer/MuteOver.png | Bin 0 -> 1262 bytes Icons/Legacy/VideoPlayer/NoFullScreen.png | Bin 0 -> 343 bytes Icons/Legacy/VideoPlayer/NoFullScreenDown.png | Bin 0 -> 843 bytes Icons/Legacy/VideoPlayer/NoFullScreenOver.png | Bin 0 -> 864 bytes Icons/Legacy/VideoPlayer/Pause.png | Bin 0 -> 1616 bytes Icons/Legacy/VideoPlayer/PauseDown.png | Bin 0 -> 1710 bytes Icons/Legacy/VideoPlayer/PauseOver.png | Bin 0 -> 1710 bytes Icons/Legacy/VideoPlayer/Play.png | Bin 0 -> 1693 bytes Icons/Legacy/VideoPlayer/PlayDown.png | Bin 0 -> 1687 bytes Icons/Legacy/VideoPlayer/PlayOver.png | Bin 0 -> 1587 bytes Icons/Legacy/VideoPlayer/ProgressBar.png | Bin 0 -> 934 bytes .../VideoPlayer/ProgressbarBackground.gif | Bin 0 -> 1266 bytes Icons/Legacy/VideoPlayer/Reverse.png | Bin 0 -> 307 bytes Icons/Legacy/VideoPlayer/ReverseMouseDown.png | Bin 0 -> 307 bytes Icons/Legacy/VideoPlayer/ReverseMouseOver.png | Bin 0 -> 307 bytes Icons/Legacy/VideoPlayer/Stop.png | Bin 0 -> 1020 bytes Icons/Legacy/VideoPlayer/StopDown.png | Bin 0 -> 1216 bytes Icons/Legacy/VideoPlayer/StopOver.png | Bin 0 -> 1215 bytes Icons/Legacy/VideoPlayer/VolumeBar.png | Bin 0 -> 934 bytes .../VideoPlayer/VolumeBarBackground.png | Bin 0 -> 1011 bytes src/ui/Controls/VideoPlayerContainer.cs | 58 ++++++++++++++++-- src/ui/Forms/Main.cs | 2 + 118 files changed, 56 insertions(+), 4 deletions(-) create mode 100644 Icons/Black/VideoPlayer/Background.png create mode 100644 Icons/Black/VideoPlayer/FastForward.png create mode 100644 Icons/Black/VideoPlayer/FastForwardMouseDown.png create mode 100644 Icons/Black/VideoPlayer/FastForwardMouseOver.png create mode 100644 Icons/Black/VideoPlayer/Fullscreen.png create mode 100644 Icons/Black/VideoPlayer/FullscreenDown.png create mode 100644 Icons/Black/VideoPlayer/FullscreenOver.png create mode 100644 Icons/Black/VideoPlayer/Mute.png create mode 100644 Icons/Black/VideoPlayer/MuteDown.png create mode 100644 Icons/Black/VideoPlayer/MuteOver.png create mode 100644 Icons/Black/VideoPlayer/NoFullScreen.png create mode 100644 Icons/Black/VideoPlayer/NoFullScreenDown.png create mode 100644 Icons/Black/VideoPlayer/NoFullScreenOver.png create mode 100644 Icons/Black/VideoPlayer/Pause.png create mode 100644 Icons/Black/VideoPlayer/PauseDown.png create mode 100644 Icons/Black/VideoPlayer/PauseOver.png create mode 100644 Icons/Black/VideoPlayer/Play.png create mode 100644 Icons/Black/VideoPlayer/PlayDown.png create mode 100644 Icons/Black/VideoPlayer/PlayOver.png create mode 100644 Icons/Black/VideoPlayer/ProgressBar.png create mode 100644 Icons/Black/VideoPlayer/ProgressbarBackground.gif create mode 100644 Icons/Black/VideoPlayer/Reverse.png create mode 100644 Icons/Black/VideoPlayer/ReverseMouseDown.png create mode 100644 Icons/Black/VideoPlayer/ReverseMouseOver.png create mode 100644 Icons/Black/VideoPlayer/Stop.png create mode 100644 Icons/Black/VideoPlayer/StopDown.png create mode 100644 Icons/Black/VideoPlayer/StopOver.png create mode 100644 Icons/Black/VideoPlayer/VolumeBar.png create mode 100644 Icons/Black/VideoPlayer/VolumeBarBackground.png create mode 100644 Icons/DarkTheme/VideoPlayer/Background.png create mode 100644 Icons/DarkTheme/VideoPlayer/FastForward.png create mode 100644 Icons/DarkTheme/VideoPlayer/FastForwardMouseDown.png create mode 100644 Icons/DarkTheme/VideoPlayer/FastForwardMouseOver.png create mode 100644 Icons/DarkTheme/VideoPlayer/Fullscreen.png create mode 100644 Icons/DarkTheme/VideoPlayer/FullscreenDown.png create mode 100644 Icons/DarkTheme/VideoPlayer/FullscreenOver.png create mode 100644 Icons/DarkTheme/VideoPlayer/Mute.png create mode 100644 Icons/DarkTheme/VideoPlayer/MuteDown.png create mode 100644 Icons/DarkTheme/VideoPlayer/MuteOver.png create mode 100644 Icons/DarkTheme/VideoPlayer/NoFullScreen.png create mode 100644 Icons/DarkTheme/VideoPlayer/NoFullScreenDown.png create mode 100644 Icons/DarkTheme/VideoPlayer/NoFullScreenOver.png create mode 100644 Icons/DarkTheme/VideoPlayer/Pause.png create mode 100644 Icons/DarkTheme/VideoPlayer/PauseDown.png create mode 100644 Icons/DarkTheme/VideoPlayer/PauseOver.png create mode 100644 Icons/DarkTheme/VideoPlayer/Play.png create mode 100644 Icons/DarkTheme/VideoPlayer/PlayDown.png create mode 100644 Icons/DarkTheme/VideoPlayer/PlayOver.png create mode 100644 Icons/DarkTheme/VideoPlayer/ProgressBar.png create mode 100644 Icons/DarkTheme/VideoPlayer/ProgressbarBackground.gif create mode 100644 Icons/DarkTheme/VideoPlayer/Reverse.png create mode 100644 Icons/DarkTheme/VideoPlayer/ReverseMouseDown.png create mode 100644 Icons/DarkTheme/VideoPlayer/ReverseMouseOver.png create mode 100644 Icons/DarkTheme/VideoPlayer/Stop.png create mode 100644 Icons/DarkTheme/VideoPlayer/StopDown.png create mode 100644 Icons/DarkTheme/VideoPlayer/StopOver.png create mode 100644 Icons/DarkTheme/VideoPlayer/VolumeBar.png create mode 100644 Icons/DarkTheme/VideoPlayer/VolumeBarBackground.png create mode 100644 Icons/DefaultTheme/VideoPlayer/Background.png create mode 100644 Icons/DefaultTheme/VideoPlayer/FastForward.png create mode 100644 Icons/DefaultTheme/VideoPlayer/FastForwardMouseDown.png create mode 100644 Icons/DefaultTheme/VideoPlayer/FastForwardMouseOver.png create mode 100644 Icons/DefaultTheme/VideoPlayer/Fullscreen.png create mode 100644 Icons/DefaultTheme/VideoPlayer/FullscreenDown.png create mode 100644 Icons/DefaultTheme/VideoPlayer/FullscreenOver.png create mode 100644 Icons/DefaultTheme/VideoPlayer/Mute.png create mode 100644 Icons/DefaultTheme/VideoPlayer/MuteDown.png create mode 100644 Icons/DefaultTheme/VideoPlayer/MuteOver.png create mode 100644 Icons/DefaultTheme/VideoPlayer/NoFullScreen.png create mode 100644 Icons/DefaultTheme/VideoPlayer/NoFullScreenDown.png create mode 100644 Icons/DefaultTheme/VideoPlayer/NoFullScreenOver.png create mode 100644 Icons/DefaultTheme/VideoPlayer/Pause.png create mode 100644 Icons/DefaultTheme/VideoPlayer/PauseDown.png create mode 100644 Icons/DefaultTheme/VideoPlayer/PauseOver.png create mode 100644 Icons/DefaultTheme/VideoPlayer/Play.png create mode 100644 Icons/DefaultTheme/VideoPlayer/PlayDown.png create mode 100644 Icons/DefaultTheme/VideoPlayer/PlayOver.png create mode 100644 Icons/DefaultTheme/VideoPlayer/ProgressBar.png create mode 100644 Icons/DefaultTheme/VideoPlayer/ProgressbarBackground.gif create mode 100644 Icons/DefaultTheme/VideoPlayer/Reverse.png create mode 100644 Icons/DefaultTheme/VideoPlayer/ReverseMouseDown.png create mode 100644 Icons/DefaultTheme/VideoPlayer/ReverseMouseOver.png create mode 100644 Icons/DefaultTheme/VideoPlayer/Stop.png create mode 100644 Icons/DefaultTheme/VideoPlayer/StopDown.png create mode 100644 Icons/DefaultTheme/VideoPlayer/StopOver.png create mode 100644 Icons/DefaultTheme/VideoPlayer/VolumeBar.png create mode 100644 Icons/DefaultTheme/VideoPlayer/VolumeBarBackground.png create mode 100644 Icons/Legacy/VideoPlayer/Background.png create mode 100644 Icons/Legacy/VideoPlayer/FastForward.png create mode 100644 Icons/Legacy/VideoPlayer/FastForwardMouseDown.png create mode 100644 Icons/Legacy/VideoPlayer/FastForwardMouseOver.png create mode 100644 Icons/Legacy/VideoPlayer/Fullscreen.png create mode 100644 Icons/Legacy/VideoPlayer/FullscreenDown.png create mode 100644 Icons/Legacy/VideoPlayer/FullscreenOver.png create mode 100644 Icons/Legacy/VideoPlayer/Mute.png create mode 100644 Icons/Legacy/VideoPlayer/MuteDown.png create mode 100644 Icons/Legacy/VideoPlayer/MuteOver.png create mode 100644 Icons/Legacy/VideoPlayer/NoFullScreen.png create mode 100644 Icons/Legacy/VideoPlayer/NoFullScreenDown.png create mode 100644 Icons/Legacy/VideoPlayer/NoFullScreenOver.png create mode 100644 Icons/Legacy/VideoPlayer/Pause.png create mode 100644 Icons/Legacy/VideoPlayer/PauseDown.png create mode 100644 Icons/Legacy/VideoPlayer/PauseOver.png create mode 100644 Icons/Legacy/VideoPlayer/Play.png create mode 100644 Icons/Legacy/VideoPlayer/PlayDown.png create mode 100644 Icons/Legacy/VideoPlayer/PlayOver.png create mode 100644 Icons/Legacy/VideoPlayer/ProgressBar.png create mode 100644 Icons/Legacy/VideoPlayer/ProgressbarBackground.gif create mode 100644 Icons/Legacy/VideoPlayer/Reverse.png create mode 100644 Icons/Legacy/VideoPlayer/ReverseMouseDown.png create mode 100644 Icons/Legacy/VideoPlayer/ReverseMouseOver.png create mode 100644 Icons/Legacy/VideoPlayer/Stop.png create mode 100644 Icons/Legacy/VideoPlayer/StopDown.png create mode 100644 Icons/Legacy/VideoPlayer/StopOver.png create mode 100644 Icons/Legacy/VideoPlayer/VolumeBar.png create mode 100644 Icons/Legacy/VideoPlayer/VolumeBarBackground.png diff --git a/Icons/Black/VideoPlayer/Background.png b/Icons/Black/VideoPlayer/Background.png new file mode 100644 index 0000000000000000000000000000000000000000..c2642eb8788ee1d6c8c555ecfb266cf9babc8669 GIT binary patch literal 1117 zcmeAS@N?(olHy`uVBq!ia0y~yV66bMbvc-Ur1HAY&wvz5x}&cn1H;CC?mvmFK)yn< zN02WALzNl>LqiJ#!!Mvv!wUw6QUeBtR|yOZRx=nF#0%!^3bbKhU}gyL3327;=MxkZ z6aoQZAt5m#A#p(=89^ag5h-m^X&p5!Lv;fm4MSfW=O9~`U|ZJ^JGW3%hcq+CbO-lv zN6$znuV`oQSXbXTH@^gT|0IvV6tCbk?~rug&`iJZZ2ySdz^MG7=z`#w;;{JgsN|a1 zw1)W1=D5t(gsj%Y?6%UHS!K1eyC*FNx^onah5-FT;6;g#Ezs6Go-U3d6>)E`9S?O5 zWN>zDJbBV(@Smd z2scoK%OUg`P(-3()z`{rGmxxUUaA44RtNZmxcY`=xA)DTG;6hIV0v^) zoqt4bRB}yVRDM`|d2mc|P;`M;P)1Bjy-!G1YtNjREu=tADv{rGmxxUUaA44RtNZmxcY`=$EK8K6f}AUrbnmL z`A6hNCD#N-<%h+W2gei#MHhGlWyGY^`-EggClwi4`bH#Hc?G4%XEu9>Wcr3>#bq@4 zhGr&ax5Z_)`i13$#aG0pHF$@ldj_QC7B?4_x5cK_$7eM91gH6i=0+q{hQ$>|CRHb7 zG2SgU?n|TF9<^@C)gvAzw#Fhp|6^6&< zO*?Sz8_?M$o-U3d6>+i0OvR2EFdVsH*it!h=FErx)NdEw`6*uIbiQ>RcW>0~V+V3P zs`mKKtUT5JEz@AGjQ6vcyqYymySz28>p%O;`LQ=cvn4`i#$8>foRpvY0zCg|PZ57C ya^Y#z%DQg}^B8TIJ%!C`R;LEP-eFMmm+@Y!fHB{_bt{1OGkCiCxvXd6Ai!;r=JvaoqVAdP2{I zt_zJ?+s43bNP4_YnR&{G_GvJk982b0ZhWjlx=Sh7FXsIT@r`IHgjgJy-7P|FWcj{O zN&YL87vmJrxN#0001rP)t-s5)u;B z+2GUI-~Rsp-Qwx`{QvOv{5?ce5D*g&4-^;}7#kZKKSoxYo~JT5Nj*eUG(1f@K~W40 z5g#Kh4-XR!4He4F&_YUEK}lHz1O!G-U_eJ#K1Nj!4-O_OF+4+33JMlHLsJ3*0s{jB zMNM8qOI;Qg7Be_XQ&m@QHEBf)bU4E zOq4sTFvgt76ij5iZh^J1f*TWCYPHsntEF2eHq=P@Oj4O7vSES{i+lPKLZl*Qj^q0y qXgYSebn*@(ME&0BBTUv2{@@EOgc&Q=to2R+0000xN#0005DP)t-s0s;cm z+2BS_VAI&&3?@!eU~~yUb_y+53N&CYHdhT%hYlV=5EnBO6BQE^784sZ6DCj-T8|VQ zHWnK!7924c7#JELI~yAt8z46uY^NL_CLJO-B6h7KDLV!&T`)alG)HweKvg(GSV2iz zLP}afO<_Y$VM9-52^u?AWp-R@d0c9GVQ_w9aeriWg=BSxYkrQBpr-Kk{QCU=5*8^E z7cLSWJPsd14;nWdATkdjL>(eI9V0df8962{JSi_hE;URQ8Y*vrjTIX(6(UC!L3oIk zo(UE=ovg5?v9zbLwY0#*wZX+NJ7O<8V-{kd7a%|q5)wN?Q9MIb7BOE7Cr%1Te*^>s z2Q+3!Q)WzCa4t7oFEvgtHBc`#Qwu3kBq}^FHcKx$VHzSO5J-j)P>^tfj&g&Ic#4;L ziIh67-YmS_-sg5!U0ar2)oQ2_&NbK}y-)Ssz zGQ0qs#ZolEv{ld3w)A<`#!N&@i@>4tt_WgciAp=7QI{qN;)+KHHho+(eMXsN@SpgM zNy^!@W}FTqN?mz<<8nx@dQ{1WE;rW8Iwg#-lXJJL?asAUtG({DS8wN%?0>OdZ#K(c R0vrGU002ovPDHLkV1hMlMp6I( literal 0 HcmV?d00001 diff --git a/Icons/Black/VideoPlayer/FullscreenOver.png b/Icons/Black/VideoPlayer/FullscreenOver.png new file mode 100644 index 0000000000000000000000000000000000000000..f719655a7f6909b71d937055153eddc0b06d9b1a GIT binary patch literal 861 zcmV-j1ETziP)xN#0005YP)t-s0s;aN z5*i;XW;#%QMowVU*x%II;1UuN5+FYkBuEk{QW7jx5-?yAF=7%lYZEP86Ge^`DNq(C zMiwkm7CdtoKztY&7#U5E8yg!PDMcMlhaNt99z==>4L2V-Y#=LWAV7&AL5v|VOe8~z zBt(xUM2IU&k1KDhFF#xl8d*AotUF0!Ka8zFXt_g7V?<3~5Gz+kXQxM3aY$KmOKhlA zW`I?4tX7Z6eU`z4!r_IPq=%ZNnya&$q_w8By0pH;#L3PP5)=puDcs)S+~DNh;_3SQ z|Nj2}IYCtwH*6Lb7CS>(9#DckMO!~eT>}FH1Ox;@Lqib}7DG*94iFYZO<_e%UKB4? z6g+w%K!_qYVIoz7P;aUuGEO5kRU{}jTY0fxeX(S8hi-|tbcK?5i=26loqLqP8c&TC zB|{w@9wu9Zh@Gd1%ixNdrHahoj?v$frLL3H-;}1Wm#MIq*58<@uqRifC|-n~*x#S8 zx1qARqO-avX{xZl#1$}J6){%G-t@}S)*c=nFm|jna#b(!Gfgb>sRZ#LmJ(tyLFF$`m;f=1@B}pSpY#h!l2Vc;;Efmn z8CG*H>EvxUSwp|%sD}a3D%j1;6j7IAHnSC4Ky=C>k&xwO3|Rn7&T@Vq`2iG_E4IG5wX=Wx^LT$}YjZv3 nQUN8Gw`oxHTOEpOZ28!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e6&pP!GLTa1TC zke^?emsfPeDab zP2Esk!$?ibP)plPTgO!2z{=3b#>CXl%*xHg+Q-bs*WAv}!qU;w%GuK1-^xDF(!t-t zA;7{R(Ap`;#uL-DYGmsqaZ!2sGzvIxU?>(u%W25v8b%MsJyMIwXdP2zqzfyv299s z-;A#QnO*&}dM3=AHgnO`nM-EOSvq^(@|p8i%v-o>!QwRwmaJL0bkp)xn^vyfzH#f` zOTxA{iJMMLk^{ zLo|YuHymQ&c{ZcrAP@;kNtTqBZjG&0f4VZV-2G;FNk!JHS4J7xD_4v8%(|kN{o?MejO&-u7Op+JVBwUB zri>g@l8fg4=BiaYvO2>c<8ljSZ81=Y~hjb%|6HW@Z*IcFD07DEO`F9lBKN3cFFUVL{<01GOvHr*HbK`7EV7 zUHo$a)6pFkH(j(}KbrCL^dHyD-b-%oa7c=g$;sp0Hs=fz<5NwgoH+u93%nf7`1s;j yJ;Nplxb$>S7C!NeVUmo3oC}X=LRVoSBg4_R{!bcXJ^%|81_n=8KbLh*2~7ZxDrUR@ literal 0 HcmV?d00001 diff --git a/Icons/Black/VideoPlayer/MuteDown.png b/Icons/Black/VideoPlayer/MuteDown.png new file mode 100644 index 0000000000000000000000000000000000000000..83218bcb4391faf99d79f50a51a4b799340e34d3 GIT binary patch literal 1247 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S3?yCqj{O5tEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e62SXh)tNS9AU zk6+T9SK3xgN>4^!O+eaIT-sPb%0f`aN?hJvLe7$3!A43+RYb{JQo&qS$y`doT2{$Y zO-Elz-C9l0hELv!Q^Ad2!I@vtgzNnF7}RLNafEkMjLp4}vk-6DtGGMC#ToyR(h!=^yPz)RoE zThG)--_%dhEL`6-K;JZ2&n#TeJVxItQQtaA-#S^}CfUF$(ZDu^)1idZp^Vp|kjtZ9 z)Um?CDZz0}Do%GEd4*+0$GH^C>e&?mYeJSHbRHa{q#BrLToBB?k! zr8+93DkiHkCaWr`pq|I4kvFhiz@tq#vQIdwUm#$DVB{?E#K~fb^Tm=DNark*&RMQh zwpOEdQ)+ofdSz=~Sx0tFXI@2DL3w*=WpiasTYf`JVPj80Q(t+hwMm9&iGj!-8@)Y_CVQOCHV0U23bkLI>~WBl={P(4A#RRy46HX9I1bntT~SoM zqNRUdUGKWC;SDW=2W)~5jV&LW+21WKzFS`QA}#w=YiUF8^p=iktzFX_`)73Y&ugAI zt7YQ+_Gxolrp@n|Hm`T$?B0pjHSJ^7EGSCbjI9OGv}|Jv|!oP1ux|z$?&s(-`?wSqj+L~5(wXNuBU(wsKeEqg%8@4RpxOLsm{Tp{3-L~)4mIFt& z9z449$no7rPM)1O<6`&Zi__;GK5^mXxvOU`T)lAh?xpMZF5kF+<>rIycOKt)_~P!P zmv2uU`*7s&mt)5tzj*)h&4&+P|9t!Y`}g0!fB%80bf7@-k`5&X2F5r~ z7sn8d;N%aCV{t_0=y+ZiR$!rja#NZe=fJL z=BHE6&0Wot)qJdWY}4vdv`BxxuG>Mtw7fq3{guwS?9{yiL#Z_c
^aH6F8Fn?7w4nx^HJcTDQls;*C)cA4>*Rh|09rlwce zxzh9FyLD~9PF0!lH0_h)JgJ!}8F@2u=1a|!oO1h`cz6zN^DFzt*LUvRxjw#cWq#WZ Z@i5H1xTsK@FU=Md%bu=&F6*2UngA2p)U5yj literal 0 HcmV?d00001 diff --git a/Icons/Black/VideoPlayer/MuteOver.png b/Icons/Black/VideoPlayer/MuteOver.png new file mode 100644 index 0000000000000000000000000000000000000000..7643ee97704132b9a041c1af40ec6c987cfbf1f5 GIT binary patch literal 1262 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S3?yCqj{O5tEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e62P)LM>OOun= zoLAnRUn-JM$(LUzPFT}lTH8xj+gn!GM_M;jRzFsDOw6`G#HLEju2R;vLfs@#(JWHKELh(%MAtgb)ILH%D@{Q=L(48j$39iu zu~gipR@S3f-m663x60HpR?Rs}%Q;uet3b!E+|)hS);GsGu+G&t&OI>KHzdbDBF{6j z*gLw^FQOnkp;TPIQCz=C*riw4wNK8aOTx2L(x+3>w_nkrQ^B!E#ko_>r9;J~U)!r+ zFRs}#s>wWTwtDyy&6Hl9^gf;J`MNnX3<~BNm(AA7S+1MESR-?#M&>H5yp`rPON@&) zyQcT}r?y6Ace$l6_s&`2kg+o$e^qGFn&`@n@wFS%@|rSBI&;c9GAp_>D<&0IbQe~4 z7S>ECu9;}ly3DR?wbR74<&9HHS|*jW&aY{kT-QFmrh7(h|LnZZ?P2{Vs;3;Nop!Lf zdtOWT?AG4-jT7cHOrGB`Wq#-6`HfQ-bWU8@J7r17jKzKPR?M8gZqlOFlb5cWx_sUA zg_~wB+%SLHmf0&e&RV^B&YCTA*KJ*}V%vhXTNka~vvAYSMVogm->`4lmR-xY?q0Ed z@7gVUSMAuhcE|oTTMw?^b#VRO!yC6B+OYq~mVHOI?mxP1&xsxTPj#KS-+TUU?}dAl zF5aDT>Grg%_vT!^JMYH*=0guVPCr<5^WMe-NB12$xA)kELnqH4IeG5j@r#E~T|RQ^ z^6|4*PoBGe;^Ng47q6YZaQ)<^Yo{(>KYi);*-N)BUAukp+P%v+?w`2#<-*kmS8hJI ze&_M+`;YG2dwA#m<2w&u+h1G4U*5d^@c#YBcke&F|ML68$4?(W zfBE|D`-iW8zI^-j{m0KAKYsrD^Z(z!|G?BsYmh8b$i~3HnCt1{7@`rJY+$6bdW}QF zDI;fPw!@3B>nS&9yYos;@_T!GfBkv~)et&l6h5Ngoemm*;H&{&7;E4bGjQst@?*qJF_eQ!dU;llZUw?YX z+cny@CGYP|ZJN}^{oLq${HnJ-sU0it@A<1Iu*CQF)T-?Kk9T+W8uG-Yh37Xp)LlC} z>!i7^o}BUbq=M;o#bPY8M9ytXonv~lB;wlKgHu0$5ER&8Vmm3O)+O&blU_KR_`Frm z9y=VEcxiEI!J>~JbL_;~)CI$yy?cDTe8Xu8omi#)Dbm|l2scljqOkwdLFL#zw{~9& zU6y-2eR5G!!M4d0MEdLmm#$kFU6HVce`|R zX{Ad>M1ey^UYy^8{qX@FE;~h;gYWG6dOB=P%-*uYvqH6}>qqa`>+5W6oapN5;2_Av e!ZIa7LXsgMas3M2#)WS{k?ZN|=d#Wzp$P!4PB^Ln literal 0 HcmV?d00001 diff --git a/Icons/Black/VideoPlayer/NoFullScreen.png b/Icons/Black/VideoPlayer/NoFullScreen.png new file mode 100644 index 0000000000000000000000000000000000000000..04d57c038e91c528868d6fb7f2b3eddec5f000f3 GIT binary patch literal 343 zcmV-d0jU0oP)xN#0001rP)t-s5)u;A z*x&yC|M2zv`uzXh;^{p^R1gpo4-XX7+29)+8$U)?7#J8bH%ZFO&@(tnA0sUd4HZ2^ zQw$6dIzdr1JWUS|6Gcs4K}lH_78XKETMrKoCMq#LMpZyZS3E;fJVR3o3Kjwa0s{jB zMowTuOI-v61e>0xQ&m<$Lqi@O9yB#J9UUGjDl49M#fty{0EkIMK~#7Ft;jV3!!Q5@ z!4sMp!VC`n|9jC{t;$Tdi)#QD0k{QV9e`y3_LSM9XEP>t)R)pLdnQ`z3^JkTOAbu5 z2dB`fd*Ae-3nnt_R4UI!n!kmrnAlQnR?f#5Q!}xlPTU=(l<1h4#mR-VPGTl;o@bJi pXq<#MjZ80UPF@p%yod;Y@B{AD8Aj@g0G9v&002ovPDHLkV1gMBcw+zn literal 0 HcmV?d00001 diff --git a/Icons/Black/VideoPlayer/NoFullScreenDown.png b/Icons/Black/VideoPlayer/NoFullScreenDown.png new file mode 100644 index 0000000000000000000000000000000000000000..b02aad83054c1dbc71197e2711aed6afde62c543 GIT binary patch literal 843 zcmV-R1GM~!P)xN#0005DP)t-s0s;cm z+2BS_VAI&&-QwvCCQdFkR}E2z4jw@cA3_ipGZ09I2^u>S6BZL2G!rIJ7#J8DAUhf& zB^w(X8z46uY^NL_CKD4CE;n2-J!CXTbvHm&I6_!ELQz3UT0%-%Lr!5sPi9hJbXH|{ zTxxk-YIG94l}B6h7595xmkEH5=qFEvmvHB%NGF%~gjZ-I?+gN=BKmwJnpdyJNX zkC=p(pM{f~hnAg)mYxPJU7f73FE&fGz{It|#S#({oujZ47AXrPObRq$3P^vZv9vTb zHWn5Z7h#hS5fTFf105Y61Ox;oEH4WUqK~#8NRm{_3V^I_U(0#6A+qP{xrES|b z#-2ZJ(mXU>AFu$!Fzvr?S`34qI;rrfn^3BQ-x=4@w{AzS3~0^Ao-5D0E6=eR{@M=Q zA061>hsC|Sx3l%RV{2z`*KL6j)Aq*ZTJ3*FZEbU7+XNcp`fASV$J<`M`>navbt7n^ zPP@bC6Cs4Yh(7s@4!bi7!-lDGy^7%Tk%)hd2$g<($^d`V*;G1#-?TimhD17*Rm0uk zbaMU-J+=@8fzIZW(}y6-iwny`=)TS8Lqp32aUM7e0`43Whc|wlImZ<&0B3QaHxN4g z)o~gM^bRZnXQ{}Tq_ZQzFgqNKu<4VG;u3Hu-Z@Fe%HE6T3vW3_lIJ`MWYo%j-{8b0 zZR~c8b~!QFx4%Nc$&9kZ>KW~q%zmAf^pEziO3E2Hk;UcBO10ilC=`u)wbGQwWv@-U VZMaNO#lrvq002ovPDHLkV1gmEN*w?I literal 0 HcmV?d00001 diff --git a/Icons/Black/VideoPlayer/NoFullScreenOver.png b/Icons/Black/VideoPlayer/NoFullScreenOver.png new file mode 100644 index 0000000000000000000000000000000000000000..eb5e78fd361bf32cb12006f60bd60c7e149b4db5 GIT binary patch literal 864 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 Ef(o|TO8@`> literal 0 HcmV?d00001 diff --git a/Icons/Black/VideoPlayer/PauseOver.png b/Icons/Black/VideoPlayer/PauseOver.png new file mode 100644 index 0000000000000000000000000000000000000000..4f7362626771a070417894a83c2eb575c58b8995 GIT binary patch literal 1710 zcmV;f22uHmP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00093 zP)t-s4-XCx5DyO#77!5;5fTv+5)u&-6A}^^5)>2>6crN}7Z4E~5fU8|7$_7ODis?n z7auSiA|@LnEgdI1CoME5FH9ysN+>W*D>+0dJ4G!!M=U)_F+WTwLry9~Pc1-9Dn?Q) zM^r6JS1nInGC@%_L{c_JR5wmtJw;PIMpZaUSw2WuK1^LQS7tj?WjkhgKu1?WNm)Wl zTSH4-Lrh*pOXJ?Q)Wn1XG&CQOIB-4S8GjJZA4^w zNoIZkF477l)ebGw06WbAHrE9<-v&I_06N?aG1m+;-3UI}5iiabHP0D6(EvT*6g%ZV zaD)Ly(h6175=7k|SQTJlW{cTulE!$M%5;^}f1T8Qnb>`p-eHO5 zW0mD&lW8iEjHKp`tm%!i?TxnZlBegBsOOZf>zS_TnX&Ghz3-y5 z&ZoKAw!6Zhv+AO?>!7yorMBy&x9_C7?WwxttGw-=$Mu8s{)+Jbm;e8$#`C7u{I$j7 zyvgXa#PGDt^Rw3Xvj6|T^8dlc&Ck@^z{}{z(do|C=)~3a!P@uC)b-EU_Rie)(b($O z-1gbt_sZe;!}|Z-;_2Dq`0DTW>+tvb{Qv*|{{R30000000000000000%`e}v0009m zNkl)tvb<>(@v-?BER2{5=;tXa$U~Vt1+&ydl)pwsh0>RtM^JjG{ zOWT{9nK76Gft{4@+$m?iy?c1$%9SfO9=`o}YRX()DLYeB24iDm3l-(LQyzVLcS{vuD!lHrCUtLgu&3z zOd@pFvCr2|ZC?4{`kd8su0L40`RL_0hi8RKnlTs{YRmS``+WE4)+H~0{W@56@Yk=G zOEw)n`(|FBtTuzDk&OP#xu>R25yHgt_88kG-I;$QZ+p=~6ST++RTQPs_mc#d|I>i_aG!Slw?u-0m08faBOt#zrLJb*g$omFCtkR)ucj`gIzOPp zS&)I1l~t=W*KbE%eSO!Y3DXx%pD?MbzP@gUUv8-uD^Qk2(4{#wWA~07ix)23xqIir zg^PFW*qxEu>>|hl(#tGS))AC<`_}H=d-m?#yJz?ATetIq+R7xDL3&wPIkd_ zA|W9mA}Y77yhw@@B+S4L0Zc-AMdeNHt*x!?P31*;LQG&$1|BHj<`z=1aw#q=cCk_s z;^u}3GVsFzA1|MPu&}TIkcNuzGl-)AQBhGS3kbx;0R(DlNj$@Y)Bpeg07*qoM6N<$ Eg2KTyrT_o{ literal 0 HcmV?d00001 diff --git a/Icons/Black/VideoPlayer/Play.png b/Icons/Black/VideoPlayer/Play.png new file mode 100644 index 0000000000000000000000000000000000000000..76d93d5043f05ae635986dfa78bf0a1dc008090c GIT binary patch literal 1693 zcmV;O24eY%P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00093 zP)t-s4-O3v4-N_n7Y+^*4h|Lx3?C2=4-gO!5fKp)5fTy-5)u*<5)u~^6ciK{6%`d0 z5D*&?5*-s2859*578e;67aJBA92XcF7Z@8C7#|oJ92puN1qUt$2Q>;2ED{$d7a1cJ z8Y&eVEE^pl9UmhaATl5!DIp^$BPA;%CM+Z;EhHx{B`Gf-DL{mORRz5~mKSowRMp{2dUN1myK1N_PKy^SzS3yZxLP}dh zOI$=tT}4e^MonNwPGCk)VMkA5M^Iu&P-93@WJ*$HN>gS_RA)<6XiZjWO;&17S8PvM zYz7F301TP{6P*AYk`5N10TiGB8K3|jq6HeE1{|OX7ODssssJgF4kMTVHJBAOmjEcH z3n;PxJE;IXuook>8#JvVE}kYjh$lRYDmscRJC*=Nod7_u08h36NxKSEpdLh`2V=Y$ zYpo(ljWR%uDowg8TDLV!q&r%xIa|0kV45~}uK-lW09eNWVaNq(+6sBt5@XK;cjX~c z(k)=vNLQvtWVS_PyhUifN@B5BX{J|hyHt6iWOBMiX245p#8GX;S#QHra>rG6$zXTL zVSdbQe93Wr#u{nCu#u^d^(gKb7+?tLiGO_A#~hH@oyZ!uwu?rhAOBS(@Nh zxA$#=&1i|zafZWlfyr`&&Uk~zdWFn!jnjIQ)kVwwOwj&c=Ko{X|7Pp|eDwd3qr8KS z&xex9f|S&Pp4y3!(2kYUlbO|;smqa|*OjB%m8jjEquHOR+k~y?kFw{Oxagv$+N7-9 zsjl6rvcRab)V90Aw7=M>yymgB;DFQok?#M$#@)8a>%qp&&(zz+&Edz+>(0~T(bw|Ns900000000000>O}-$0009V zNkl?tl395ePoqniJ^CuN@m55y21+1Tk7tz75yEy?gfH-o1PGpS}BVt-)7HD<(Xg zAuKF3%8=i;;njy{H?Lg2bm`LND>om!d)nyBZx|KI5E2sR$>&`E^xds1=MEoSw|4Ep zBj+yPeD$>6na?wfAvicpUES@%tLqmIo`1At(TWu-R4CcSLe=KwtU6veaEi7>T}_9XYdZzSMfjg^unRl3*P_v^XKb<3GP z>aU{D;2ET%Uw8N7(KRdkL9&1Tyj?T_Bz^HtoxTc#r-!(GWO3|t(BQr6Wux#g9mkG_Dxr`@*2 z<+(Z4))IycTx`Y~mem#IRjrj*-+;i`uF}fp%JPb8OATWNE=C~MzJC4s z;l!qvDN`o5R?W(mv(o{ZEaEC^HG9V7X;aTWez>@;WBSaQGp9|SG22SiRfK_yi^14P zu4K!!nbRlj>g-&i&LFi>C-fCw@u n!GWT@yrQbADu{vzC@BE|hW2^mtIGDe00000NkvXXu0mjfIH~ao literal 0 HcmV?d00001 diff --git a/Icons/Black/VideoPlayer/PlayDown.png b/Icons/Black/VideoPlayer/PlayDown.png new file mode 100644 index 0000000000000000000000000000000000000000..91ceecf2832d3bbd68109d7015bd583edde30d09 GIT binary patch literal 1687 zcmV;I259+-P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00093 zP)t-s4-XCx5DyO#77!5;5fTv+5)u&-6A}^^5)>2>6crN}7Z4E~5fU8$05kvqJqQsb z3l=pJ7$_7ODis?n7auSiA|@LnEgdI1CoMDt07d`+P67l=0tHM307(P@O$P@}2?$RD z08ju2Rs{i30Rme93|0*rR}lMViqh|9w}V_CTRd8 zcL6wg93x>FF?1&{OdvN$CO=9jFij{oODj1;D>+0cIYufwMJPK)EjvdnJxMV?Od~F0 zB`tFzI%_XGcr-nDDML>!Kujb?pUT{}QdGC@%_L{c_JR5wmtK15PH zMpZvXRyayoK1f(TOXJ?Q)Wq2XiHRSOjm17SZzvBepp^@ zM`e6hU~gV#a{w)X05ydGJc9u~jQ~cB0!owsPn;4{ivU!k2V9^7Tc`zKtOseg7J9lI zaIz>-f+bg#EoPc1WuQKMrU-h=K}v!|REkVgf=*Y7Ok9ppSbt$Rd~6G?~*Op5rH`<|?l3F|X+~ zw(vK+^hSY}NrRn1gP}r%p+kkIMTnzDh@?l0rbCFWNQR(Dh@eb}p-7CVOp&fnm9$co zu~L_}QJA?@o4i$?zG{J+eS({OfSi7Xo@s@ud5oq<%lcK+|90m8go&SukD`c>riqrS zhM2IDm#vJTwv?c>nxM9xro5b~yr{3fwY$i{#?8UQ)XB@&&(quA-{{)l=iA`x+~Mfz z@AmHR^X&2X^Yixl`uqC&{rdd>|Ns900000000000000000000000000$$dg20009P zNklLp8-tX{kR-ji~#OMU@4DGbTUsgV}vqN|?XS-WK6!g=%NEnKu@?X@SB(dR58QyG$y zGVNw;jC^)&#iFavrc)ooQzp7YWPf~pI$^?;`OB|Iov~mD3-vi` zetp42cNaaV?2jLx*0@bvaNYc@4}*k+&l!FL4S6|5saM}&;G4RFi8KEh9|i_4k0S!S ze3Hs4N-sWw!ROEKr^(9l@d_OAU|{8nJEG4El+@IE{s9c$T~kw4QI_P@KN82l$`-u8 zi%(fo+sN?Q8xVNxYG|mdqp8f-wLh4FmC(>+7nuO^;QGGO)6;hR^ELscUF$>sip$(%ugQ z?X3-U+I_RaS%I=Fq7^5)YuftzJ32OR-??+=)-7B5+iJQ`R*15I^fFt|KHc5CW!J7f zd-nms-rYO5GxCa)r-6(bu{C z=4}wTxxKUR#O!b`pg02?7;rjFpL2B6rfoZR?AW$x(~&vT9XLV44D1lVBo;q?&VfUR zj~_mCV9xY-F($Am0}m8%bBhJ!RZO2fy&^9_jGG%G$RG>{LV`jf;^N{WKpH9{%wUNE h%*@Q7EFiG71OTAEh{RNfdhq}N002ovPDHLkV1oP`%`yN0 literal 0 HcmV?d00001 diff --git a/Icons/Black/VideoPlayer/PlayOver.png b/Icons/Black/VideoPlayer/PlayOver.png new file mode 100644 index 0000000000000000000000000000000000000000..56b0e5945298d894b063c0a07a8907915b30534b GIT binary patch literal 1587 zcmV-32F&@1P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw000HP zNklq1tL=90#%UkML zWL5RFv)c{b_?u&%ATy=lkFHIp6ut zIkPAskqe$B)2v07=*8x!#UT+12J;*#)>Npo>*Vh(B{(9XkHY5*MJ_T$C+WlECmSMl zzM*6NEgr^5U2qg<)>Npoiw9>{4sbhC>8@qUL z;wMEGf`g{$O>t6zkqdO*#)(l0VcSpoets?Y$F`ck?g2e=rmgT;YhH1S6l*G=xj^=T z7M%D=k%i!(DgGg`$QU+nqF)$Sme8L{@6sdr-G`cU4>V*IG;G;>Ln?D$0~P9A;6jZJ zr$m#507n9q8NsvtL*slxW0@2;C7}fJj@=>;X#Ms&v}#+uLmPM2Q>WQIM{b>|xKnUe zpvgjj0}ZC)7Zjs6&lxu*z-Q?u=9PZ1wY2U&0b=0D7oDhGm{u8=d~M#A2C2l19(wwB zO$_>ERcG?|tz;pL@zz6wDY!m?(WCv%rtDv4rrrR`^$GCw!If9F*zNXvwk~>~xv>__ z`l2Z|O(-cxydgNhIo=MMECe{v`~suJ941T;<$d(eyqI2m`;fJhmN)KePTJmNS#w@; z5y$5};mC?~M1US${zu;-!_}LD9>NTJ{f9t>@-qY-6xaTf4_E7&l z7$`G=9+A==Ybpx9gyNiA;5v= zE2-#oN@G(36+8sUeSMQrQ%hs_|`q|b&gl~;UoJ~)YUD8=S82&5wokkmo-9w z1I>N(cxBMgp*%!GO2I(g#TO=DSH_nso>l=3YI-i9oR_S*-S&UcY)xGwgMusk>cB#6zsOVzzfU^5?d^1iN zfeQf+G#8ahQMsu2*z_w>y;hxi$-QF4NB0GEnN7RCQ*uw9{avcCxWu?3&o%xB>aLq? z2oFyDq{u>m15L#oT-0jU;Ufd$*94~TSHE=uhYYx9b&X3c&&WRt4lUeLFlKonl_}rW zqe*!W5FVWPNs)yB2b!3J=E?D1aExKiRxZdW3_o`hAVz-XSH%#$HsnvuIb}I~#Z=N^ zDSeDWPTR3bGz(H>A;6J9!BuNS%Rvbn0#kPlHYC7WjBb@?~oR zuD)ihmtsvtJf)NZJUH=_BHJ4Um+SPANf!LA<9l6Kfw&8wq14}Ifp lw^3eFtQ~bH|9^7z_y-frtOo#`CgnPbV&R{hkRrh< x!XU@k(HDdq( literal 0 HcmV?d00001 diff --git a/Icons/Black/VideoPlayer/ProgressbarBackground.gif b/Icons/Black/VideoPlayer/ProgressbarBackground.gif new file mode 100644 index 0000000000000000000000000000000000000000..787454e3c93e66662f8ea219d1c498b85863ff57 GIT binary patch literal 1266 zcmZ?wbhEHbEMw$hXlG!MkyDhFQ_|2eF)*<+v-WWFOYjZN^b5=OkH`%GqR70!$o#;l zyuhgZpy-0YsKVfw;*eM%DhY`#4UH=ei!Td{FAq;Bk4UPFNUDlTu8B^qjZUqLO{5 zIlxWx>6DPL%%@W$(pEm57E|`}=`^+$&1W-Gre!{xnXzo;vspRYUOt;$a7^?0oRVvq O&*xS=%S?A*um%9-#}fzu literal 0 HcmV?d00001 diff --git a/Icons/Black/VideoPlayer/Reverse.png b/Icons/Black/VideoPlayer/Reverse.png new file mode 100644 index 0000000000000000000000000000000000000000..e7e8f5e7860a36743e68623302fd8a4d9e6bb3cc GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~c!3-piujpS2q`CrpLR{lBn}cJD1Ecc8;>&}g z3!;*1{3CKF%~~Cs*5DbK-rhIgH!RyLD5JG!PE1O@Pe@iwa(P5zm3K&HTt?IMxoiEx za=e1l!{RH7t0qLJ)I}zgl-Bh7hUS*lPDsdTiqB|_Osa0|n2}%B;~$aV)H%~TIJ=;{ zCm=E}B(}7neO5q3fp2JbL&xlZ$U>H0)*hg%QaoK8Ln`8IkGS$3b`W6L@UXR@>kQBT z|8dK^LgaaxFWPskyLVQ6YgEyh%d$z{9eEWO$B`btd2uJK~dY4OXqu+>e>-zf^TkHOQ`&t;ucLK6V8 C`g#Wd literal 0 HcmV?d00001 diff --git a/Icons/Black/VideoPlayer/ReverseMouseDown.png b/Icons/Black/VideoPlayer/ReverseMouseDown.png new file mode 100644 index 0000000000000000000000000000000000000000..c57b383d4898d0f93418d3d592fc6ab2b43b3e4a GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~c!3-piujpS2q`CrpLR{lBn}cJD1Ecc8;>&}g z3!;*1{3CL+ikf578axBjEakt5odeEmG7{F0Ke#7 zTiz8S&(nO-zGL0Jv*H`?RT(zD+GpMOdCl&sRa|GjyK_AJ`OWSOPsj4mb3ZqIyw<^? zH0_pi=(2Ayrbzopr0Jq(9 AHvj+t literal 0 HcmV?d00001 diff --git a/Icons/Black/VideoPlayer/ReverseMouseOver.png b/Icons/Black/VideoPlayer/ReverseMouseOver.png new file mode 100644 index 0000000000000000000000000000000000000000..b43d264aa38dcd10933b5d700c829196e4c778c1 GIT binary patch literal 307 zcmV-30nGl1P)XT;pR>Wp*i2MvO;&49SZ`iv zf=*U!R$q8aRB2gadrDGgTV#GvSa48TZctfqUuc0}X@g*Bf|Z=GO;u~FvdFBn$gj4{ zvAD~!xy-!7*1W{my~NbM#nnw!ZA(*YR9$t`+36$tmtg<^0Axu-K~#8NJ;X&4LQxC^ zz==Kij=Q_v|9S+dq8E+TSN|V^E0>39DA!&HFdG-UR~#05&&;6uJg1aq7jL1e5a}Ib zjE|Fd7ZEUL)Yqm$eQR1~2GM+g$)^3ZB_d?kjjHZf&TnR)2mc7@#2Ekp002ovPDHLk FV1nADgfsvE literal 0 HcmV?d00001 diff --git a/Icons/Black/VideoPlayer/Stop.png b/Icons/Black/VideoPlayer/Stop.png new file mode 100644 index 0000000000000000000000000000000000000000..324c85c11a7f4ae0dcb60ffaa87d9c8d7e2a276d GIT binary patch literal 1020 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQaEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e6&pP!G5ON@s{ zke^?emsgaZUqnDaSV%}nURhU7%h1T&)7Zkx#KzakG0?_2$i_L?)&+<{?A$`_-NGE) z!yP>%oxGx*y<=T{db}9H|}4#`QYxOmmj|V`Ss`jzkmOM&KL!wAutF- zK;EkHH_%zto-U3d8o|A%Z}J^d5NUb1k^72X)RC>FkN?JB;w!i`V~)iB-SvDAmK_Lf z>}E=5_2ZH`xx4m}jWD~^vk7OIg%?MEspMXmo^(g|*7l5pEurOx9Wcr&{a!#gN%cj9zE-c1%5<|G)2A9Ru$vd$@? F2>>1me~bVC literal 0 HcmV?d00001 diff --git a/Icons/Black/VideoPlayer/StopDown.png b/Icons/Black/VideoPlayer/StopDown.png new file mode 100644 index 0000000000000000000000000000000000000000..11777e0948abd94436466e73c11fd1e7be731f82 GIT binary patch literal 1216 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQaEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e62Ku`z>goQljC*-g^eEpxd{61XkWH1!?z&AjzYee_NJ^i2cw zO@sB!!u8B!^sN&0t&{Yvll5(q4XhFkY*RQL%D6o0MI9^59YU?00&Sc_Y+QovTtn^M z!!4X5Ox#NyJt7@Fqnx~=oV{aRedC;b6P^7Mo&D3?{1V)Q(|n=}f)Yx?Qp;kpDr2&$ z5)0~*3+s6U+XXz@groWe0wxGX&Js_YES9uDI%m03*;?DlDMTc*wLm^N?Hf@O0TZz`kL{{Q>;9~fn$fNmk+cJTTp1_nlZ zPZ!4!jo{GJk>QMt5)BW}^Gux3;-Yyw!pYT;LsZx0WJ*eYs8&k+o6T`Ju$#Y*O7@eINxq)eu>a+73k7rt>od0+< zx*^XyopsMg8;K7rn=j=$T`3;7x>or5U#G22g7{270=Cm|sGjo^p zRf%O6Uz(elf3f0iTiI)&u){Mu?*3ix^!1xx?!8;O`C1EeuHlaPCu8s4xp(*e-Fq=l wjeZ|=U7%>xe*ERF!s@+o-}_F#EIctGJ|U}i^QGGdzk}k<)78&qol`;+0M~U!mjD0& literal 0 HcmV?d00001 diff --git a/Icons/Black/VideoPlayer/StopOver.png b/Icons/Black/VideoPlayer/StopOver.png new file mode 100644 index 0000000000000000000000000000000000000000..5eab80f098be8618f4ae8a6ce672838af92eb12d GIT binary patch literal 1215 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQaEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e6&Pe4paNJvmn zOi)NfP)Le{OOun=Tu8xQMZ=6=DpFL{SxntcNX0`|(^W_#NI*MWNGDW8GeAryNJKwW zST{!0Fig}SPF_1r$RI(;FiFTHThu&9-ZDqbrdY(LO3toI(ZEO9$WPfcRNp>EK`Tu` zJ44AlQQV=%(lOM+AStG8+JZ!dl_!5oGRoeNh4a(M-)~+!w+8mPB;FiAJJ7pxLF^stR=6>JB`;#x< zpMLHByc_qM4?XNS{b2E}`x_4&J#zBgsY};RUA}(##{CobzFfKa;Lg2=cOE>s`{?ES z_a8re{Pf}LpI?9e|NHkJ7>}cX79o&z%ruaJfzi&>#W6%9IN8A5+}zmIks;W)xR^~j zxp~PI5f%?$BZD*plZgV!=YwE=TiC` V-4^-Cvn~}BL!PdFF6*2UngES=Uqt`_ literal 0 HcmV?d00001 diff --git a/Icons/Black/VideoPlayer/VolumeBar.png b/Icons/Black/VideoPlayer/VolumeBar.png new file mode 100644 index 0000000000000000000000000000000000000000..d372a39e93b6a84bf8e211f2243d9eb938557e92 GIT binary patch literal 934 zcmeAS@N?(olHy`uVBq!ia0y~yV6+3WSvZ)1q(Z^sS`a7Q(btiIVPik{pF~!WaI!~` zF9SoB8UsT^3j@P1pisjL28L1t28LG&3=CE?7#PG0=IjczVPIfp2=EDUm621Fl~dw( zJS*XPD57FUQstKH{&#uP{@3kz+j8_jQ2Qtt4S``C0=aYZegeIx>gnPbV&R{hkRrh< x!XU@k(HDdq( literal 0 HcmV?d00001 diff --git a/Icons/Black/VideoPlayer/VolumeBarBackground.png b/Icons/Black/VideoPlayer/VolumeBarBackground.png new file mode 100644 index 0000000000000000000000000000000000000000..e72ca6e8756397ed3c6f4b5bd04e08aa99e84ef4 GIT binary patch literal 1011 zcmeAS@N?(olHy`uVBq!ia0vp^Ak53b3?j8ob^|GvbVpxD28NCO+ELVa z=x^g3Wa}DY=N9VV9`5d+=pCE}v~d)ShQLq>0mXd@c0jildAc};SomK(w^6KFLBQoA z=dMj|hFxq)|Nc7%8_4|D>D@l((cFW}EuTD_pv708tfsoByXK9Xd)lgfclPwDy)s|+ zK})8jO3H`pxQN_Qslzfn&jiAkDI6_2b=~D$>&jUr%~HI5D`!pFXZ%WX*QB?16g59F YFZpWbJi%v^9w?+dUHx3vIVCg!0H8Zy6aWAK literal 0 HcmV?d00001 diff --git a/Icons/DarkTheme/VideoPlayer/Background.png b/Icons/DarkTheme/VideoPlayer/Background.png new file mode 100644 index 0000000000000000000000000000000000000000..bc9eb379b2b1a5244fe377466498d2dd44612548 GIT binary patch literal 453 zcmeAS@N?(olHy`uVBq!ia0y~yV66bMbvc-Ur1HAY&wvzTage(c!@6@aFM%AEbVpxD z28NCO+h5(XQ!p5B_}5*CMG5%B*ewV#l*x! zM@L6SMn*(LgoTBLgoFeK2L}cQ1_T87`T6MGhiHRvFD9FppTUl9IT3U8=bhNj(udzt%06KuPz$3Dlfr0NZ2s0kfUy%Y7 zyy@xU7*Y}U_O54`Qy_!$!4(=w%r_P^btQfNzTZXt{RU>^RZ&N5XR0zxnadC`_3}fW z2Ci=L1vLiHF{oRVo+6~h!Tm6aiMC({D0>kJ`J*&0^e0g9+Hghnz3Of>~c zFfY*h4wPVQSY-p0;AIG{1S&lb6k%;xmBYAVQw8IxO+Yp4fg-sT>Z-Jg< N@O1TaS?83{1OU{rGmxxUUaA44RtNZmxcY`=xA)DTG;6hIV0v^) zoqt4bRB}yVRDM`|d2mc|P;`M;P)1Bjy-!G1YtNjREu=tADv{rGmxxUUaA44RtNZmxcY`=$EK8K6f}AUrbnmL z`A6hNCD#N-<%h+W2gei#MHhGlWyGY^`-EggClwi4`bH#Hc?G4%XEu9>Wcr3>#bq@4 zhGr&ax5Z_)`i13$#aG0pHF$@ldj_QC7B?4_x5cK_$7eM91gH6i=0+q{hQ$>|CRHb7 zG2SgU?n|TF9<^@C)gvAzw#Fhp|6^6&< zO*?Sz8_?M$o-U3d6>+i0OvR2EFdVsH*it!h=FErx)NdEw`6*uIbiQ>RcW>0~V+V3P zs`mKKtUT5JEz@AGjQ6vcyqYymySz28>p%O;`LQ=cvn4`i#$8>foRpvY0zCg|PZ57C ya^Y#z%DQg}^B8TIJ%!C`R;LEP-eFMmm+@Y!fHB{_bt{1OGkCiCxvXd6Ai!;r=JvaoqVAdP2{I zt_zJ?+s43bNP4_YnR&{G_GvJk982b0ZhWjlx=Sh7FXsIT@r`IHgjgJy-7P|FWcj{O zN&YL87vmJrygWQS+}+(hJw07rUC*99`|saB z2L}fxCMH{3+dqH)Ff%jT+1Y*j_Kk&wMO#~2O-=3bt+(rX$+pOelF{r5}E)LcZhfZ literal 0 HcmV?d00001 diff --git a/Icons/DarkTheme/VideoPlayer/FullscreenDown.png b/Icons/DarkTheme/VideoPlayer/FullscreenDown.png new file mode 100644 index 0000000000000000000000000000000000000000..90de130d19a49216b318f2e869d7a47e687e1a51 GIT binary patch literal 679 zcmV;Y0$BZtP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0z64XK~y+TjgvcT zYEck{@9`NG6d$0776wrewDT8eA&3x3C;k%uioKoK+Ncn$6f40(EEFGLAwKYt#Mk}2 z<2_dbH)KI3v-hkuGiUawyuQBv`h(BUPjP+%gTa7Rvf1qUeC~F;m&?Usu}JKD>~=ei zMiY%jm6w;7(P)%Pr4osRPN%!azs2cvs?}=MYE{W(GJe0G=GW`>^?FqlPNzemP&^*r@Avok4`4Q%+wHbC7z|piR+r0#n0`J!J`RTiKK2WkC5KubPiBy_(w9e)N;9eetsq+!}|j6i3$xq zDh(;s%3!-D$p zCX{HpwPYoRBbH;KP?*hTlx;K`9N*sF;(#s21=cJmh>n{|!SM%zUBgVEO<6 N002ovPDHLkV1lZlG=TsB literal 0 HcmV?d00001 diff --git a/Icons/DarkTheme/VideoPlayer/FullscreenOver.png b/Icons/DarkTheme/VideoPlayer/FullscreenOver.png new file mode 100644 index 0000000000000000000000000000000000000000..0e8e0bc70d22dc83d3c72b396e897bc37ad3c41a GIT binary patch literal 687 zcmV;g0#N;lP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0z^qfK~y+Tjg&iU zDp3@LGo#*sZ+ze_#7aqHEodj&*!gJvCxS(Oi$B0Fg@~Y?g(<9T6pV_*2R;*=>*Ibi zTY`8AH>)`A*?X;h*4bx9rBEn57`R+6ilVT}<984as~+caIeu(5TPzlHI2`Bm+2DK& zRaLj!ZM)sx@ApbJo3-2R&(F_ZulK*(3fOkBSd`0UGh0QYQBs4!Kx#jM)9FNIibNv8 zU@#B}ESJlVp8>_1~wW} zG|pr)p-|}R?*_x+@a5&jYPB*NlgWfiB|09DU%Socb5WZA0ePx$WG7TAJlR#VmPN^Jp~k`Fy01(THJi zhr&)I5+097VnF`w?d|>j9Sbg(iy5oq@mPkeU&6=7SCG%=8LY)(X|-B31-DfKR4Q}B z0Hj|A2ryqNl_rx3+cp{v9-GZ3G=f_iDt%zsV3<4$$nfeuJv~*cRl~0iy0Bgu77Kh` zCACKbcq8s~I<;DjfZj&&ir3dyp&?@>qxk*)WHQM!vqj7~ITB;jYX)c`T@dhwuq|Z1 zKghZ`olf&%&1N&q2$ixvA_K$%Vrj?gfr_hE_!8sscq*0R&e#(MvyoK-WV{bR0#^3t zTdLRV3M1vli^U>;22ingr@vD|U}d6}N<|m*%=BsIcDtpFH`Y7I$!WS;t+1(S+F$M! V_#3i{8TkMJ002ovPDHLkV1krVHMal& literal 0 HcmV?d00001 diff --git a/Icons/DarkTheme/VideoPlayer/Mute.png b/Icons/DarkTheme/VideoPlayer/Mute.png new file mode 100644 index 0000000000000000000000000000000000000000..bd34da9f61059f7463594a5760e6856ca0ceec19 GIT binary patch literal 656 zcmV;B0&o3^P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0wqaAK~y+Tosv7~ zsc{&`y{}6YI^>cPvk7&iB%3H1WROiZ2IVps6gy#824$95B!dh{N?D`~a?5ZcgE*Ya zm!IP}&TvluPrbi>&+|Ut=k~so%jIHx2>QoIp}+r&Z+9NX3-2`%BoGL25|gHBwOTEc z$*$KcqKT96N6pLSVm6ygrIJ>wMJV8KI0l0upU)=}36V%d^n~9^)R9Oep-_mTD7)Q` zEIb~sP$=y8d!Nt8=ks&99O^&Cw{D3Hu0SAwXzWd+(ZD>P&+&NN?RIA}nN%uuJRXzD zB$vy5bc+YFU@#bq#f(NH$%n?+Y_`p2^Lo9JNCb06qtSFaEtN{0PA8Jyl;{mgtJP|; zSiZi1EX(Ec^PPIVuGi}~n+-ZQnM_Cx6}?z2*6a0`zd-t4uZIf?jz%L~u;~Cp z6;v!dFfaqs+}UpY9ZkMI;8O11Cyh_*SdcY&LZ|9Zoa?Ctg8C zqwb>$MP;+u)9Hl0jmKm7ksIHzQmKT)Vf+a~p%8mM91e)Qb&CfO1EXX0=%iMw!QAb3 z9*+mJmCI#p+wb?24G}2ReOws~RKqEk%eUJt@nA5ON`*#dvl;P_8n?@<5)d&U5l@rw qlz~ULPwu8G8tzYszA6g<0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0*XmQK~y+Tjgrku zYGD+H-Fs`1irAk@2&GAZU=fHEjnag2&^34sI`IO;i8tUiG;>rFC(=Mjv`|!}Nfees zmYGNK_dMI(k#jt7IPc)wYp-v;YrSiIOSrhWC=?3g@mQzRss007RQi>#deexKhtC^1~UzP^fs!QjUfxIR8UEEY>J7*ujigXf_H!;+aa4chHCV$RRc z(c^SF$)fm~-1heN{{B8Ew&IkTqtOTp8lg0x(P)^n)oN90Vwg;(QmK?oCONV3P!pD1 z6VA!WNgxo|-QA@Jpw((QS5{Ui!Wc>6cDu=ljfY<3nj|Qf%Wx3$_8XR$mlqZm?(Xgk z2E+67v&Z8Jhr`t5@zDiK{QCNOe0-F<{u8UKt4ONVYI}Qop-?CqjXpd)Pyi1FVTm-! zhpEhg+>9Rn{r$be;fO>cu~;md&C)`>UWX-ZZf;TmNl#BtcDw!i$yKU&JkF?TuUITX zP~PL^psmj1C$zyS%(?Hk-71czDQS~*}So_LB8p8 nsK`1y0di(1KsL)zuh)M9;o%Dtm()Nr00000NkvXXu0mjfYY|$E literal 0 HcmV?d00001 diff --git a/Icons/DarkTheme/VideoPlayer/MuteOver.png b/Icons/DarkTheme/VideoPlayer/MuteOver.png new file mode 100644 index 0000000000000000000000000000000000000000..4ac1d735e35095f941b8d8ced17b2a8458bb6597 GIT binary patch literal 811 zcmV+`1JwM9P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0>DW`K~y+TeUrUQ zdT|uSfA=a@=1VUGl@1{pK|xa%C?w?2;Gp0lIJ8H*NHjRrQq4gP<>Vg_3PuDXD3LGV zAX0-^gD+)h|L1?2APCiJb$54HzPPx^`~CerA?XZ=pT2}hw|+#c)lwyg zVYys>d3lktTdfvJ1P2BNcs83&X8HK|Xt&!$IHD4tBauI-O9sTy(9p)l1{qIJPtVWK z%%f7NtX3;cK!>N4NtO8d`PpbRc&XKDbTFIEbe@@+sZ=Ti9S#TChlhtS0+CiAl24Tg z6TpBcw7R;gP$;OJo}QL^o}QjAFE4LyZsNSXy-^Gt`Be3KlC-k2vbMH1H#Y|=2E+IF z_xbsGi^XzubTl$D;&Qpp&dxL%4M7llJ;6vOlS@lW3kwUd?;FD0-rj;WIXM{$g^WgH zHk+lJ!C*+GQdEhM=1Lgmm(eE{i{XrpjslHCpIk17ws&`TRQ0q)7&K&zpO#Li=_WZ8 z<2*b(3=R$!3IztCs&_xA5)Oy2uC5TUZ#OqLI-L$;khIxsnM`JCYKr;e@i-Stm7E{m z$;k<1IADR%mU)OrqtSdm@AZ1Qq2uFYpU;Oj7Z(@YIj6my!b3E6>iqni9U{s+1QBUx zXD1Sg?Cq@q=)(}4oVIEYN}@$nI8X-_65CeT)}+wJS?>&0S`CPbkM zACfScOooQUsmI4i09UWqUtV4ctSFx-!q9;O7~+rw1st}FGUC7iDmi@Ffj~eQ8ykZI pFt8#j74!UMQW;o`3c+@}{S6Wi7vuxGxN#0001rP)t-s5)u;A z*x&yC|M2zv`uzXh;^{p^R1gpo4-XX7+29)+8$U)?7#J8bH%ZFO&@(tnA0sUd4HZ2^ zQw$6dIzdr1JWUS|6Gcs4K}lH_78XKETMrKoCMq#LMpZyZS3E;fJVR3o3Kjwa0s{jB zMowTuOI-v61e>0xQ&m<$Lqi@O9yB#J9UUGjDl49M#fty{0EkIMK~#7Ft;jV3!!Q5@ z!4sMp!VC`n|9jC{t;$Tdi)#QD0k{QV9e`y3_LSM9XEP>t)R)pLdnQ`z3^JkTOAbu5 z2dB`fd*Ae-3nnt_R4UI!n!kmrnAlQnR?f#5Q!}xlPTU=(l<1h4#mR-VPGTl;o@bJi pXq<#MjZ80UPF@p%yod;Y@B{AD8Aj@g0G9v&002ovPDHLkV1gMBcw+zn literal 0 HcmV?d00001 diff --git a/Icons/DarkTheme/VideoPlayer/NoFullScreenDown.png b/Icons/DarkTheme/VideoPlayer/NoFullScreenDown.png new file mode 100644 index 0000000000000000000000000000000000000000..dddaec903bf767c1f35933236486acbe18926b22 GIT binary patch literal 696 zcmV;p0!RIcP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0!>LoK~y+Tjgz}- zYEck|&(^IbD&9d6g%HF-FkP%fh&F-<5j)=?FXEGkoxP1s3LCK!1TP4|C|G!+;w>@i z`OL^h0w?4L$60IUpP4l?Tgm71f4=bX@gd4@U^E($N-me%@As`%>u@+&EEci-jMZwT z)9IqosPg#u`110SPN!3;l&Y#{`;Yki{H)b#)oNAAX0yRykmBd_`SEyE6y@ylABd0L zZm(1-N+y#Dhr{>x_v`igZ2tw!W^<#_(1$`Ho6Y9&cpy{H`}_N5vq49G10BVI2JLn` z_@mKCrB58_0R-yVZnuR(frygf68(O^TrOW-T~RrJrSeBGNdi!N7af*VorTAb^3ukZBmPFi=rE9!Hu?rc$W{ zfqTdt(b+J!+pVK%)Ua4AcrBwQGa>$7pkA*t7$9}wgD3u{J=5#;gr|5EksOJw;pXOs zB!GL(2YF)gBcy;Uqbxk3 z2?01FudlD!Q^nimGpU70`^?Ln&zsw0pc_IN1(Ins@ ePx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0!&FnK~y+Tjg+}+ zYEcx1?{T<-GY)tQwbCxNV4>j9*eSL?fKOo|_$Jo2sZ!WlXkj6uXow2I3FC;~sP{W( zi3B0s{Kd{XYyJOT(>6*zpZ}%ddc7)&!YQBMK{%YMoy+C;W3gBwk%-M^yId|B=UeD> zy3JEJBM=GaMwQR0|jRqGN zXEK>!FnFu)3*O$|o}Zu1W;3JF>-DG%Sf8Jtl8s3+36%YQ|EADTEEe&+zP`@qbLL7u z#He({B(pR_@x&5|gvbEv=ytm-5d@O(s*VR>QzQ8jYsYDN%>R!Hjj2 z$wY>%E@8hHgSFj3Hu?njs2Hepv`zs=qw%)}42s8d2X9tF_`lK!sRN@7gTcVJ0FTJ- zfK5mEZw#XmzN*3nXbcFW*=%+?9r54M>-Ac#me7!K;#9m|FN@)unIq-_(Gp`*V;Uqm zp9pv%q=if`kX3Oyo#ux%o6RUjsDz0Lum#w19nS+5t5z6eG#X8%QtXVJFc_hnVjyGH zKnzau^ILj(c~M+07aK1W3cMkxl=q;2P(tA3pFy=+RmFTWPcCyhof4)t&Id^6T)JAV dDD!kW{R2Zw6y@N_S#kgX002ovPDHLkV1oDJH%|Zn literal 0 HcmV?d00001 diff --git a/Icons/DarkTheme/VideoPlayer/Pause.png b/Icons/DarkTheme/VideoPlayer/Pause.png new file mode 100644 index 0000000000000000000000000000000000000000..e7d349c11a6802916d429bb4f5ad84eaa6cbb776 GIT binary patch literal 1307 zcmV+$1?2jPP)Px#1ZP1_K>z@;j|==^1poj6zfeq6MOj%{TU%RQU0qmMSW{C|S65e0Pfs~HIVUG4 z9UUDS8X6oN99C9VPEJl06%`~TBse%YMMXtaR8&<}RW~;`6ciLFC@4xwN?%`JcXxM? zkdT_1nkgwMLPA2oz`)|-;^pP#y}i9rQBfHg8B9z}T3TASx3}Ef+{nnt!^6YAzP{Ml z*tE2?P*6}bG&Il8&$_z0u&}VKtgOe!$6;Y%NJvOOKR>9bsGXgio12?WO--w-tJT%j zpP!$+yu65rh>eYnr>CcEY;4lf(z&_0jEs!`|NpA0s(yZc%*@O&F)<$>AC;Ar+1c5# zv9WM)aFUXeOG`_xuCAh@qI7h0*4EZ#Wo5g&yGBMv7#J8qK|x?(V79ildU|?pZf-WTpJr3d3kwbV`HhQsf2`t7Z(?Tf`V^vZ<(2yH8nMLb#-cLYKn@Ae0+Q( zBO|7!riO-whlhtEA|e(R7IATLqobpjmzT1#vaheNAt50qCMKMmoGdIXJUl!Q5D+~* zJs=<;nVW_A00009a7bBm000id000id0mpBsWB>pHo{RH<a!9~1Y-ft_LBp^)oF1Ix;>TL zgFW3{E-*m$vpC>brIPacK6r=Rj6X0O@H6fqucIqSDU~b-I5lY;8U5%T3XO)tW0A3N zcr@S{bbJ~yl4>j9qA@(^@_OQt&*5+)84QO%N5(xtQxK0uIWQ56qNd5IcxZY?(l3(E zOo!s0$yqcSn*ejEx;|4dJ|0L)I#$(WAQYdP?W;@80d;CVz2FWkE}_!hAZC#6qDzYb z_d$YWq`w5TNVsLmM!FIrwDRd`F3Fk%62sgpKnt$?DHiwyE3>_ z*p_Q^fX}FkjeD}4ecOS{HJmmTqAJ4!@yM8R9w+xt3a5VmVd2p4KP{Z> zCy$*eRWX;xpU6`B+0HPG{W)DCpYVK6d{aT>f5Sg?nbxWPs&sVu=nwqOS5N?CwQ|u& zsiR7orj=1OWh|CoXK?fyAt;<#41oxibt(knZ3Qpy#Tpu7rBbQ#d0Spy{sHPy$;=#7 Rf4l$y002ovPDHLkV1hA)P0j!S literal 0 HcmV?d00001 diff --git a/Icons/DarkTheme/VideoPlayer/PauseDown.png b/Icons/DarkTheme/VideoPlayer/PauseDown.png new file mode 100644 index 0000000000000000000000000000000000000000..0bdd53d46dbb976eb103a4ae5ba2a0542ed64e26 GIT binary patch literal 1245 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 LNkvXXu0mjfU71uV literal 0 HcmV?d00001 diff --git a/Icons/DarkTheme/VideoPlayer/PlayDown.png b/Icons/DarkTheme/VideoPlayer/PlayDown.png new file mode 100644 index 0000000000000000000000000000000000000000..af7920a93b4b45a41091eee92219341053595ec8 GIT binary patch literal 1233 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 C`g#Wd literal 0 HcmV?d00001 diff --git a/Icons/DarkTheme/VideoPlayer/ReverseMouseDown.png b/Icons/DarkTheme/VideoPlayer/ReverseMouseDown.png new file mode 100644 index 0000000000000000000000000000000000000000..c57b383d4898d0f93418d3d592fc6ab2b43b3e4a GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~c!3-piujpS2q`CrpLR{lBn}cJD1Ecc8;>&}g z3!;*1{3CL+ikf578axBjEakt5odeEmG7{F0Ke#7 zTiz8S&(nO-zGL0Jv*H`?RT(zD+GpMOdCl&sRa|GjyK_AJ`OWSOPsj4mb3ZqIyw<^? zH0_pi=(2Ayrbzopr0Jq(9 AHvj+t literal 0 HcmV?d00001 diff --git a/Icons/DarkTheme/VideoPlayer/ReverseMouseOver.png b/Icons/DarkTheme/VideoPlayer/ReverseMouseOver.png new file mode 100644 index 0000000000000000000000000000000000000000..b43d264aa38dcd10933b5d700c829196e4c778c1 GIT binary patch literal 307 zcmV-30nGl1P)XT;pR>Wp*i2MvO;&49SZ`iv zf=*U!R$q8aRB2gadrDGgTV#GvSa48TZctfqUuc0}X@g*Bf|Z=GO;u~FvdFBn$gj4{ zvAD~!xy-!7*1W{my~NbM#nnw!ZA(*YR9$t`+36$tmtg<^0Axu-K~#8NJ;X&4LQxC^ zz==Kij=Q_v|9S+dq8E+TSN|V^E0>39DA!&HFdG-UR~#05&&;6uJg1aq7jL1e5a}Ib zjE|Fd7ZEUL)Yqm$eQR1~2GM+g$)^3ZB_d?kjjHZf&TnR)2mc7@#2Ekp002ovPDHLk FV1nADgfsvE literal 0 HcmV?d00001 diff --git a/Icons/DarkTheme/VideoPlayer/Stop.png b/Icons/DarkTheme/VideoPlayer/Stop.png new file mode 100644 index 0000000000000000000000000000000000000000..324c85c11a7f4ae0dcb60ffaa87d9c8d7e2a276d GIT binary patch literal 1020 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQaEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e6&pP!G5ON@s{ zke^?emsgaZUqnDaSV%}nURhU7%h1T&)7Zkx#KzakG0?_2$i_L?)&+<{?A$`_-NGE) z!yP>%oxGx*y<=T{db}9H|}4#`QYxOmmj|V`Ss`jzkmOM&KL!wAutF- zK;EkHH_%zto-U3d8o|A%Z}J^d5NUb1k^72X)RC>FkN?JB;w!i`V~)iB-SvDAmK_Lf z>}E=5_2ZH`xx4m}jWD~^vk7OIg%?MEspMXmo^(g|*7l5pEurOx9Wcr&{a!#gN%cj9zE-c1%5<|G)2A9Ru$vd$@? F2>>1me~bVC literal 0 HcmV?d00001 diff --git a/Icons/DarkTheme/VideoPlayer/StopDown.png b/Icons/DarkTheme/VideoPlayer/StopDown.png new file mode 100644 index 0000000000000000000000000000000000000000..f97f6c442e1e61c5c6305b9dbc84dba70a0faaa7 GIT binary patch literal 615 zcmV-t0+{`YP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0sKisK~y+Tjgvd8 zB0&&^x5u}F;sX@XM8rVU%wJ$4h@hDH1I+|O6Mumi2?k;!qF^9C@crCxwuauzx?b)9 z%kHUjs?Su{s79ml>kqEit1Ny3r_)JP^?LpBcnpWb=kw|F`6Tx}4u^wb82Nl&)oQir zbXqQ#OQn+CZnyH^;(ovPdcAJ9tE$y%GMU8ucDsGOUP>v8@&UpL1On}LTU9EROeRw- z7LUiHmHz>}UT?qOx24l*zuzB;L=fZWa=DyNC)UJ&Ku00apxf<+emq4mrb--m7(J*4eKea_c4O(wFHhMD3*p}++oCV>%hEC5tqPv(&l zfD#Z`APxqDmYAtzZeU}N2uO1)Y-QjnO$or3=<#@%Qxyt@VzF2@o2C0A11L3+X^0;1 zEsaJaQ;frCG#Zb`^*xC_iGUZ;5%405#bUW!{ssk~&;4rE=4}7~002ovPDHLkV1jzy B7j6Im literal 0 HcmV?d00001 diff --git a/Icons/DarkTheme/VideoPlayer/StopOver.png b/Icons/DarkTheme/VideoPlayer/StopOver.png new file mode 100644 index 0000000000000000000000000000000000000000..ab3978e74faa996f26ca986001df286d422f96e6 GIT binary patch literal 615 zcmV-t0+{`YP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0sKisK~y+Tjg+~{ zVnGmv=Wa9Ljtfp8Mw%H5hN6j?V(POP_$VPwQ{-q!@=!#(=?4yK0iS?j4CdbO8mIp?sPis^?I+@tHb#SUDvnUZL8JV z@Aq14p0 zz+f_=JWYmC19RaI8q6f&a70H&0rocpTH^{nD9}Va&DbY zhXrh}*K2kzrC!nPb|;ewX6ZJgIU0?^;V@IkNJKL@!#no{!{Kl`onpc7_tRs2JRVDv z)gc@XU%^{E(opI24Fi^C{d7Qp`A>MHp;8UQhH0973&i1D+!>YyAC(e=Uk_-v+hlzO z^LK^=R9Ykw$!4>pq31M=3&fUan_6=qN-4k%p)6$HA7mxY=kq+Q*=&Xxp(;!NKrA4Z zbX*Tq9JR(v%w#gTT#hrNCJb6AqXfvf4?qG&>hqSG&88L%208IcrNW;9RO~(JpOg?7 z`7@~3>q^Ww-6vTf5RhfOF+M?dPSVwCg-zSG{{jgy1uFg&ORfL_002ovPDHLkV1lIf B5<36@ literal 0 HcmV?d00001 diff --git a/Icons/DarkTheme/VideoPlayer/VolumeBar.png b/Icons/DarkTheme/VideoPlayer/VolumeBar.png new file mode 100644 index 0000000000000000000000000000000000000000..f317fae3b763405bcda7b4cb8c85bdaab7f471ff GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0y~yV6+3WSvZ)0%B!CoSage(c!@6@aFF`Wtj=qiz z3>*8o|0J>k`J4qFk;M!Qe1}1p@p%4<6riB9r;B5VhxgkPhP(`c94vv`{vKp@5jgR3=A9l zx&I`x0{PwnJ|V8&-rk;`o*o_^?(XicuCC6`&PGN?Vq#+A;^Nxc+Wh?dyu7?pQc`?; ze7d^2Ha0eDYHF&gszO3ST3T8mAt4bF5h5ZYf`Wnq0s?HaZm$Cx%UR$NSBg^x$ literal 0 HcmV?d00001 diff --git a/Icons/DefaultTheme/VideoPlayer/Background.png b/Icons/DefaultTheme/VideoPlayer/Background.png new file mode 100644 index 0000000000000000000000000000000000000000..c2642eb8788ee1d6c8c555ecfb266cf9babc8669 GIT binary patch literal 1117 zcmeAS@N?(olHy`uVBq!ia0y~yV66bMbvc-Ur1HAY&wvz5x}&cn1H;CC?mvmFK)yn< zN02WALzNl>LqiJ#!!Mvv!wUw6QUeBtR|yOZRx=nF#0%!^3bbKhU}gyL3327;=MxkZ z6aoQZAt5m#A#p(=89^ag5h-m^X&p5!Lv;fm4MSfW=O9~`U|ZJ^JGW3%hcq+CbO-lv zN6$znuV`oQSXbXTH@^gT|0IvV6tCbk?~rug&`iJZZ2ySdz^MG7=z`#w;;{JgsN|a1 zw1)W1=D5t(gsj%Y?6%UHS!K1eyC*FNx^onah5-FT;6;g#Ezs6Go-U3d6>)E`9S?O5 zWN>zDJbBV(@Smd z2scoK%OUg`P(-3()z`{rGmxxUUaA44RtNZmxcY`=xA)DTG;6hIV0v^) zoqt4bRB}yVRDM`|d2mc|P;`M;P)1Bjy-!G1YtNjREu=tADv{rGmxxUUaA44RtNZmxcY`=$EK8K6f}AUrbnmL z`A6hNCD#N-<%h+W2gei#MHhGlWyGY^`-EggClwi4`bH#Hc?G4%XEu9>Wcr3>#bq@4 zhGr&ax5Z_)`i13$#aG0pHF$@ldj_QC7B?4_x5cK_$7eM91gH6i=0+q{hQ$>|CRHb7 zG2SgU?n|TF9<^@C)gvAzw#Fhp|6^6&< zO*?Sz8_?M$o-U3d6>+i0OvR2EFdVsH*it!h=FErx)NdEw`6*uIbiQ>RcW>0~V+V3P zs`mKKtUT5JEz@AGjQ6vcyqYymySz28>p%O;`LQ=cvn4`i#$8>foRpvY0zCg|PZ57C ya^Y#z%DQg}^B8TIJ%!C`R;LEP-eFMmm+@Y!fHB{_bt{1OGkCiCxvXd6Ai!;r=JvaoqVAdP2{I zt_zJ?+s43bNP4_YnR&{G_GvJk982b0ZhWjlx=Sh7FXsIT@r`IHgjgJy-7P|FWcj{O zN&YL87vmJrxN#0001rP)t-s5)u;B z+2GUI-~Rsp-Qwx`{QvOv{5?ce5D*g&4-^;}7#kZKKSoxYo~JT5Nj*eUG(1f@K~W40 z5g#Kh4-XR!4He4F&_YUEK}lHz1O!G-U_eJ#K1Nj!4-O_OF+4+33JMlHLsJ3*0s{jB zMNM8qOI;Qg7Be_XQ&m@QHEBf)bU4E zOq4sTFvgt76ij5iZh^J1f*TWCYPHsntEF2eHq=P@Oj4O7vSES{i+lPKLZl*Qj^q0y qXgYSebn*@(ME&0BBTUv2{@@EOgc&Q=to2R+0000xN#0005DP)t-s0s;cm z+2BS_VAI&&3?@!eU~~yUb_y+53N&CYHdhT%hYlV=5EnBO6BQE^784sZ6DCj-T8|VQ zHWnK!7924c7#JELI~yAt8z46uY^NL_CLJO-B6h7KDLV!&T`)alG)HweKvg(GSV2iz zLP}afO<_Y$VM9-52^u?AWp-R@d0c9GVQ_w9aeriWg=BSxYkrQBpr-Kk{QCU=5*8^E z7cLSWJPsd14;nWdATkdjL>(eI9V0df8962{JSi_hE;URQ8Y*vrjTIX(6(UC!L3oIk zo(UE=ovg5?v9zbLwY0#*wZX+NJ7O<8V-{kd7a%|q5)wN?Q9MIb7BOE7Cr%1Te*^>s z2Q+3!Q)WzCa4t7oFEvgtHBc`#Qwu3kBq}^FHcKx$VHzSO5J-j)P>^tfj&g&Ic#4;L ziIh67-YmS_-sg5!U0ar2)oQ2_&NbK}y-)Ssz zGQ0qs#ZolEv{ld3w)A<`#!N&@i@>4tt_WgciAp=7QI{qN;)+KHHho+(eMXsN@SpgM zNy^!@W}FTqN?mz<<8nx@dQ{1WE;rW8Iwg#-lXJJL?asAUtG({DS8wN%?0>OdZ#K(c R0vrGU002ovPDHLkV1hMlMp6I( literal 0 HcmV?d00001 diff --git a/Icons/DefaultTheme/VideoPlayer/FullscreenOver.png b/Icons/DefaultTheme/VideoPlayer/FullscreenOver.png new file mode 100644 index 0000000000000000000000000000000000000000..f719655a7f6909b71d937055153eddc0b06d9b1a GIT binary patch literal 861 zcmV-j1ETziP)xN#0005YP)t-s0s;aN z5*i;XW;#%QMowVU*x%II;1UuN5+FYkBuEk{QW7jx5-?yAF=7%lYZEP86Ge^`DNq(C zMiwkm7CdtoKztY&7#U5E8yg!PDMcMlhaNt99z==>4L2V-Y#=LWAV7&AL5v|VOe8~z zBt(xUM2IU&k1KDhFF#xl8d*AotUF0!Ka8zFXt_g7V?<3~5Gz+kXQxM3aY$KmOKhlA zW`I?4tX7Z6eU`z4!r_IPq=%ZNnya&$q_w8By0pH;#L3PP5)=puDcs)S+~DNh;_3SQ z|Nj2}IYCtwH*6Lb7CS>(9#DckMO!~eT>}FH1Ox;@Lqib}7DG*94iFYZO<_e%UKB4? z6g+w%K!_qYVIoz7P;aUuGEO5kRU{}jTY0fxeX(S8hi-|tbcK?5i=26loqLqP8c&TC zB|{w@9wu9Zh@Gd1%ixNdrHahoj?v$frLL3H-;}1Wm#MIq*58<@uqRifC|-n~*x#S8 zx1qARqO-avX{xZl#1$}J6){%G-t@}S)*c=nFm|jna#b(!Gfgb>sRZ#LmJ(tyLFF$`m;f=1@B}pSpY#h!l2Vc;;Efmn z8CG*H>EvxUSwp|%sD}a3D%j1;6j7IAHnSC4Ky=C>k&xwO3|Rn7&T@Vq`2iG_E4IG5wX=Wx^LT$}YjZv3 nQUN8Gw`oxHTOEpOZ28!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e6&pP!GLTa1TC zke^?emsfPeDab zP2Esk!$?ibP)plPTgO!2z{=3b#>CXl%*xHg+Q-bs*WAv}!qU;w%GuK1-^xDF(!t-t zA;7{R(Ap`;#uL-DYGmsqaZ!2sGzvIxU?>(u%W25v8b%MsJyMIwXdP2zqzfyv299s z-;A#QnO*&}dM3=AHgnO`nM-EOSvq^(@|p8i%v-o>!QwRwmaJL0bkp)xn^vyfzH#f` zOTxA{iJMMLk^{ zLo|YuHymQ&c{ZcrAP@;kNtTqBZjG&0f4VZV-2G;FNk!JHS4J7xD_4v8%(|kN{o?MejO&-u7Op+JVBwUB zri>g@l8fg4=BiaYvO2>c<8ljSZ81=Y~hjb%|6HW@Z*IcFD07DEO`F9lBKN3cFFUVL{<01GOvHr*HbK`7EV7 zUHo$a)6pFkH(j(}KbrCL^dHyD-b-%oa7c=g$;sp0Hs=fz<5NwgoH+u93%nf7`1s;j yJ;Nplxb$>S7C!NeVUmo3oC}X=LRVoSBg4_R{!bcXJ^%|81_n=8KbLh*2~7ZxDrUR@ literal 0 HcmV?d00001 diff --git a/Icons/DefaultTheme/VideoPlayer/MuteDown.png b/Icons/DefaultTheme/VideoPlayer/MuteDown.png new file mode 100644 index 0000000000000000000000000000000000000000..83218bcb4391faf99d79f50a51a4b799340e34d3 GIT binary patch literal 1247 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S3?yCqj{O5tEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e62SXh)tNS9AU zk6+T9SK3xgN>4^!O+eaIT-sPb%0f`aN?hJvLe7$3!A43+RYb{JQo&qS$y`doT2{$Y zO-Elz-C9l0hELv!Q^Ad2!I@vtgzNnF7}RLNafEkMjLp4}vk-6DtGGMC#ToyR(h!=^yPz)RoE zThG)--_%dhEL`6-K;JZ2&n#TeJVxItQQtaA-#S^}CfUF$(ZDu^)1idZp^Vp|kjtZ9 z)Um?CDZz0}Do%GEd4*+0$GH^C>e&?mYeJSHbRHa{q#BrLToBB?k! zr8+93DkiHkCaWr`pq|I4kvFhiz@tq#vQIdwUm#$DVB{?E#K~fb^Tm=DNark*&RMQh zwpOEdQ)+ofdSz=~Sx0tFXI@2DL3w*=WpiasTYf`JVPj80Q(t+hwMm9&iGj!-8@)Y_CVQOCHV0U23bkLI>~WBl={P(4A#RRy46HX9I1bntT~SoM zqNRUdUGKWC;SDW=2W)~5jV&LW+21WKzFS`QA}#w=YiUF8^p=iktzFX_`)73Y&ugAI zt7YQ+_Gxolrp@n|Hm`T$?B0pjHSJ^7EGSCbjI9OGv}|Jv|!oP1ux|z$?&s(-`?wSqj+L~5(wXNuBU(wsKeEqg%8@4RpxOLsm{Tp{3-L~)4mIFt& z9z449$no7rPM)1O<6`&Zi__;GK5^mXxvOU`T)lAh?xpMZF5kF+<>rIycOKt)_~P!P zmv2uU`*7s&mt)5tzj*)h&4&+P|9t!Y`}g0!fB%80bf7@-k`5&X2F5r~ z7sn8d;N%aCV{t_0=y+ZiR$!rja#NZe=fJL z=BHE6&0Wot)qJdWY}4vdv`BxxuG>Mtw7fq3{guwS?9{yiL#Z_c
^aH6F8Fn?7w4nx^HJcTDQls;*C)cA4>*Rh|09rlwce zxzh9FyLD~9PF0!lH0_h)JgJ!}8F@2u=1a|!oO1h`cz6zN^DFzt*LUvRxjw#cWq#WZ Z@i5H1xTsK@FU=Md%bu=&F6*2UngA2p)U5yj literal 0 HcmV?d00001 diff --git a/Icons/DefaultTheme/VideoPlayer/MuteOver.png b/Icons/DefaultTheme/VideoPlayer/MuteOver.png new file mode 100644 index 0000000000000000000000000000000000000000..7643ee97704132b9a041c1af40ec6c987cfbf1f5 GIT binary patch literal 1262 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S3?yCqj{O5tEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e62P)LM>OOun= zoLAnRUn-JM$(LUzPFT}lTH8xj+gn!GM_M;jRzFsDOw6`G#HLEju2R;vLfs@#(JWHKELh(%MAtgb)ILH%D@{Q=L(48j$39iu zu~gipR@S3f-m663x60HpR?Rs}%Q;uet3b!E+|)hS);GsGu+G&t&OI>KHzdbDBF{6j z*gLw^FQOnkp;TPIQCz=C*riw4wNK8aOTx2L(x+3>w_nkrQ^B!E#ko_>r9;J~U)!r+ zFRs}#s>wWTwtDyy&6Hl9^gf;J`MNnX3<~BNm(AA7S+1MESR-?#M&>H5yp`rPON@&) zyQcT}r?y6Ace$l6_s&`2kg+o$e^qGFn&`@n@wFS%@|rSBI&;c9GAp_>D<&0IbQe~4 z7S>ECu9;}ly3DR?wbR74<&9HHS|*jW&aY{kT-QFmrh7(h|LnZZ?P2{Vs;3;Nop!Lf zdtOWT?AG4-jT7cHOrGB`Wq#-6`HfQ-bWU8@J7r17jKzKPR?M8gZqlOFlb5cWx_sUA zg_~wB+%SLHmf0&e&RV^B&YCTA*KJ*}V%vhXTNka~vvAYSMVogm->`4lmR-xY?q0Ed z@7gVUSMAuhcE|oTTMw?^b#VRO!yC6B+OYq~mVHOI?mxP1&xsxTPj#KS-+TUU?}dAl zF5aDT>Grg%_vT!^JMYH*=0guVPCr<5^WMe-NB12$xA)kELnqH4IeG5j@r#E~T|RQ^ z^6|4*PoBGe;^Ng47q6YZaQ)<^Yo{(>KYi);*-N)BUAukp+P%v+?w`2#<-*kmS8hJI ze&_M+`;YG2dwA#m<2w&u+h1G4U*5d^@c#YBcke&F|ML68$4?(W zfBE|D`-iW8zI^-j{m0KAKYsrD^Z(z!|G?BsYmh8b$i~3HnCt1{7@`rJY+$6bdW}QF zDI;fPw!@3B>nS&9yYos;@_T!GfBkv~)et&l6h5Ngoemm*;H&{&7;E4bGjQst@?*qJF_eQ!dU;llZUw?YX z+cny@CGYP|ZJN}^{oLq${HnJ-sU0it@A<1Iu*CQF)T-?Kk9T+W8uG-Yh37Xp)LlC} z>!i7^o}BUbq=M;o#bPY8M9ytXonv~lB;wlKgHu0$5ER&8Vmm3O)+O&blU_KR_`Frm z9y=VEcxiEI!J>~JbL_;~)CI$yy?cDTe8Xu8omi#)Dbm|l2scljqOkwdLFL#zw{~9& zU6y-2eR5G!!M4d0MEdLmm#$kFU6HVce`|R zX{Ad>M1ey^UYy^8{qX@FE;~h;gYWG6dOB=P%-*uYvqH6}>qqa`>+5W6oapN5;2_Av e!ZIa7LXsgMas3M2#)WS{k?ZN|=d#Wzp$P!4PB^Ln literal 0 HcmV?d00001 diff --git a/Icons/DefaultTheme/VideoPlayer/NoFullScreen.png b/Icons/DefaultTheme/VideoPlayer/NoFullScreen.png new file mode 100644 index 0000000000000000000000000000000000000000..04d57c038e91c528868d6fb7f2b3eddec5f000f3 GIT binary patch literal 343 zcmV-d0jU0oP)xN#0001rP)t-s5)u;A z*x&yC|M2zv`uzXh;^{p^R1gpo4-XX7+29)+8$U)?7#J8bH%ZFO&@(tnA0sUd4HZ2^ zQw$6dIzdr1JWUS|6Gcs4K}lH_78XKETMrKoCMq#LMpZyZS3E;fJVR3o3Kjwa0s{jB zMowTuOI-v61e>0xQ&m<$Lqi@O9yB#J9UUGjDl49M#fty{0EkIMK~#7Ft;jV3!!Q5@ z!4sMp!VC`n|9jC{t;$Tdi)#QD0k{QV9e`y3_LSM9XEP>t)R)pLdnQ`z3^JkTOAbu5 z2dB`fd*Ae-3nnt_R4UI!n!kmrnAlQnR?f#5Q!}xlPTU=(l<1h4#mR-VPGTl;o@bJi pXq<#MjZ80UPF@p%yod;Y@B{AD8Aj@g0G9v&002ovPDHLkV1gMBcw+zn literal 0 HcmV?d00001 diff --git a/Icons/DefaultTheme/VideoPlayer/NoFullScreenDown.png b/Icons/DefaultTheme/VideoPlayer/NoFullScreenDown.png new file mode 100644 index 0000000000000000000000000000000000000000..b02aad83054c1dbc71197e2711aed6afde62c543 GIT binary patch literal 843 zcmV-R1GM~!P)xN#0005DP)t-s0s;cm z+2BS_VAI&&-QwvCCQdFkR}E2z4jw@cA3_ipGZ09I2^u>S6BZL2G!rIJ7#J8DAUhf& zB^w(X8z46uY^NL_CKD4CE;n2-J!CXTbvHm&I6_!ELQz3UT0%-%Lr!5sPi9hJbXH|{ zTxxk-YIG94l}B6h7595xmkEH5=qFEvmvHB%NGF%~gjZ-I?+gN=BKmwJnpdyJNX zkC=p(pM{f~hnAg)mYxPJU7f73FE&fGz{It|#S#({oujZ47AXrPObRq$3P^vZv9vTb zHWn5Z7h#hS5fTFf105Y61Ox;oEH4WUqK~#8NRm{_3V^I_U(0#6A+qP{xrES|b z#-2ZJ(mXU>AFu$!Fzvr?S`34qI;rrfn^3BQ-x=4@w{AzS3~0^Ao-5D0E6=eR{@M=Q zA061>hsC|Sx3l%RV{2z`*KL6j)Aq*ZTJ3*FZEbU7+XNcp`fASV$J<`M`>navbt7n^ zPP@bC6Cs4Yh(7s@4!bi7!-lDGy^7%Tk%)hd2$g<($^d`V*;G1#-?TimhD17*Rm0uk zbaMU-J+=@8fzIZW(}y6-iwny`=)TS8Lqp32aUM7e0`43Whc|wlImZ<&0B3QaHxN4g z)o~gM^bRZnXQ{}Tq_ZQzFgqNKu<4VG;u3Hu-Z@Fe%HE6T3vW3_lIJ`MWYo%j-{8b0 zZR~c8b~!QFx4%Nc$&9kZ>KW~q%zmAf^pEziO3E2Hk;UcBO10ilC=`u)wbGQwWv@-U VZMaNO#lrvq002ovPDHLkV1gmEN*w?I literal 0 HcmV?d00001 diff --git a/Icons/DefaultTheme/VideoPlayer/NoFullScreenOver.png b/Icons/DefaultTheme/VideoPlayer/NoFullScreenOver.png new file mode 100644 index 0000000000000000000000000000000000000000..eb5e78fd361bf32cb12006f60bd60c7e149b4db5 GIT binary patch literal 864 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 Ef(o|TO8@`> literal 0 HcmV?d00001 diff --git a/Icons/DefaultTheme/VideoPlayer/PauseOver.png b/Icons/DefaultTheme/VideoPlayer/PauseOver.png new file mode 100644 index 0000000000000000000000000000000000000000..4f7362626771a070417894a83c2eb575c58b8995 GIT binary patch literal 1710 zcmV;f22uHmP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00093 zP)t-s4-XCx5DyO#77!5;5fTv+5)u&-6A}^^5)>2>6crN}7Z4E~5fU8|7$_7ODis?n z7auSiA|@LnEgdI1CoME5FH9ysN+>W*D>+0dJ4G!!M=U)_F+WTwLry9~Pc1-9Dn?Q) zM^r6JS1nInGC@%_L{c_JR5wmtJw;PIMpZaUSw2WuK1^LQS7tj?WjkhgKu1?WNm)Wl zTSH4-Lrh*pOXJ?Q)Wn1XG&CQOIB-4S8GjJZA4^w zNoIZkF477l)ebGw06WbAHrE9<-v&I_06N?aG1m+;-3UI}5iiabHP0D6(EvT*6g%ZV zaD)Ly(h6175=7k|SQTJlW{cTulE!$M%5;^}f1T8Qnb>`p-eHO5 zW0mD&lW8iEjHKp`tm%!i?TxnZlBegBsOOZf>zS_TnX&Ghz3-y5 z&ZoKAw!6Zhv+AO?>!7yorMBy&x9_C7?WwxttGw-=$Mu8s{)+Jbm;e8$#`C7u{I$j7 zyvgXa#PGDt^Rw3Xvj6|T^8dlc&Ck@^z{}{z(do|C=)~3a!P@uC)b-EU_Rie)(b($O z-1gbt_sZe;!}|Z-;_2Dq`0DTW>+tvb{Qv*|{{R30000000000000000%`e}v0009m zNkl)tvb<>(@v-?BER2{5=;tXa$U~Vt1+&ydl)pwsh0>RtM^JjG{ zOWT{9nK76Gft{4@+$m?iy?c1$%9SfO9=`o}YRX()DLYeB24iDm3l-(LQyzVLcS{vuD!lHrCUtLgu&3z zOd@pFvCr2|ZC?4{`kd8su0L40`RL_0hi8RKnlTs{YRmS``+WE4)+H~0{W@56@Yk=G zOEw)n`(|FBtTuzDk&OP#xu>R25yHgt_88kG-I;$QZ+p=~6ST++RTQPs_mc#d|I>i_aG!Slw?u-0m08faBOt#zrLJb*g$omFCtkR)ucj`gIzOPp zS&)I1l~t=W*KbE%eSO!Y3DXx%pD?MbzP@gUUv8-uD^Qk2(4{#wWA~07ix)23xqIir zg^PFW*qxEu>>|hl(#tGS))AC<`_}H=d-m?#yJz?ATetIq+R7xDL3&wPIkd_ zA|W9mA}Y77yhw@@B+S4L0Zc-AMdeNHt*x!?P31*;LQG&$1|BHj<`z=1aw#q=cCk_s z;^u}3GVsFzA1|MPu&}TIkcNuzGl-)AQBhGS3kbx;0R(DlNj$@Y)Bpeg07*qoM6N<$ Eg2KTyrT_o{ literal 0 HcmV?d00001 diff --git a/Icons/DefaultTheme/VideoPlayer/Play.png b/Icons/DefaultTheme/VideoPlayer/Play.png new file mode 100644 index 0000000000000000000000000000000000000000..76d93d5043f05ae635986dfa78bf0a1dc008090c GIT binary patch literal 1693 zcmV;O24eY%P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00093 zP)t-s4-O3v4-N_n7Y+^*4h|Lx3?C2=4-gO!5fKp)5fTy-5)u*<5)u~^6ciK{6%`d0 z5D*&?5*-s2859*578e;67aJBA92XcF7Z@8C7#|oJ92puN1qUt$2Q>;2ED{$d7a1cJ z8Y&eVEE^pl9UmhaATl5!DIp^$BPA;%CM+Z;EhHx{B`Gf-DL{mORRz5~mKSowRMp{2dUN1myK1N_PKy^SzS3yZxLP}dh zOI$=tT}4e^MonNwPGCk)VMkA5M^Iu&P-93@WJ*$HN>gS_RA)<6XiZjWO;&17S8PvM zYz7F301TP{6P*AYk`5N10TiGB8K3|jq6HeE1{|OX7ODssssJgF4kMTVHJBAOmjEcH z3n;PxJE;IXuook>8#JvVE}kYjh$lRYDmscRJC*=Nod7_u08h36NxKSEpdLh`2V=Y$ zYpo(ljWR%uDowg8TDLV!q&r%xIa|0kV45~}uK-lW09eNWVaNq(+6sBt5@XK;cjX~c z(k)=vNLQvtWVS_PyhUifN@B5BX{J|hyHt6iWOBMiX245p#8GX;S#QHra>rG6$zXTL zVSdbQe93Wr#u{nCu#u^d^(gKb7+?tLiGO_A#~hH@oyZ!uwu?rhAOBS(@Nh zxA$#=&1i|zafZWlfyr`&&Uk~zdWFn!jnjIQ)kVwwOwj&c=Ko{X|7Pp|eDwd3qr8KS z&xex9f|S&Pp4y3!(2kYUlbO|;smqa|*OjB%m8jjEquHOR+k~y?kFw{Oxagv$+N7-9 zsjl6rvcRab)V90Aw7=M>yymgB;DFQok?#M$#@)8a>%qp&&(zz+&Edz+>(0~T(bw|Ns900000000000>O}-$0009V zNkl?tl395ePoqniJ^CuN@m55y21+1Tk7tz75yEy?gfH-o1PGpS}BVt-)7HD<(Xg zAuKF3%8=i;;njy{H?Lg2bm`LND>om!d)nyBZx|KI5E2sR$>&`E^xds1=MEoSw|4Ep zBj+yPeD$>6na?wfAvicpUES@%tLqmIo`1At(TWu-R4CcSLe=KwtU6veaEi7>T}_9XYdZzSMfjg^unRl3*P_v^XKb<3GP z>aU{D;2ET%Uw8N7(KRdkL9&1Tyj?T_Bz^HtoxTc#r-!(GWO3|t(BQr6Wux#g9mkG_Dxr`@*2 z<+(Z4))IycTx`Y~mem#IRjrj*-+;i`uF}fp%JPb8OATWNE=C~MzJC4s z;l!qvDN`o5R?W(mv(o{ZEaEC^HG9V7X;aTWez>@;WBSaQGp9|SG22SiRfK_yi^14P zu4K!!nbRlj>g-&i&LFi>C-fCw@u n!GWT@yrQbADu{vzC@BE|hW2^mtIGDe00000NkvXXu0mjfIH~ao literal 0 HcmV?d00001 diff --git a/Icons/DefaultTheme/VideoPlayer/PlayDown.png b/Icons/DefaultTheme/VideoPlayer/PlayDown.png new file mode 100644 index 0000000000000000000000000000000000000000..91ceecf2832d3bbd68109d7015bd583edde30d09 GIT binary patch literal 1687 zcmV;I259+-P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00093 zP)t-s4-XCx5DyO#77!5;5fTv+5)u&-6A}^^5)>2>6crN}7Z4E~5fU8$05kvqJqQsb z3l=pJ7$_7ODis?n7auSiA|@LnEgdI1CoMDt07d`+P67l=0tHM307(P@O$P@}2?$RD z08ju2Rs{i30Rme93|0*rR}lMViqh|9w}V_CTRd8 zcL6wg93x>FF?1&{OdvN$CO=9jFij{oODj1;D>+0cIYufwMJPK)EjvdnJxMV?Od~F0 zB`tFzI%_XGcr-nDDML>!Kujb?pUT{}QdGC@%_L{c_JR5wmtK15PH zMpZvXRyayoK1f(TOXJ?Q)Wq2XiHRSOjm17SZzvBepp^@ zM`e6hU~gV#a{w)X05ydGJc9u~jQ~cB0!owsPn;4{ivU!k2V9^7Tc`zKtOseg7J9lI zaIz>-f+bg#EoPc1WuQKMrU-h=K}v!|REkVgf=*Y7Ok9ppSbt$Rd~6G?~*Op5rH`<|?l3F|X+~ zw(vK+^hSY}NrRn1gP}r%p+kkIMTnzDh@?l0rbCFWNQR(Dh@eb}p-7CVOp&fnm9$co zu~L_}QJA?@o4i$?zG{J+eS({OfSi7Xo@s@ud5oq<%lcK+|90m8go&SukD`c>riqrS zhM2IDm#vJTwv?c>nxM9xro5b~yr{3fwY$i{#?8UQ)XB@&&(quA-{{)l=iA`x+~Mfz z@AmHR^X&2X^Yixl`uqC&{rdd>|Ns900000000000000000000000000$$dg20009P zNklLp8-tX{kR-ji~#OMU@4DGbTUsgV}vqN|?XS-WK6!g=%NEnKu@?X@SB(dR58QyG$y zGVNw;jC^)&#iFavrc)ooQzp7YWPf~pI$^?;`OB|Iov~mD3-vi` zetp42cNaaV?2jLx*0@bvaNYc@4}*k+&l!FL4S6|5saM}&;G4RFi8KEh9|i_4k0S!S ze3Hs4N-sWw!ROEKr^(9l@d_OAU|{8nJEG4El+@IE{s9c$T~kw4QI_P@KN82l$`-u8 zi%(fo+sN?Q8xVNxYG|mdqp8f-wLh4FmC(>+7nuO^;QGGO)6;hR^ELscUF$>sip$(%ugQ z?X3-U+I_RaS%I=Fq7^5)YuftzJ32OR-??+=)-7B5+iJQ`R*15I^fFt|KHc5CW!J7f zd-nms-rYO5GxCa)r-6(bu{C z=4}wTxxKUR#O!b`pg02?7;rjFpL2B6rfoZR?AW$x(~&vT9XLV44D1lVBo;q?&VfUR zj~_mCV9xY-F($Am0}m8%bBhJ!RZO2fy&^9_jGG%G$RG>{LV`jf;^N{WKpH9{%wUNE h%*@Q7EFiG71OTAEh{RNfdhq}N002ovPDHLkV1oP`%`yN0 literal 0 HcmV?d00001 diff --git a/Icons/DefaultTheme/VideoPlayer/PlayOver.png b/Icons/DefaultTheme/VideoPlayer/PlayOver.png new file mode 100644 index 0000000000000000000000000000000000000000..56b0e5945298d894b063c0a07a8907915b30534b GIT binary patch literal 1587 zcmV-32F&@1P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw000HP zNklq1tL=90#%UkML zWL5RFv)c{b_?u&%ATy=lkFHIp6ut zIkPAskqe$B)2v07=*8x!#UT+12J;*#)>Npo>*Vh(B{(9XkHY5*MJ_T$C+WlECmSMl zzM*6NEgr^5U2qg<)>Npoiw9>{4sbhC>8@qUL z;wMEGf`g{$O>t6zkqdO*#)(l0VcSpoets?Y$F`ck?g2e=rmgT;YhH1S6l*G=xj^=T z7M%D=k%i!(DgGg`$QU+nqF)$Sme8L{@6sdr-G`cU4>V*IG;G;>Ln?D$0~P9A;6jZJ zr$m#507n9q8NsvtL*slxW0@2;C7}fJj@=>;X#Ms&v}#+uLmPM2Q>WQIM{b>|xKnUe zpvgjj0}ZC)7Zjs6&lxu*z-Q?u=9PZ1wY2U&0b=0D7oDhGm{u8=d~M#A2C2l19(wwB zO$_>ERcG?|tz;pL@zz6wDY!m?(WCv%rtDv4rrrR`^$GCw!If9F*zNXvwk~>~xv>__ z`l2Z|O(-cxydgNhIo=MMECe{v`~suJ941T;<$d(eyqI2m`;fJhmN)KePTJmNS#w@; z5y$5};mC?~M1US${zu;-!_}LD9>NTJ{f9t>@-qY-6xaTf4_E7&l z7$`G=9+A==Ybpx9gyNiA;5v= zE2-#oN@G(36+8sUeSMQrQ%hs_|`q|b&gl~;UoJ~)YUD8=S82&5wokkmo-9w z1I>N(cxBMgp*%!GO2I(g#TO=DSH_nso>l=3YI-i9oR_S*-S&UcY)xGwgMusk>cB#6zsOVzzfU^5?d^1iN zfeQf+G#8ahQMsu2*z_w>y;hxi$-QF4NB0GEnN7RCQ*uw9{avcCxWu?3&o%xB>aLq? z2oFyDq{u>m15L#oT-0jU;Ufd$*94~TSHE=uhYYx9b&X3c&&WRt4lUeLFlKonl_}rW zqe*!W5FVWPNs)yB2b!3J=E?D1aExKiRxZdW3_o`hAVz-XSH%#$HsnvuIb}I~#Z=N^ zDSeDWPTR3bGz(H>A;6J9!BuNS%Rvbn0#kPlHYC7WjBb@?~oR zuD)ihmtsvtJf)NZJUH=_BHJ4Um+SPANf!LA<9l6Kfw&8wq14}Ifp lw^3eFtQ~bH|9^7z_y-frtOo#`CgnPbV&R{hkRrh< x!XU@k(HDdq( literal 0 HcmV?d00001 diff --git a/Icons/DefaultTheme/VideoPlayer/ProgressbarBackground.gif b/Icons/DefaultTheme/VideoPlayer/ProgressbarBackground.gif new file mode 100644 index 0000000000000000000000000000000000000000..787454e3c93e66662f8ea219d1c498b85863ff57 GIT binary patch literal 1266 zcmZ?wbhEHbEMw$hXlG!MkyDhFQ_|2eF)*<+v-WWFOYjZN^b5=OkH`%GqR70!$o#;l zyuhgZpy-0YsKVfw;*eM%DhY`#4UH=ei!Td{FAq;Bk4UPFNUDlTu8B^qjZUqLO{5 zIlxWx>6DPL%%@W$(pEm57E|`}=`^+$&1W-Gre!{xnXzo;vspRYUOt;$a7^?0oRVvq O&*xS=%S?A*um%9-#}fzu literal 0 HcmV?d00001 diff --git a/Icons/DefaultTheme/VideoPlayer/Reverse.png b/Icons/DefaultTheme/VideoPlayer/Reverse.png new file mode 100644 index 0000000000000000000000000000000000000000..e7e8f5e7860a36743e68623302fd8a4d9e6bb3cc GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~c!3-piujpS2q`CrpLR{lBn}cJD1Ecc8;>&}g z3!;*1{3CKF%~~Cs*5DbK-rhIgH!RyLD5JG!PE1O@Pe@iwa(P5zm3K&HTt?IMxoiEx za=e1l!{RH7t0qLJ)I}zgl-Bh7hUS*lPDsdTiqB|_Osa0|n2}%B;~$aV)H%~TIJ=;{ zCm=E}B(}7neO5q3fp2JbL&xlZ$U>H0)*hg%QaoK8Ln`8IkGS$3b`W6L@UXR@>kQBT z|8dK^LgaaxFWPskyLVQ6YgEyh%d$z{9eEWO$B`btd2uJK~dY4OXqu+>e>-zf^TkHOQ`&t;ucLK6V8 C`g#Wd literal 0 HcmV?d00001 diff --git a/Icons/DefaultTheme/VideoPlayer/ReverseMouseDown.png b/Icons/DefaultTheme/VideoPlayer/ReverseMouseDown.png new file mode 100644 index 0000000000000000000000000000000000000000..c57b383d4898d0f93418d3d592fc6ab2b43b3e4a GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~c!3-piujpS2q`CrpLR{lBn}cJD1Ecc8;>&}g z3!;*1{3CL+ikf578axBjEakt5odeEmG7{F0Ke#7 zTiz8S&(nO-zGL0Jv*H`?RT(zD+GpMOdCl&sRa|GjyK_AJ`OWSOPsj4mb3ZqIyw<^? zH0_pi=(2Ayrbzopr0Jq(9 AHvj+t literal 0 HcmV?d00001 diff --git a/Icons/DefaultTheme/VideoPlayer/ReverseMouseOver.png b/Icons/DefaultTheme/VideoPlayer/ReverseMouseOver.png new file mode 100644 index 0000000000000000000000000000000000000000..b43d264aa38dcd10933b5d700c829196e4c778c1 GIT binary patch literal 307 zcmV-30nGl1P)XT;pR>Wp*i2MvO;&49SZ`iv zf=*U!R$q8aRB2gadrDGgTV#GvSa48TZctfqUuc0}X@g*Bf|Z=GO;u~FvdFBn$gj4{ zvAD~!xy-!7*1W{my~NbM#nnw!ZA(*YR9$t`+36$tmtg<^0Axu-K~#8NJ;X&4LQxC^ zz==Kij=Q_v|9S+dq8E+TSN|V^E0>39DA!&HFdG-UR~#05&&;6uJg1aq7jL1e5a}Ib zjE|Fd7ZEUL)Yqm$eQR1~2GM+g$)^3ZB_d?kjjHZf&TnR)2mc7@#2Ekp002ovPDHLk FV1nADgfsvE literal 0 HcmV?d00001 diff --git a/Icons/DefaultTheme/VideoPlayer/Stop.png b/Icons/DefaultTheme/VideoPlayer/Stop.png new file mode 100644 index 0000000000000000000000000000000000000000..324c85c11a7f4ae0dcb60ffaa87d9c8d7e2a276d GIT binary patch literal 1020 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQaEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e6&pP!G5ON@s{ zke^?emsgaZUqnDaSV%}nURhU7%h1T&)7Zkx#KzakG0?_2$i_L?)&+<{?A$`_-NGE) z!yP>%oxGx*y<=T{db}9H|}4#`QYxOmmj|V`Ss`jzkmOM&KL!wAutF- zK;EkHH_%zto-U3d8o|A%Z}J^d5NUb1k^72X)RC>FkN?JB;w!i`V~)iB-SvDAmK_Lf z>}E=5_2ZH`xx4m}jWD~^vk7OIg%?MEspMXmo^(g|*7l5pEurOx9Wcr&{a!#gN%cj9zE-c1%5<|G)2A9Ru$vd$@? F2>>1me~bVC literal 0 HcmV?d00001 diff --git a/Icons/DefaultTheme/VideoPlayer/StopDown.png b/Icons/DefaultTheme/VideoPlayer/StopDown.png new file mode 100644 index 0000000000000000000000000000000000000000..11777e0948abd94436466e73c11fd1e7be731f82 GIT binary patch literal 1216 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQaEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e62Ku`z>goQljC*-g^eEpxd{61XkWH1!?z&AjzYee_NJ^i2cw zO@sB!!u8B!^sN&0t&{Yvll5(q4XhFkY*RQL%D6o0MI9^59YU?00&Sc_Y+QovTtn^M z!!4X5Ox#NyJt7@Fqnx~=oV{aRedC;b6P^7Mo&D3?{1V)Q(|n=}f)Yx?Qp;kpDr2&$ z5)0~*3+s6U+XXz@groWe0wxGX&Js_YES9uDI%m03*;?DlDMTc*wLm^N?Hf@O0TZz`kL{{Q>;9~fn$fNmk+cJTTp1_nlZ zPZ!4!jo{GJk>QMt5)BW}^Gux3;-Yyw!pYT;LsZx0WJ*eYs8&k+o6T`Ju$#Y*O7@eINxq)eu>a+73k7rt>od0+< zx*^XyopsMg8;K7rn=j=$T`3;7x>or5U#G22g7{270=Cm|sGjo^p zRf%O6Uz(elf3f0iTiI)&u){Mu?*3ix^!1xx?!8;O`C1EeuHlaPCu8s4xp(*e-Fq=l wjeZ|=U7%>xe*ERF!s@+o-}_F#EIctGJ|U}i^QGGdzk}k<)78&qol`;+0M~U!mjD0& literal 0 HcmV?d00001 diff --git a/Icons/DefaultTheme/VideoPlayer/StopOver.png b/Icons/DefaultTheme/VideoPlayer/StopOver.png new file mode 100644 index 0000000000000000000000000000000000000000..5eab80f098be8618f4ae8a6ce672838af92eb12d GIT binary patch literal 1215 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQaEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e6&Pe4paNJvmn zOi)NfP)Le{OOun=Tu8xQMZ=6=DpFL{SxntcNX0`|(^W_#NI*MWNGDW8GeAryNJKwW zST{!0Fig}SPF_1r$RI(;FiFTHThu&9-ZDqbrdY(LO3toI(ZEO9$WPfcRNp>EK`Tu` zJ44AlQQV=%(lOM+AStG8+JZ!dl_!5oGRoeNh4a(M-)~+!w+8mPB;FiAJJ7pxLF^stR=6>JB`;#x< zpMLHByc_qM4?XNS{b2E}`x_4&J#zBgsY};RUA}(##{CobzFfKa;Lg2=cOE>s`{?ES z_a8re{Pf}LpI?9e|NHkJ7>}cX79o&z%ruaJfzi&>#W6%9IN8A5+}zmIks;W)xR^~j zxp~PI5f%?$BZD*plZgV!=YwE=TiC` V-4^-Cvn~}BL!PdFF6*2UngES=Uqt`_ literal 0 HcmV?d00001 diff --git a/Icons/DefaultTheme/VideoPlayer/VolumeBar.png b/Icons/DefaultTheme/VideoPlayer/VolumeBar.png new file mode 100644 index 0000000000000000000000000000000000000000..d372a39e93b6a84bf8e211f2243d9eb938557e92 GIT binary patch literal 934 zcmeAS@N?(olHy`uVBq!ia0y~yV6+3WSvZ)1q(Z^sS`a7Q(btiIVPik{pF~!WaI!~` zF9SoB8UsT^3j@P1pisjL28L1t28LG&3=CE?7#PG0=IjczVPIfp2=EDUm621Fl~dw( zJS*XPD57FUQstKH{&#uP{@3kz+j8_jQ2Qtt4S``C0=aYZegeIx>gnPbV&R{hkRrh< x!XU@k(HDdq( literal 0 HcmV?d00001 diff --git a/Icons/DefaultTheme/VideoPlayer/VolumeBarBackground.png b/Icons/DefaultTheme/VideoPlayer/VolumeBarBackground.png new file mode 100644 index 0000000000000000000000000000000000000000..e72ca6e8756397ed3c6f4b5bd04e08aa99e84ef4 GIT binary patch literal 1011 zcmeAS@N?(olHy`uVBq!ia0vp^Ak53b3?j8ob^|GvbVpxD28NCO+ELVa z=x^g3Wa}DY=N9VV9`5d+=pCE}v~d)ShQLq>0mXd@c0jildAc};SomK(w^6KFLBQoA z=dMj|hFxq)|Nc7%8_4|D>D@l((cFW}EuTD_pv708tfsoByXK9Xd)lgfclPwDy)s|+ zK})8jO3H`pxQN_Qslzfn&jiAkDI6_2b=~D$>&jUr%~HI5D`!pFXZ%WX*QB?16g59F YFZpWbJi%v^9w?+dUHx3vIVCg!0H8Zy6aWAK literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/Background.png b/Icons/Legacy/VideoPlayer/Background.png new file mode 100644 index 0000000000000000000000000000000000000000..c2642eb8788ee1d6c8c555ecfb266cf9babc8669 GIT binary patch literal 1117 zcmeAS@N?(olHy`uVBq!ia0y~yV66bMbvc-Ur1HAY&wvz5x}&cn1H;CC?mvmFK)yn< zN02WALzNl>LqiJ#!!Mvv!wUw6QUeBtR|yOZRx=nF#0%!^3bbKhU}gyL3327;=MxkZ z6aoQZAt5m#A#p(=89^ag5h-m^X&p5!Lv;fm4MSfW=O9~`U|ZJ^JGW3%hcq+CbO-lv zN6$znuV`oQSXbXTH@^gT|0IvV6tCbk?~rug&`iJZZ2ySdz^MG7=z`#w;;{JgsN|a1 zw1)W1=D5t(gsj%Y?6%UHS!K1eyC*FNx^onah5-FT;6;g#Ezs6Go-U3d6>)E`9S?O5 zWN>zDJbBV(@Smd z2scoK%OUg`P(-3()z`{rGmxxUUaA44RtNZmxcY`=xA)DTG;6hIV0v^) zoqt4bRB}yVRDM`|d2mc|P;`M;P)1Bjy-!G1YtNjREu=tADv{rGmxxUUaA44RtNZmxcY`=$EK8K6f}AUrbnmL z`A6hNCD#N-<%h+W2gei#MHhGlWyGY^`-EggClwi4`bH#Hc?G4%XEu9>Wcr3>#bq@4 zhGr&ax5Z_)`i13$#aG0pHF$@ldj_QC7B?4_x5cK_$7eM91gH6i=0+q{hQ$>|CRHb7 zG2SgU?n|TF9<^@C)gvAzw#Fhp|6^6&< zO*?Sz8_?M$o-U3d6>+i0OvR2EFdVsH*it!h=FErx)NdEw`6*uIbiQ>RcW>0~V+V3P zs`mKKtUT5JEz@AGjQ6vcyqYymySz28>p%O;`LQ=cvn4`i#$8>foRpvY0zCg|PZ57C ya^Y#z%DQg}^B8TIJ%!C`R;LEP-eFMmm+@Y!fHB{_bt{1OGkCiCxvXd6Ai!;r=JvaoqVAdP2{I zt_zJ?+s43bNP4_YnR&{G_GvJk982b0ZhWjlx=Sh7FXsIT@r`IHgjgJy-7P|FWcj{O zN&YL87vmJrxN#0001rP)t-s5)u;B z+2GUI-~Rsp-Qwx`{QvOv{5?ce5D*g&4-^;}7#kZKKSoxYo~JT5Nj*eUG(1f@K~W40 z5g#Kh4-XR!4He4F&_YUEK}lHz1O!G-U_eJ#K1Nj!4-O_OF+4+33JMlHLsJ3*0s{jB zMNM8qOI;Qg7Be_XQ&m@QHEBf)bU4E zOq4sTFvgt76ij5iZh^J1f*TWCYPHsntEF2eHq=P@Oj4O7vSES{i+lPKLZl*Qj^q0y qXgYSebn*@(ME&0BBTUv2{@@EOgc&Q=to2R+0000xN#0005DP)t-s0s;cm z+2BS_VAI&&3?@!eU~~yUb_y+53N&CYHdhT%hYlV=5EnBO6BQE^784sZ6DCj-T8|VQ zHWnK!7924c7#JELI~yAt8z46uY^NL_CLJO-B6h7KDLV!&T`)alG)HweKvg(GSV2iz zLP}afO<_Y$VM9-52^u?AWp-R@d0c9GVQ_w9aeriWg=BSxYkrQBpr-Kk{QCU=5*8^E z7cLSWJPsd14;nWdATkdjL>(eI9V0df8962{JSi_hE;URQ8Y*vrjTIX(6(UC!L3oIk zo(UE=ovg5?v9zbLwY0#*wZX+NJ7O<8V-{kd7a%|q5)wN?Q9MIb7BOE7Cr%1Te*^>s z2Q+3!Q)WzCa4t7oFEvgtHBc`#Qwu3kBq}^FHcKx$VHzSO5J-j)P>^tfj&g&Ic#4;L ziIh67-YmS_-sg5!U0ar2)oQ2_&NbK}y-)Ssz zGQ0qs#ZolEv{ld3w)A<`#!N&@i@>4tt_WgciAp=7QI{qN;)+KHHho+(eMXsN@SpgM zNy^!@W}FTqN?mz<<8nx@dQ{1WE;rW8Iwg#-lXJJL?asAUtG({DS8wN%?0>OdZ#K(c R0vrGU002ovPDHLkV1hMlMp6I( literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/FullscreenOver.png b/Icons/Legacy/VideoPlayer/FullscreenOver.png new file mode 100644 index 0000000000000000000000000000000000000000..f719655a7f6909b71d937055153eddc0b06d9b1a GIT binary patch literal 861 zcmV-j1ETziP)xN#0005YP)t-s0s;aN z5*i;XW;#%QMowVU*x%II;1UuN5+FYkBuEk{QW7jx5-?yAF=7%lYZEP86Ge^`DNq(C zMiwkm7CdtoKztY&7#U5E8yg!PDMcMlhaNt99z==>4L2V-Y#=LWAV7&AL5v|VOe8~z zBt(xUM2IU&k1KDhFF#xl8d*AotUF0!Ka8zFXt_g7V?<3~5Gz+kXQxM3aY$KmOKhlA zW`I?4tX7Z6eU`z4!r_IPq=%ZNnya&$q_w8By0pH;#L3PP5)=puDcs)S+~DNh;_3SQ z|Nj2}IYCtwH*6Lb7CS>(9#DckMO!~eT>}FH1Ox;@Lqib}7DG*94iFYZO<_e%UKB4? z6g+w%K!_qYVIoz7P;aUuGEO5kRU{}jTY0fxeX(S8hi-|tbcK?5i=26loqLqP8c&TC zB|{w@9wu9Zh@Gd1%ixNdrHahoj?v$frLL3H-;}1Wm#MIq*58<@uqRifC|-n~*x#S8 zx1qARqO-avX{xZl#1$}J6){%G-t@}S)*c=nFm|jna#b(!Gfgb>sRZ#LmJ(tyLFF$`m;f=1@B}pSpY#h!l2Vc;;Efmn z8CG*H>EvxUSwp|%sD}a3D%j1;6j7IAHnSC4Ky=C>k&xwO3|Rn7&T@Vq`2iG_E4IG5wX=Wx^LT$}YjZv3 nQUN8Gw`oxHTOEpOZ28!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e6&pP!GLTa1TC zke^?emsfPeDab zP2Esk!$?ibP)plPTgO!2z{=3b#>CXl%*xHg+Q-bs*WAv}!qU;w%GuK1-^xDF(!t-t zA;7{R(Ap`;#uL-DYGmsqaZ!2sGzvIxU?>(u%W25v8b%MsJyMIwXdP2zqzfyv299s z-;A#QnO*&}dM3=AHgnO`nM-EOSvq^(@|p8i%v-o>!QwRwmaJL0bkp)xn^vyfzH#f` zOTxA{iJMMLk^{ zLo|YuHymQ&c{ZcrAP@;kNtTqBZjG&0f4VZV-2G;FNk!JHS4J7xD_4v8%(|kN{o?MejO&-u7Op+JVBwUB zri>g@l8fg4=BiaYvO2>c<8ljSZ81=Y~hjb%|6HW@Z*IcFD07DEO`F9lBKN3cFFUVL{<01GOvHr*HbK`7EV7 zUHo$a)6pFkH(j(}KbrCL^dHyD-b-%oa7c=g$;sp0Hs=fz<5NwgoH+u93%nf7`1s;j yJ;Nplxb$>S7C!NeVUmo3oC}X=LRVoSBg4_R{!bcXJ^%|81_n=8KbLh*2~7ZxDrUR@ literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/MuteDown.png b/Icons/Legacy/VideoPlayer/MuteDown.png new file mode 100644 index 0000000000000000000000000000000000000000..83218bcb4391faf99d79f50a51a4b799340e34d3 GIT binary patch literal 1247 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S3?yCqj{O5tEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e62SXh)tNS9AU zk6+T9SK3xgN>4^!O+eaIT-sPb%0f`aN?hJvLe7$3!A43+RYb{JQo&qS$y`doT2{$Y zO-Elz-C9l0hELv!Q^Ad2!I@vtgzNnF7}RLNafEkMjLp4}vk-6DtGGMC#ToyR(h!=^yPz)RoE zThG)--_%dhEL`6-K;JZ2&n#TeJVxItQQtaA-#S^}CfUF$(ZDu^)1idZp^Vp|kjtZ9 z)Um?CDZz0}Do%GEd4*+0$GH^C>e&?mYeJSHbRHa{q#BrLToBB?k! zr8+93DkiHkCaWr`pq|I4kvFhiz@tq#vQIdwUm#$DVB{?E#K~fb^Tm=DNark*&RMQh zwpOEdQ)+ofdSz=~Sx0tFXI@2DL3w*=WpiasTYf`JVPj80Q(t+hwMm9&iGj!-8@)Y_CVQOCHV0U23bkLI>~WBl={P(4A#RRy46HX9I1bntT~SoM zqNRUdUGKWC;SDW=2W)~5jV&LW+21WKzFS`QA}#w=YiUF8^p=iktzFX_`)73Y&ugAI zt7YQ+_Gxolrp@n|Hm`T$?B0pjHSJ^7EGSCbjI9OGv}|Jv|!oP1ux|z$?&s(-`?wSqj+L~5(wXNuBU(wsKeEqg%8@4RpxOLsm{Tp{3-L~)4mIFt& z9z449$no7rPM)1O<6`&Zi__;GK5^mXxvOU`T)lAh?xpMZF5kF+<>rIycOKt)_~P!P zmv2uU`*7s&mt)5tzj*)h&4&+P|9t!Y`}g0!fB%80bf7@-k`5&X2F5r~ z7sn8d;N%aCV{t_0=y+ZiR$!rja#NZe=fJL z=BHE6&0Wot)qJdWY}4vdv`BxxuG>Mtw7fq3{guwS?9{yiL#Z_c
^aH6F8Fn?7w4nx^HJcTDQls;*C)cA4>*Rh|09rlwce zxzh9FyLD~9PF0!lH0_h)JgJ!}8F@2u=1a|!oO1h`cz6zN^DFzt*LUvRxjw#cWq#WZ Z@i5H1xTsK@FU=Md%bu=&F6*2UngA2p)U5yj literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/MuteOver.png b/Icons/Legacy/VideoPlayer/MuteOver.png new file mode 100644 index 0000000000000000000000000000000000000000..7643ee97704132b9a041c1af40ec6c987cfbf1f5 GIT binary patch literal 1262 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S3?yCqj{O5tEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e62P)LM>OOun= zoLAnRUn-JM$(LUzPFT}lTH8xj+gn!GM_M;jRzFsDOw6`G#HLEju2R;vLfs@#(JWHKELh(%MAtgb)ILH%D@{Q=L(48j$39iu zu~gipR@S3f-m663x60HpR?Rs}%Q;uet3b!E+|)hS);GsGu+G&t&OI>KHzdbDBF{6j z*gLw^FQOnkp;TPIQCz=C*riw4wNK8aOTx2L(x+3>w_nkrQ^B!E#ko_>r9;J~U)!r+ zFRs}#s>wWTwtDyy&6Hl9^gf;J`MNnX3<~BNm(AA7S+1MESR-?#M&>H5yp`rPON@&) zyQcT}r?y6Ace$l6_s&`2kg+o$e^qGFn&`@n@wFS%@|rSBI&;c9GAp_>D<&0IbQe~4 z7S>ECu9;}ly3DR?wbR74<&9HHS|*jW&aY{kT-QFmrh7(h|LnZZ?P2{Vs;3;Nop!Lf zdtOWT?AG4-jT7cHOrGB`Wq#-6`HfQ-bWU8@J7r17jKzKPR?M8gZqlOFlb5cWx_sUA zg_~wB+%SLHmf0&e&RV^B&YCTA*KJ*}V%vhXTNka~vvAYSMVogm->`4lmR-xY?q0Ed z@7gVUSMAuhcE|oTTMw?^b#VRO!yC6B+OYq~mVHOI?mxP1&xsxTPj#KS-+TUU?}dAl zF5aDT>Grg%_vT!^JMYH*=0guVPCr<5^WMe-NB12$xA)kELnqH4IeG5j@r#E~T|RQ^ z^6|4*PoBGe;^Ng47q6YZaQ)<^Yo{(>KYi);*-N)BUAukp+P%v+?w`2#<-*kmS8hJI ze&_M+`;YG2dwA#m<2w&u+h1G4U*5d^@c#YBcke&F|ML68$4?(W zfBE|D`-iW8zI^-j{m0KAKYsrD^Z(z!|G?BsYmh8b$i~3HnCt1{7@`rJY+$6bdW}QF zDI;fPw!@3B>nS&9yYos;@_T!GfBkv~)et&l6h5Ngoemm*;H&{&7;E4bGjQst@?*qJF_eQ!dU;llZUw?YX z+cny@CGYP|ZJN}^{oLq${HnJ-sU0it@A<1Iu*CQF)T-?Kk9T+W8uG-Yh37Xp)LlC} z>!i7^o}BUbq=M;o#bPY8M9ytXonv~lB;wlKgHu0$5ER&8Vmm3O)+O&blU_KR_`Frm z9y=VEcxiEI!J>~JbL_;~)CI$yy?cDTe8Xu8omi#)Dbm|l2scljqOkwdLFL#zw{~9& zU6y-2eR5G!!M4d0MEdLmm#$kFU6HVce`|R zX{Ad>M1ey^UYy^8{qX@FE;~h;gYWG6dOB=P%-*uYvqH6}>qqa`>+5W6oapN5;2_Av e!ZIa7LXsgMas3M2#)WS{k?ZN|=d#Wzp$P!4PB^Ln literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/NoFullScreen.png b/Icons/Legacy/VideoPlayer/NoFullScreen.png new file mode 100644 index 0000000000000000000000000000000000000000..04d57c038e91c528868d6fb7f2b3eddec5f000f3 GIT binary patch literal 343 zcmV-d0jU0oP)xN#0001rP)t-s5)u;A z*x&yC|M2zv`uzXh;^{p^R1gpo4-XX7+29)+8$U)?7#J8bH%ZFO&@(tnA0sUd4HZ2^ zQw$6dIzdr1JWUS|6Gcs4K}lH_78XKETMrKoCMq#LMpZyZS3E;fJVR3o3Kjwa0s{jB zMowTuOI-v61e>0xQ&m<$Lqi@O9yB#J9UUGjDl49M#fty{0EkIMK~#7Ft;jV3!!Q5@ z!4sMp!VC`n|9jC{t;$Tdi)#QD0k{QV9e`y3_LSM9XEP>t)R)pLdnQ`z3^JkTOAbu5 z2dB`fd*Ae-3nnt_R4UI!n!kmrnAlQnR?f#5Q!}xlPTU=(l<1h4#mR-VPGTl;o@bJi pXq<#MjZ80UPF@p%yod;Y@B{AD8Aj@g0G9v&002ovPDHLkV1gMBcw+zn literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/NoFullScreenDown.png b/Icons/Legacy/VideoPlayer/NoFullScreenDown.png new file mode 100644 index 0000000000000000000000000000000000000000..b02aad83054c1dbc71197e2711aed6afde62c543 GIT binary patch literal 843 zcmV-R1GM~!P)xN#0005DP)t-s0s;cm z+2BS_VAI&&-QwvCCQdFkR}E2z4jw@cA3_ipGZ09I2^u>S6BZL2G!rIJ7#J8DAUhf& zB^w(X8z46uY^NL_CKD4CE;n2-J!CXTbvHm&I6_!ELQz3UT0%-%Lr!5sPi9hJbXH|{ zTxxk-YIG94l}B6h7595xmkEH5=qFEvmvHB%NGF%~gjZ-I?+gN=BKmwJnpdyJNX zkC=p(pM{f~hnAg)mYxPJU7f73FE&fGz{It|#S#({oujZ47AXrPObRq$3P^vZv9vTb zHWn5Z7h#hS5fTFf105Y61Ox;oEH4WUqK~#8NRm{_3V^I_U(0#6A+qP{xrES|b z#-2ZJ(mXU>AFu$!Fzvr?S`34qI;rrfn^3BQ-x=4@w{AzS3~0^Ao-5D0E6=eR{@M=Q zA061>hsC|Sx3l%RV{2z`*KL6j)Aq*ZTJ3*FZEbU7+XNcp`fASV$J<`M`>navbt7n^ zPP@bC6Cs4Yh(7s@4!bi7!-lDGy^7%Tk%)hd2$g<($^d`V*;G1#-?TimhD17*Rm0uk zbaMU-J+=@8fzIZW(}y6-iwny`=)TS8Lqp32aUM7e0`43Whc|wlImZ<&0B3QaHxN4g z)o~gM^bRZnXQ{}Tq_ZQzFgqNKu<4VG;u3Hu-Z@Fe%HE6T3vW3_lIJ`MWYo%j-{8b0 zZR~c8b~!QFx4%Nc$&9kZ>KW~q%zmAf^pEziO3E2Hk;UcBO10ilC=`u)wbGQwWv@-U VZMaNO#lrvq002ovPDHLkV1gmEN*w?I literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/NoFullScreenOver.png b/Icons/Legacy/VideoPlayer/NoFullScreenOver.png new file mode 100644 index 0000000000000000000000000000000000000000..eb5e78fd361bf32cb12006f60bd60c7e149b4db5 GIT binary patch literal 864 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 Ef(o|TO8@`> literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/PauseOver.png b/Icons/Legacy/VideoPlayer/PauseOver.png new file mode 100644 index 0000000000000000000000000000000000000000..4f7362626771a070417894a83c2eb575c58b8995 GIT binary patch literal 1710 zcmV;f22uHmP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00093 zP)t-s4-XCx5DyO#77!5;5fTv+5)u&-6A}^^5)>2>6crN}7Z4E~5fU8|7$_7ODis?n z7auSiA|@LnEgdI1CoME5FH9ysN+>W*D>+0dJ4G!!M=U)_F+WTwLry9~Pc1-9Dn?Q) zM^r6JS1nInGC@%_L{c_JR5wmtJw;PIMpZaUSw2WuK1^LQS7tj?WjkhgKu1?WNm)Wl zTSH4-Lrh*pOXJ?Q)Wn1XG&CQOIB-4S8GjJZA4^w zNoIZkF477l)ebGw06WbAHrE9<-v&I_06N?aG1m+;-3UI}5iiabHP0D6(EvT*6g%ZV zaD)Ly(h6175=7k|SQTJlW{cTulE!$M%5;^}f1T8Qnb>`p-eHO5 zW0mD&lW8iEjHKp`tm%!i?TxnZlBegBsOOZf>zS_TnX&Ghz3-y5 z&ZoKAw!6Zhv+AO?>!7yorMBy&x9_C7?WwxttGw-=$Mu8s{)+Jbm;e8$#`C7u{I$j7 zyvgXa#PGDt^Rw3Xvj6|T^8dlc&Ck@^z{}{z(do|C=)~3a!P@uC)b-EU_Rie)(b($O z-1gbt_sZe;!}|Z-;_2Dq`0DTW>+tvb{Qv*|{{R30000000000000000%`e}v0009m zNkl)tvb<>(@v-?BER2{5=;tXa$U~Vt1+&ydl)pwsh0>RtM^JjG{ zOWT{9nK76Gft{4@+$m?iy?c1$%9SfO9=`o}YRX()DLYeB24iDm3l-(LQyzVLcS{vuD!lHrCUtLgu&3z zOd@pFvCr2|ZC?4{`kd8su0L40`RL_0hi8RKnlTs{YRmS``+WE4)+H~0{W@56@Yk=G zOEw)n`(|FBtTuzDk&OP#xu>R25yHgt_88kG-I;$QZ+p=~6ST++RTQPs_mc#d|I>i_aG!Slw?u-0m08faBOt#zrLJb*g$omFCtkR)ucj`gIzOPp zS&)I1l~t=W*KbE%eSO!Y3DXx%pD?MbzP@gUUv8-uD^Qk2(4{#wWA~07ix)23xqIir zg^PFW*qxEu>>|hl(#tGS))AC<`_}H=d-m?#yJz?ATetIq+R7xDL3&wPIkd_ zA|W9mA}Y77yhw@@B+S4L0Zc-AMdeNHt*x!?P31*;LQG&$1|BHj<`z=1aw#q=cCk_s z;^u}3GVsFzA1|MPu&}TIkcNuzGl-)AQBhGS3kbx;0R(DlNj$@Y)Bpeg07*qoM6N<$ Eg2KTyrT_o{ literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/Play.png b/Icons/Legacy/VideoPlayer/Play.png new file mode 100644 index 0000000000000000000000000000000000000000..76d93d5043f05ae635986dfa78bf0a1dc008090c GIT binary patch literal 1693 zcmV;O24eY%P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00093 zP)t-s4-O3v4-N_n7Y+^*4h|Lx3?C2=4-gO!5fKp)5fTy-5)u*<5)u~^6ciK{6%`d0 z5D*&?5*-s2859*578e;67aJBA92XcF7Z@8C7#|oJ92puN1qUt$2Q>;2ED{$d7a1cJ z8Y&eVEE^pl9UmhaATl5!DIp^$BPA;%CM+Z;EhHx{B`Gf-DL{mORRz5~mKSowRMp{2dUN1myK1N_PKy^SzS3yZxLP}dh zOI$=tT}4e^MonNwPGCk)VMkA5M^Iu&P-93@WJ*$HN>gS_RA)<6XiZjWO;&17S8PvM zYz7F301TP{6P*AYk`5N10TiGB8K3|jq6HeE1{|OX7ODssssJgF4kMTVHJBAOmjEcH z3n;PxJE;IXuook>8#JvVE}kYjh$lRYDmscRJC*=Nod7_u08h36NxKSEpdLh`2V=Y$ zYpo(ljWR%uDowg8TDLV!q&r%xIa|0kV45~}uK-lW09eNWVaNq(+6sBt5@XK;cjX~c z(k)=vNLQvtWVS_PyhUifN@B5BX{J|hyHt6iWOBMiX245p#8GX;S#QHra>rG6$zXTL zVSdbQe93Wr#u{nCu#u^d^(gKb7+?tLiGO_A#~hH@oyZ!uwu?rhAOBS(@Nh zxA$#=&1i|zafZWlfyr`&&Uk~zdWFn!jnjIQ)kVwwOwj&c=Ko{X|7Pp|eDwd3qr8KS z&xex9f|S&Pp4y3!(2kYUlbO|;smqa|*OjB%m8jjEquHOR+k~y?kFw{Oxagv$+N7-9 zsjl6rvcRab)V90Aw7=M>yymgB;DFQok?#M$#@)8a>%qp&&(zz+&Edz+>(0~T(bw|Ns900000000000>O}-$0009V zNkl?tl395ePoqniJ^CuN@m55y21+1Tk7tz75yEy?gfH-o1PGpS}BVt-)7HD<(Xg zAuKF3%8=i;;njy{H?Lg2bm`LND>om!d)nyBZx|KI5E2sR$>&`E^xds1=MEoSw|4Ep zBj+yPeD$>6na?wfAvicpUES@%tLqmIo`1At(TWu-R4CcSLe=KwtU6veaEi7>T}_9XYdZzSMfjg^unRl3*P_v^XKb<3GP z>aU{D;2ET%Uw8N7(KRdkL9&1Tyj?T_Bz^HtoxTc#r-!(GWO3|t(BQr6Wux#g9mkG_Dxr`@*2 z<+(Z4))IycTx`Y~mem#IRjrj*-+;i`uF}fp%JPb8OATWNE=C~MzJC4s z;l!qvDN`o5R?W(mv(o{ZEaEC^HG9V7X;aTWez>@;WBSaQGp9|SG22SiRfK_yi^14P zu4K!!nbRlj>g-&i&LFi>C-fCw@u n!GWT@yrQbADu{vzC@BE|hW2^mtIGDe00000NkvXXu0mjfIH~ao literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/PlayDown.png b/Icons/Legacy/VideoPlayer/PlayDown.png new file mode 100644 index 0000000000000000000000000000000000000000..91ceecf2832d3bbd68109d7015bd583edde30d09 GIT binary patch literal 1687 zcmV;I259+-P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00093 zP)t-s4-XCx5DyO#77!5;5fTv+5)u&-6A}^^5)>2>6crN}7Z4E~5fU8$05kvqJqQsb z3l=pJ7$_7ODis?n7auSiA|@LnEgdI1CoMDt07d`+P67l=0tHM307(P@O$P@}2?$RD z08ju2Rs{i30Rme93|0*rR}lMViqh|9w}V_CTRd8 zcL6wg93x>FF?1&{OdvN$CO=9jFij{oODj1;D>+0cIYufwMJPK)EjvdnJxMV?Od~F0 zB`tFzI%_XGcr-nDDML>!Kujb?pUT{}QdGC@%_L{c_JR5wmtK15PH zMpZvXRyayoK1f(TOXJ?Q)Wq2XiHRSOjm17SZzvBepp^@ zM`e6hU~gV#a{w)X05ydGJc9u~jQ~cB0!owsPn;4{ivU!k2V9^7Tc`zKtOseg7J9lI zaIz>-f+bg#EoPc1WuQKMrU-h=K}v!|REkVgf=*Y7Ok9ppSbt$Rd~6G?~*Op5rH`<|?l3F|X+~ zw(vK+^hSY}NrRn1gP}r%p+kkIMTnzDh@?l0rbCFWNQR(Dh@eb}p-7CVOp&fnm9$co zu~L_}QJA?@o4i$?zG{J+eS({OfSi7Xo@s@ud5oq<%lcK+|90m8go&SukD`c>riqrS zhM2IDm#vJTwv?c>nxM9xro5b~yr{3fwY$i{#?8UQ)XB@&&(quA-{{)l=iA`x+~Mfz z@AmHR^X&2X^Yixl`uqC&{rdd>|Ns900000000000000000000000000$$dg20009P zNklLp8-tX{kR-ji~#OMU@4DGbTUsgV}vqN|?XS-WK6!g=%NEnKu@?X@SB(dR58QyG$y zGVNw;jC^)&#iFavrc)ooQzp7YWPf~pI$^?;`OB|Iov~mD3-vi` zetp42cNaaV?2jLx*0@bvaNYc@4}*k+&l!FL4S6|5saM}&;G4RFi8KEh9|i_4k0S!S ze3Hs4N-sWw!ROEKr^(9l@d_OAU|{8nJEG4El+@IE{s9c$T~kw4QI_P@KN82l$`-u8 zi%(fo+sN?Q8xVNxYG|mdqp8f-wLh4FmC(>+7nuO^;QGGO)6;hR^ELscUF$>sip$(%ugQ z?X3-U+I_RaS%I=Fq7^5)YuftzJ32OR-??+=)-7B5+iJQ`R*15I^fFt|KHc5CW!J7f zd-nms-rYO5GxCa)r-6(bu{C z=4}wTxxKUR#O!b`pg02?7;rjFpL2B6rfoZR?AW$x(~&vT9XLV44D1lVBo;q?&VfUR zj~_mCV9xY-F($Am0}m8%bBhJ!RZO2fy&^9_jGG%G$RG>{LV`jf;^N{WKpH9{%wUNE h%*@Q7EFiG71OTAEh{RNfdhq}N002ovPDHLkV1oP`%`yN0 literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/PlayOver.png b/Icons/Legacy/VideoPlayer/PlayOver.png new file mode 100644 index 0000000000000000000000000000000000000000..56b0e5945298d894b063c0a07a8907915b30534b GIT binary patch literal 1587 zcmV-32F&@1P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw000HP zNklq1tL=90#%UkML zWL5RFv)c{b_?u&%ATy=lkFHIp6ut zIkPAskqe$B)2v07=*8x!#UT+12J;*#)>Npo>*Vh(B{(9XkHY5*MJ_T$C+WlECmSMl zzM*6NEgr^5U2qg<)>Npoiw9>{4sbhC>8@qUL z;wMEGf`g{$O>t6zkqdO*#)(l0VcSpoets?Y$F`ck?g2e=rmgT;YhH1S6l*G=xj^=T z7M%D=k%i!(DgGg`$QU+nqF)$Sme8L{@6sdr-G`cU4>V*IG;G;>Ln?D$0~P9A;6jZJ zr$m#507n9q8NsvtL*slxW0@2;C7}fJj@=>;X#Ms&v}#+uLmPM2Q>WQIM{b>|xKnUe zpvgjj0}ZC)7Zjs6&lxu*z-Q?u=9PZ1wY2U&0b=0D7oDhGm{u8=d~M#A2C2l19(wwB zO$_>ERcG?|tz;pL@zz6wDY!m?(WCv%rtDv4rrrR`^$GCw!If9F*zNXvwk~>~xv>__ z`l2Z|O(-cxydgNhIo=MMECe{v`~suJ941T;<$d(eyqI2m`;fJhmN)KePTJmNS#w@; z5y$5};mC?~M1US${zu;-!_}LD9>NTJ{f9t>@-qY-6xaTf4_E7&l z7$`G=9+A==Ybpx9gyNiA;5v= zE2-#oN@G(36+8sUeSMQrQ%hs_|`q|b&gl~;UoJ~)YUD8=S82&5wokkmo-9w z1I>N(cxBMgp*%!GO2I(g#TO=DSH_nso>l=3YI-i9oR_S*-S&UcY)xGwgMusk>cB#6zsOVzzfU^5?d^1iN zfeQf+G#8ahQMsu2*z_w>y;hxi$-QF4NB0GEnN7RCQ*uw9{avcCxWu?3&o%xB>aLq? z2oFyDq{u>m15L#oT-0jU;Ufd$*94~TSHE=uhYYx9b&X3c&&WRt4lUeLFlKonl_}rW zqe*!W5FVWPNs)yB2b!3J=E?D1aExKiRxZdW3_o`hAVz-XSH%#$HsnvuIb}I~#Z=N^ zDSeDWPTR3bGz(H>A;6J9!BuNS%Rvbn0#kPlHYC7WjBb@?~oR zuD)ihmtsvtJf)NZJUH=_BHJ4Um+SPANf!LA<9l6Kfw&8wq14}Ifp lw^3eFtQ~bH|9^7z_y-frtOo#`CgnPbV&R{hkRrh< x!XU@k(HDdq( literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/ProgressbarBackground.gif b/Icons/Legacy/VideoPlayer/ProgressbarBackground.gif new file mode 100644 index 0000000000000000000000000000000000000000..787454e3c93e66662f8ea219d1c498b85863ff57 GIT binary patch literal 1266 zcmZ?wbhEHbEMw$hXlG!MkyDhFQ_|2eF)*<+v-WWFOYjZN^b5=OkH`%GqR70!$o#;l zyuhgZpy-0YsKVfw;*eM%DhY`#4UH=ei!Td{FAq;Bk4UPFNUDlTu8B^qjZUqLO{5 zIlxWx>6DPL%%@W$(pEm57E|`}=`^+$&1W-Gre!{xnXzo;vspRYUOt;$a7^?0oRVvq O&*xS=%S?A*um%9-#}fzu literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/Reverse.png b/Icons/Legacy/VideoPlayer/Reverse.png new file mode 100644 index 0000000000000000000000000000000000000000..e7e8f5e7860a36743e68623302fd8a4d9e6bb3cc GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~c!3-piujpS2q`CrpLR{lBn}cJD1Ecc8;>&}g z3!;*1{3CKF%~~Cs*5DbK-rhIgH!RyLD5JG!PE1O@Pe@iwa(P5zm3K&HTt?IMxoiEx za=e1l!{RH7t0qLJ)I}zgl-Bh7hUS*lPDsdTiqB|_Osa0|n2}%B;~$aV)H%~TIJ=;{ zCm=E}B(}7neO5q3fp2JbL&xlZ$U>H0)*hg%QaoK8Ln`8IkGS$3b`W6L@UXR@>kQBT z|8dK^LgaaxFWPskyLVQ6YgEyh%d$z{9eEWO$B`btd2uJK~dY4OXqu+>e>-zf^TkHOQ`&t;ucLK6V8 C`g#Wd literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/ReverseMouseDown.png b/Icons/Legacy/VideoPlayer/ReverseMouseDown.png new file mode 100644 index 0000000000000000000000000000000000000000..c57b383d4898d0f93418d3d592fc6ab2b43b3e4a GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~c!3-piujpS2q`CrpLR{lBn}cJD1Ecc8;>&}g z3!;*1{3CL+ikf578axBjEakt5odeEmG7{F0Ke#7 zTiz8S&(nO-zGL0Jv*H`?RT(zD+GpMOdCl&sRa|GjyK_AJ`OWSOPsj4mb3ZqIyw<^? zH0_pi=(2Ayrbzopr0Jq(9 AHvj+t literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/ReverseMouseOver.png b/Icons/Legacy/VideoPlayer/ReverseMouseOver.png new file mode 100644 index 0000000000000000000000000000000000000000..b43d264aa38dcd10933b5d700c829196e4c778c1 GIT binary patch literal 307 zcmV-30nGl1P)XT;pR>Wp*i2MvO;&49SZ`iv zf=*U!R$q8aRB2gadrDGgTV#GvSa48TZctfqUuc0}X@g*Bf|Z=GO;u~FvdFBn$gj4{ zvAD~!xy-!7*1W{my~NbM#nnw!ZA(*YR9$t`+36$tmtg<^0Axu-K~#8NJ;X&4LQxC^ zz==Kij=Q_v|9S+dq8E+TSN|V^E0>39DA!&HFdG-UR~#05&&;6uJg1aq7jL1e5a}Ib zjE|Fd7ZEUL)Yqm$eQR1~2GM+g$)^3ZB_d?kjjHZf&TnR)2mc7@#2Ekp002ovPDHLk FV1nADgfsvE literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/Stop.png b/Icons/Legacy/VideoPlayer/Stop.png new file mode 100644 index 0000000000000000000000000000000000000000..324c85c11a7f4ae0dcb60ffaa87d9c8d7e2a276d GIT binary patch literal 1020 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQaEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e6&pP!G5ON@s{ zke^?emsgaZUqnDaSV%}nURhU7%h1T&)7Zkx#KzakG0?_2$i_L?)&+<{?A$`_-NGE) z!yP>%oxGx*y<=T{db}9H|}4#`QYxOmmj|V`Ss`jzkmOM&KL!wAutF- zK;EkHH_%zto-U3d8o|A%Z}J^d5NUb1k^72X)RC>FkN?JB;w!i`V~)iB-SvDAmK_Lf z>}E=5_2ZH`xx4m}jWD~^vk7OIg%?MEspMXmo^(g|*7l5pEurOx9Wcr&{a!#gN%cj9zE-c1%5<|G)2A9Ru$vd$@? F2>>1me~bVC literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/StopDown.png b/Icons/Legacy/VideoPlayer/StopDown.png new file mode 100644 index 0000000000000000000000000000000000000000..11777e0948abd94436466e73c11fd1e7be731f82 GIT binary patch literal 1216 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQaEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e62Ku`z>goQljC*-g^eEpxd{61XkWH1!?z&AjzYee_NJ^i2cw zO@sB!!u8B!^sN&0t&{Yvll5(q4XhFkY*RQL%D6o0MI9^59YU?00&Sc_Y+QovTtn^M z!!4X5Ox#NyJt7@Fqnx~=oV{aRedC;b6P^7Mo&D3?{1V)Q(|n=}f)Yx?Qp;kpDr2&$ z5)0~*3+s6U+XXz@groWe0wxGX&Js_YES9uDI%m03*;?DlDMTc*wLm^N?Hf@O0TZz`kL{{Q>;9~fn$fNmk+cJTTp1_nlZ zPZ!4!jo{GJk>QMt5)BW}^Gux3;-Yyw!pYT;LsZx0WJ*eYs8&k+o6T`Ju$#Y*O7@eINxq)eu>a+73k7rt>od0+< zx*^XyopsMg8;K7rn=j=$T`3;7x>or5U#G22g7{270=Cm|sGjo^p zRf%O6Uz(elf3f0iTiI)&u){Mu?*3ix^!1xx?!8;O`C1EeuHlaPCu8s4xp(*e-Fq=l wjeZ|=U7%>xe*ERF!s@+o-}_F#EIctGJ|U}i^QGGdzk}k<)78&qol`;+0M~U!mjD0& literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/StopOver.png b/Icons/Legacy/VideoPlayer/StopOver.png new file mode 100644 index 0000000000000000000000000000000000000000..5eab80f098be8618f4ae8a6ce672838af92eb12d GIT binary patch literal 1215 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQaEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e6&Pe4paNJvmn zOi)NfP)Le{OOun=Tu8xQMZ=6=DpFL{SxntcNX0`|(^W_#NI*MWNGDW8GeAryNJKwW zST{!0Fig}SPF_1r$RI(;FiFTHThu&9-ZDqbrdY(LO3toI(ZEO9$WPfcRNp>EK`Tu` zJ44AlQQV=%(lOM+AStG8+JZ!dl_!5oGRoeNh4a(M-)~+!w+8mPB;FiAJJ7pxLF^stR=6>JB`;#x< zpMLHByc_qM4?XNS{b2E}`x_4&J#zBgsY};RUA}(##{CobzFfKa;Lg2=cOE>s`{?ES z_a8re{Pf}LpI?9e|NHkJ7>}cX79o&z%ruaJfzi&>#W6%9IN8A5+}zmIks;W)xR^~j zxp~PI5f%?$BZD*plZgV!=YwE=TiC` V-4^-Cvn~}BL!PdFF6*2UngES=Uqt`_ literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/VolumeBar.png b/Icons/Legacy/VideoPlayer/VolumeBar.png new file mode 100644 index 0000000000000000000000000000000000000000..d372a39e93b6a84bf8e211f2243d9eb938557e92 GIT binary patch literal 934 zcmeAS@N?(olHy`uVBq!ia0y~yV6+3WSvZ)1q(Z^sS`a7Q(btiIVPik{pF~!WaI!~` zF9SoB8UsT^3j@P1pisjL28L1t28LG&3=CE?7#PG0=IjczVPIfp2=EDUm621Fl~dw( zJS*XPD57FUQstKH{&#uP{@3kz+j8_jQ2Qtt4S``C0=aYZegeIx>gnPbV&R{hkRrh< x!XU@k(HDdq( literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/VolumeBarBackground.png b/Icons/Legacy/VideoPlayer/VolumeBarBackground.png new file mode 100644 index 0000000000000000000000000000000000000000..e72ca6e8756397ed3c6f4b5bd04e08aa99e84ef4 GIT binary patch literal 1011 zcmeAS@N?(olHy`uVBq!ia0vp^Ak53b3?j8ob^|GvbVpxD28NCO+ELVa z=x^g3Wa}DY=N9VV9`5d+=pCE}v~d)ShQLq>0mXd@c0jildAc};SomK(w^6KFLBQoA z=dMj|hFxq)|Nc7%8_4|D>D@l((cFW}EuTD_pv708tfsoByXK9Xd)lgfclPwDy)s|+ zK})8jO3H`pxQN_Qslzfn&jiAkDI6_2b=~D$>&jUr%~HI5D`!pFXZ%WX*QB?16g59F YFZpWbJi%v^9w?+dUHx3vIVCg!0H8Zy6aWAK literal 0 HcmV?d00001 diff --git a/src/ui/Controls/VideoPlayerContainer.cs b/src/ui/Controls/VideoPlayerContainer.cs index 7dabedc39..3075903cd 100644 --- a/src/ui/Controls/VideoPlayerContainer.cs +++ b/src/ui/Controls/VideoPlayerContainer.cs @@ -4,10 +4,8 @@ using Nikse.SubtitleEdit.Core.SubtitleFormats; using Nikse.SubtitleEdit.Logic; using Nikse.SubtitleEdit.Logic.VideoPlayers; using System; -using System.Collections.Generic; using System.Drawing; using System.IO; -using System.Linq; using System.Windows.Forms; namespace Nikse.SubtitleEdit.Controls @@ -127,7 +125,7 @@ namespace Nikse.SubtitleEdit.Controls private int _lastCurrentPositionToolTipX; private int _lastCurrentPositionToolTipY; - public MatroskaChapter[] Chapters { get; set; } + public MatroskaChapter[] Chapters { get; set; } public RightToLeft TextRightToLeft { @@ -485,7 +483,7 @@ namespace Nikse.SubtitleEdit.Controls subtitle = WebVttToAssa.Convert(subtitle, defaultStyle, VideoWidth, VideoHeight); format = new AdvancedSubStationAlpha(); text = subtitle.ToText(format); - // File.WriteAllText(@"c:\data\__a.ass", text); + // File.WriteAllText(@"c:\data\__a.ass", text); } else { @@ -2061,5 +2059,57 @@ namespace Nikse.SubtitleEdit.Controls _labelVolume.Font = new Font(_labelTimeCode.Font.FontFamily, 6); _labelVolume.Top -= 2; } + + public void TryLoadGfx() + { + TryLoadIcon(_pictureBoxBackground, "Background"); + TryLoadIcon(_pictureBoxReverse, "Reverse"); + TryLoadIcon(_pictureBoxReverseOver, "ReverseOver"); + TryLoadIcon(_pictureBoxReverseDown, "ReverseDown"); + TryLoadIcon(_pictureBoxFastForward, "FastForward"); + TryLoadIcon(_pictureBoxFastForwardOver, "FastForwardOver"); + TryLoadIcon(_pictureBoxFastForwardDown, "FastForwardDown"); + TryLoadIcon(_pictureBoxPlay, "Play"); + TryLoadIcon(_pictureBoxPlayOver, "PlayOver"); + TryLoadIcon(_pictureBoxPlayDown, "PlayDown"); + TryLoadIcon(_pictureBoxPause, "Pause"); + TryLoadIcon(_pictureBoxPauseOver, "PauseOver"); + TryLoadIcon(_pictureBoxPauseDown, "PauseDown"); + TryLoadIcon(_pictureBoxStop, "Stop"); + TryLoadIcon(_pictureBoxStopOver, "StopOver"); + TryLoadIcon(_pictureBoxStopDown, "StopDown"); + TryLoadIcon(_pictureBoxFullscreen, "Fullscreen"); + TryLoadIcon(_pictureBoxFullscreenOver, "FullscreenOver"); + TryLoadIcon(_pictureBoxFullscreenDown, "FullscreenDown"); + TryLoadIcon(_pictureBoxMute, "Mute"); + TryLoadIcon(_pictureBoxMuteOver, "MuteOver"); + TryLoadIcon(_pictureBoxMuteDown, "MuteDown"); + TryLoadIcon(_pictureBoxProgressbarBackground, "ProgressBarBackground"); + TryLoadIcon(_pictureBoxProgressBar, "ProgressBar"); + TryLoadIcon(_pictureBoxVolumeBarBackground, "VolumeBarBackground"); + TryLoadIcon(_pictureBoxVolumeBar, "VolumeBar"); + } + + private static void TryLoadIcon(PictureBox pb, string iconName) + { + var theme = Configuration.Settings.General.UseDarkTheme ? "DarkTheme" : "DefaultTheme"; + if (!string.IsNullOrEmpty(Configuration.Settings.General.ToolbarIconTheme) && !Configuration.Settings.General.ToolbarIconTheme.Equals("Auto", StringComparison.OrdinalIgnoreCase)) + { + theme = Configuration.Settings.General.ToolbarIconTheme; + } + + var themeFullPath = Path.Combine(Configuration.IconsDirectory, theme, "VideoPlayer", iconName + ".png"); + if (File.Exists(themeFullPath)) + { + pb.Image = new Bitmap(themeFullPath); + return; + } + + var fullPath = Path.Combine(Configuration.IconsDirectory, "DefaultTheme", "VideoPlayer", iconName + ".png"); + if (File.Exists(fullPath)) + { + pb.Image = new Bitmap(fullPath); + } + } } } diff --git a/src/ui/Forms/Main.cs b/src/ui/Forms/Main.cs index 7c6dd2d22..45f048e64 100644 --- a/src/ui/Forms/Main.cs +++ b/src/ui/Forms/Main.cs @@ -6003,6 +6003,8 @@ namespace Nikse.SubtitleEdit.Forms TryLoadIcon(toolStripButtonLockCenter, "WaveformCenter"); TryLoadIcon(toolStripSplitButtonPlayRate, "WaveformPlaybackSpeed"); + mediaPlayer.TryLoadGfx(); + // Other images: IttProperties, WebVttProperties, WebVttStyle, EbuProperties } From dfc5369595e3f472a7da4ac83902fec25432c951 Mon Sep 17 00:00:00 2001 From: niksedk Date: Wed, 5 Jul 2023 22:35:50 +0200 Subject: [PATCH 74/96] Work on theming --- Icons/Legacy/WaveformCenter.png | Bin 0 -> 698 bytes Icons/Legacy/WaveformPause.png | Bin 0 -> 256 bytes Icons/Legacy/WaveformPlay.png | Bin 0 -> 340 bytes Icons/Legacy/WaveformPlayPause.png | Bin 0 -> 2149 bytes Icons/Legacy/WaveformPlaybackSpeed.png | Bin 0 -> 394 bytes .../Legacy/WaveformPlaybackSpeedSelected.png | Bin 0 -> 2353 bytes Icons/Legacy/WaveformZoomIn.png | Bin 0 -> 569 bytes Icons/Legacy/WaveformZoomOut.png | Bin 0 -> 550 bytes build.bat | 8 ++ build_beta.bat | 8 ++ .../GenerateVideoWithHardSubs.Designer.cs | 134 +++++++++++------- src/ui/Forms/GenerateVideoWithHardSubs.cs | 106 +++++++++++++- 12 files changed, 201 insertions(+), 55 deletions(-) create mode 100644 Icons/Legacy/WaveformCenter.png create mode 100644 Icons/Legacy/WaveformPause.png create mode 100644 Icons/Legacy/WaveformPlay.png create mode 100644 Icons/Legacy/WaveformPlayPause.png create mode 100644 Icons/Legacy/WaveformPlaybackSpeed.png create mode 100644 Icons/Legacy/WaveformPlaybackSpeedSelected.png create mode 100644 Icons/Legacy/WaveformZoomIn.png create mode 100644 Icons/Legacy/WaveformZoomOut.png diff --git a/Icons/Legacy/WaveformCenter.png b/Icons/Legacy/WaveformCenter.png new file mode 100644 index 0000000000000000000000000000000000000000..5e0c95a1437dfeea9fe2f49a870ac70b5dea1d67 GIT binary patch literal 698 zcmV;r0!96aP)-B z0*>Hkba^8g{5yD4{JV2^H1_6)z$R?tAM3P?ofH75W|lT;VV95X2Q;ft^CJ`s29tJP#W+kHlISm}#Kb ztpO&ZDU1e|NQm&bR1@}C4+_Y5$fQR?H46N-ycMG#g@xmOz zgb2qn5yM&2FPP_>ctQ{8?pO^stQsKrK27xnv1VjE)(%nJKhgOWZk2#DkFyw@RnRvn z;kJ_i77b99K_{R!`V3t3t~sDo;&LH|0e_f0&n^&>X%wj%m4rY07*qoM6N<$f)#-(v;Y7A literal 0 HcmV?d00001 diff --git a/Icons/Legacy/WaveformPause.png b/Icons/Legacy/WaveformPause.png new file mode 100644 index 0000000000000000000000000000000000000000..fa28768bec413a2b9177be0a4b421ac21112fc46 GIT binary patch literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(xX9DRF~q_@S%P)Og7VMz|Hn$#{XIYL&j(>MJ4c3~ny(M%|KGK6 z^}poD!YsMj`~U9$`sI6l=ziA(-WN4Z3kr`u|36*+-#`85X54ES=lTm=(X0Fa|H#+- z|Bt>=YcyT(nX{>@a{a&e`#yZO-ydln!E7~OL1X6MKmUJCw*Ox&wWSHHr0HegTe~DWM4fMNw*$ literal 0 HcmV?d00001 diff --git a/Icons/Legacy/WaveformPlay.png b/Icons/Legacy/WaveformPlay.png new file mode 100644 index 0000000000000000000000000000000000000000..a4388c7578cb1979e3458989161629ad0643a79f GIT binary patch literal 340 zcmV-a0jvIrP)BZ-YdMIQp5p^ygUDG3a)@POZu#`feI5346|-SG3PC!SIbCmTVgqvJ>+>k>3YH7_l=$k>1bTE}V2)|lUp9%pFF)R?|#f=jrq zc);oy@^J4^SJD{TU??WD^hvt8pppPt93Z-o&Dg$L(3nzOm0X99S%xk_f(;te5+PXE4wh zLbY5&)~$uL{fbURF}8qQ7Dl+RrV`LJYB+b$%aoFv28%N|i|xQCSXjfl15V)h1I~3q z*Ir+ffM}aY)N)M9C7Z3K@PoD-DWf9Dq-Z}`bTQk5eP_@!a9fVhTo6{{s;wSIf#W3| zCsXZIca<{DixG}~yw9>tC+|NoVE~S!0Ba2CngF;cfMOC#Dil=_0!~mlt_)2$rj;sA zgi3(plMt$qSB2O$P~sUA1?Z+=(@;~6mqnytD~r;Yb?r1m*JM;%os8p=#DtwtVv$Iw zowgq!+rXW1jUhEhEXySR;w4kkAuyu~1d1+3fed9HL{W@*9Ezf;!|M3BV+@9!4ab*V zZaM~uaWyN3ke8IGLdugNK)M(MI*i4Dsqli4N<~Eho7HG5J&Q~=t*UjUj+>IrIM$|A;Q4ADO;(?SB5zuv>11U+A zWf4iTz$sOUCrVT`JtwImS2g|ZNK}#E7(jL!lNFj}ZoimY^M9G;WW`)Fga5x`*l=Ag zJDL5j$xH7htl`8krAK6A2rp|}61k~uYS<<^d1T9aVgBejimGeqjJG7^m&U$3nONR3 z>&(T6x8JdM_E%>YZKWp+=op|=>nlGH< q*n6)5aHj9b$-_Gv|GqM1bKOrrXcwARoSPPY2z0h}#XnrWe#^hM$H(XZ literal 0 HcmV?d00001 diff --git a/Icons/Legacy/WaveformPlaybackSpeed.png b/Icons/Legacy/WaveformPlaybackSpeed.png new file mode 100644 index 0000000000000000000000000000000000000000..2e144c54ac9e8ce8bcd65651cfe9b8bfd7676604 GIT binary patch literal 394 zcmV;50d@X~P)DB*dtnW#I3V{JGaSYJ2u<8Gfhf6UO;}U0Bv}fvnkn=z`fE2aNsQJJ9 z>5Bi;jyHf6PhHd51Qb7mE)F*Yr1|8>E&q?aTlatet5yGZK3VdA+k?gbdk&WUZ`hOz zR=nZLe5~TrH})oj{dVmA#{X*{P5!_5M)&_2XB#1kw&wgVS(WrZWm4Gx^s)q;;$Xk+ zd%5y|+vei`wX3rJmn=y7pEW%StjMq2`M->k^#8PuNUY)}jwV42AipVVEB)6o)BbPj zVEo_4)9QahZy;QezLjp1iJkEoba4|W6JKx`po98J6<8JF62|}_g&;*LdMYT2aEW68 okV0K^U1KO04seMNdBDH`06m=yy{DvN{r~^~07*qoM6N<$g3DR6LjV8( literal 0 HcmV?d00001 diff --git a/Icons/Legacy/WaveformPlaybackSpeedSelected.png b/Icons/Legacy/WaveformPlaybackSpeedSelected.png new file mode 100644 index 0000000000000000000000000000000000000000..4090b1bea73669b5e68711b1711c4fd19d0d01a9 GIT binary patch literal 2353 zcmb_e3vAS69PeBhG8iTziabIs0U6M1d+mDHZZ{sg0V5m?m@s4r-?iUuWp{0DyWIv+ z1_T3!m%;)l2r3RiMKnXEL|Ec@4B5nJc#J8hkyjLXieMc2^>#ak;T7T~y}o|m@Bjb* z{=e`0x;S^-sFdWM$ry&EGB`xFtvgU`5vXG9@7?v@#Ob1div~WKxR8$XfVb>l4S7Z+{CCx|s^ekAU zjGk@4Nwdf0NwbS3K_-S~;u&QkA_zeX;ANqpYKmnZBFZbGYx^-p;8BQG>>-BR0r7la zE}o?s5EmRYDbX~Iy95X0VkD<4Fa&qfPA5gXDTXH*w@5ohj>Tg?0);c=fH=`RG8PQo zd59v*(nX32hr^CA>(GosiV*~XqMek}Ng@Pkma7&hBUQ6s8-o{`lA-99qN%ve2>e=! z)Qe#ZGFCYj63EM3dKX1R(2^WBPPfl(Pmz`4ylRI)JhBqW|yKg``Oj#VwM4c zr5Sme7HsQOZd=N@lXKAcz$uCk1aa# zsl@KAJ-*fDvL+#pTTxjKGEM>TBy7qF|2?T(6oqm}W(&zvXxVCJ@8w#3eAlRPO z&Pqm%d>YU5Y?_;N2M~pe<7iTF^BgHjyiC)OWdeY=-5fQDI9f4L>&j#EV-kEZb`@0c zs3$}q*AfWi2!595-5e>f zoJ2x~^CRD|0!ee61kp0)0#aP!_7cTSk9<$Jnf_rUipeh(0ksgK6`CR*zL*E|e`}U^ zET;Vo{{M=h>~*=-$<%*M9(~tt4M&EFK0+IVeHq`9&`o?(gDTR=KwDOzWM(mjB^=N3 z4$pHh-BJ0rI*obal|8+(x8|)HRih6%o;Y^Q1m$4zB>qSx9N1~l*n|5@K|a--n|?l_ zY2%WH<$68Q9oGJ{c6{@+)Q_rXd>Wk5cW!28<~6c(SD(FSW=N6V*RkGL_|Uu!wX?!4 z+Xk%(?yG$&a&~EL!T8$!j&HwPy)ohac{`f0{)an`oOMQgq_OjWH-~1Nd>K1E?9|Mq zO`e?xdaU_u$oBKq!-^wcZro6Da!_LTU&pTxt!I{{lZV+IeJd7TsoLyMUsGT8{W?!g z$BvN^D|5dKOs#saOT)^7 z<#jbbCT1OfjN9q_IHll&-B!gjsZ~{DUP$_5vwGP>xqc)jb5gI&55TsD%9)hNT7 z=N-*0dH2%XNai`Or>=U1FDs*k?@*b!>BAmd8mWa_o{cOyv(~>gj_>!0pTIrq}kWBa>aIyGuAxyV&~Bl+S)^X~;a$Th*;37Z=)zIL{} z9wgTUSL_bY>&{I7jruvI>xAEHyKNtI^XNBMspARr=YQ1@R_%|Poa}MlZ6jvR{}-F} BHP`?E literal 0 HcmV?d00001 diff --git a/Icons/Legacy/WaveformZoomIn.png b/Icons/Legacy/WaveformZoomIn.png new file mode 100644 index 0000000000000000000000000000000000000000..0060edfc4b7a6b72f18ec55038cdf639dcccd6d4 GIT binary patch literal 569 zcmV-90>=G`P)Wn{B@*V2wu+dok}kH0=3VnRGb*W1 zy@xui&I*Jcc<;{hd7kgX+4WzgZB)tTo-i_=#OWQt;qen5i?g6Ev#x3U{H(s-zAF<= zq)1GsDZE^zTHVxdrSRehFu~ApgktGUeTXEBdH!LRKlOS08`{=a#wTY9hK6`wshA;B zTas&a(HqxK%;m~9uh+hy1j1zI=F9-8D79-P<_oS-!~CrHiO7_S;`N#V4o^UT?=NGY zJIXo7Ejlg-X+H1cSeKK6^^vqIn;cG`}r-B z3uP>4yUl=bBu4&u!5B)Pgc+b|8w}nYCZ3ux2CGe$>-Ue*aJ+|!8x}J_R4kPkxIT!>A7XSes}Ck`mfF2G zH~WvC!Eb9~ebveQl&?NSev;Wt2A87H)_IziwpQ%@c9M4zq-XBYux}4)aJLTmYm0@?kEP)baQU8$#iLmf#~Lru@+&ia$Sfw+7MhzH>o5) z^&U)R=OhSy;JJIgpXd9&r~WI&(hkW~n&D6cM|U4~mz%+nAaV5-+r=XLYsTa@HVA~H zgkw`=J}$GhwXMy&%!fb1Fy0|QUvfEPiC7fj*+i0Ze(dg1DE%TdK8;85YSR7KA)>ap zT+ZL{T7H+$>pzj?LE?#oULY!p+D9o5zg_u`e?p~SQS<`4OV+9h+Pi~Tx&qv_Kjp@K z54Ej5T)ydG;nNN=b)B}3cD=wR^&AN9IepxEs8DB-x!NpovC+o)+6TN`DiMjVVQ#bN z1zul(rS}=b+TyYZPrWJfXmpNVxmPckPpS-$K07un#%y&lIT_Up3WaYBJQ*Sweeut5 zr+b8|D=kEnJ9>d&Wp$Ol{sEkB1>bm5`!MllQQK_o;_Ri{xUDsOU3L)jcNj}H^LeIc zW^hUp4Ncd%)=-D7(?(=0tW8zrX;e>zCJ8-mGL{@iI-REGLiK?pAlIKN3W-*ysSX@;34e&kR@|F*;YybcN07*qoM6N<$g0{oNUL diff --git a/build_beta.bat b/build_beta.bat index e95f72b59..261b2a552 100644 --- a/build_beta.bat +++ b/build_beta.bat @@ -163,9 +163,13 @@ IF NOT EXIST "temp_zip\Ocr" MD "temp_zip\Ocr" IF NOT EXIST "temp_zip\Tesseract302" MD "temp_zip\Tesseract302" IF NOT EXIST "temp_zip\Icons" MD "temp_zip\Icons" IF NOT EXIST "temp_zip\Icons\DefaultTheme" MD "temp_zip\Icons\DefaultTheme" +IF NOT EXIST "temp_zip\Icons\DefaultTheme\VideoPlayer" MD "temp_zip\Icons\DefaultTheme\VideoPlayer" IF NOT EXIST "temp_zip\Icons\DarkTheme" MD "temp_zip\Icons\DarkTheme" +IF NOT EXIST "temp_zip\Icons\DarkTheme\VideoPlayer" MD "temp_zip\Icons\DarkTheme\VideoPlayer" IF NOT EXIST "temp_zip\Icons\Legacy" MD "temp_zip\Icons\Legacy" +IF NOT EXIST "temp_zip\Icons\Legacy\VideoPlayer" MD "temp_zip\Icons\Legacy\VideoPlayer" IF NOT EXIST "temp_zip\Icons\Black" MD "temp_zip\Icons\Black" +IF NOT EXIST "temp_zip\Icons\Black\VideoPlayer" MD "temp_zip\Icons\Black\VideoPlayer" ECHO. COPY /Y /V "..\..\..\..\LICENSE.txt" "temp_zip\" @@ -193,9 +197,13 @@ COPY /Y /V "..\..\..\..\Ocr\*.*" "temp_zip\Ocr\" XCOPY /Y /V "..\..\..\..\Tesseract302\*.*" "temp_zip\Tesseract302\" /S COPY /Y /V "..\..\..\..\Icons\*.ico" "temp_zip\Icons\" COPY /Y /V "..\..\..\..\Icons\DefaultTheme\*.png" "temp_zip\Icons\DefaultTheme" +COPY /Y /V "..\..\..\..\Icons\DefaultTheme\VideoPlayer\*.png" "temp_zip\Icons\DefaultTheme\VideoPlayer" COPY /Y /V "..\..\..\..\Icons\DarkTheme\*.png" "temp_zip\Icons\DarkTheme" +COPY /Y /V "..\..\..\..\Icons\DarkTheme\VideoPlayer\*.png" "temp_zip\Icons\DarkTheme\VideoPlayer" COPY /Y /V "..\..\..\..\Icons\Legacy\*.png" "temp_zip\Icons\Legacy" +COPY /Y /V "..\..\..\..\Icons\Legacy\VideoPlayer\*.png" "temp_zip\Icons\Legacy\VideoPlayer" COPY /Y /V "..\..\..\..\Icons\Black\*.png" "temp_zip\Icons\Black" +COPY /Y /V "..\..\..\..\Icons\Black\VideoPlayer\*.png" "temp_zip\Icons\Black\VideoPlayer" PUSHD "temp_zip" START "" /B /WAIT "%SEVENZIP%" a -tzip -mx=9 "SubtitleEditBeta.zip" * >NUL diff --git a/src/ui/Forms/GenerateVideoWithHardSubs.Designer.cs b/src/ui/Forms/GenerateVideoWithHardSubs.Designer.cs index 58b89c17c..84c8540c7 100644 --- a/src/ui/Forms/GenerateVideoWithHardSubs.Designer.cs +++ b/src/ui/Forms/GenerateVideoWithHardSubs.Designer.cs @@ -55,7 +55,6 @@ namespace Nikse.SubtitleEdit.Forms this.checkBoxCut = new System.Windows.Forms.CheckBox(); this.labelVideoBitrate = new System.Windows.Forms.Label(); this.checkBoxBox = new System.Windows.Forms.CheckBox(); - this.labelPreviewPleaseWait = new System.Windows.Forms.Label(); this.checkBoxAlignRight = new System.Windows.Forms.CheckBox(); this.checkBoxRightToLeft = new System.Windows.Forms.CheckBox(); this.comboBoxSubtitleFont = new System.Windows.Forms.ComboBox(); @@ -107,6 +106,8 @@ namespace Nikse.SubtitleEdit.Forms this.nTSC720x480ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.x352ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.x272ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.labelPreviewPleaseWait = new System.Windows.Forms.Label(); + this.videoPlayerContainer1 = new Nikse.SubtitleEdit.Controls.VideoPlayerContainer(); this.contextMenuStripGenerate.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownFontSize)).BeginInit(); this.groupBoxSettings.SuspendLayout(); @@ -129,9 +130,9 @@ 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, 570); + this.progressBar1.Location = new System.Drawing.Point(12, 615); this.progressBar1.Name = "progressBar1"; - this.progressBar1.Size = new System.Drawing.Size(628, 11); + this.progressBar1.Size = new System.Drawing.Size(653, 11); this.progressBar1.TabIndex = 22; this.progressBar1.Visible = false; // @@ -140,7 +141,7 @@ namespace Nikse.SubtitleEdit.Forms this.buttonGenerate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.buttonGenerate.ContextMenuStrip = this.contextMenuStripGenerate; this.buttonGenerate.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.buttonGenerate.Location = new System.Drawing.Point(646, 570); + this.buttonGenerate.Location = new System.Drawing.Point(671, 615); this.buttonGenerate.Name = "buttonGenerate"; this.buttonGenerate.Size = new System.Drawing.Size(121, 23); this.buttonGenerate.TabIndex = 4; @@ -167,7 +168,7 @@ 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(773, 570); + this.buttonCancel.Location = new System.Drawing.Point(798, 615); this.buttonCancel.Name = "buttonCancel"; this.buttonCancel.Size = new System.Drawing.Size(75, 23); this.buttonCancel.TabIndex = 6; @@ -179,7 +180,7 @@ namespace Nikse.SubtitleEdit.Forms // 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, 554); + this.labelPleaseWait.Location = new System.Drawing.Point(12, 599); this.labelPleaseWait.Name = "labelPleaseWait"; this.labelPleaseWait.Size = new System.Drawing.Size(70, 13); this.labelPleaseWait.TabIndex = 25; @@ -187,7 +188,7 @@ namespace Nikse.SubtitleEdit.Forms // // numericUpDownFontSize // - this.numericUpDownFontSize.Location = new System.Drawing.Point(120, 33); + this.numericUpDownFontSize.Location = new System.Drawing.Point(120, 25); this.numericUpDownFontSize.Maximum = new decimal(new int[] { 1000, 0, @@ -206,11 +207,12 @@ namespace Nikse.SubtitleEdit.Forms 0, 0, 0}); + this.numericUpDownFontSize.ValueChanged += new System.EventHandler(this.numericUpDownFontSize_ValueChanged); // // labelFontSize // this.labelFontSize.AutoSize = true; - this.labelFontSize.Location = new System.Drawing.Point(19, 35); + this.labelFontSize.Location = new System.Drawing.Point(19, 27); this.labelFontSize.Name = "labelFontSize"; this.labelFontSize.Size = new System.Drawing.Size(49, 13); this.labelFontSize.TabIndex = 0; @@ -225,7 +227,7 @@ namespace Nikse.SubtitleEdit.Forms // this.labelProgress.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.labelProgress.AutoSize = true; - this.labelProgress.Location = new System.Drawing.Point(12, 584); + this.labelProgress.Location = new System.Drawing.Point(12, 629); this.labelProgress.Name = "labelProgress"; this.labelProgress.Size = new System.Drawing.Size(88, 13); this.labelProgress.TabIndex = 29; @@ -236,15 +238,15 @@ namespace Nikse.SubtitleEdit.Forms this.groupBoxSettings.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.groupBoxSettings.Controls.Add(this.videoPlayerContainer1); this.groupBoxSettings.Controls.Add(this.groupBoxCut); this.groupBoxSettings.Controls.Add(this.labelVideoBitrate); this.groupBoxSettings.Controls.Add(this.checkBoxBox); - this.groupBoxSettings.Controls.Add(this.labelPreviewPleaseWait); this.groupBoxSettings.Controls.Add(this.checkBoxAlignRight); + this.groupBoxSettings.Controls.Add(this.labelInfo); this.groupBoxSettings.Controls.Add(this.checkBoxRightToLeft); this.groupBoxSettings.Controls.Add(this.comboBoxSubtitleFont); this.groupBoxSettings.Controls.Add(this.labelSubtitleFont); - this.groupBoxSettings.Controls.Add(this.buttonPreview); this.groupBoxSettings.Controls.Add(this.groupBoxVideo); this.groupBoxSettings.Controls.Add(this.groupBoxAudio); this.groupBoxSettings.Controls.Add(this.numericUpDownTargetFileSize); @@ -255,7 +257,7 @@ namespace Nikse.SubtitleEdit.Forms this.groupBoxSettings.Controls.Add(this.labelFontSize); this.groupBoxSettings.Location = new System.Drawing.Point(12, 13); this.groupBoxSettings.Name = "groupBoxSettings"; - this.groupBoxSettings.Size = new System.Drawing.Size(836, 502); + this.groupBoxSettings.Size = new System.Drawing.Size(861, 547); this.groupBoxSettings.TabIndex = 0; this.groupBoxSettings.TabStop = false; this.groupBoxSettings.Text = "Settings"; @@ -273,9 +275,9 @@ namespace Nikse.SubtitleEdit.Forms this.groupBoxCut.Controls.Add(this.labelCutTo); this.groupBoxCut.Controls.Add(this.labelCutFrom); this.groupBoxCut.Controls.Add(this.checkBoxCut); - this.groupBoxCut.Location = new System.Drawing.Point(430, 369); + this.groupBoxCut.Location = new System.Drawing.Point(430, 21); this.groupBoxCut.Name = "groupBoxCut"; - this.groupBoxCut.Size = new System.Drawing.Size(391, 115); + this.groupBoxCut.Size = new System.Drawing.Size(425, 96); this.groupBoxCut.TabIndex = 15; this.groupBoxCut.TabStop = false; // @@ -403,7 +405,7 @@ namespace Nikse.SubtitleEdit.Forms // labelVideoBitrate // this.labelVideoBitrate.AutoSize = true; - this.labelVideoBitrate.Location = new System.Drawing.Point(193, 403); + this.labelVideoBitrate.Location = new System.Drawing.Point(193, 352); this.labelVideoBitrate.Name = "labelVideoBitrate"; this.labelVideoBitrate.Size = new System.Drawing.Size(86, 13); this.labelVideoBitrate.TabIndex = 14; @@ -412,56 +414,52 @@ namespace Nikse.SubtitleEdit.Forms // checkBoxBox // this.checkBoxBox.AutoSize = true; - this.checkBoxBox.Location = new System.Drawing.Point(120, 136); + this.checkBoxBox.Location = new System.Drawing.Point(203, 27); this.checkBoxBox.Name = "checkBoxBox"; this.checkBoxBox.Size = new System.Drawing.Size(44, 17); this.checkBoxBox.TabIndex = 6; this.checkBoxBox.Text = "Box"; this.checkBoxBox.UseVisualStyleBackColor = true; - // - // labelPreviewPleaseWait - // - this.labelPreviewPleaseWait.AutoSize = true; - this.labelPreviewPleaseWait.Location = new System.Drawing.Point(717, 45); - this.labelPreviewPleaseWait.Name = "labelPreviewPleaseWait"; - this.labelPreviewPleaseWait.Size = new System.Drawing.Size(70, 13); - this.labelPreviewPleaseWait.TabIndex = 7; - this.labelPreviewPleaseWait.Text = "Please wait..."; + this.checkBoxBox.CheckedChanged += new System.EventHandler(this.checkBoxBox_CheckedChanged); // // checkBoxAlignRight // this.checkBoxAlignRight.AutoSize = true; - this.checkBoxAlignRight.Location = new System.Drawing.Point(120, 113); + this.checkBoxAlignRight.Location = new System.Drawing.Point(120, 105); this.checkBoxAlignRight.Name = "checkBoxAlignRight"; this.checkBoxAlignRight.Size = new System.Drawing.Size(72, 17); this.checkBoxAlignRight.TabIndex = 5; this.checkBoxAlignRight.Text = "Align right"; this.checkBoxAlignRight.UseVisualStyleBackColor = true; + this.checkBoxAlignRight.CheckedChanged += new System.EventHandler(this.checkBoxAlignRight_CheckedChanged); // // checkBoxRightToLeft // this.checkBoxRightToLeft.AutoSize = true; - this.checkBoxRightToLeft.Location = new System.Drawing.Point(120, 90); + this.checkBoxRightToLeft.Location = new System.Drawing.Point(120, 82); this.checkBoxRightToLeft.Name = "checkBoxRightToLeft"; this.checkBoxRightToLeft.Size = new System.Drawing.Size(80, 17); this.checkBoxRightToLeft.TabIndex = 4; this.checkBoxRightToLeft.Text = "Right to left"; this.checkBoxRightToLeft.UseVisualStyleBackColor = true; + this.checkBoxRightToLeft.CheckedChanged += new System.EventHandler(this.checkBoxRightToLeft_CheckedChanged); // // comboBoxSubtitleFont // this.comboBoxSubtitleFont.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.comboBoxSubtitleFont.DropDownWidth = 250; this.comboBoxSubtitleFont.FormattingEnabled = true; - this.comboBoxSubtitleFont.Location = new System.Drawing.Point(120, 63); + this.comboBoxSubtitleFont.Location = new System.Drawing.Point(120, 55); this.comboBoxSubtitleFont.Name = "comboBoxSubtitleFont"; this.comboBoxSubtitleFont.Size = new System.Drawing.Size(250, 21); this.comboBoxSubtitleFont.TabIndex = 3; + this.comboBoxSubtitleFont.SelectedIndexChanged += new System.EventHandler(this.comboBoxSubtitleFont_SelectedIndexChanged); + this.comboBoxSubtitleFont.SelectedValueChanged += new System.EventHandler(this.comboBoxSubtitleFont_SelectedValueChanged); // // labelSubtitleFont // this.labelSubtitleFont.AutoSize = true; - this.labelSubtitleFont.Location = new System.Drawing.Point(19, 66); + this.labelSubtitleFont.Location = new System.Drawing.Point(19, 58); this.labelSubtitleFont.Name = "labelSubtitleFont"; this.labelSubtitleFont.Size = new System.Drawing.Size(63, 13); this.labelSubtitleFont.TabIndex = 2; @@ -469,11 +467,10 @@ namespace Nikse.SubtitleEdit.Forms // // buttonPreview // - this.buttonPreview.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.buttonPreview.Location = new System.Drawing.Point(720, 19); + this.buttonPreview.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.buttonPreview.Location = new System.Drawing.Point(671, 586); this.buttonPreview.Name = "buttonPreview"; - this.buttonPreview.Size = new System.Drawing.Size(101, 23); + this.buttonPreview.Size = new System.Drawing.Size(121, 23); this.buttonPreview.TabIndex = 6; this.buttonPreview.Text = "Preview"; this.buttonPreview.UseVisualStyleBackColor = true; @@ -495,9 +492,9 @@ namespace Nikse.SubtitleEdit.Forms this.groupBoxVideo.Controls.Add(this.comboBoxVideoEncoding); this.groupBoxVideo.Controls.Add(this.comboBoxCrf); this.groupBoxVideo.Controls.Add(this.labelVideoEncoding); - this.groupBoxVideo.Location = new System.Drawing.Point(6, 165); + this.groupBoxVideo.Location = new System.Drawing.Point(6, 131); this.groupBoxVideo.Name = "groupBoxVideo"; - this.groupBoxVideo.Size = new System.Drawing.Size(406, 197); + this.groupBoxVideo.Size = new System.Drawing.Size(406, 176); this.groupBoxVideo.TabIndex = 8; this.groupBoxVideo.TabStop = false; this.groupBoxVideo.Text = "Video"; @@ -711,8 +708,7 @@ namespace Nikse.SubtitleEdit.Forms // // groupBoxAudio // - this.groupBoxAudio.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) + this.groupBoxAudio.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.groupBoxAudio.Controls.Add(this.labelAudioEnc); this.groupBoxAudio.Controls.Add(this.comboBoxAudioBitRate); @@ -721,9 +717,9 @@ namespace Nikse.SubtitleEdit.Forms this.groupBoxAudio.Controls.Add(this.checkBoxMakeStereo); this.groupBoxAudio.Controls.Add(this.labelAudioSampleRate); this.groupBoxAudio.Controls.Add(this.comboBoxAudioSampleRate); - this.groupBoxAudio.Location = new System.Drawing.Point(430, 165); + this.groupBoxAudio.Location = new System.Drawing.Point(430, 131); this.groupBoxAudio.Name = "groupBoxAudio"; - this.groupBoxAudio.Size = new System.Drawing.Size(391, 197); + this.groupBoxAudio.Size = new System.Drawing.Size(425, 176); this.groupBoxAudio.TabIndex = 10; this.groupBoxAudio.TabStop = false; this.groupBoxAudio.Text = "Audio"; @@ -813,7 +809,7 @@ namespace Nikse.SubtitleEdit.Forms // // numericUpDownTargetFileSize // - this.numericUpDownTargetFileSize.Location = new System.Drawing.Point(120, 401); + this.numericUpDownTargetFileSize.Location = new System.Drawing.Point(120, 350); this.numericUpDownTargetFileSize.Maximum = new decimal(new int[] { 1000000, 0, @@ -837,7 +833,7 @@ namespace Nikse.SubtitleEdit.Forms // labelFileSize // this.labelFileSize.AutoSize = true; - this.labelFileSize.Location = new System.Drawing.Point(35, 403); + this.labelFileSize.Location = new System.Drawing.Point(35, 352); this.labelFileSize.Name = "labelFileSize"; this.labelFileSize.Size = new System.Drawing.Size(74, 13); this.labelFileSize.TabIndex = 12; @@ -846,7 +842,7 @@ namespace Nikse.SubtitleEdit.Forms // checkBoxTargetFileSize // this.checkBoxTargetFileSize.AutoSize = true; - this.checkBoxTargetFileSize.Location = new System.Drawing.Point(22, 378); + this.checkBoxTargetFileSize.Location = new System.Drawing.Point(22, 327); this.checkBoxTargetFileSize.Name = "checkBoxTargetFileSize"; this.checkBoxTargetFileSize.Size = new System.Drawing.Size(192, 17); this.checkBoxTargetFileSize.TabIndex = 11; @@ -857,7 +853,7 @@ namespace Nikse.SubtitleEdit.Forms // labelFileName // this.labelFileName.AutoSize = true; - this.labelFileName.Location = new System.Drawing.Point(19, 449); + this.labelFileName.Location = new System.Drawing.Point(19, 398); this.labelFileName.Name = "labelFileName"; this.labelFileName.Size = new System.Drawing.Size(52, 13); this.labelFileName.TabIndex = 0; @@ -867,7 +863,7 @@ namespace Nikse.SubtitleEdit.Forms // this.linkLabelHelp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.linkLabelHelp.AutoSize = true; - this.linkLabelHelp.Location = new System.Drawing.Point(819, 518); + this.linkLabelHelp.Location = new System.Drawing.Point(844, 563); this.linkLabelHelp.Name = "linkLabelHelp"; this.linkLabelHelp.Size = new System.Drawing.Size(29, 13); this.linkLabelHelp.TabIndex = 2; @@ -888,7 +884,7 @@ namespace Nikse.SubtitleEdit.Forms // this.labelInfo.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.labelInfo.AutoSize = true; - this.labelInfo.Location = new System.Drawing.Point(12, 518); + this.labelInfo.Location = new System.Drawing.Point(5, 526); this.labelInfo.Name = "labelInfo"; this.labelInfo.Size = new System.Drawing.Size(25, 13); this.labelInfo.TabIndex = 1; @@ -898,7 +894,7 @@ namespace Nikse.SubtitleEdit.Forms // this.labelPass.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.labelPass.AutoSize = true; - this.labelPass.Location = new System.Drawing.Point(589, 554); + this.labelPass.Location = new System.Drawing.Point(614, 599); this.labelPass.Name = "labelPass"; this.labelPass.Size = new System.Drawing.Size(51, 13); this.labelPass.TabIndex = 47; @@ -1022,25 +1018,58 @@ namespace Nikse.SubtitleEdit.Forms this.x272ToolStripMenuItem.Text = "640x272"; this.x272ToolStripMenuItem.Click += new System.EventHandler(this.ResolutionPickClick); // + // labelPreviewPleaseWait + // + this.labelPreviewPleaseWait.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.labelPreviewPleaseWait.AutoSize = true; + this.labelPreviewPleaseWait.Location = new System.Drawing.Point(668, 570); + this.labelPreviewPleaseWait.Name = "labelPreviewPleaseWait"; + this.labelPreviewPleaseWait.Size = new System.Drawing.Size(70, 13); + this.labelPreviewPleaseWait.TabIndex = 48; + this.labelPreviewPleaseWait.Text = "Please wait..."; + // + // videoPlayerContainer1 + // + this.videoPlayerContainer1.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.videoPlayerContainer1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(18)))), ((int)(((byte)(18))))); + this.videoPlayerContainer1.Chapters = null; + this.videoPlayerContainer1.CurrentPosition = 0D; + this.videoPlayerContainer1.FontSizeFactor = 1F; + this.videoPlayerContainer1.LastParagraph = null; + this.videoPlayerContainer1.Location = new System.Drawing.Point(430, 313); + this.videoPlayerContainer1.Name = "videoPlayerContainer1"; + this.videoPlayerContainer1.ShowFullscreenButton = true; + this.videoPlayerContainer1.ShowMuteButton = true; + this.videoPlayerContainer1.ShowStopButton = true; + this.videoPlayerContainer1.Size = new System.Drawing.Size(431, 226); + this.videoPlayerContainer1.SubtitleText = ""; + this.videoPlayerContainer1.TabIndex = 17; + this.videoPlayerContainer1.TextRightToLeft = System.Windows.Forms.RightToLeft.No; + this.videoPlayerContainer1.UsingFrontCenterAudioChannelOnly = false; + this.videoPlayerContainer1.VideoHeight = 0; + this.videoPlayerContainer1.VideoPlayer = null; + this.videoPlayerContainer1.VideoWidth = 0; + this.videoPlayerContainer1.Volume = 0D; + // // GenerateVideoWithHardSubs // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(860, 605); + this.ClientSize = new System.Drawing.Size(885, 650); + this.Controls.Add(this.labelPreviewPleaseWait); this.Controls.Add(this.groupBoxSettings); this.Controls.Add(this.labelPass); - this.Controls.Add(this.labelInfo); this.Controls.Add(this.linkLabelHelp); this.Controls.Add(this.labelProgress); + this.Controls.Add(this.buttonPreview); this.Controls.Add(this.labelPleaseWait); this.Controls.Add(this.progressBar1); this.Controls.Add(this.buttonGenerate); this.Controls.Add(this.buttonCancel); this.Controls.Add(this.textBoxLog); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.KeyPreview = true; - this.MaximizeBox = false; - this.MinimizeBox = false; this.Name = "GenerateVideoWithHardSubs"; this.ShowIcon = false; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; @@ -1118,7 +1147,6 @@ namespace Nikse.SubtitleEdit.Forms private System.Windows.Forms.Label labelSubtitleFont; private System.Windows.Forms.CheckBox checkBoxRightToLeft; private System.Windows.Forms.CheckBox checkBoxAlignRight; - private System.Windows.Forms.Label labelPreviewPleaseWait; private System.Windows.Forms.CheckBox checkBoxBox; private System.Windows.Forms.Button buttonVideoChooseStandardRes; private System.Windows.Forms.ContextMenuStrip contextMenuStripRes; @@ -1152,5 +1180,7 @@ namespace Nikse.SubtitleEdit.Forms private System.Windows.Forms.Button buttonCutFrom; private System.Windows.Forms.ContextMenuStrip contextMenuStripGenerate; private System.Windows.Forms.ToolStripMenuItem promptParameterBeforeGenerateToolStripMenuItem; + private System.Windows.Forms.Label labelPreviewPleaseWait; + private Controls.VideoPlayerContainer videoPlayerContainer1; } } \ No newline at end of file diff --git a/src/ui/Forms/GenerateVideoWithHardSubs.cs b/src/ui/Forms/GenerateVideoWithHardSubs.cs index a3ecad128..3ea414549 100644 --- a/src/ui/Forms/GenerateVideoWithHardSubs.cs +++ b/src/ui/Forms/GenerateVideoWithHardSubs.cs @@ -12,7 +12,6 @@ using System.Text; using System.Text.RegularExpressions; using System.Windows.Forms; using Nikse.SubtitleEdit.Logic.VideoPlayers; -using Nikse.SubtitleEdit.Forms.BinaryEdit; namespace Nikse.SubtitleEdit.Forms { @@ -31,6 +30,8 @@ namespace Nikse.SubtitleEdit.Forms private readonly bool _isAssa; private readonly FfmpegMediaInfo _mediaInfo; private bool _promptFFmpegParameters; + private readonly bool _mpvOn; + private readonly string _mpvSubtitleFileName; public string VideoFileName { get; private set; } public long MillisecondsEncoding { get; private set; } @@ -42,9 +43,10 @@ namespace Nikse.SubtitleEdit.Forms _loading = true; _videoInfo = videoInfo; - Text = LanguageSettings.Current.GenerateVideoWithBurnedInSubs.Title; _assaSubtitle = new Subtitle(assaSubtitle); _inputVideoFileName = inputVideoFileName; + + Text = LanguageSettings.Current.GenerateVideoWithBurnedInSubs.Title; buttonGenerate.Text = LanguageSettings.Current.Watermark.Generate; labelPleaseWait.Text = LanguageSettings.Current.General.PleaseWait; labelResolution.Text = LanguageSettings.Current.SubStationAlphaProperties.Resolution; @@ -112,7 +114,7 @@ namespace Nikse.SubtitleEdit.Forms labelInfo.Text = LanguageSettings.Current.GenerateVideoWithBurnedInSubs.InfoAssaOff; checkBoxRightToLeft.Left = left; checkBoxAlignRight.Left = left; - checkBoxBox.Left = left; + checkBoxBox.Left = numericUpDownFontSize.Right + 12; var audioLeft = Math.Max(Math.Max(labelAudioEnc.Left + labelAudioEnc.Width, labelAudioSampleRate.Left + labelAudioSampleRate.Width), labelAudioBitRate.Left + labelAudioBitRate.Width) + 5; comboBoxAudioEnc.Left = audioLeft; @@ -233,6 +235,17 @@ namespace Nikse.SubtitleEdit.Forms { groupBoxCut.Visible = false; } + + _mpvOn = LibMpvDynamic.IsInstalled && Configuration.Settings.General.VideoPlayer == "MPV"; + _mpvSubtitleFileName = GetAssaFileName(_inputVideoFileName); + if (_mpvOn) + { + buttonPreview.Visible = false; + } + else + { + videoPlayerContainer1.Visible = false; + } } private void buttonCancel_Click(object sender, EventArgs e) @@ -763,6 +776,8 @@ namespace Nikse.SubtitleEdit.Forms { numericUpDownWidth.Value++; } + + UpdateVideoPreview(); } private void numericUpDownHeight_ValueChanged(object sender, EventArgs e) @@ -772,6 +787,8 @@ namespace Nikse.SubtitleEdit.Forms { numericUpDownHeight.Value++; } + + UpdateVideoPreview(); } private void comboBoxAudioEnc_SelectedIndexChanged(object sender, EventArgs e) @@ -872,6 +889,8 @@ namespace Nikse.SubtitleEdit.Forms Configuration.Settings.Tools.GenVideoNonAssaAlignRight = checkBoxAlignRight.Checked; Configuration.Settings.Tools.GenVideoNonAssaFixRtlUnicode = checkBoxRightToLeft.Checked; + CloseVideo(); + using (var graphics = CreateGraphics()) { using (var font = new Font(UiUtil.GetDefaultFont().FontFamily, (float)numericUpDownFontSize.Value, FontStyle.Regular)) @@ -1195,9 +1214,37 @@ namespace Nikse.SubtitleEdit.Forms _loading = false; UiUtil.FixFonts(groupBoxSettings, 2000); + if (_mpvOn) + { + UiUtil.InitializeVideoPlayerAndContainer(_inputVideoFileName, _videoInfo, videoPlayerContainer1, VideoStartLoaded, VideoStartEnded); + } + buttonGenerate.Focus(); } + private void VideoStartEnded(object sender, EventArgs e) + { + videoPlayerContainer1.Pause(); + if (videoPlayerContainer1.VideoPlayer is LibMpvDynamic libmpv) + { + libmpv.RemoveSubtitle(); + } + } + + private void VideoStartLoaded(object sender, EventArgs e) + { + videoPlayerContainer1.Pause(); + if (videoPlayerContainer1.VideoPlayer is LibMpvDynamic libmpv) + { + libmpv.LoadSubtitle(_mpvSubtitleFileName); + } + + if (_assaSubtitle?.Paragraphs.Count > 0) + { + videoPlayerContainer1.CurrentPosition = _assaSubtitle.Paragraphs[0].StartTime.TotalSeconds + 0.1; + } + } + private void checkBoxTargetFileSize_CheckedChanged(object sender, EventArgs e) { if (checkBoxTargetFileSize.Checked) @@ -1511,5 +1558,58 @@ namespace Nikse.SubtitleEdit.Forms _promptFFmpegParameters = true; buttonGenerate_Click(null, null); } + + private void numericUpDownFontSize_ValueChanged(object sender, EventArgs e) + { + UpdateVideoPreview(); + } + + private void UpdateVideoPreview() + { + + } + + private void checkBoxBox_CheckedChanged(object sender, EventArgs e) + { + UpdateVideoPreview(); + } + + private void comboBoxSubtitleFont_SelectedIndexChanged(object sender, EventArgs e) + { + + } + + private void comboBoxSubtitleFont_SelectedValueChanged(object sender, EventArgs e) + { + UpdateVideoPreview(); + } + + private void checkBoxRightToLeft_CheckedChanged(object sender, EventArgs e) + { + UpdateVideoPreview(); + } + + private void checkBoxAlignRight_CheckedChanged(object sender, EventArgs e) + { + UpdateVideoPreview(); + } + + private void CloseVideo() + { + if (!_mpvOn) + { + return; + } + + Application.DoEvents(); + if (videoPlayerContainer1.VideoPlayer != null) + { + videoPlayerContainer1.Pause(); + videoPlayerContainer1.VideoPlayer.DisposeVideoPlayer(); + videoPlayerContainer1.VideoPlayer = null; + } + Application.DoEvents(); + } + } } From e73f8708354d61c9c27ce288bfa0313b92224056 Mon Sep 17 00:00:00 2001 From: niksedk Date: Wed, 5 Jul 2023 22:53:23 +0200 Subject: [PATCH 75/96] Add missing legacy image --- Icons/Legacy/WaveformPlaybackSpeedSelected.png | Bin 2353 -> 278 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Icons/Legacy/WaveformPlaybackSpeedSelected.png b/Icons/Legacy/WaveformPlaybackSpeedSelected.png index 4090b1bea73669b5e68711b1711c4fd19d0d01a9..40938fe335a7ffe9f3865246f7aafb02fac5dc70 100644 GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G|~0G|-o|1;CpuADG)=FGOXwrSI*9k_E~=9!t-uV3G^Y15hiXJ(#BJ9B1c z+RQW{Fita;k&)5V)HF6WwzRZ#a&kIw;6QnKxs{>AW1wlA1s;*b3=DjSK$uZf!>a)( z80+cc7@`q8^_(YPg8_#_U=)|uqcz|6uj1j3eHFiFlA1|t{?zG#M~|O!_rGm$%xcyxGrJTWh?Ez-z U6Va8NK#LeWUHx3vIVCg!0Ge-T8vp#ak;T7T~y}o|m@Bjb* z{=e`0x;S^-sFdWM$ry&EGB`xFtvgU`5vXG9@7?v@#Ob1div~WKxR8$XfVb>l4S7Z+{CCx|s^ekAU zjGk@4Nwdf0NwbS3K_-S~;u&QkA_zeX;ANqpYKmnZBFZbGYx^-p;8BQG>>-BR0r7la zE}o?s5EmRYDbX~Iy95X0VkD<4Fa&qfPA5gXDTXH*w@5ohj>Tg?0);c=fH=`RG8PQo zd59v*(nX32hr^CA>(GosiV*~XqMek}Ng@Pkma7&hBUQ6s8-o{`lA-99qN%ve2>e=! z)Qe#ZGFCYj63EM3dKX1R(2^WBPPfl(Pmz`4ylRI)JhBqW|yKg``Oj#VwM4c zr5Sme7HsQOZd=N@lXKAcz$uCk1aa# zsl@KAJ-*fDvL+#pTTxjKGEM>TBy7qF|2?T(6oqm}W(&zvXxVCJ@8w#3eAlRPO z&Pqm%d>YU5Y?_;N2M~pe<7iTF^BgHjyiC)OWdeY=-5fQDI9f4L>&j#EV-kEZb`@0c zs3$}q*AfWi2!595-5e>f zoJ2x~^CRD|0!ee61kp0)0#aP!_7cTSk9<$Jnf_rUipeh(0ksgK6`CR*zL*E|e`}U^ zET;Vo{{M=h>~*=-$<%*M9(~tt4M&EFK0+IVeHq`9&`o?(gDTR=KwDOzWM(mjB^=N3 z4$pHh-BJ0rI*obal|8+(x8|)HRih6%o;Y^Q1m$4zB>qSx9N1~l*n|5@K|a--n|?l_ zY2%WH<$68Q9oGJ{c6{@+)Q_rXd>Wk5cW!28<~6c(SD(FSW=N6V*RkGL_|Uu!wX?!4 z+Xk%(?yG$&a&~EL!T8$!j&HwPy)ohac{`f0{)an`oOMQgq_OjWH-~1Nd>K1E?9|Mq zO`e?xdaU_u$oBKq!-^wcZro6Da!_LTU&pTxt!I{{lZV+IeJd7TsoLyMUsGT8{W?!g z$BvN^D|5dKOs#saOT)^7 z<#jbbCT1OfjN9q_IHll&-B!gjsZ~{DUP$_5vwGP>xqc)jb5gI&55TsD%9)hNT7 z=N-*0dH2%XNai`Or>=U1FDs*k?@*b!>BAmd8mWa_o{cOyv(~>gj_>!0pTIrq}kWBa>aIyGuAxyV&~Bl+S)^X~;a$Th*;37Z=)zIL{} z9wgTUSL_bY>&{I7jruvI>xAEHyKNtI^XNBMspARr=YQ1@R_%|Poa}MlZ6jvR{}-F} BHP`?E From 6b0c15b236077fe53ef105005cbb367feb335242 Mon Sep 17 00:00:00 2001 From: niksedk Date: Wed, 5 Jul 2023 23:06:18 +0200 Subject: [PATCH 76/96] Fix video player prograss bar background --- .../Black/VideoPlayer/ProgressBarBackground.png | Bin 0 -> 350 bytes .../Black/VideoPlayer/ProgressbarBackground.gif | Bin 1266 -> 0 bytes .../VideoPlayer/ProgressBarBackground.png | Bin 0 -> 312 bytes .../VideoPlayer/ProgressbarBackground.gif | Bin 496 -> 0 bytes .../VideoPlayer/ProgressBarBackground.png | Bin 0 -> 350 bytes .../VideoPlayer/ProgressbarBackground.gif | Bin 1266 -> 0 bytes .../Legacy/VideoPlayer/ProgressBarBackground.png | Bin 0 -> 350 bytes .../Legacy/VideoPlayer/ProgressbarBackground.gif | Bin 1266 -> 0 bytes 8 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Icons/Black/VideoPlayer/ProgressBarBackground.png delete mode 100644 Icons/Black/VideoPlayer/ProgressbarBackground.gif create mode 100644 Icons/DarkTheme/VideoPlayer/ProgressBarBackground.png delete mode 100644 Icons/DarkTheme/VideoPlayer/ProgressbarBackground.gif create mode 100644 Icons/DefaultTheme/VideoPlayer/ProgressBarBackground.png delete mode 100644 Icons/DefaultTheme/VideoPlayer/ProgressbarBackground.gif create mode 100644 Icons/Legacy/VideoPlayer/ProgressBarBackground.png delete mode 100644 Icons/Legacy/VideoPlayer/ProgressbarBackground.gif diff --git a/Icons/Black/VideoPlayer/ProgressBarBackground.png b/Icons/Black/VideoPlayer/ProgressBarBackground.png new file mode 100644 index 0000000000000000000000000000000000000000..d0c08a29f6f9776d94b06fb680e77aa8ca3b78a7 GIT binary patch literal 350 zcmeAS@N?(olHy`uVBq!ia0y~yU@QZ&c{rGXq@!P&3y@+g4sv&5Sa(k5C6L3C?&#~t zz_78O`%fY(ke?Ia6XF_|*_xQu7N6OikkuNS))1RkAD7V-o=_eZUlx^I6P;QY7?rP~ zV5 zIlxWx>6DPL%%@W$(pEm57E|`}=`^+$&1W-Gre!{xnXzo;vspRYUOt;$a7^?0oRVvq O&*xS=%S?A*um%9-#}fzu diff --git a/Icons/DarkTheme/VideoPlayer/ProgressBarBackground.png b/Icons/DarkTheme/VideoPlayer/ProgressBarBackground.png new file mode 100644 index 0000000000000000000000000000000000000000..f49a62b9a358345f2fb8e6195acb598ab0ab6dbc GIT binary patch literal 312 zcmeAS@N?(olHy`uVBq!ia0y~yU@QZ&c{rGXq@!P&3y@+g4sv&5Sa(k5C6L3C?&#~t zz_78O`%fY(knb1Z6XIG}SXf+KTvSw)mzP&iP>`OUo|cxDot>SNlar8;pr@xNFE1}A zCzp|tVQy}2Z*LzL7nhuzoS2vx92}gQnwpZ55+5I*nVA_A6B8XB{qc(48=%RY1s;*b z3=DjSL74G){)!Z!V6mr*V@QPi+pDKVTNDIbE+z#mDgASS%j;ifRhzM)$?RQw<+tPR|vd zd9pmPRiyXb|BWdJTy>kw%u`;3%kY;rcs00o17&+q&H zfPsR8goTEOh>41ejE#0PV*(&BD2!NwpFo2O9ZIyQ z(W6L{DqYI7sne%Wqe`7hwW`&tOp9UI%C)Q4uVBN99ZR;X*|TWVs$I*rt=qS75 zIlxWx>6DPL%%@W$(pEm57E|`}=`^+$&1W-Gre!{xnXzo;vspRYUOt;$a7^?0oRVvq O&*xS=%S?A*um%9-#}fzu diff --git a/Icons/Legacy/VideoPlayer/ProgressBarBackground.png b/Icons/Legacy/VideoPlayer/ProgressBarBackground.png new file mode 100644 index 0000000000000000000000000000000000000000..d0c08a29f6f9776d94b06fb680e77aa8ca3b78a7 GIT binary patch literal 350 zcmeAS@N?(olHy`uVBq!ia0y~yU@QZ&c{rGXq@!P&3y@+g4sv&5Sa(k5C6L3C?&#~t zz_78O`%fY(ke?Ia6XF_|*_xQu7N6OikkuNS))1RkAD7V-o=_eZUlx^I6P;QY7?rP~ zV5 zIlxWx>6DPL%%@W$(pEm57E|`}=`^+$&1W-Gre!{xnXzo;vspRYUOt;$a7^?0oRVvq O&*xS=%S?A*um%9-#}fzu From 2d763795da0d1937532022744e2399d961f1e575 Mon Sep 17 00:00:00 2001 From: niksedk Date: Wed, 5 Jul 2023 23:13:59 +0200 Subject: [PATCH 77/96] Update legacy icons - thx jmaraujouy :) See https://github.com/SubtitleEdit/subtitleedit/discussions/6921#discussioncomment-6367466 --- Icons/Legacy/WaveformCenter.png | Bin 698 -> 495 bytes Icons/Legacy/WaveformPause.png | Bin 256 -> 258 bytes Icons/Legacy/WaveformPlay.png | Bin 340 -> 298 bytes Icons/Legacy/WaveformPlayPause.png | Bin 2149 -> 364 bytes Icons/Legacy/WaveformPlaybackSpeed.png | Bin 394 -> 799 bytes Icons/Legacy/WaveformPlaybackSpeedSelected.png | Bin 278 -> 2361 bytes Icons/Legacy/WaveformZoomIn.png | Bin 569 -> 728 bytes Icons/Legacy/WaveformZoomOut.png | Bin 550 -> 725 bytes 8 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Icons/Legacy/WaveformCenter.png b/Icons/Legacy/WaveformCenter.png index 5e0c95a1437dfeea9fe2f49a870ac70b5dea1d67..8b2c4717c1add1d4fb04e5eaa733e3124d8b1ea0 100644 GIT binary patch delta 480 zcmV<60U!Rl1@8lp8Gi!+001a04^sdD02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM008q)OjJcja7=5J+H#uQgrwi5#q3~<)n<>_i?ileg3^Af^>?A(n!fdZ zrs0FCZRA@qQUE>#O%V?_mQ&Xkg?>h%k{q0_q@sXywmrq$@P}e_NvJBsmS$~w&u9e_p{CR zm9^%$(D$*+_J6fc_L$A~w$JxZPfxDO_O#CTn7i||&G)Ow_M5usn!4zexbvO8>5;ed zTeywH00001bW%=J06^y0W&i*Hg-Jv~R2b7^V88*SkU6HNrj|CM0({(X0V82E5jzii zdANYEg@~hvle;2Jz}iB@)yv77!zYmj4?`0GzOzF7%!xzq9G`$ z7&Ww|7kU9&S_-syODR~;ULJTc#s?puHk1+&Tj*`K+wL5{nSTYk_0dUAb~E36znODp zx_r?Le33M~Q4)PUkrb}IDhL^dHFdw-Bo*MAUV&3+8IDi_j^Jl>c_SJ8J9tz4yNc*4 zgEg+g6qIqSI|Ig8hmM~#XaN0Wy}@vmcAQ^T5lAw;{?LTc-w9|m8NPli90JlEfQrm; z#hk}fN`-5Q!GHX&iAUp-0LTi1Ld|@WHefC#8hNow&BZFi<)J*>2^H1_6)z$R?tAM3 zP?ofH75W|lT;VV95X2Q;ft^CJ`s29tJP#W+kHlISm}#KbtpO&ZDU1e|NQ4X#Xn;i5!k!*5lN10>m#DZ?W;p*Whqs?v7>ZDU6B2st8i1d0x5AM7qXT&6G(b&O zQKVvF4>;GKqw6F8VFmX*b=VCP?bR^pf&mo zT=cFvpj6}jf!r=|+L*=D=>{J7>J(rN*AD=N62k`h&+08WL(3xF?R|!PQS*1IZyly7 zS@`c6tsVi^wi$kI0Y5f%0PdZq&nFIb;^De@|0cceS_eSChD!kK1mHjaCjo0R)Ow5gSfQavB-` z@Y-ycQ}?U8v9XcyoZa_-`fX8b*g%3NFNzMu|1|iv^ZWfy;|39fECxPiGsngJZi_c_ zN)`P38{hWXBd|=)`^!S95AWZ5v#F(B3VOW1USE)H&HJ+n96IwHwRa+jrj*1 bco`T3Ijv#@`L=rjJ;31U>gTe~DWM4fRG3-r delta 228 zcmZo-YG9h6QqPj^=%;l~cP(7~FZr=BOK$f5zx%&_`CcEo-!*~v zMNQL!!lTdsPnZAqPye|Y_Zr5z{sLF@>i+*f^7a1zqi@t=8%-B{=4|S!T>tO=z7L=6 z_eYvXFk8)6(3tu6&;MVO?f(}`ZD|54X?ofJU;oDEpZ2T$l)*|Ej+)QT6OLiFs=vX= b#>O!5!8HGTi=_2H=Q4P@`njxgN@xNAdiZCp diff --git a/Icons/Legacy/WaveformPlay.png b/Icons/Legacy/WaveformPlay.png index a4388c7578cb1979e3458989161629ad0643a79f..ade7cb6f559267db20397a8060bc81af8694dc05 100644 GIT binary patch delta 271 zcmV+q0r39R0;&R#B!3BTNLh0L01m_e01m_fl`9S#0002oNklXn0eGvS?J^{E@^k`1kiE0~0f8sqx>xmk0ya_hv8z7SABskbnPPGHmS6V4wy70Bayr Vw~W3=$^ZZW00>D%PDHLkV1gO`Z`%L> delta 313 zcmV-90mlBS0@MPKB!2{FK}|sb0I`n?{9y$E000SaNLh0L01mrPw2k)KYr3{ z4YItGG3Dw1dHa9=4{EsiI-&EaEy;!?^gQ`Ld*84Bom>C@cYiCr{6Dexkv&OBZ-YdMIQp5p^ygUDG3a)@POZu#`feI53 z46|-SG!A=MEyM6bBz55#3s&Cjak{iY*dNs%Jcx^KsAR!XKppFta+v zWcdJHw^OB*^tsq8aT+R^ynZp2DoDuDwWk6}zq*4!%EpI$0DAH(_dU3%|CN>TMgBBc^u z`S?k7b%5CcE#5#zKDv?hmA$VDr`tuQm-o>PCskNVpYxqX{zD&?8e4{)ZHJ!#0000< KMNUMnLSTaJ)s|TR literal 2149 zcmb_eYitx%7@evV0ZWMuFQ1b^Q3-cv?#%4YgN{(TrETJtrd??X2DmeGcROKsW|*1o zqruRCpoR!B#zzPuMiCQ?VuBAOghzy!_(!6NX)qBJ!w+ktr1%FPcxPV}Qyw91GCQwx zzwdnKJNMpsvAe6iVfua3DT-?7?1=Y}^PKRwyPo`ic{sC#oTj-Qt9^=^(G(ta)b2g= zD60M+E7>3PC!SIbCmTVgqvJ>+>k>3YH7_l=$k>1bTE}V2)|lUp9%pFF)R?|#f=jrq zc);oy@^J4^SJD{TU??WD^hvt8pppPt93Z-o&Dg$L(3nzOm0X99S%xk_f(;te5+PXE4wh zLbY5&)~$uL{fbURF}8qQ7Dl+RrV`LJYB+b$%aoFv28%N|i|xQCSXjfl15V)h1I~3q z*Ir+ffM}aY)N)M9C7Z3K@PoD-DWf9Dq-Z}`bTQk5eP_@!a9fVhTo6{{s;wSIf#W3| zCsXZIca<{DixG}~yw9>tC+|NoVE~S!0Ba2CngF;cfMOC#Dil=_0!~mlt_)2$rj;sA zgi3(plMt$qSB2O$P~sUA1?Z+=(@;~6mqnytD~r;Yb?r1m*JM;%os8p=#DtwtVv$Iw zowgq!+rXW1jUhEhEXySR;w4kkAuyu~1d1+3fed9HL{W@*9Ezf;!|M3BV+@9!4ab*V zZaM~uaWyN3ke8IGLdugNK)M(MI*i4Dsqli4N<~Eho7HG5J&Q~=t*UjUj+>IrIM$|A;Q4ADO;(?SB5zuv>11U+A zWf4iTz$sOUCrVT`JtwImS2g|ZNK}#E7(jL!lNFj}ZoimY^M9G;WW`)Fga5x`*l=Ag zJDL5j$xH7htl`8krAK6A2rp|}61k~uYS<<^d1T9aVgBejimGeqjJG7^m&U$3nONR3 z>&(T6x8JdM_E%>YZKWp+=op|=>nlGH< q*n6)5aHj9b$-_Gv|GqM1bKOrrXcwARoSPPY2z0h}#XnrWe#^hM$H(XZ diff --git a/Icons/Legacy/WaveformPlaybackSpeed.png b/Icons/Legacy/WaveformPlaybackSpeed.png index 2e144c54ac9e8ce8bcd65651cfe9b8bfd7676604..f26983f2018f4fc0e7f133bb92623e74be9646fa 100644 GIT binary patch delta 787 zcmV+u1MK{Y1D^(v8Gi!+001a04^sdD02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM00Em&OjJcja7)(CkCBwt*x7M&c9WHu%+ArizrvA|mV||fv$eR0hKHV@qjh(BQB+l&ou7(@ zg@J>HsHv;e)zyoKhdQe1rKP56#PdF<5T> zX>Q9X0((6#tgy2^KR{7FJ9>M5K1fXeEdYQ+HAqWNQ-4%eLs3^yQBwaa082MC@$vIm zUu6F$0CbF=C?_YrJRUSRIeUD7FgZTZ($hIULQ7RxOjTENjGjNI<88w2et?9JiHBQU zU!bC;CnqTD>+5@cfoT{GN&o-=5_D2dQvhrEm20U+GY%g3s`)YZl}1~vo!2%1008_+ zL_t&-(|==N00MqK+g4jXeg-ID(=xOZ6&1BJ)M5kk1;vW0JM3HRD?>cQ1V923(W%8X zZS7^DUJfo2Kt8ifd{S~@RYkbFqpP0`GXn#cVnSkiR!W$sle2$>A{PULvWik#W_CeL zu$ynBl8Q0|gPN+gd`@0@NnDV(ytb+u1A~G_Mt^R;PF<}|Y@kn+h5`cvla!FGX1%bm zaH*zjfD{u01FN{Cx}LFFgPF0Ox}-QO0|Td!oUW0nd84_hk*=H&C(t1*(gr4$*3H(I zCI-?hAeVA5>RVWeh=^EO=reMFJ;TAy&12JK!^6$a0rM{>FFQLsFDIA{0JXa;sZ2tU R=?nk>002ovPDHLkV1lynVs-!k delta 378 zcmV-=0fqjb28sia8Gi-<001BJ|6u?C00d`2O+f$vv5yPVJ^)KsJCBwalpbzx(Nm|9{htH-HsSUDMeF6hDJ5 z4mSj(`Q*nf|Bt*|_kaJZRsVNBS@M6|gT?=Q4wn6I*pv%ayy41xtm4x*_9lbNmGnPlQrQ3WvILysV888qx$=M8=HmagtFr!=EJ*sF zH9ZQf$gkY_zjKU|^#8PuNUY)}jwV42AipVVEB)6o)BbPjVEo_4)9QahZy;QezLjp1 ziJkEoba4|W6JKx`po98J6<8JF62|}_g&;*LdMYT2aEW68kV0K^U1KO04seMNdBDH` Y06m=yy{DvN{r~^~07*qoM6N<$f({I`iU0rr diff --git a/Icons/Legacy/WaveformPlaybackSpeedSelected.png b/Icons/Legacy/WaveformPlaybackSpeedSelected.png index 40938fe335a7ffe9f3865246f7aafb02fac5dc70..041c70667abf0e245dd2b14c8e2044433d1248d2 100644 GIT binary patch literal 2361 zcmbVO3slr*8VxEHsJgaYc?f74TOTc%WHK|%Ov;GJ@X{UD9jGD|AtafZEHlZF1P2ij zq_xFrZR=yV1>9pRt*k3rtGFB=J-fxK6&0*XEh~$ptq|+ zA;|w2m!2VKSbj&+f=fj)LN2Q+bh!Zx+sq}GDz%9IHr&U1TI#l;6j&^m&igBGQdlMwQ?In-~ou7XF}o> zK{&%Q4~`c^7B;GIl*Vx!)*Dr7y_zQUwkVju2?E0nm^vC&8%UfWwHny_Lx7yf*hs56 z(JKb7Oo&64-6V#2JRX%tqY^|rrZyUl7*1dWfdT|7E#+mZ5ap#QLkwnCqD9Uva{>=5 zj8v{rAe#_ibub2(+egbw-aLVfVTF_%Q>$<#rU4*B`*7|8(K#T_&=~7vT`Vt40IT+4 z-3~z(B!}=5)V{|*5CFNgSbQ48dU3gY5|W&-1cc#D$gpTBeW{zptgIvyh%}q91lXLS zMB^soMV68UFfq*#|WoI!rZ%1HX8p(LU zDTqKAxYG={uvo|xUXm%EW>d^21jMZ3IEK_|DWib^trD%)FsM$W)u2X}(4tx$u4RlG zy`I*wL;KAFU7%D}*+1Cjj6eg9?^P+>zz{THK%@0G8a3crEo#h-)}wlgP}|fxJ!_zK zLu|hnIq;%U&WBkQR}5e@(hQ}ij0~#Q*>osl1Fj5uoB%6aV~fTKox!G2x_O{M$Yf3e zrCaKKKhoHI@5;%+13f`fw9@M)gjR~oGKlv!H%vZ$m9lrg$H4;9pDF&Jx+K_S4<)j3 zc96SYY%c7l%uCdgpSS+&N;&9hIO{)X#{b8oxG~ zp>Z?>2QyAt`lc(m@XcqI2h<{%z7vxw--V!&!71jrbi>-L^;wQe_P0k?oVqzvc+ty0YfA~M;i=sBrIowFIWcY2vn4s9m+I=r<%gu*nzJ);f_dw~u#%36SYuH5{Cn!H z@9f?gRG{UFz2UXj7VUQ)Z@u@GrMcz?NL^(2A5TTT zVV$a46js^3t)lRmW9!$AIe?%WORmnEyj}lcQ|j`$eD5Qll#XvcU0*)!@qTj~`PO&c zQD1C-TD7>}RwS*=JZrf#vwzG-S@+(`KJ?(Vwz>N0o%b(Rr>(Ct{JEp&->nO?4xGHa zy#H$ZiqeM3Q{Ox18QI{mKS*A-K))|IKDqCeoedj*GddgjJakKD?YB27 zujlu^|KZ=FRL$*YPqbI}Pl2q<_Qr2#Rj(zA zuRg!J;RWX8sqsNc&5N%!7meJ}Uw64fkF`!|fBPMV9tj@m>29=mSLs9ht+-Yt(i zH^;w93~bGB&iu}AYs;#=R=?xch>{0S^lj?M?4s(TO^yHUBTo0wGs0_%Bkp&kMa}(S z{xdmysDouK=~cR@n!7g|+di*HU|m|v^5Qe5(rm|ur$2BW?z}$fV{7yT`&e2F%~`hj zO2dTg_-z%hZ8l90^nY$uF%03ePiJIpc`xpKNzA^LJuxA(Hs184jt;NP4oGS{dZ7tf zb0oX%@#L(896Vspp07`ol#LI**cJWhOEF*eReuJFegA3hK7BCa(|V3yTlTu#II-&$ z|0@UlUfkNCTeaIY=Z?7MFA?OS-im)Lx}0M__3pBPQS0wvD%e%{?Li=Gk;ZmIeT+4|58ot z&WP&ji0})g^ZXjqj{VbFvJ3WIZzj1A~Sxe=v|@EDmyaVpw-h<|UBBlJ4m1$iT3%pZiZDE0FIL;1lBd ze`ea+l@n&poY~gaHf`Fp19uM0JTvq9_3N89Z94P+%*-=sXU@z_o0$d##%abfGBTQ) zn#RV)mX?-IPEH3794Id@w=#5i3^a|iz$3Dlfr0N(9f)8Q)$nQnipF}nIEH8hPd(?! z*I>Zm5E#X!^=Qra{i}GmV_(JZnWSdYnm=`V;L+nNCZ5+USjpSD@pbHO4dzHCi?(f^ zXLJ@>E!~#c{%X$>h8=mo6E9cp{I{yraH-(2DQ-U(e<^1$UweSr`9yRjC(t4WPgg&e IbxsLQ0BHYc9{>OV diff --git a/Icons/Legacy/WaveformZoomIn.png b/Icons/Legacy/WaveformZoomIn.png index 0060edfc4b7a6b72f18ec55038cdf639dcccd6d4..43e04535682762b628762ab751db22f4ac622d0f 100644 GIT binary patch delta 715 zcmV;+0yO=(1lR?T8Gi!+001a04^sdD0h>@vR7FQ{OcWIt00000001N@E&u=k00000 z0000004gst0000B3kv`M00000IyyT5002QkL=6oM00000001d3GynhqLPbad0s;X7 z0xB>zJU~PM001;LI5IRgBP1mwBqbXiAPNc#78x7>000LF34j0p|Iydnjhd#gxWW7W z{mNL4F1p z;F4)?sef;1D&Ure@R`J7vRd03bCWZ;Ap(r%wsG0bd1>)lm0(>QrdpOZv6%@;#kCcJ zAOTjhUKZ<44U%DGbKHgk)qHIXF}=8m?Cn5~j7wut6k^EfjqsZYI!I)ALr3WOeb@6Pjip6|oi z^}4v!E`su4(-ItiIm9D-%tmNKB_Gyj-PP-PCWT@ZtwB z!O(DoV(CqNh$M@7{$Z9s^?Can+SXUbCua$UhIn78m?2VIl52I*8`n?F<;pg%*S??x z!er*=%mAq6^^vqIn;cG`}r-B3uP>4yUl=bBu4&u!5B`D>GZDZi4Z>2RX~i3U#X9FlvS t(;;^~dnB>8AJ{oSBzsw{JuEG$dX)O5pqB60u#002ovPDHLkV1h2#1rPuL diff --git a/Icons/Legacy/WaveformZoomOut.png b/Icons/Legacy/WaveformZoomOut.png index 26d4d411e5268433bdf1e0fea4d8d431616ec3ea..44933a9884e80bac0f743cfb0c6b395934b0c0c5 100644 GIT binary patch delta 712 zcmV;(0yq7p1l0wQ8Gi!+001a04^sdD0hmxsR7FQ{OaK4?6crZ$001N@E&u=k00000 z0000004gst0000B3kv`M00000IyyT5002QkL=6oM0000fFEjuE00000JU~P$Fg5}L z0s#U7LPbab001&HHZ(RkBP1mwBqbXiAPNc#78x7>000LF34j0p|Iydnjhd#gxWSmx z>9@egsLkhQa(-iPc~f3!OHx^Gsk3vRs$BE=hn}g4m!nhf_ludOeuj=i;q4~f?={5L z7sKKg$mNHVpeEbx6}R1;sIvf(%5{Q|ZF`7AqPzl~&3=fHCf4hiskMruw3wx@exbA% z#p7XWa!j$qSASh&!^zMl(CDM9vV)G9Y?!AP$K(Kj!Mef7fy3e|e6s8J`;*V;OQ6w$ zoUxOis~5iD3$M~ZcA`zA)6LV^O{LUam&UZVxq6hN4zAcurqznM-N47rO{dkFs<@`h z=3s-Ng@=il(CCkspFft&pV#X(imIltx@NW8$Ia4#gMWpnvb-gDrL?`pSAm`yfUVQm z-PqmXUW%^V-{Rch<5z>IYLvIJwYj9Itcybp`~Uy|C3I3wQvf#367y(OJv8%3suzXh zOYN_6_A_($_uSj}2=4CB(BP-v2B#H0;za-e0LMv0K~xyiV_*OS9$t9?K0$s47~qm^ zYp!o-Du3XXhVU7sl5<;H8}qZ%xFG^e;jyWC+S*x(T9sg39R6C7F)2BjNyW7lf*=7_ zbI-7dXid$+^6DBskbtP0w_}tl5R}xF34jFHd_7$4t!+Z%GfJ!EKmyF-4lX|KmUe*& z=|#L?LnWNN{49)2twQ2tcz}F%&Y%EiGh+io6G2-sE-+t1Em%@mPe)gui4n?IXAxm$ u6Jq56yHWwfXJmE>Y^JVf0RL4y2jLk#T;WC zr_5tbJhOCjZn4R9X^4U7=8mxzVXbmqh&S30TuV2pBtP{YOn+tPBnW-rxqH5!=li~= z{wu}O4#`xS;ZOuecOQ0_o57JFarG73#UlG_#^g3O2!x}AV^d^4F0-|@tMR0?c(gE+qkVYd|h@B^LH3aHuHI=XJ&9p5)Dn)xz?IR=0f#>Bp}zHT#|a7(j?DaXD~IMJGnrR&1Nx~T3B3E a`3>+r-x2bb53g(h0000 Date: Thu, 6 Jul 2023 08:54:22 +0800 Subject: [PATCH 78/96] Update zh-Hans.xml for commit f95222876b5959f9e3fb239376eaba64f78635fd --- src/ui/Languages/zh-Hans.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ui/Languages/zh-Hans.xml b/src/ui/Languages/zh-Hans.xml index 1758cf987..1757638f2 100644 --- a/src/ui/Languages/zh-Hans.xml +++ b/src/ui/Languages/zh-Hans.xml @@ -2266,6 +2266,7 @@ Command line: {1} {2} 显示全屏幕按钮 预览字幕字体名 字幕预览字体大小 + 垂直边距 主窗口视频控制 自定义搜索文本和网址 波形外观 From 35dd2e4b6ac3b71cc008865a18829a3883e0dfe6 Mon Sep 17 00:00:00 2001 From: niksedk Date: Thu, 6 Jul 2023 17:28:42 +0200 Subject: [PATCH 79/96] Add custom thme video player images - thx jmaraujouy :) Related to https://github.com/SubtitleEdit/subtitleedit/discussions/6921#discussioncomment-6373440 --- Icons/Black/VideoPlayer/Background.png | Bin 1117 -> 1875 bytes Icons/Black/VideoPlayer/FastForward.png | Bin 356 -> 3350 bytes Icons/Black/VideoPlayer/FastForwardDown.png | Bin 0 -> 2967 bytes .../VideoPlayer/FastForwardMouseDown.png | Bin 356 -> 0 bytes .../VideoPlayer/FastForwardMouseOver.png | Bin 356 -> 0 bytes Icons/Black/VideoPlayer/FastForwardOver.png | Bin 0 -> 3173 bytes Icons/Black/VideoPlayer/Fullscreen.png | Bin 344 -> 2970 bytes Icons/Black/VideoPlayer/FullscreenDown.png | Bin 839 -> 2754 bytes Icons/Black/VideoPlayer/FullscreenOver.png | Bin 861 -> 2970 bytes Icons/Black/VideoPlayer/Mute.png | Bin 1174 -> 2951 bytes Icons/Black/VideoPlayer/MuteDown.png | Bin 1247 -> 3046 bytes Icons/Black/VideoPlayer/MuteOver.png | Bin 1262 -> 2869 bytes Icons/Black/VideoPlayer/NoFullScreen.png | Bin 343 -> 3173 bytes Icons/Black/VideoPlayer/NoFullScreenDown.png | Bin 843 -> 2958 bytes Icons/Black/VideoPlayer/NoFullScreenOver.png | Bin 864 -> 3164 bytes Icons/Black/VideoPlayer/Pause.png | Bin 1616 -> 2987 bytes Icons/Black/VideoPlayer/PauseDown.png | Bin 1710 -> 2960 bytes Icons/Black/VideoPlayer/PauseOver.png | Bin 1710 -> 2972 bytes Icons/Black/VideoPlayer/Play.png | Bin 1693 -> 3301 bytes Icons/Black/VideoPlayer/PlayDown.png | Bin 1687 -> 3780 bytes Icons/Black/VideoPlayer/PlayOver.png | Bin 1587 -> 3598 bytes Icons/Black/VideoPlayer/ProgressBar.png | Bin 934 -> 1810 bytes .../VideoPlayer/ProgressBarBackground.png | Bin 350 -> 2765 bytes Icons/Black/VideoPlayer/Reverse.png | Bin 307 -> 2863 bytes Icons/Black/VideoPlayer/ReverseDown.png | Bin 0 -> 2529 bytes Icons/Black/VideoPlayer/ReverseMouseDown.png | Bin 307 -> 0 bytes Icons/Black/VideoPlayer/ReverseMouseOver.png | Bin 307 -> 0 bytes Icons/Black/VideoPlayer/ReverseOver.png | Bin 0 -> 2849 bytes Icons/Black/VideoPlayer/Stop.png | Bin 1020 -> 3372 bytes Icons/Black/VideoPlayer/StopDown.png | Bin 1216 -> 3364 bytes Icons/Black/VideoPlayer/StopOver.png | Bin 1215 -> 3367 bytes Icons/Black/VideoPlayer/VolumeBar.png | Bin 934 -> 1810 bytes .../Black/VideoPlayer/VolumeBarBackground.png | Bin 1011 -> 2175 bytes Icons/DarkTheme/VideoPlayer/Background.png | Bin 453 -> 1670 bytes Icons/DarkTheme/VideoPlayer/FastForward.png | Bin 356 -> 3427 bytes .../DarkTheme/VideoPlayer/FastForwardDown.png | Bin 0 -> 3196 bytes .../VideoPlayer/FastForwardMouseDown.png | Bin 356 -> 0 bytes .../VideoPlayer/FastForwardMouseOver.png | Bin 356 -> 0 bytes .../DarkTheme/VideoPlayer/FastForwardOver.png | Bin 0 -> 3173 bytes Icons/DarkTheme/VideoPlayer/Fullscreen.png | Bin 382 -> 2966 bytes .../DarkTheme/VideoPlayer/FullscreenDown.png | Bin 679 -> 2753 bytes .../DarkTheme/VideoPlayer/FullscreenOver.png | Bin 687 -> 2961 bytes Icons/DarkTheme/VideoPlayer/Mute.png | Bin 656 -> 2969 bytes Icons/DarkTheme/VideoPlayer/MuteDown.png | Bin 757 -> 3125 bytes Icons/DarkTheme/VideoPlayer/MuteOver.png | Bin 811 -> 2874 bytes Icons/DarkTheme/VideoPlayer/NoFullScreen.png | Bin 343 -> 3402 bytes .../VideoPlayer/NoFullScreenDown.png | Bin 696 -> 3115 bytes .../VideoPlayer/NoFullScreenOver.png | Bin 695 -> 2954 bytes Icons/DarkTheme/VideoPlayer/Pause.png | Bin 1307 -> 3054 bytes Icons/DarkTheme/VideoPlayer/PauseDown.png | Bin 1245 -> 3000 bytes Icons/DarkTheme/VideoPlayer/PauseOver.png | Bin 1299 -> 2992 bytes Icons/DarkTheme/VideoPlayer/Play.png | Bin 1301 -> 3368 bytes Icons/DarkTheme/VideoPlayer/PlayDown.png | Bin 1233 -> 3831 bytes Icons/DarkTheme/VideoPlayer/PlayOver.png | Bin 1316 -> 3625 bytes Icons/DarkTheme/VideoPlayer/ProgressBar.png | Bin 174 -> 1396 bytes .../VideoPlayer/ProgressBarBackground.png | Bin 312 -> 2070 bytes Icons/DarkTheme/VideoPlayer/Reverse.png | Bin 307 -> 3016 bytes Icons/DarkTheme/VideoPlayer/ReverseDown.png | Bin 0 -> 3008 bytes .../VideoPlayer/ReverseMouseDown.png | Bin 307 -> 0 bytes .../VideoPlayer/ReverseMouseOver.png | Bin 307 -> 0 bytes Icons/DarkTheme/VideoPlayer/ReverseOver.png | Bin 0 -> 2846 bytes Icons/DarkTheme/VideoPlayer/Stop.png | Bin 1020 -> 3372 bytes Icons/DarkTheme/VideoPlayer/StopDown.png | Bin 615 -> 3568 bytes Icons/DarkTheme/VideoPlayer/StopOver.png | Bin 615 -> 3367 bytes Icons/DarkTheme/VideoPlayer/VolumeBar.png | Bin 174 -> 1810 bytes .../VideoPlayer/VolumeBarBackground.png | Bin 303 -> 2855 bytes Icons/DefaultTheme/VideoPlayer/Background.png | Bin 1117 -> 1875 bytes .../DefaultTheme/VideoPlayer/FastForward.png | Bin 356 -> 2054 bytes .../VideoPlayer/FastForwardDown.png | Bin 0 -> 1882 bytes .../VideoPlayer/FastForwardMouseDown.png | Bin 356 -> 0 bytes .../VideoPlayer/FastForwardMouseOver.png | Bin 356 -> 0 bytes .../VideoPlayer/FastForwardOver.png | Bin 0 -> 1883 bytes Icons/DefaultTheme/VideoPlayer/Fullscreen.png | Bin 344 -> 1599 bytes .../VideoPlayer/FullscreenDown.png | Bin 839 -> 1810 bytes .../VideoPlayer/FullscreenOver.png | Bin 861 -> 2017 bytes Icons/DefaultTheme/VideoPlayer/Mute.png | Bin 1174 -> 1786 bytes Icons/DefaultTheme/VideoPlayer/MuteDown.png | Bin 1247 -> 1884 bytes Icons/DefaultTheme/VideoPlayer/MuteOver.png | Bin 1262 -> 1940 bytes .../DefaultTheme/VideoPlayer/NoFullScreen.png | Bin 343 -> 2019 bytes .../VideoPlayer/NoFullScreenDown.png | Bin 843 -> 2243 bytes .../VideoPlayer/NoFullScreenOver.png | Bin 864 -> 2008 bytes Icons/DefaultTheme/VideoPlayer/Pause.png | Bin 1616 -> 2750 bytes Icons/DefaultTheme/VideoPlayer/PauseDown.png | Bin 1710 -> 2994 bytes Icons/DefaultTheme/VideoPlayer/PauseOver.png | Bin 1710 -> 2703 bytes Icons/DefaultTheme/VideoPlayer/Play.png | Bin 1693 -> 2055 bytes Icons/DefaultTheme/VideoPlayer/PlayDown.png | Bin 1687 -> 2125 bytes Icons/DefaultTheme/VideoPlayer/PlayOver.png | Bin 1587 -> 2124 bytes .../DefaultTheme/VideoPlayer/ProgressBar.png | Bin 934 -> 1607 bytes .../VideoPlayer/ProgressBarBackground.png | Bin 350 -> 2765 bytes Icons/DefaultTheme/VideoPlayer/Reverse.png | Bin 307 -> 1832 bytes .../DefaultTheme/VideoPlayer/ReverseDown.png | Bin 0 -> 1674 bytes .../VideoPlayer/ReverseMouseDown.png | Bin 307 -> 0 bytes .../VideoPlayer/ReverseMouseOver.png | Bin 307 -> 0 bytes .../DefaultTheme/VideoPlayer/ReverseOver.png | Bin 0 -> 1671 bytes Icons/DefaultTheme/VideoPlayer/Stop.png | Bin 1020 -> 1863 bytes Icons/DefaultTheme/VideoPlayer/StopDown.png | Bin 1216 -> 1857 bytes Icons/DefaultTheme/VideoPlayer/StopOver.png | Bin 1215 -> 1857 bytes Icons/DefaultTheme/VideoPlayer/VolumeBar.png | Bin 934 -> 1607 bytes .../VideoPlayer/VolumeBarBackground.png | Bin 1011 -> 2175 bytes Icons/Legacy/VideoPlayer/Background.png | Bin 1117 -> 0 bytes Icons/Legacy/VideoPlayer/FastForward.png | Bin 356 -> 0 bytes .../VideoPlayer/FastForwardMouseDown.png | Bin 356 -> 0 bytes .../VideoPlayer/FastForwardMouseOver.png | Bin 356 -> 0 bytes Icons/Legacy/VideoPlayer/Fullscreen.png | Bin 344 -> 0 bytes Icons/Legacy/VideoPlayer/FullscreenDown.png | Bin 839 -> 0 bytes Icons/Legacy/VideoPlayer/FullscreenOver.png | Bin 861 -> 0 bytes Icons/Legacy/VideoPlayer/Mute.png | Bin 1174 -> 0 bytes Icons/Legacy/VideoPlayer/MuteDown.png | Bin 1247 -> 0 bytes Icons/Legacy/VideoPlayer/MuteOver.png | Bin 1262 -> 0 bytes Icons/Legacy/VideoPlayer/NoFullScreen.png | Bin 343 -> 0 bytes Icons/Legacy/VideoPlayer/NoFullScreenDown.png | Bin 843 -> 0 bytes Icons/Legacy/VideoPlayer/NoFullScreenOver.png | Bin 864 -> 0 bytes Icons/Legacy/VideoPlayer/Pause.png | Bin 1616 -> 0 bytes Icons/Legacy/VideoPlayer/PauseDown.png | Bin 1710 -> 0 bytes Icons/Legacy/VideoPlayer/PauseOver.png | Bin 1710 -> 0 bytes Icons/Legacy/VideoPlayer/Play.png | Bin 1693 -> 0 bytes Icons/Legacy/VideoPlayer/PlayDown.png | Bin 1687 -> 0 bytes Icons/Legacy/VideoPlayer/PlayOver.png | Bin 1587 -> 0 bytes Icons/Legacy/VideoPlayer/ProgressBar.png | Bin 934 -> 0 bytes .../VideoPlayer/ProgressBarBackground.png | Bin 350 -> 2380 bytes Icons/Legacy/VideoPlayer/Reverse.png | Bin 307 -> 0 bytes Icons/Legacy/VideoPlayer/ReverseMouseDown.png | Bin 307 -> 0 bytes Icons/Legacy/VideoPlayer/ReverseMouseOver.png | Bin 307 -> 0 bytes Icons/Legacy/VideoPlayer/Stop.png | Bin 1020 -> 0 bytes Icons/Legacy/VideoPlayer/StopDown.png | Bin 1216 -> 0 bytes Icons/Legacy/VideoPlayer/StopOver.png | Bin 1215 -> 0 bytes Icons/Legacy/VideoPlayer/VolumeBar.png | Bin 934 -> 0 bytes .../VideoPlayer/VolumeBarBackground.png | Bin 1011 -> 2576 bytes src/ui/Controls/VideoPlayerContainer.cs | 75 ++++++++++++++---- 129 files changed, 58 insertions(+), 17 deletions(-) create mode 100644 Icons/Black/VideoPlayer/FastForwardDown.png delete mode 100644 Icons/Black/VideoPlayer/FastForwardMouseDown.png delete mode 100644 Icons/Black/VideoPlayer/FastForwardMouseOver.png create mode 100644 Icons/Black/VideoPlayer/FastForwardOver.png create mode 100644 Icons/Black/VideoPlayer/ReverseDown.png delete mode 100644 Icons/Black/VideoPlayer/ReverseMouseDown.png delete mode 100644 Icons/Black/VideoPlayer/ReverseMouseOver.png create mode 100644 Icons/Black/VideoPlayer/ReverseOver.png create mode 100644 Icons/DarkTheme/VideoPlayer/FastForwardDown.png delete mode 100644 Icons/DarkTheme/VideoPlayer/FastForwardMouseDown.png delete mode 100644 Icons/DarkTheme/VideoPlayer/FastForwardMouseOver.png create mode 100644 Icons/DarkTheme/VideoPlayer/FastForwardOver.png create mode 100644 Icons/DarkTheme/VideoPlayer/ReverseDown.png delete mode 100644 Icons/DarkTheme/VideoPlayer/ReverseMouseDown.png delete mode 100644 Icons/DarkTheme/VideoPlayer/ReverseMouseOver.png create mode 100644 Icons/DarkTheme/VideoPlayer/ReverseOver.png create mode 100644 Icons/DefaultTheme/VideoPlayer/FastForwardDown.png delete mode 100644 Icons/DefaultTheme/VideoPlayer/FastForwardMouseDown.png delete mode 100644 Icons/DefaultTheme/VideoPlayer/FastForwardMouseOver.png create mode 100644 Icons/DefaultTheme/VideoPlayer/FastForwardOver.png create mode 100644 Icons/DefaultTheme/VideoPlayer/ReverseDown.png delete mode 100644 Icons/DefaultTheme/VideoPlayer/ReverseMouseDown.png delete mode 100644 Icons/DefaultTheme/VideoPlayer/ReverseMouseOver.png create mode 100644 Icons/DefaultTheme/VideoPlayer/ReverseOver.png delete mode 100644 Icons/Legacy/VideoPlayer/Background.png delete mode 100644 Icons/Legacy/VideoPlayer/FastForward.png delete mode 100644 Icons/Legacy/VideoPlayer/FastForwardMouseDown.png delete mode 100644 Icons/Legacy/VideoPlayer/FastForwardMouseOver.png delete mode 100644 Icons/Legacy/VideoPlayer/Fullscreen.png delete mode 100644 Icons/Legacy/VideoPlayer/FullscreenDown.png delete mode 100644 Icons/Legacy/VideoPlayer/FullscreenOver.png delete mode 100644 Icons/Legacy/VideoPlayer/Mute.png delete mode 100644 Icons/Legacy/VideoPlayer/MuteDown.png delete mode 100644 Icons/Legacy/VideoPlayer/MuteOver.png delete mode 100644 Icons/Legacy/VideoPlayer/NoFullScreen.png delete mode 100644 Icons/Legacy/VideoPlayer/NoFullScreenDown.png delete mode 100644 Icons/Legacy/VideoPlayer/NoFullScreenOver.png delete mode 100644 Icons/Legacy/VideoPlayer/Pause.png delete mode 100644 Icons/Legacy/VideoPlayer/PauseDown.png delete mode 100644 Icons/Legacy/VideoPlayer/PauseOver.png delete mode 100644 Icons/Legacy/VideoPlayer/Play.png delete mode 100644 Icons/Legacy/VideoPlayer/PlayDown.png delete mode 100644 Icons/Legacy/VideoPlayer/PlayOver.png delete mode 100644 Icons/Legacy/VideoPlayer/ProgressBar.png delete mode 100644 Icons/Legacy/VideoPlayer/Reverse.png delete mode 100644 Icons/Legacy/VideoPlayer/ReverseMouseDown.png delete mode 100644 Icons/Legacy/VideoPlayer/ReverseMouseOver.png delete mode 100644 Icons/Legacy/VideoPlayer/Stop.png delete mode 100644 Icons/Legacy/VideoPlayer/StopDown.png delete mode 100644 Icons/Legacy/VideoPlayer/StopOver.png delete mode 100644 Icons/Legacy/VideoPlayer/VolumeBar.png diff --git a/Icons/Black/VideoPlayer/Background.png b/Icons/Black/VideoPlayer/Background.png index c2642eb8788ee1d6c8c555ecfb266cf9babc8669..b9f38725f9eb9b04ba14744fc3a7df856267af5c 100644 GIT binary patch literal 1875 zcmds1O>Epm6m}XF(N^IQep-4O+zTM=8GF6E@u+SSvME^!hmfw+aO>=NcGqO>G4>?u zq=zCnAytS2C+Lkc+&C49azR{?IP}Ve6F(QuRp0E7m6oKfdc=~S$1~si-tWB6HaFf` zIDP)KVHgYT_12bQoGf8&J%0k^*Nb0%3ZGNi`Uiz!oOw~dbH-P<&jIRA+}T#!;k%T} z#AcD~3cE})KpV!z%Voy+j!>v8`f(bV|J?b}L~#_D*Xkh&vsE#O*AH@W^pn6)UZ@xG-aAiGt^Grec{Q&B(fPR|O`xI*B34D%!M|<_R)}OO|2BCOW1u zFya+1+s%h#;}OSVC=!vX0&qPeICxRnRdooWL1RN)< zFL0LjO;n|kuF9dz!7zAN8+#Fkw4D};rChXIfeA6&aU9VmafR;+&uZ3to<$tbw|vs= zT8uExnp}9%k~h8epf)xa;@L=>sG_(k`7f`JI>5aH5KANtEF&cLPWn6c6U~*kn5t-BN_=pTVT?7-_(Ley{ zW6C{&6|$#BEEg+%$kr3v2_NTt!S){S`qLHfIM*L(zh`lMnpQqwX!C6! z3VyU+ mU-edW>p75!|G!oKIPvno^KX85=I(Dg=Jwh~>$|tFfARp literal 1117 zcmeAS@N?(olHy`uVBq!ia0y~yV66bMbvc-Ur1HAY&wvz5x}&cn1H;CC?mvmFK)yn< zN02WALzNl>LqiJ#!!Mvv!wUw6QUeBtR|yOZRx=nF#0%!^3bbKhU}gyL3327;=MxkZ z6aoQZAt5m#A#p(=89^ag5h-m^X&p5!Lv;fm4MSfW=O9~`U|ZJ^JGW3%hcq+CbO-lv zN6$znuV`oQSXbXTH@^gT|0IvV6tCbk?~rug&`iJZZ2ySdz^MG7=z`#w;;{JgsN|a1 zw1)W1=D5t(gsj%Y?6%UHS!K1eyC*FNx^onah5-FT;6;g#Ezs6Go-U3d6>)E`9S?O5 zWN>zDJbBV(@Smd z2scoK%OUg`P(-3()z`4Mi5d{T|L|EOn2Me zyE7ZfCAmZpF(CMZIeJitkb{53kOuDJ-C(s-&K0+ z?MF+cjeGq1Tsl{K2Gg)zCT`eZIYT@&&@5zNJ|hi9w%a%1pT z5$Dr1!m`}ybjlsA9L7yqaU4fRs;sIKNJz(~zB z#pcxahV11lHw4AH{t!{VQiw))JZ2;f<9Zmj`o%NTM^RAqG7@$i_5(NUBs+Nw`36=c zDXWN3NScH!2^n=o#fph_Q$iX>C=;!PuJ0}1Bx=@?jWq`=$_=7W#x6<8n!+x{UKqCt zs#Zh@q3ruEX2j4em6?)lHX4%U z=uB$3jwdykZMX_`HOtWZ`>P>c7=jiKBlh$gj+$$F}LVwy;!vkm(TbDGCd({9v%%rNJfC-|wqQJ9_K@GS> zcz;zyC7+z*Ro7a~CM^{jAIS=T=Ick+SYKH_6!-wKDhj+_GE@%&cLA)XVQ5A^KjU{< zYp&`8I!We;wR+{q>J^PM!wO{m@W&uA2~=Q`GtXYq%ttMM_h7U=q#?#MPx4I9kvv1E z5+OREZs9eI3VLGnlSQ?d(t~-*0 z;ArtQga~mQ)nw2^!=N&-u3%`uoPPcdRJm?CPl6_cGg-ckU??RGgF+881u2rrI3akP zXovzK+Qd^0=*eNhSXe_?)BmGjigfoKT3rjh3RolQye^6&84lX|EAGzNTeIRUm+B2_ ztC9}nDk(^}Bw~9+qAnpSB@~(F|0YRm2D82cZD7Uy{YbuZ?bD;-j6>y{={0+=W<<1) zQ%&!Bga@(1dK(JvOBhb);=KN6Cu?RuyxkL;lVC6KRhQuY6x^)&u(;F1OYv2}0-&83 z?);yB`Q+>Hy>NW0I#%Ct`s`_C!zE$k1pVbl>C@@yA4Wf3e)#b7$$M8$oZSEOvzM=b z_|P98J#zizt8Xax9lx@)?cHDRX*~7Cw=Z5CzdE;Y;rC`Zc6IZJ_SJ=Z&u!g%^rzRh zT;7JA=E%->p1%Cbsjr_qlWhJhIQzjT=Y)|re>-q!F&I5{=9}-&|9S0+m*v?KZGP9{ PUoKM<)7AI)9zF3Fr#V60 delta 340 zcmV-a0jvI&8sq|y8Gi!+004NWbtnJ;0IN_;R7FizYln`XlA5bYQD<9Zeot6!T4Q`s zT5ncgcT-$*Qd@9JQfORce@s+rg^ZkBV|Q3#dP-7fUulC&RB26CYF=o9O;u@OYldEF zg-%v%R$q8sW`IjnXLEXxmz}Mgp|D+Me_v>Uc72ddRc%;ed4GV2n^|IeU}%DMe2;>O znM+e^aCeMRT5fN4j7?Q*SYLEcSZ`2Saamw=P+4wJSa5)cnp9nNQCe|7%Q6n5d#CiD;x6v1V+6)2Th@67&sw>4FW(&BtR7x)MGgpP}@ixxD=_Cio^v065%meeDE=NZax2G75)xIv&%`LF#eSI9VmQw<=H}E z?4Dm+N|&myxs_&vHuvDtErXQB&Up~JjOTJf@&zn_Ljiy=4 zpWTSr*^T)c-B_WHC!c&-I?;7OL7SyS>b8S0al2)?r`LtCm{w(}Cz7s|!L9Q$z|y2uZe6#5Sgy-FQjTkfy1qq+(0KB^PO~p-cUb4CZ35;VxEA^^L(>S#G6i z|?(nA#I&AE7#5zRv() zTdn3ccJ-y*&P^og%o>Ez2V__2q_!S0b&(}}HKuH44ct6Bh$cxF*$$rj*bd_P=G1SD z*eh1<3yO995u#!x7meKMn30snHO_+pc@_pJN}5qb(&TwR^mr#ZCSvGsU=@`}MD<2HdD_-)c; zY7{nQDbK7s%>y2TVen4xc~Pypb77K_kg~Z-S%wgbzVCsv)T0ieilLc~;vvIS9Ol`I zLx`yxjG5H32Ky_Vt_re={aN98oPv%Ws|Yb0mzbvLj2TM9G#tgTEnP7TY}?4G8x7(O zw4I54sC^O)YZYF3pb_e`WY-&5LAYcndc$B!y^c!?v#4fbYEgngkI1$QYQQBT>Z>f{ z{^XKiU9g%>+8Pu-Qn7gU*O&KL-&sBv`T(&eOM)*Ms%N2h0j!p3>Slj_!SAwQsp11V zN#=+>ys|vJqKnSZD>ir5Pk?jl{a$mHz0n^9zSOHPm(VN(D%i;&GaF37bx#cQizd9}S5+25 zrN(d({cJq>2`;hzTxF^@dHLF1Jhml0@zxLDn6&ub@$SucHjj*7zuuXgy?f;9o#57w z(|7J&`1sxA+UcKf&IPX?yYc(v7jNDUwyT%Ex=eoE{`vyBc=3aCPrqp0zLGpM@&4BK sfr+cXo%!~U8~6q5%R}FN-%K9=^muhM`snS0;_5s%Ghg}SmDe}_1iT)>&Hw-a literal 0 HcmV?d00001 diff --git a/Icons/Black/VideoPlayer/FastForwardMouseDown.png b/Icons/Black/VideoPlayer/FastForwardMouseDown.png deleted file mode 100644 index 79fd466ac1d5565528a595cc1ef7b3a955dcab7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^f*>{rGmxxUUaA44RtNZmxcY`=$EK8K6f}AUrbnmL z`A6hNCD#N-<%h+W2gei#MHhGlWyGY^`-EggClwi4`bH#Hc?G4%XEu9>Wcr3>#bq@4 zhGr&ax5Z_)`i13$#aG0pHF$@ldj_QC7B?4_x5cK_$7eM91gH6i=0+q{hQ$>|CRHb7 zG2SgU?n|TF9<^@C)gvAzw#Fhp|6^6&< zO*?Sz8_?M$o-U3d6>+i0OvR2EFdVsH*it!h=FErx)NdEw`6*uIbiQ>RcW>0~V+V3P zs`mKKtUT5JEz@AGjQ6vcyqYymySz28>p%O;`LQ=cvn4`i#$8>foRpvY0zCg|PZ57C ya^Y#z%DQg}^B8TIJ%!C`R;LEP-eFMmm+@Y!fHB{_bt{1OGkCiCxvXd6Ai!;r=JvaoqVAdP2{I zt_zJ?+s43bNP4_YnR&{G_GvJk982b0ZhWjlx=Sh7FXsIT@r`IHgjgJy-7P|FWcj{O zN&YL87vmJr8kFY{v%_EJBhoPiOcRtHjsnWRnB-3ZJO68F!7VAzx^o@>txhQXc!F+V3VHU8x*B)=wzAAacbQi(yn(fBf)cRS9`rJyUDqW-=w( z;q+=M=2uU**y;u5a`o7=%F(_D3c4bvO26BQGOu4(2YNji%V|wj1|s=|x_Vq1R2G`E z%2b>R#jRq*Fvg1QR*6lRZU;vc9qYP=9gSFsI3CtL(@=&V70jhP@a7sPhsNNouD0_$ z@ieX1>s5P3HBJ{b;<~Pebxqe1NT6&b%4r`(*`bk!hR9eNCV3b~iquH`cqy-|;A#;= zH!0Od*$^i{OzYD`BULP88VGV$$|Xx_XJDK&O>{(8M0p0Xq?AqCaUN&wc#P_Dd4mDK zw%IIgZ0bw5Tbju76Uz|B5Rgr!v(`!?v^kN*ODPj4mch+KqiC{xPORa%jqM;_ZqCDC z%wD;&At=!g$B4?6QZ(_VQbF@LZN+hCM4s6Zii&Plv2yrK81cB5JtbopZV(Nci@FL# zG7z>AuC<8n5z8|zgbfelLbMt4Fj%=m)M{bJBerKa8$^M|oaS^(Va~iDPP-Ix5O(RJ z(2{6TRm#kIQ*kFw!7zAd47_MIy_qP>X~e`#qpm^-)iC6q%^YDkmW?>q3G#`Fkz?sT zvT@+J+$O%T+|m9<%$6kCs4 zfHyCuA=EzYtk){N;-C@g)3N=4AWR$+8G$K~?-K_Ji|IAOEJg`e6`5_R23(@DzUnF& zPA*8+b(V@rTZh8O8j-)l^|M>7uPwh6g#fXxDv~b+s`Jph09LD3Git;6*|0A<3yl!a z$qGm8^($xBuNbm342sR04m04~%COhWi&uuDPN)p(%cHCafk}1>2)URJH%a97AS?Fw z+5*7(8`c(LSsdg&nu_C#fbf=8p^bB%i!@wbb3UOdg>Eg4a>MSZz7t!`4`GO&x15qwB0~1{J3Q*DRMK*ESf!rs+z)1}HEvrqp$HOVAP2 zcSBY4Oag^Fs@i`8)i8~$O`}Btr=E5X!7xVs8iOhk1QTQllOreap@1oY5FHxmHDLX? zyhH!No?-q+!IbG9IkcV&0|so7bjgd7B;!HbKI86>y)7AMb7uO?(UA%53lVJEh&lm9 zj8m#J%CKeqZ<4fiFxxsZHf7x1hu-}wA5Gq_iXN)n*2bpPgNW{rFzbK-mNbfv>w}j;7%5Du?B*8D7eJw}_zaq;RW#RDAs#+{n+* zG>*3pUuL&|`ew(DOBW~RzyI@(-}@hY_3L-HZhf@!^Fx!9SL+iK6UkEh+z+d}&fmQL z@VnQqT-o`|U9Zw-4-x5Bc^N(DV7zUxKE` gb~-mNez96n553@=>V5W}{39@P;&kKsb1%R87uDMUnE(I) literal 0 HcmV?d00001 diff --git a/Icons/Black/VideoPlayer/Fullscreen.png b/Icons/Black/VideoPlayer/Fullscreen.png index f81ae6cb8056064f781b74587ff032a08bedebf4..d7c196c919ee395aa7f45941e4edb612d7005b0d 100644 GIT binary patch literal 2970 zcmcImTWl0n7+w$s5h8dAgv4YR5=H6kTzBUZ7OcC)matgL7Ft6LXU{p)PP#iY&P;c= zh%u7bpoS1*R4_dFU`^zK5EGFEBSt`thWKCzG4g=%f(En@G=e_pKYN+B*rgR^li8Vb z{_p&k@BIIN&hwq?ADusU$=p~hHov1i(*^H)!e`D*_@8N+ zukTwNi_Ilgt|#cpt~0Pxj3eUYX}nT&0Ue92TwQSy9-sk}r+t>4Vn>f0Wf_a4*v*No zkag3v-)i6H(T&^I=kT@xtP^(iDrRNH00l)FAf{3**uGIou~oeWe23FK%Tyu3K#FY* z4Kh91PA2Vml+oh?hXp}kR6Q=LB9>IMg^>hF;suQtlbom-f@CN%Q~$AG&LgJLm043a z2BQ?)9|W$!^W}0mUY6sI*T;*xuJeM#OA-eN&L6S^RN-uYSwlmH`q;DFz;bLR)QIxV zV31j$RpSKnv_Om04t&6h5!UT@0>|%n zny8M%6AS>i*=%HEQeTS2$b=uXl^~2dA(Nv0+>lH8F6ujj9;R(2aC2EB8b9cwV|-3y zIl!aEfn_#X8%ibwMJrYlXef!Gu95aA3LG!zIE6;?bT(LIBqc5|%Qss#amxOKVGQ*J zG=l<~Vj+=aPEa`^krO3DOd3j(6J$dWYS64hEOY3eP}PtWL)IohA&m(N(3D_;4b$<8 z2=>4#qCU#Ib|1?`J8Pt!g5!Z<@J_CJkUlnNTPaD$;+4|8|yO;9t@K$Twg0Z;$YA*W>v*RRb*4)ut_y8X)2i0R5`&R zgcUGC%si1A+8*;PsC`rzuQl|FfJQZsMVY7~r<-{ZXjMcmj}wH`RYf34Bhqmeg%)};7O>-29g)CNbwyRuJ5dt0var~UcFTvH8>;u3jr7U-SHWVc^<^Mj3jv4O zNeNq@wkFxg=}}fwTkfYo)^)PB2J;;=C?k)y_5s6FRt4Y8c^{Ro@4BAUOr#2k6J+G8HRa+aRQTk{yM>2(-LlSFxat6)Ek#rF7gnZq}20Mtm!#L2Dxs*!qw{H zOE#&WPf@`$fy0copQfY{>RID*V7!&c1?GRWH)Y06uj@6-xSO^~e0V{qwE_Ox4pAFt zYD}&P_ojM=8k6;c>E<9Dss^<1sHy+E_FJ>>{MR-fW=%ElaW|#L6kNZ;&*vZgxa898tF7DL7Ue6yo>_JOjI*Ec@`{lQfBxbv9zIkY zSRn8I_Qxdq!@l&K*<053o_=@Dkvi|Mj8OU%n`ATD0)gtfTv{t~h*Y zgXqs$`tg;!I=kh|rQ~ZTuX=m-cK>$Y!`*wo`uVA2e|)g$rN3VNZu`#VBgz-@mfp)x zzqfEhX6L8hzteK=xeccdoZp{0{(yFF-tN&EF|#y$vSlRKap&*~^}?cO^VCj%^U$I2 P_T167K6Buatvmh(1uoDK delta 328 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 FV1hMsNWcI9 diff --git a/Icons/Black/VideoPlayer/FullscreenOver.png b/Icons/Black/VideoPlayer/FullscreenOver.png index f719655a7f6909b71d937055153eddc0b06d9b1a..cddb2db4fd35171ca0c44fe0bb1d86f6d332cf78 100644 GIT binary patch literal 2970 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 WIK19yTaaa5m3;-p-o1H?mj4MQdhYiC literal 1174 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S3?yCqj{O5tEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e6&pP!GLTa1TC zke^?emsfPeDab zP2Esk!$?ibP)plPTgO!2z{=3b#>CXl%*xHg+Q-bs*WAv}!qU;w%GuK1-^xDF(!t-t zA;7{R(Ap`;#uL-DYGmsqaZ!2sGzvIxU?>(u%W25v8b%MsJyMIwXdP2zqzfyv299s z-;A#QnO*&}dM3=AHgnO`nM-EOSvq^(@|p8i%v-o>!QwRwmaJL0bkp)xn^vyfzH#f` zOTxA{iJMMLk^{ zLo|YuHymQ&c{ZcrAP@;kNtTqBZjG&0f4VZV-2G;FNk!JHS4J7xD_4v8%(|kN{o?MejO&-u7Op+JVBwUB zri>g@l8fg4=BiaYvO2>c<8ljSZ81=Y~hjb%|6HW@Z*IcFD07DEO`F9lBKN3cFFUVL{<01GOvHr*HbK`7EV7 zUHo$a)6pFkH(j(}KbrCL^dHyD-b-%oa7c=g$;sp0Hs=fz<5NwgoH+u93%nf7`1s;j yJ;Nplxb$>S7C!NeVUmo3oC}X=LRVoSBg4_R{!bcXJ^%|81_n=8KbLh*2~7ZxDrUR@ diff --git a/Icons/Black/VideoPlayer/MuteDown.png b/Icons/Black/VideoPlayer/MuteDown.png index 83218bcb4391faf99d79f50a51a4b799340e34d3..c27bc97ea9ca676d7f5a37f1324a75e7c80b965e 100644 GIT binary patch literal 3046 zcmcgu4Qvxt96tzAWS|m|3_&~(LV)agU+t~EtiV_YEl}9TfYqqsdiQR<(B7SQx3y~s z;xLGeVZZ?LC4!KU5tJ_j%EuBF792Rk5)laySrEnq6dZ^^;=8u%25vAvVw2vzd;j12 zfBfG6|9|hDf@zcb^?AMzf*}2TUQZEx53v5dd&1{^deb`idP?&K3M2y!6%0^l-C4i!k#%X1GIAL5A2oMGlpqK{4QfaIfQccwe zsa>c}iytrmx%Ka55Vw9mN#QQ7mU?agyOkG70soqAXQB1Z9g!C&w@x{U8*kvB;bJ zW5J@pNva;<;U35lz7!CeQi`GJo#pb>u&P7D&^spKh2PKl6vN~d0r)&_42EEnWs#Fa z))^Flh)Y1Sqk1CW|$!4uj7M`dIP)EB}yTe5SiDYqS zHp}2n5o&XafWo0JCri_I2gL;2v`yD#So?gqqgKl+5o%-wN{~c}#u=WMa7M5Tc#!3J zT;v6k53;1_kn9+0?KTJ1K$m!{zT6m>g!Fwb2lOWIZBllQ2V-%qXve+)~K!W2=Jb%6Wq? zf3)i^K+zJzx^R~RCJfEnDLhC424`K_q6Cvja5x~Hox1+lD*7j`r*sP;UMU6e6e6%L zgAr7v9OxbPLgRHF9zH-f+?b@R5tP@ouq-4Jk|AMpANZ+=A0+U;Zcd6g^kBlNnk5->2x7b;|^5lt@ z(S?~${!-_)`!IjCz3SM`;7hZX6x~|5`#1Id+M^S^Yf7dsr-#Vw*Hc7l>5;EO1?Sjn z7w*{_wd+^MZf{I=}Swp1~K%^ znR7q=A!LtF@vZpd{^7>vc{#&c=a7r*nl9g+)N{f4>kT5ERX?aIzv{@1!I{Y7&9U0^gBJyCtJOPW z8jr7;`os>V@4|`wdiAWSnZJDF{^Bt`7JT{R_#3TfYQ4i1cHOqCXRa=qaI);adUElQ z>P1=gm#0;t?7Dur&#IrDRSwj)XwHLVJi0Bitm)_SyTM)Kt1=OBPhe=>bNPh>0k>h+ zn3Y${t9I63yb;SGmMY6U7&51#wfai@(5&q<{f*xaxl(>$$>uGM@&}hTHk58E_;6I8 z4SQGBgOB!}4(}=n*Pego?YyCN>b^70=H#tKBYfXTdya`0Zr?3Dcz!@Izz%&nqjKlV zJC?r5XWojBc;omga5`kKk=Hg{Vz#<7`yM`ir(p#Mtl093?RLgb!}{0kJh9;g>n85Y MpXT{^!ko%K0rq|?fdBvi literal 1247 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S3?yCqj{O5tEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e62SXh)tNS9AU zk6+T9SK3xgN>4^!O+eaIT-sPb%0f`aN?hJvLe7$3!A43+RYb{JQo&qS$y`doT2{$Y zO-Elz-C9l0hELv!Q^Ad2!I@vtgzNnF7}RLNafEkMjLp4}vk-6DtGGMC#ToyR(h!=^yPz)RoE zThG)--_%dhEL`6-K;JZ2&n#TeJVxItQQtaA-#S^}CfUF$(ZDu^)1idZp^Vp|kjtZ9 z)Um?CDZz0}Do%GEd4*+0$GH^C>e&?mYeJSHbRHa{q#BrLToBB?k! zr8+93DkiHkCaWr`pq|I4kvFhiz@tq#vQIdwUm#$DVB{?E#K~fb^Tm=DNark*&RMQh zwpOEdQ)+ofdSz=~Sx0tFXI@2DL3w*=WpiasTYf`JVPj80Q(t+hwMm9&iGj!-8@)Y_CVQOCHV0U23bkLI>~WBl={P(4A#RRy46HX9I1bntT~SoM zqNRUdUGKWC;SDW=2W)~5jV&LW+21WKzFS`QA}#w=YiUF8^p=iktzFX_`)73Y&ugAI zt7YQ+_Gxolrp@n|Hm`T$?B0pjHSJ^7EGSCbjI9OGv}|Jv|!oP1ux|z$?&s(-`?wSqj+L~5(wXNuBU(wsKeEqg%8@4RpxOLsm{Tp{3-L~)4mIFt& z9z449$no7rPM)1O<6`&Zi__;GK5^mXxvOU`T)lAh?xpMZF5kF+<>rIycOKt)_~P!P zmv2uU`*7s&mt)5tzj*)h&4&+P|9t!Y`}g0!fB%80bf7@-k`5&X2F5r~ z7sn8d;N%aCV{t_0=y+ZiR$!rja#NZe=fJL z=BHE6&0Wot)qJdWY}4vdv`BxxuG>Mtw7fq3{guwS?9{yiL#Z_c
^aH6F8Fn?7w4nx^HJcTDQls;*C)cA4>*Rh|09rlwce zxzh9FyLD~9PF0!lH0_h)JgJ!}8F@2u=1a|!oO1h`cz6zN^DFzt*LUvRxjw#cWq#WZ Z@i5H1xTsK@FU=Md%bu=&F6*2UngA2p)U5yj diff --git a/Icons/Black/VideoPlayer/MuteOver.png b/Icons/Black/VideoPlayer/MuteOver.png index 7643ee97704132b9a041c1af40ec6c987cfbf1f5..9374fa2d76a6e736e6b05b3ad0d40c63612a8efa 100644 GIT binary patch literal 2869 zcmcImdu$VR94`>J1EP;ezh=GJeLy!=ON^qe5u8&)RmCaX^ws*hp z=l6YlzK`GU)o{zBb7n1^<#0IW1e*g9^gq}7&YX^ZuQKnwh5l~SnpYVPM->uO&7J1h z*}DL(ZI`1lGZtFO3u@8{L^Teb*`$Wh4o6*mRs+HsXku~LAuE3T!v0|#lSMz??g>#L ztr2$0&0RWd?P`e%U26oNh}S=i)n$34APG%?Ws?cT;In=_ua`&9)-s7>d5F2jk1w+f zVzE#dYgBcJ`J5CXP!xrEeNNg-3yfE)#TbfVNQxtAmY_MFVtBU;D}HcfP8TIU5?Ed| zhTi;mr)g?DNoFz`XU64J^$wEu`FteBkPJg01YzV96J!a+s3~a(Kts@F&6HIIvowOZ znlk-3aBhXM&x&WKf$YM>&F~f|&acZWp9l`C*TBmBNMyFbV z1Y3L!6{ajzFlb4xfx@g@0cuHXsKz(y5SXeSRnFl1jo{l@X&5Z05>8)iVNPj+eN!2 zmMv*}T$fRggG9Mj%PSFSL}-x`JuD$GB1ecE(i7)=K0<;N&Bh@|ySxy`#_cw$2~`iN zBI4YIV^+3#q#n5ntp4)jba63em1-hYSoAWe@hOtFev9%|lgP)#ZHkO2W^l}^7d~&l z70oW>0PFF%JjL~}oP~*4Kt`+?1xI}4l2zAAtWjolDBmm_sOECTSgFY7zsQmXL*fL6T`jERJ-$hA~sc#yhs69TDns8ExfOY!|Tq(B7m; zn%V%VRA2vFl1S@JEp!ffeNz?Q0|h3RTe-=fRs2NlGu0YIhZm2gp*tfqdV|!Qsc6$~a#!iUe46JxyzBqY) zsDJFI!wZfK)Xtp#ao^9MocndC|J?cXSg^X`s5|v!d*87Oo6cmbkEgEQ`P}#6MTZ8H kGfpJft+#ye?w=bMAFX*gy6?D`wl228rj|f|!|Dxx0cFt4*Z=?k literal 1262 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S3?yCqj{O5tEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e62P)LM>OOun= zoLAnRUn-JM$(LUzPFT}lTH8xj+gn!GM_M;jRzFsDOw6`G#HLEju2R;vLfs@#(JWHKELh(%MAtgb)ILH%D@{Q=L(48j$39iu zu~gipR@S3f-m663x60HpR?Rs}%Q;uet3b!E+|)hS);GsGu+G&t&OI>KHzdbDBF{6j z*gLw^FQOnkp;TPIQCz=C*riw4wNK8aOTx2L(x+3>w_nkrQ^B!E#ko_>r9;J~U)!r+ zFRs}#s>wWTwtDyy&6Hl9^gf;J`MNnX3<~BNm(AA7S+1MESR-?#M&>H5yp`rPON@&) zyQcT}r?y6Ace$l6_s&`2kg+o$e^qGFn&`@n@wFS%@|rSBI&;c9GAp_>D<&0IbQe~4 z7S>ECu9;}ly3DR?wbR74<&9HHS|*jW&aY{kT-QFmrh7(h|LnZZ?P2{Vs;3;Nop!Lf zdtOWT?AG4-jT7cHOrGB`Wq#-6`HfQ-bWU8@J7r17jKzKPR?M8gZqlOFlb5cWx_sUA zg_~wB+%SLHmf0&e&RV^B&YCTA*KJ*}V%vhXTNka~vvAYSMVogm->`4lmR-xY?q0Ed z@7gVUSMAuhcE|oTTMw?^b#VRO!yC6B+OYq~mVHOI?mxP1&xsxTPj#KS-+TUU?}dAl zF5aDT>Grg%_vT!^JMYH*=0guVPCr<5^WMe-NB12$xA)kELnqH4IeG5j@r#E~T|RQ^ z^6|4*PoBGe;^Ng47q6YZaQ)<^Yo{(>KYi);*-N)BUAukp+P%v+?w`2#<-*kmS8hJI ze&_M+`;YG2dwA#m<2w&u+h1G4U*5d^@c#YBcke&F|ML68$4?(W zfBE|D`-iW8zI^-j{m0KAKYsrD^Z(z!|G?BsYmh8b$i~3HnCt1{7@`rJY+$6bdW}QF zDI;fPw!@3B>nS&9yYos;@_T!GfBkv~)et&l6h5Ngoemm*;H&{&7;E4bGjQst@?*qJF_eQ!dU;llZUw?YX z+cny@CGYP|ZJN}^{oLq${HnJ-sU0it@A<1Iu*CQF)T-?Kk9T+W8uG-Yh37Xp)LlC} z>!i7^o}BUbq=M;o#bPY8M9ytXonv~lB;wlKgHu0$5ER&8Vmm3O)+O&blU_KR_`Frm z9y=VEcxiEI!J>~JbL_;~)CI$yy?cDTe8Xu8omi#)Dbm|l2scljqOkwdLFL#zw{~9& zU6y-2eR5G!!M4d0MEdLmm#$kFU6HVce`|R zX{Ad>M1ey^UYy^8{qX@FE;~h;gYWG6dOB=P%-*uYvqH6}>qqa`>+5W6oapN5;2_Av e!ZIa7LXsgMas3M2#)WS{k?ZN|=d#Wzp$P!4PB^Ln diff --git a/Icons/Black/VideoPlayer/NoFullScreen.png b/Icons/Black/VideoPlayer/NoFullScreen.png index 04d57c038e91c528868d6fb7f2b3eddec5f000f3..178184378da8a591a2cdbfa5f1bbd4410b100c06 100644 GIT binary patch literal 3173 zcmd5yoz0ltnd!`I zc2lrEOQRsRRS=5`;=f3XS}CGG#43nL0>&*fHHa#aRed6sCrUR1tO~UU5toCkw+RYq&Pt{kZ8yfQ~$AGF0gE)-&|cc2487* zD2jZ8=gZ}CvMeRNAkPcBuJcIbMUevuE*y0uT;besX+wiaLlQWCn{}I!=HXU%@^vBvBkwRnQ_$IlmMXs>UtC(*iA0Hwr;kXv+FSUgU*C-Ylw{ z)6)z9wwX-R#*Drci%k<@)HMQO)B%}MI?Rsxl<%jZR|*L28UZ(#HlhimemaTgJeGra zb8+O@v#gD0rUgYS&MczwOjFc1Is=L$FUWdcp+TO$28xU*ClPbUM#r_ha=1K>p}v5c zIHGA5h$L}H<&csUL_Ydn$TBfsYN)P*+6Azt6h(qy zs^fi5g%$=(2ha(tj)-7sa%OP)OkB$1WHY**5I8qluQluFmik-4VXFCMU{VW##O$ON zTOW32*vR=oR#RIZq5#$fSX&bdJv%DnfOg~o;W@K{pUwFYk6hSwJ*C-LMVJ#L4Z%js z3a1lU<#bWefjOEciU9O%t}9Ts4MA>X(Z#r4*G-17o2PIJ@$AJ1gK{ZR!nVK(mWVhk zKniGzf;q|76oOMKr3xhEjKNe(f~Za@3IB00#B)bzFojq?4ltagGzinI9e70s`+mV8 z)$HO&T&sRQH4~nRJZ7@|%nF)C17`{crdnybz+6Imb23hmL{S%In^SXG;cO~PTux6R zPLXw;LItxG8UJ54Y0hBgSHfp!+_XdJ(lL&YyPaB1EL zLP3XMzq5j!fQnT;<+cPOnfokAW+P=mR^pf#wvx|j~W*oGgB+Ovmtzt#5Sz1MVgzOdlLL#4|GZa=rVWy5Q$Ha_t7743a*Zl}UycW!!a=fPba zt^Etl-fiK5U%vk8`_HzIpPcw%+ny6Ux}F+4(9T}BtDOJ&ucEnTdD}zdO9};FpV5ZMMyKMwWcC_}kVu9`5~gZ}GT`hhL;y_J4Ty<2M~W z)AGmaW9Ap7SB_l2IPq@J`f%drfx|K#+=miq|B(%6A35VsjP6=^ zt6Pg*q3=aPPd(l~~%1pP5 zYXBAjxCLMxfMo#ol-Z+aGbVP_m(nYHCR*zZGNI>74otKMr_iZ;-}IpiCNk?(D$hll zzlExp*ivm)&OpZ)Q!}xlPTU=(l<1h4#mR-VPGTl;o@bJiXq<#MjZ80UPF@p%yod;Y Z@B{AD8Aj@g0G9v&002ovPDHLkV1m^Gc@qEt diff --git a/Icons/Black/VideoPlayer/NoFullScreenDown.png b/Icons/Black/VideoPlayer/NoFullScreenDown.png index b02aad83054c1dbc71197e2711aed6afde62c543..e82041194011d59fcd81806013fc310a1c86c4b1 100644 GIT binary patch literal 2958 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 JPDHLkV1k)5Okn^3 diff --git a/Icons/Black/VideoPlayer/NoFullScreenOver.png b/Icons/Black/VideoPlayer/NoFullScreenOver.png index eb5e78fd361bf32cb12006f60bd60c7e149b4db5..4d13d6b12a9d5cdef7c6bad907afc7b96aecff2c 100644 GIT binary patch literal 3164 zcmd5;ZHN?Q9AB@XeESedn4iY+OIow@zVpJZFWq|GX=}&1;wfT1^E}V&PVUZ(Gjq3l zLQtV(NiURsC`2PrNTMJu%Thrr%C4eNDuhIe`Ve9tiXssD&+P8po!xntNwlyt&piMC z^M8AO|CcBG*4#ID)`D4?OlEFxPoW>)^Wy)l9q{b<`KgWYn(6m!2s4@4x5xh(nV0s? zhlS{r2BLxD{U-KmSwuXGW*aphxHFl~Wep$UEi_^*T6Ww#d-=VSEaQ+oyIw5{MZb$y zoStm~UAt{f32)ni4Z<#4%5*kN5KyBLVj8uo8=8$go5(d`9dGk2ldwcv^6ZLOAu~|y zW4gS6GDcS5upkJGW@JT8#FA#;!$^W8@q*5aIZo6~K{6GYY5iDG7ZBU*FLbw*!B?KG zM3Haue7#=J*5#}hlzGuG3|^3UN#cNm3y0kZH8?k1)Rs`7Ar2fray*xbB_hikjPfj) z+Vr93r()f(6(@)o-#|VuW`)?NgpuHs&mRn`iE@H@TBSAWMj`NuDX(AgA}_3XlZZ~q z;}k$_i^WvOgtpXbsfsXKIRtLB0x}_YSQ_>z-%mqtFu-)>5SY2B?M)c<)6sZN<2bOV zha<i{jF zh~`-UlFSJjC#WS+GR2&!DNT4Y>kx({_r^KZ!PByd02?2A%ty;5|Zf&iq4wK}UiEz^e9HWyG zwzcg{aFNpsSyODiLLpe!Ky8yP^z5jP0=l9M5uP$D_{oe9(a^O`*HxWpNXHyTvc@4> zK^!tfg~Jk*Y)PV)h-lmOzniX_ieid@l4inPkLj(j;tF!h6uJ=4UcWO`k}Sot5vNe- zD_8?(bP;PDG%-w3PP7aRD4p;gl9C|hOj-JmoWY(uM1wKF@=<`GlhPo}vv%Os807m^ z2PfIZ54oh(pVEY9B99p@Ka&QH(7+jkfw5Xr6PO#QZ%V}3f}T?ptaGxAbWYM0jWcwE zaEflzoI;VR8c;R=AD1+xGt(>KlRGo63EjB#;p1tiS=0Ed%U$!k(1b;I476k*FefT( z(@iLt5KQPtX@~k}y`-t%`?ozQPJzVnF=JnQ3uei9nNG3rkp8y9ebXearW4;n|AK{{g<0Jf4Jw}J*(fiICE2D_QK9bmmFQN zaL4lP{>2yH-~K~s|MFX|Y#y1j`P^^xr}D_5Gb5jmymsi^k=27Xd&b~D?Z`ZGVb{ke zE|>4#fA-|aQD)txW7$&&osPoxot>M$RuBAI%^ltw&i`m@G^9VX=&Mtk9{i^FICR;4 z2S54te0L!u9PVFrBtNI?{M%pHg?YD?pBUaZd{5ma3o3j(|M#w3Q+WN}haUe6`o<1H delta 852 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 z

)%I^^DqCwI=DKY#nt(>wmrXX2cS($g7|lasRp{LXk)y?k_T&FW>#maSfM?tlJ^ za<4Of0oln6Nl7V@RwtsXUfy1_Z2oKzn744v`KOi9C#)h<7!ngR944=ie06)pf`xBi zmz9;he!FnN^7GHb*H3oHUg^`5^ZG&z~R57A(Jd)$6231VdPo zOTwPKXKNSD%KH5C=TrAbKYxDCnt!-p#pB#P2`&sF5stfK&R$zQt3MVf`^5DDP&T%2 z*5ZpxV|F_-goIihi@LOO&V(L!uO4S6|5sgFN?+*Momx@41Ww<9tQ+? z`DEo(RNsI5c13&Lx9{&&Rg`4;cm)o4FtBpP9WdaPR8rB>e)IL~MctKOzrNAdQc;rR zH8>E*z{(c9D~3;5Q^&;k)t4{pOqYE5^2*pmM^l+EW>+u+E2G_%E*UMo>Ke1>A3m%! zoBQFzbF-RiJuT_3DRvC3%zvU42hDY=YwPQ-zk4^MVaB_6*X!zQt98r|R){jNva*Ix z?b4~OZ)|SAFt@3@Y3_yg=EnM3ovx|jtUy^7(Tc&bz zWdZ4Bww-pgy964I4IX*|KHRh7J2? zPIBS|2{W)m0Fzk!q?x<-?mM(^@9yc7;>DQ2q6|Dxz|AcdkXJEj+N6rS05NWEh#-S7 z90&;tiHM7fivVe;h$1k9H43n>uz<3Fz}gxBGgyNkYKQ1P00000NkvXXu0mjf95&v} diff --git a/Icons/Black/VideoPlayer/PauseOver.png b/Icons/Black/VideoPlayer/PauseOver.png index 4f7362626771a070417894a83c2eb575c58b8995..8fcdb4b0a1f664f2f01fd26c63bdcff99da29cf7 100644 GIT binary patch literal 2972 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 WKKA4BCF7ibM2ZVa13RX^y5vvZE^cH1 delta 1688 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 JXwSV5{s+Gae delta 1682 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 diff --git a/Icons/Black/VideoPlayer/ProgressBar.png b/Icons/Black/VideoPlayer/ProgressBar.png index d372a39e93b6a84bf8e211f2243d9eb938557e92..52ef22a52b2375db040a84c7849daaf361fda761 100644 GIT binary patch literal 1810 zcmb_d&5zqe6n8%a?V@n$1;NF*Jy40UXU0zKjOwnoo23cD%d!pX_5|bcB(XO3xVCqb z>;a*k=s$o^#hn{h4jlLp2M)cUp7} zti8FWXKNxx(`Nr*LfP-vPj^gf7E^i%e_r=k^ zXh+8Sb^Y3ufrCVrT%RW6v|v-;nEPe0uC^^hpF_%h-`J=E>U+VCzNvDlw@r)$##ndT zCUJ?N?%-XWVoELSS)_%C$1r7%tuH?Ygv+A=+wHu!3zWLPL_(Zqs6!C&-vJ<(WlH zTxpsEBT?hBgM2&>9tlg1Wg^qE04%Ao*+`YD7^xFn*RP)l0J#lxbFlB5n%lv{@& zW0{a+(M5ljNo!XY>L3?#>kw#OuGC~~Gnc$nd0(mVs!}^E$~tvStiN+RP9rrbu0CcU zJG_*>0addRb`fs&31y_koEE}1!*~G=R1^bL3sf%pl*oZqW zaN-W}T2y)%yDR&S5(iafSN0LuOP5B2mgk``44X(0CqivUI4Gn|hYp;ONH<*Bf0)N` zwD|bceyRgkwFK+N1r%$xJQ26#-Q{W=>+>#PTvXld8=@+!jEv=Wd`t#jPQk+MWF*1q zbIQGd6>3mUcrG`FkgXTClXVjLf*(Ggy6ZUYsOdVW#j!vhcO2w-#6!ZvGV}ztCH7X* zpQY|H;xgM?wclx|FViYUJRM57D=p*nVqUHjPpZRHXX*bFV^ufgqQk7Gn{WQ^vD*|1 zIp2aSx?0x50Uqk{B2&my4#VTp;ra{)5AJm~`rZ3~Jt7SaU(kNqee0i3e%ouvx35gr xKKu9Ahv&w{H|IWo{g0pD|LEgKjUT^z^~>MSh8tJ6{;Z}}Z)>~r?Tt_G{RchwFem^3 literal 934 zcmeAS@N?(olHy`uVBq!ia0y~yV6+3WSvZ)1q(Z^sS`a7Q(btiIVPik{pF~!WaI!~` zF9SoB8UsT^3j@P1pisjL28L1t28LG&3=CE?7#PG0=IjczVPIfp2=EDUm621Fl~dw( zJS*XPD57FUQstKH{&#uP{@3kz+j8_jQ2Qtt4S``C0=aYZegeIx>gnPbV&R{hkRrh< x!XU@k(HDdq( diff --git a/Icons/Black/VideoPlayer/ProgressBarBackground.png b/Icons/Black/VideoPlayer/ProgressBarBackground.png index d0c08a29f6f9776d94b06fb680e77aa8ca3b78a7..3680908d01370a323a9d52c837716081ff9dbe12 100644 GIT binary patch literal 2765 zcmb_e4Nwzj8eXXuidYnXilt*S(e~6~*`I8Fb|rE^q96njX$7ku`}1uQNwOhXAozEj zSb7D$yV1%G;`KVTs0=OEo~=^+Ik1CP&I(d1b<8bP9CJWiI+2C{+!W~)Q5?5{trR9FSQ za)sK2o1F2$Vog}*0?XH>r1R^td0J4$EL22$7)W3TGOO^|Z4Ni%(JOtt3|xC}V@ib& zB4_KBvEG1+3{$EiUUC5i9fhMjj^hd~9Ytsfp45tw3KAzt4A)_V1|@V1PBN5AG5S)% za4tb)(hQ46gTX7k(jv=F2E+36^P}=rQIgAy5j0I>IEj%Y3K6Kgz#+39)Zv~z#$W($ z-eq;lR>`68GP0bME9;d|>PQZDr=Qm09<39s80KM}7!iegbMgTN-j8$Ux@^AS0*?V3 zumgwehFHRng=I3C{P2g;+U4b)%Xokd5T*ct{2-F0PAh0s~|6nac(2VMT!IEGV3w{tP@Qf(A>@2L3)y|p$ z=5&~S(M%>L(czX^2M-brdL@(^WwiZVXR|oR$^=N@`RhDhiZ{(kf0sH6qFBw1k!t)v7VJr7kNx zP^|4iR<9}nGHQ9X$N?RTvMNCbwNNao<3tjrG#sG;EUP9tL8-VOH(s(yE|Vm{nyb8S z_PL5lu)1OE3P#Vza*#8+vRM^ABQY%R^}1fkdz%a($8gvn~*8hBf^`b77AX?`HEJFI@y2^r4nU;nPHe>I8~Jbt*!KQaXy)aRSQ`02=bq z($xf`qQ`vuQ>2e_^A^@&2Jp#=DSvu0KhCd@O6Gg#>gP)a^FA*}9EN@0eD`fSX7yNj z2))*HkM=Z;9GCplh?YFKCitw{0kJi$4@>C^(P*5E2NU?14+;~5c!Jzl*J`M}(Op?$aDF!C<_ zV-Q~W2Ptqs54hl%++2IT8qVl(iH6v8&+cm#XUaC?A+Nr2wQU$VcJHfg3w{;9`fwam z`sSyf98?xjEuQ1A2CiMwhy9TnZtm`SbKt9!;eGA&;=PTLOKpGROyk<8-CiC#SQ*4{ z!Il?NL$}YJz0%n3u8`-4EhdATFE28NT`D^jQ+1@OW%s73ce08sAEjOUcG*gx#XEj;erM{wiPMQSGcto!OE%o;#l+D4wZrr8y|I46?e^X&AJ&;B zoOc|0_JXu>$5SB|@Soz$>Y!8KZOh6ke`(+5#;wkGm2F4qx~dz&b>`=nTt_RvmM8b# z^+Xp>K63Nxxa79M@y8|&hwLeQ`C?FSP|M`9;_M5#C-AM$4Q|x;Z(NdmZ%;?pqFFIj zSBa)@zT@U=Ct?rR2kignrsHS-m3*td)_wM4Tjz@f4J-E>{=6b}c^_t}V@xq~BGI&$ z4je3`j`n;|S^9b5$*13)(6K$~#%G-kSF7&ajeaIzMQi_sv{-%00RM z(yD*FaxOIdnefv5nsplkngfv!4-EY>;H}leGiD87t!W{-uBw?Q&jfTI>FDnntm|KY z{oLi8KBa4|!_?C@6!B5jr4qy2NpF*`A{$;k@ zd`iD{`1Nl}ujVaq+}(Si_Cn2XQEX8~4>(&rV5aon{q<1m?Y7U@COgu-Y|E@bdqZy8 zz#y|CxbL&69c5{Mj}NV@Zpk#3@1f7g3yZI0P05^?6rl_^MvRM_fz(X96ju;@A$dc@ zd%bzC@~rtKd&Bw5zufA3DTdm(tj+%gN>%yT literal 350 zcmeAS@N?(olHy`uVBq!ia0y~yU@QZ&c{rGXq@!P&3y@+g4sv&5Sa(k5C6L3C?&#~t zz_78O`%fY(ke?Ia6XF_|*_xQu7N6OikkuNS))1RkAD7V-o=_eZUlx^I6P;QY7?rP~ zV1c`w8LdwOxX+jrq;l zbhdGfu&`61Zs_nzuM+`U5cVJFMU-9Osp#;QAJn9KUwkErzFU({8x7ou#`&B-xfJu0 zOUIjR=>oG|>A-8^{vH7a9iCFL*J%d{>D8n@UjpCRvMh;xNP3|r9n1uZvyEwSJdC+$ zS1@82W3g&il&Zqis`sj>VpWx~B`YRUEP_>{YhrOpATD-2GE+ZP2!p?xG?%6kk>zf; zTj^?*FmB0;ZQC+dWmQFhK*?f|(jE$u-2)DFp0L=DQa=pDj3afz`Lrg1s<{oFsAL-? zg`dDpW)WR^019dB(v+?Xb{X-)xI-ZZeuuWW90e^& zEF(+C!*&>hV9-wMYtd+ssUS&d!1z?XCV>eR-*<_J4XSK65jAxKIiBYsg;_53 z42@yU9_+7&Y(7i2Y=2&OZpeVgs#I0S1~Y6GX@;vKkLp$A7@CbN&%utS>AIm-2i#7? zKGZ&K4|C15a)G1kxT>ov6q%;3Bg%9QIaR|(Tw%ECc$%$hx+G@NCcp+%qFH^_B&ArK z&9bgNpD$KbD10m{*|VUZS%K~3G@vg8k7c0Fnwj8<=h89<>bf%sMHwd!V_11z5_F5JXJr~ z+_f_Q?dMyC7q`Fu{k3zyK7aA)mv8U<;p|)cj-Ks4d;Q5P??>;7-NS#bJacT*{Tny$ zetF={`u1B_llR81-`sop?(ZKgH}`I~Thfs|pZxgKAE%C7RzCdrTy#fCZk+l^6@=y6 o->~f~pB}AW+P8FXx%bQF@9xv{wXv5jWh3p>#PRxPZ=8SUFO)r$a{vGU delta 291 zcmV+;0o?wt7PA778Gi!+0076RkEH+r0E$pdR7GEDgHv2{QCe?SUw2Yla9U%0Pgre| znyX!AfJsqjhmN03R%=R9XoZZNTx5StRBBvfcUWP1OH^rIXo8oWtxi^KN>XQ5UwCtR zkXvMaSzvT^e2-04ZFYT-U}%D0Xn|Q`dx40UZ+47NSZ{)fnSV=DYjAgrP+4wNU3Gwm znowA9O;u}vh?`JZaRiM8i~s-tWJyFpRCr!J#6=FnKo9`1;e~LD%nbkkUZ;vw9}I)h zKZvg0%@?uWdNG3PzB`Wdth;)u3e5LM2;uqmKFkb=r&Z4Rvhmi42qKo+Lsh2sTs0yB pM7K$rE}LI3A{+v9MPC*}W?!eY27ZxmxfK8a002ovPDHLkV1gZ6dPe{N diff --git a/Icons/Black/VideoPlayer/ReverseDown.png b/Icons/Black/VideoPlayer/ReverseDown.png new file mode 100644 index 0000000000000000000000000000000000000000..e544905a69566bd8ac4115050a4c4d145d9f3bf9 GIT binary patch literal 2529 zcmb_ePly{;7>}aR)>f2ySj5BYR6)VXy!n$!@@OpUX1g0O+hsSkS-teln>We0$-Hr9 zc9Y$URlEp_9uz@(5sF6-dhj4(6$Ed+iG_M=MG$P!qg4G~W-|N7th-hNNoL;nz3BI#P!hy4(=3x!jshaqLFJV6fc_(4s%_4$_y^4*$pzSP9caE5pN z`OSzgZ!Wah<|?bY%IRm&sUZOaeV$M>?DvA03~S2BE`evctSM-ulC0L0Y3UHPn~P{h zL>yI%SY;SvRIV2Fvd)aM_cSuFVQ9Fb>9(p@2sVgiqU@u9yU6v(QvFQk4Bl!=H%UUG zX@kL_I53MM>S%hkTGg^jn zx!EAja00}%Aq_RXh-FSAMVIAz;ab!iId_@Hd%VwsBnDkQ*A2TO5ph@SVLBJ@Z~)jg zo4JpPvGn`7i#VBGhcq%kCThp6jgV_gJQiya@I1hFP|r6fzPHC- zDcO+}ANqT!N=dF7l9`CpL_{qidSmh|j!{I0RmAAY^M2rpLHv}=A=|*~G~qP`h-9j` ztm0BjH;8T%%T}>TFiusQ!u7q4U8;5qSBOy|C2NN&(AcF3-B;OV#1m1ULJj;r?Qks& zItt1wOJ+n*MBo^rGe=Q0o1_uM2@M!;)N2Z)Q1pG5V4amcY&xo0HMr{Oma96YGFDBS zm6?HcY?bJEe_gOONjAAZZ9G>nu(9Q}QpMckoI$VI3=pv_wZa*+p6hVtI2Fs%y|J~k zkq^C3d)uwbs9dnbAb;K8w!$qNl{&f*#)rLrIK07)))OD@3rebpcAKo z*xMy5+awh^7)HHD=KUBbw~>vSW&U#Z)br7(y$EG#227HZyGpj~PpIR;5KGMtx*V|j z2hyf$vG9@sjrep20N%GLw7r6NdE~Ee1s~Fg!m#F1TvM0`)_DY(AukerM8mM>vr#Fv z^}x-BVa_g;2(-oZJ^jUWo3}|&S(NLx?N(LGuyoav46B&jQ#muL)H7{da>`?etW0&=fzuBZ{KMjKl;b@`!}EXF!;p$h`;&j%^xp) zF*w(J_{wje{ZRX6>iYLDUhsZ?3?Hsv{%-T@$I-PHe!qON5ng-u_Va~b7JhwQdwYKF V?BFHsD|rcP%r4YFe)hs^e*u-kDmVZD literal 0 HcmV?d00001 diff --git a/Icons/Black/VideoPlayer/ReverseMouseDown.png b/Icons/Black/VideoPlayer/ReverseMouseDown.png deleted file mode 100644 index c57b383d4898d0f93418d3d592fc6ab2b43b3e4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~c!3-piujpS2q`CrpLR{lBn}cJD1Ecc8;>&}g z3!;*1{3CL+ikf578axBjEakt5odeEmG7{F0Ke#7 zTiz8S&(nO-zGL0Jv*H`?RT(zD+GpMOdCl&sRa|GjyK_AJ`OWSOPsj4mb3ZqIyw<^? zH0_pi=(2Ayrbzopr0Jq(9 AHvj+t diff --git a/Icons/Black/VideoPlayer/ReverseMouseOver.png b/Icons/Black/VideoPlayer/ReverseMouseOver.png deleted file mode 100644 index b43d264aa38dcd10933b5d700c829196e4c778c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 307 zcmV-30nGl1P)XT;pR>Wp*i2MvO;&49SZ`iv zf=*U!R$q8aRB2gadrDGgTV#GvSa48TZctfqUuc0}X@g*Bf|Z=GO;u~FvdFBn$gj4{ zvAD~!xy-!7*1W{my~NbM#nnw!ZA(*YR9$t`+36$tmtg<^0Axu-K~#8NJ;X&4LQxC^ zz==Kij=Q_v|9S+dq8E+TSN|V^E0>39DA!&HFdG-UR~#05&&;6uJg1aq7jL1e5a}Ib zjE|Fd7ZEUL)Yqm$eQR1~2GM+g$)^3ZB_d?kjjHZf&TnR)2mc7@#2Ekp002ovPDHLk FV1nADgfsvE diff --git a/Icons/Black/VideoPlayer/ReverseOver.png b/Icons/Black/VideoPlayer/ReverseOver.png new file mode 100644 index 0000000000000000000000000000000000000000..2f23bb21e0f0288bfceaef7395c9ee637b4f2ace GIT binary patch literal 2849 zcmd5;PiP!f7~h5-(#D8r52YduQ$dBkoj3n>{?KiV*`x_{V@Ot-h)CYP_hvI@ciuQN z$!-GvX%2$Yi$X!9=-orXgC`FbkEPF36XHJ$%rOAc)+A_SKfqQ&>44xmH`t>HfPK5Joaj7)%TzVfXeR2JCsdSS1 zjn!nee#xbxQzlF_dAZjK0bMGcpX!B#Zt_HG@|GV|<@?`#FH1hF%9qVLu7@*x!=K-c z_{#2LgYIrphsjeHr1L!&7<70-q+X{T#BQ%D_xZZ;oh~b~)Q2RSRe3rUD6Q6)q!|%$ z$thz*F~*YRlvPWmn&q97G^}X~wiUI4RNKXxYv@vb$sjIbp1WL|%Z0&TRo+OF&{dRf zw_EP&Wf8R$)o~mJYl@~JK%jUhNJtL_@!0`~8joq@hlwu&Ddk9-Vk@c2plW7ACoI?o zaqcJZn9?JmqLy)LQy<7^feW{yc3(K73UBic50V(LYJm+mL?Yr1F@kkLenjDQ;3L@*=;Z*cgTV0xUmy*WtqofE24aM8`L~IuqIBH`My7oupQvV=EV0#>`f^T z8O3}42xv+vprJbxagvCrAw+wSJWB&FN}5r|(#x0qfQfGWN@_#Cf!9dFt1={#j(xeN|;OUtCSI zuDz8lS{f8SR@C&F)7K86?~~sMd~mTQOKHAjUR{CS1#YdFrf%lzOMZ{HS8G0aC(ab9 z3{%#ID0bQy`nBfH`!S^4PTp!(_`CU6+n4&~1;NQIplNb)Cg;ok0dYK<$1=9v4Gz9~ zOwwksSa?a7M0~mh4nDLflu^pZWc%@|V_U7*w8@dlbOY&{;XuS~2jM1mJVLN#RKS~~ zRJU9myBNwZE24j+dd{0}kf6ok5K`ok#!wM#^Jpj*A&Cf_Jv@r5vKNVtM8dG`(|$fG z+X2fvdQl=$BBcF-9Vv(L$RBdsu#`dt=?Tg^G)RVyZPPJSq+>@#lo%!=o~j|uwkx)# zJIyAy|1Uv0)R?0+y#q7u?``|ZWt@`E2U#0X9_e=SRkxir!GN2q&HFF0yJ!I|np z2QPa1KkL4keDPnqcv=E|!-oc?!4gbg>1Q$b!A~(c@&GC|g1PY3$b)gS#1?APjnmhz zUHxYAru5YD7rfubyr(}RrH<{FAr3e|&Y~C3gYwl%qTJ-+|v^Uma${OqUi{gV7%3a4&gss#_m<|fuZ UoA~lZGaX_VW*2KWUR&S$3(RPae*gdg literal 0 HcmV?d00001 diff --git a/Icons/Black/VideoPlayer/Stop.png b/Icons/Black/VideoPlayer/Stop.png index 324c85c11a7f4ae0dcb60ffaa87d9c8d7e2a276d..6129272d183ad0f7f884dc773655855aa19d17f5 100644 GIT binary patch literal 3372 zcmcgvO>Epm6yCNHDs3tu0TKcgxvr1^b=KqY|B$5(*_1?LOGty7AXVykJWfn^ZDTvx zO%4bUmm>8*Pf$_yh6)G73Gs8N)C1=V#HF_$DF`^gjRSAIyKdTMo6tfn`ETaU`~BW~ zGiPRxy}WPFlY45l+P<0T<{Z2qllShO@Z9;!2XDaZ;dFX2uhsTGD(@Y&^PfCXtBu9c z{6ewNdWG_&Q)fZqi+Zn<0(Gr6ez=!1ep(cYFP5UXq5l5eWmSoShI+zk;Z`~+mZRzQ zOdMZ7HqX~jb1zU2zo?A&C@|=Vf+@XDJI-mZp_Y6pe9K`?RZ5cLbVHqx0+ofw?a#AGuax#K-HGPW!@NKJA z$=FnvPNx!)7gMWX#=s$)Qs?t)snF&`o~&eCOs#^N2Zz?=#hke5&uuIR@@jDrg(KF= znOlq!y=VlfoT*4tI++PpB-wnDw1?oC9ePnAW*sZfo`~Wg>E_Q#8wLwRlNF+&0+0-Z z9fYlUolxDTrj4*cG47MLk{}A#?j&_6F{uvAHjo0016Hsti33inX*~E8|YndT(3G)%r4Tp%pFnr4!a(gw4 zAop2&BUh!(GqRM)WTVqj4wzdT)SBbst-)72Qp)_IjQ3685}hJY2gA`Of!vM{CR`0I5>DrEKy8@+hz%d;HMhhfXa4TPC@sfZpq^b9A490p8dXP)Lt`lTAriB2@E;2l(W6yL2 zXYO5%ajC99AY%fNMH^z1vW!6=6}tM>ly8gXBKa=#5- z7TwbD4SVL{5NyQdXLSUCpXv}HVyM{}91%{Q`|Tq*UIa7EiFx-d|ND>YyLNr^&YAXw zv9Ym3kKFkF>{I*q?{D7t?9!#HSFfIe>wWiy0|&1E`SXv>H=&)M{PNU}E8*_1*Z+Ec z;=;9S*HU}x?Wcbl|NP^x&cF79oqhYvLr3z*rxwqRANla&j>|ihU*Em>>0WuBnVCA) K{Nklk@BIVj^*1vB literal 1020 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQaEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e6&pP!G5ON@s{ zke^?emsgaZUqnDaSV%}nURhU7%h1T&)7Zkx#KzakG0?_2$i_L?)&+<{?A$`_-NGE) z!yP>%oxGx*y<=T{db}9H|}4#`QYxOmmj|V`Ss`jzkmOM&KL!wAutF- zK;EkHH_%zto-U3d8o|A%Z}J^d5NUb1k^72X)RC>FkN?JB;w!i`V~)iB-SvDAmK_Lf z>}E=5_2ZH`xx4m}jWD~^vk7OIg%?MEspMXmo^(g|*7l5pEurOx9Wcr&{a!#gN%cj9zE-c1%5<|G)2A9Ru$vd$@? F2>>1me~bVC diff --git a/Icons/Black/VideoPlayer/StopDown.png b/Icons/Black/VideoPlayer/StopDown.png index 11777e0948abd94436466e73c11fd1e7be731f82..48ee7027eed795b46239fb7bd777cf328ba4f285 100644 GIT binary patch literal 3364 zcmcgvO>Epm6kb{mP*MpA4hSk_+zUvZwLSLuPc@~@woN29gfyrr2gG=0oLJqpjqPMN zDF?&_l?owo0I32la6>{ITXEpX0dePsI20kM1X875;J_QN*Gb!KH)<&>?XErV&HMe{ zdovdo7fv5M@brOJt95XGuCoOHPs;Bj``~xqAMd{oe~)H!=ZaSAu_xsBq1NS3pK7&c z-j0`7%9ZZRK1=&;%F|G^hy4t=TdkwVh8bn&MX7{hHBJKc&u_m|m6!+WS<=lkags~I*jTwlk&Wh(VY1$8-({H4yRS{b|r>RMT5 zzNQTZgZ98|r}?U8c%G-}Si=|r2P!s`k`7T)93D&Ph=S#DR>o^yfd^t^fWAH4Fqo`o3tt-!;jT4>@iWj60^#;+Qr3h32 zl8JN&>15f!zG3^8jdau3^$}|~<#DumC#&OQ&zIYFumX%ZE$LKd&ip9N`xJ5z_vxz8 zvSd|Nn#}sMX)nz|F<56-R&=}md{UG&VPd`$sNh07j=67%5OaewPdNyVN9>VIpFfA#xo{ppck4vIUDAZgV#@g{sJG`yd8PqO!gM)u_qe{1@=DfDgfYe@_t2BRfjMo~Qjy$ix>6JnBjeK8)2-byEi=oFP9 z7&KKoD$2QADYBKxV)N(X0x-8(_nI@}t@^1KD^-2@l#N_q5}ksp^>VyRBKH=uk=VhS zfMDGPwIjA7jmiPd#qm{$@YJf%CK+GQjk}v}xwhllu0Yg*I^qPXCyX41u;&?}%}kHe zaP0b>rdzV$2pLz=y_jBym95caRlpR|)O&Y^aAEQYhlsh%LzGz#3eAw9Pyk*qX3Un* zosQOZ=IS=NhLRdU)! z!t0^cbbjO)YCXb4vfuP+!D@N~~QSF|R)mfdU{N1L)UNH#AD<6jWl<`hns7{YS zk2aWrh_E~q+BiZcx11=91axYcdn0So`yKDH1y^C%ae^K%!LeLEHWvbTX|5C^fexO- zh2fd~KhMKuV`08?eA)eg{qxr^`}bdc=VI@(nVFd*kN!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e62Ku`z>goQljC*-g^eEpxd{61XkWH1!?z&AjzYee_NJ^i2cw zO@sB!!u8B!^sN&0t&{Yvll5(q4XhFkY*RQL%D6o0MI9^59YU?00&Sc_Y+QovTtn^M z!!4X5Ox#NyJt7@Fqnx~=oV{aRedC;b6P^7Mo&D3?{1V)Q(|n=}f)Yx?Qp;kpDr2&$ z5)0~*3+s6U+XXz@groWe0wxGX&Js_YES9uDI%m03*;?DlDMTc*wLm^N?Hf@O0TZz`kL{{Q>;9~fn$fNmk+cJTTp1_nlZ zPZ!4!jo{GJk>QMt5)BW}^Gux3;-Yyw!pYT;LsZx0WJ*eYs8&k+o6T`Ju$#Y*O7@eINxq)eu>a+73k7rt>od0+< zx*^XyopsMg8;K7rn=j=$T`3;7x>or5U#G22g7{270=Cm|sGjo^p zRf%O6Uz(elf3f0iTiI)&u){Mu?*3ix^!1xx?!8;O`C1EeuHlaPCu8s4xp(*e-Fq=l wjeZ|=U7%>xe*ERF!s@+o-}_F#EIctGJ|U}i^QGGdzk}k<)78&qol`;+0M~U!mjD0& diff --git a/Icons/Black/VideoPlayer/StopOver.png b/Icons/Black/VideoPlayer/StopOver.png index 5eab80f098be8618f4ae8a6ce672838af92eb12d..5c2dee88f5c8ed684bdaff90040b7e3355fbfa05 100644 GIT binary patch literal 3367 zcmd5Epm6y7!$D5->04izZix*Py?*7kV(H*~2=wk46+Hl#sKk&rr`8E@R~+QxR0 zO~s)?fYhR%IDz0^I3UCc#DN<}R0;LOsTU;50S+8F@W#9ACT+HfT8gmbzj<%o-+b@A znJWvYUfaL#>3xkxWB>eIdlBAGsr#|L@Z9_R)wkgFcs6&gXf&QUpzb}5Pd_`@XiUEw zFD;kLo!2Q(`%Na&P&Nns47eMOqsImr;}>PAg|ZtbE&Y%0f6%p9wDhx1$LwUYawVR- zl*==hPA&0E7kMD`W3OmO2NVSKWy!Qbzn2tr(9$cp6u#B4p=%XOd9kG*R|>V|&Vn|Z z=28oqCgP@PYF^N^Jd0y5I-+3{W5e_f%SDz?O-zZcjV>M3oY&Gvy$^|!MPxfU}7Qk!OyxB@xro~D+L3B;tq5xvs z>C`&5wWZ&$RTSlkHE?4TkZrk(rHxD)i?T>pb1qM;ftiQL-W27cyc5q|Ob7OQav4Vx z<|@h-r{o}>z^W)UYer{t$;vceO4HsLJPYF}YM3-l?S->(BGUEZMdib2f^4%=wsZiJ zjZ6=j&XR?xtGv5 zm|$)PTk4uxZ3<$*B&PDKrGxNla9N?Q zw>lj3FeJWdSn4^VpWA_chx}#|Lx{1iDZC7$dIoA2gw=H%+Zl~7!~@w|ZpRRvqA~=7 zrfNn-Ik%OfN|{PFIu{p!xs6e+IV0a0ef46k$}h_J&;_p0DTO{7j<;FJ-Gyu@c6~)c zuZb<1Bg*(??midAwblF10zJ>vcyeLL2k-SxjoW%H3O zlA*SW!-ino-7ALw?P2boRM}bWrs#HEVYe8B?G=S)zC(LAJ>Nn4CT-Li&jr|8^x~HF8`$!#S=1-hzfA#A5 G_x=H_{WC)V literal 1215 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQaEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e6&Pe4paNJvmn zOi)NfP)Le{OOun=Tu8xQMZ=6=DpFL{SxntcNX0`|(^W_#NI*MWNGDW8GeAryNJKwW zST{!0Fig}SPF_1r$RI(;FiFTHThu&9-ZDqbrdY(LO3toI(ZEO9$WPfcRNp>EK`Tu` zJ44AlQQV=%(lOM+AStG8+JZ!dl_!5oGRoeNh4a(M-)~+!w+8mPB;FiAJJ7pxLF^stR=6>JB`;#x< zpMLHByc_qM4?XNS{b2E}`x_4&J#zBgsY};RUA}(##{CobzFfKa;Lg2=cOE>s`{?ES z_a8re{Pf}LpI?9e|NHkJ7>}cX79o&z%ruaJfzi&>#W6%9IN8A5+}zmIks;W)xR^~j zxp~PI5f%?$BZD*plZgV!=YwE=TiC` V-4^-Cvn~}BL!PdFF6*2UngES=Uqt`_ diff --git a/Icons/Black/VideoPlayer/VolumeBar.png b/Icons/Black/VideoPlayer/VolumeBar.png index d372a39e93b6a84bf8e211f2243d9eb938557e92..f3f1676d90e95c6f2a4ee4bd95eacaf7bcf1a571 100644 GIT binary patch literal 1810 zcmb_dJ&)W(7(L%@T{jlJqG9IC~m?zr6Fy>+tt-(Ys!0+AFWs-&5LGU&H2$pQnRewHsZb zTxKRqWGu{CRsdSlE?%A$jPD7h$6}P`q4D?kKNxzNgvK>5!cnmy#%b@U6jzV72K;D` z2Z?d{l74YU!9gYz(`VTvujni^=6)%x>ut->=Mc3Q8tZjHeK*?HH)JXFz{H4SjCDUS ziBGug58u&kY}*#@Sfq_ehhm$$j=uaD5Uxyybf^2?G8jCC##pI>TGn(rHK&d#%aKKb zAh57)*){?Mst$9-W+<=DuRL@`#mlr%sm%4-Ba7v}3Jpkg!67Rew|TX!6I9HavBDxI zt~t$t32$)4emR*3Pq-x}A``i)081KdF_ubJV|jw>=Jf*spte!e#5gvWENenkYV!bS zEDLfhx*8l7!rBp)+%LJeTisW!-j7tiOFN%@aATF5G7z zx=e}CfUY?R`v`jjVpGzlZX02TV!VJxGD(Mrk3xNFx2fko00qq?OtB||6HbS+%oq?( zGd2=dk&g_$DI?vG6InuF$j+H(5k<70SBm9a^t+(}oXs>%s1U3pNYF-tGY9#e>!84O z6XX)XJfE~hOp=v-SMvS3vn%@q?1}Bht`AbPW70uR$K@z+dNsf)xR9`^|vLJLs9+ztx36Ce_Jye+WXVTr$@ z{%GnxB|gQCQlBODWm)-{<&uTyIy!p>3zwNffxwock xH~;TiWU-i`LZ*FzJefP#^{{iIkFNgpD literal 934 zcmeAS@N?(olHy`uVBq!ia0y~yV6+3WSvZ)1q(Z^sS`a7Q(btiIVPik{pF~!WaI!~` zF9SoB8UsT^3j@P1pisjL28L1t28LG&3=CE?7#PG0=IjczVPIfp2=EDUm621Fl~dw( zJS*XPD57FUQstKH{&#uP{@3kz+j8_jQ2Qtt4S``C0=aYZegeIx>gnPbV&R{hkRrh< x!XU@k(HDdq( diff --git a/Icons/Black/VideoPlayer/VolumeBarBackground.png b/Icons/Black/VideoPlayer/VolumeBarBackground.png index e72ca6e8756397ed3c6f4b5bd04e08aa99e84ef4..bcd49203e12813ac67168e9ed42a21d836f06e00 100644 GIT binary patch literal 2175 zcmbVOeQeZZ94^Bkq9Yh!fvHdmf`Gk#+;`pG96Q(s+&H&`je&$-``%r%U0d32cN-WZ zj3t0zCc;oLi-xaV!p9$MhRiWgB5n{wjT4;#5rkv`2Qm>e%zS%aAdZi4Nw06)=lA@c z-`Cr&^AzT#kH{Q>AV_*azN-kH^&@?F8vJkGy6<;*dP>e;tRl$MqxEA5^1=3T2r_K3 z;4Rfk-SZhv3K>{l@&Q96BttZUWMxNWmMaGu>H`5mbYQ)$?HDTX4y?rNCf#x_2nzW% z3Mj5A^l~-joSnzAooH5sfdnC-v1lYzA*xKofyH=CL@~oVbGnz`&WBig5Vqw5Shz$Tj76TZXN+XjiRY(eS4AmK9D%@_S zKvXqW6akJFTk+UDa02c`m}JR; z5vj0rYGOWSv4O;@LU6{1k(W3q^^Pg9QYO}HHsgS|u(;W1vf(y6&EddL(^V;rVRel5%@ASVE8`Os!3?k8Sls~#-<(OT<%((f6L$B~{$D;H$N0DwC= zf$71->KZQ!ac{k1&+ghDlW@4_>dVw_4=+;h3m`&j1-=cIxiXg_$dHo-t{iXvx-AQ- zmNaU3?Y8eCNbkAsGu7$M2g(SfC@cDZ{_Y4Bt4~J=(nSc9j^A*Zru1g>$3Lc)DnB+hraRLm40!nwy9%( z)PHbc|Dv(A&$$nUx(jy~=eO-IKk=z&7&GCWRqV7ExaFUDiUu~-^P|_)cOq3CeZeQL zz2WIT@!RL!>16Kp+6f1`YTA}HUFtvFI;QUEizUPkq%*k9^Hxjk+PdY>j6eHx+n-bN zemXtZTe+(_wE6gjNsA3Tuhw5E+xzR0tbyLDn>(U;UCJWY*Ozb9w29prozC}0O>A_g zr#mA{o5hhM{(74E|Bu1D*=;M9Y$w}i)cwH8(Iw}WzTYm)oY*{Y%d^wo z*wfXzW$w`ozT9ELVa z=x^g3Wa}DY=N9VV9`5d+=pCE}v~d)ShQLq>0mXd@c0jildAc};SomK(w^6KFLBQoA z=dMj|hFxq)|Nc7%8_4|D>D@l((cFW}EuTD_pv708tfsoByXK9Xd)lgfclPwDy)s|+ zK})8jO3H`pxQN_Qslzfn&jiAkDI6_2b=~D$>&jUr%~HI5D`!pFXZ%WX*QB?16g59F YFZpWbJi%v^9w?+dUHx3vIVCg!0H8Zy6aWAK diff --git a/Icons/DarkTheme/VideoPlayer/Background.png b/Icons/DarkTheme/VideoPlayer/Background.png index bc9eb379b2b1a5244fe377466498d2dd44612548..74a35adf6cad92c5e169080d68c054ff32f6a920 100644 GIT binary patch literal 1670 zcmds1&2QX96n9#RNToz-gb&O`bv&xuq}i0LRELnR)No@mGrMbL?J@SG z>!cS1C!`*FfK$0~=fnvr!J(>pMO?V_fRMPfl>eaWoBgobQmE*WmG*f&{=JXi`}$&Q z^ZkY6CyyJ3vC!FQZyUz33eMJRM?l_O`toyl%;y^)m4>l+TmR?2IF%hV z_!40LTj=RD73M~Fvchd zZ8vb47xdmk9`-y3FFS6_a+eAANV9>aKNH*)yhpa%7pKnPEiwm6<-~DDqmeyo*s|z5 zZWx9R_8iZ%0AZB}nWB}Im8WJF+M;AdlB+~!NL!@4a$iLzggW7n=C#?ZoaPBK=2SFy zTpMdnV<2ZWF5fSPW9OVXVklCPsS>bmjm-yA$#Nk7!F2ukDF=|-IIev>HvT%c7Jb}iNC%uEeLw(|7KtBbAp5au{7lJt>Jz1m_ z2q!7+3n$O|CaTj&*5ptY;25H7jH8HS(#c9iGbTFi$OO)Il5pZLGoJ|&SRrkNR*N>d z6*fZO;yo{*f#2Z0Aeia5CEM4Po$2%csQ*Ecz-ZCoOWV-{r(1$-BqbE?g^}vJvE|*SnWf$Uf50!1n=lMobYg- zr8xff#LUj%un6?AUP16uFENq9<|<%C&EMNPVHk7gI_=eN_4S{>emHNS*MC~^@7{ms zm!+et50@TXyViRH7U0Tnw-)sxd_n^`G?> hzy2yn#QxtZe;naM<2!Zl``h5(XQ!p5B_}5*CMG5%B*ewV#l*x! zM@L6SMn*(LgoTBLgoFeK2L}cQ1_T87`T6MGhiHRvFD9FppTUl9IT3U8=bhNj(udzt%06KuPz$3Dlfr0NZ2s0kfUy%Y7 zyy@xU7*Y}U_O54`Qy_!$!4(=w%r_P^btQfNzTZXt{RU>^RZ&N5XR0zxnadC`_3}fW z2Ci=L1vLiHF{oRVo+6~h!Tm6aiMC({D0>kJ`J*&0^e0g9+Hghnz3Of>~c zFfY*h4wPVQSY-p0;AIG{1S&lb6k%;xmBYAVQw8IxO+Yp4fg-sT>Z-Jg< N@O1TaS?83{1OU7iOW-*hmPDZ|lAfxF6PZC_ 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 NJ~~mmGJNXwe*qH<3V8qk literal 0 HcmV?d00001 diff --git a/Icons/DarkTheme/VideoPlayer/FastForwardMouseDown.png b/Icons/DarkTheme/VideoPlayer/FastForwardMouseDown.png deleted file mode 100644 index 79fd466ac1d5565528a595cc1ef7b3a955dcab7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^f*>{rGmxxUUaA44RtNZmxcY`=$EK8K6f}AUrbnmL z`A6hNCD#N-<%h+W2gei#MHhGlWyGY^`-EggClwi4`bH#Hc?G4%XEu9>Wcr3>#bq@4 zhGr&ax5Z_)`i13$#aG0pHF$@ldj_QC7B?4_x5cK_$7eM91gH6i=0+q{hQ$>|CRHb7 zG2SgU?n|TF9<^@C)gvAzw#Fhp|6^6&< zO*?Sz8_?M$o-U3d6>+i0OvR2EFdVsH*it!h=FErx)NdEw`6*uIbiQ>RcW>0~V+V3P zs`mKKtUT5JEz@AGjQ6vcyqYymySz28>p%O;`LQ=cvn4`i#$8>foRpvY0zCg|PZ57C ya^Y#z%DQg}^B8TIJ%!C`R;LEP-eFMmm+@Y!fHB{_bt{1OGkCiCxvXd6Ai!;r=JvaoqVAdP2{I zt_zJ?+s43bNP4_YnR&{G_GvJk982b0ZhWjlx=Sh7FXsIT@r`IHgjgJy-7P|FWcj{O zN&YL87vmJrvVa@Lq@P0))mIcWldot>Rc*52)IcQ?69 zz?b$xrM^h@MT*cD5fq_s(t;L*f(FDAq=F!pKK8+X!SCGOZIYU6qAfkR+u51#e1ClA z^Zm~EKAM?+?cjmK2P&1y!KummEIbd1@#Bxd@AVg+ZNTG+WO5;^RGxfJeD_s8zw|r| zE{Dzee7^ApVR5@k{n+ExZaV?#N@eVLH=*nd&n1s9hEYxa``Qn(6#6y!l-aN0)V_gCY+B~OHx7~^|(yhroy#&T$T9KumNPea!j|+p+d}BtM zh*K`PRg4(MShC%!YO74MgJY70HBG^eqFP9G2-b+9OZ|@w=2AZ(v-OjGWAIj!m-0Lz ziqh$HsvW%=r;Cc}x~_sXMbi*SplmhDX%|J=$UsA#XDkhqJd7hrXrx}eoY!P=i59g5uq9h^Sa8MH4cSa+=3!GmcvW^2`iSlr*D?rK6|9$d5bOsEDDzf!AryYcdc? zN7zQ#Y^oYjEn-**>jdLMv=RGZu=;ONi-3@>Z4(6=`!uJ!3j2%%aoVPE24R~nawUlt zWvM(_G7-1p6byrRde4hSgG@zPP9w&r>NOccsD`0Wu%oN4YTL+k0vDOgu#rcZhiuQq zhK2P&cfG;>dd!vu*~I=L@%)&9j!ml`_DrmDhPYz|DDVx6C|6CS>pu5gX4;NR2io3D zL&$yF+NxD}<%34ZPsjEG6=BsekRBKud7kPZZZXYNnZ>B;%aS;40&2h|D)Or)tNqD& z!MfIRF==a%_*hZJZ-0GZm-Wr%x1$gs)?`WWr9gEKY8Sw2nWk>`=V!t$Z_U?3Kqo64 zvA3=)Y+cbsW#}avnG7@F+-kqp%<;4RQ7e>s`9&xzLSTZO96~Op!yOKCZ;%!HJ4+nE zx({m$u`CYq4o&&^A|SkLRw%=q_jwwwY&xINltQ)UX;zb29IfyaB9nqNZc8PTr975s zlC(nBJ6L5U^82N+#&gR;svaty;kRI@NtNETQY zHB8%t(sUojJ;FoUHJH6!8N-6P=hAz4>7$75s;HsLz2&uduNQ^rq$oAL288TX9rl_~ z(2)?h|H>QjzujGh{rExeKv4vHfp2Lu2UF0yiecF`!%NwB^9agL3SIToTi-1}NB-Va zeY|<}6ZYxFi%dF%>4Bft*YDi+Zf)GWdF0r!k1t%<_+oVK%j>^gK6~Zvk*^M3d-21o zH*TE#=ABDxe}4b|9~&FzKU+Wd`o#3~FF$_p^p*6=@8{p$51*0X($DMbBVWIA$GbK0 i%wJFKf9dYN%IROn4&QEG9Tk5BrcO-PzkT)exqko|<^i<; literal 0 HcmV?d00001 diff --git a/Icons/DarkTheme/VideoPlayer/Fullscreen.png b/Icons/DarkTheme/VideoPlayer/Fullscreen.png index 8174183c023cee2a28ced1168b9cb56335bb24a0..62affe10ab00d91b078e4063eab32719b141e96d 100644 GIT binary patch literal 2966 zcmcImdx#ZP7#|hIR)sbzBtwRgK&iQN=5^2L1GAY4=u!1Ebdi>LiqU?zVVzL-!h(s9GH}}rYUTa@H9GKVn-oNvG z-}(0U_T0Ln?YcIKqE>Ww75m_Qb#gCV2+xIQ9^479D}t`Uh@zIQOzs8LQ)880 z^zZ2@n|pSdn#F9qnch&>L4iwROxNA27wPo^)6lEKce2bebb}?{RbVzH2I+xPFWupX zgw}G1H4#FzqUCsnHwDGMi58F`a7g9&Jj<&(5_CzV(~ALfp=IlR#Vx5Z_$x4#I1Y4< ztJP|`nway$A&%EHjY9$_2rO{0(Wn>WI_pJiCp8pFWQI-0`Xq)_fD~~|3JfHY z$RdSBa+w!&KCer87Ku7SP1cfcIriw^S!G>PbrB?6SRsuq9OF5eEmODs(8aI^j*Eu~ z7kEPqo$ajN;aB|-41;%K!;4Z$@Aje?dnV~F78nR2=Qx&b8;YQsvdrcUm9U5h&sB@S zLq^!~qGHU7mL##7f)!R)6vGfD%ao?H zZ3`W!eOztTns{Y_M#V6B(NcI;vke|#m3Y=LWeb!^$jW0;L#oZt$!_bQ23*2PeH9o! zT^vZVt~%UYR0Jq|#PP{9r4PKYUeix@r(acvZq%2K&1MK@lAXk2(q(6wjhr83 zO|`WO0kCGt+9q4%+i?wtWYZ8JJZDvKGdUmOk=b3>@~Vv$gjrrx5p1+1vzjR>tR~1B z!bnvG0f3&#b*Lgy=cUOi`Zunpy3Gpqh6tQO9P{sk5i9{20@RXiX^2I63A38UV@P6? z)|POYgE4(?goG`L72puVNlL<~z}TVh(l`jJj@hU#Zp5?F^C>HMI`-+Q z_A?`B773k}9B8$Yxj_Gq_U6pE`E|WnGVbzh5|<1J%{IXOwL>)ji%lfABzx01L-px; z!F+QN4pkjmc-GYaS^I6;_y21fPqL;Fc*~?Txdh`^@|g{O@RN;>#Dhu=VK79i%gIFg zRd;byS$+7u$Hv?5L(A{)%pG0#;=9zbCGpm`ulK%t<=)jloMVnt*9Hf#Dm}7!f5+MI zz#V?t1EeCOUj0hH~@ga7~l delta 366 zcmV-!0g?We7ybf}8Gi!+006pI?LPnj00DDSM?wIu&K&6g000DMK}|sb0I`n?{9y$E z004MUOjJcvQ&UkpF zk4Z#9R47x8%i9uyAQXk+-API@NlPl?)WP2W4P$}L&{!`ggSU1D6vVl+!BNVgLXD M07*qoM6N<$g1jJ!CIA2c diff --git a/Icons/DarkTheme/VideoPlayer/FullscreenDown.png b/Icons/DarkTheme/VideoPlayer/FullscreenDown.png index 90de130d19a49216b318f2e869d7a47e687e1a51..b4787ebb62886e18e7b195c0edbe5171c60f049f 100644 GIT binary patch literal 2753 zcmcguU1%It6dt2ue=IcWL(rFTT1BO^^S`?@bggM7HBmQ)bhSxQ^zNNI$&lT-dFSa4`RjfoVB~ELtR~TG<0>hFQO%<{>;vLbgbT9XH2aJ9&y@9V^Fe(eh&6 z>mnmg&xB7lPxKY=#3$|OW=tz2>gqn6`hy#{x>Mt zgZX~8i~5AsQzDN=QDifEO3FxB&e-c%S(If#%nDMPm$HT^8>+%KejJ$dE!!9{H#LmG zD94S2p=Ss}wOUP8l@#@d1xeR+L6ikq=0SoF#@!IrcsE$n)L@bT`;Hen)MX=$s7Nbe zjssWgF_gVTts69O0>p$G@&qX*Mlr>L7Ea{6ieHM2TUa0^QYLN~fUK0rdLuNX!3b@k zI$54)0I<#H6B`TqQZ6SZg0OoG!e{`ppmb0e_lPh+0$TAg=^g_&*EFLE!T~ai=MuJq zc(OTk>=t{Ym3cvtn$towT1iAbqsu2Kq<(?YQj}xhA*V%BRDror92s6g zD&mW_tnq2dQfz{VnpLIdev{%#M7C&uz3?oGLC36BU9~b&T32~n!y2zxpe>6m&pM{Us5Dn=)Ges;Zpo-V+q6Dz25?{oc#p@YWw9-h?#jMS-QML_G z11_PczH%J68cz;JtSeROlNlLe69p;yZ>$e3vOc@~oa+F@GRH=IsiV3XdKbW&)-*+H z%=bGrQW`WJKqrVDk-<{DBVHMrzY?{wsMw4iCjickH+s!x@=D{YY@kWeMnzsx zpn8fpgLtth+Zd zXZy6wBF`&1I3}bp=30%Gp412%Qg*gtTiUUR@63U1u9d_E_CK_@c#@XXDE{{(3DKEa zuN>j#qN)TxgGw`14a(;t7Qojx*s`jd4p4UYC*_~qElfq~^aS3kA=Gy97> ztDiq+pVvP;@JE}uWAeAD7mwvKyAK|mJkOY4oxSVQ)~hocZr^roZ{hoMzkhptvIB2i zcIEu_7gp|?yz;*J6LY5H^7S0Uw2yYQ-*{Cx{BYOPJ7<{XGri-NPFy$}T{3&S`^=*o HUw-{hwM2_Q delta 655 zcmV;A0&xAo6{iJ|B!2;OQb$4nuFf3k00004XF*Lt006O%3;baP00009a7bBm000id z000id0mpBsWB>pHJV``BR5(wKlRIl_Q4odi@fj5qAE1a922l{S^A~6#h!9C9{u2L+ zy`9+Fs1U3aE5Sl66dzzAKJbym*ZsWXJy!xZWI-mg_pCKDXMgsnyuQBv`h(BUPjP+% zgTa7Rvf1qUeC~F;m&?Usu}JKD>~=eiMiY%jm6w;7(P)%Pr4osRPN%!azs2cvs?}=M zYE{W(GJe0G=GW`>^?FqlPNzemP&^*r@Avok4`4Q%+wHbC7z|pi zR+r0#n0`J!K7S5}13vZ(m?#7WbUYr>Pp4BIbK<}Z5YW&2`+F{zBcoJ!#9%Nel}b-f zPjn7YY4}GnwbXLCe13i=Bg6Xw?uiNwJ}M0<)yiPI-O?Vwp^-<(rO@D`((z&(`u#o! z7=#y#h4eWb4g-OJ_<;NIcuaAc)$8@Q?k1Co&*vjRVt>R8j9kJ_CX)__LwvwJVx!TB zm<@9}of?Kl51Y+qwOaAiYPb1(o?fWXY&Pi*a7h#nO!&7w(`vP3C59uGW1&!(&1RHs zG#VV=-rnS1 zRnKnm`+raeCOd;w>pc350LxJZb`!^9F&+Rh0U9BO1EBJGvX7(yq=0~f*lxGq#cU;e z1Dp1+fH1GZQ5K%mqyQYTCXD%PDHLkV1o83G+F=v diff --git a/Icons/DarkTheme/VideoPlayer/FullscreenOver.png b/Icons/DarkTheme/VideoPlayer/FullscreenOver.png index 0e8e0bc70d22dc83d3c72b396e897bc37ad3c41a..3f58d5dc5c2de6a060dc7ece1f1c71b66cfa6897 100644 GIT binary patch literal 2961 zcmcImU2GIp6kaeYpd}h4A;gDqh!ITh&Yjtrou9Cf+9`A!7uU9g7X0DPojcuu-I;M_ z+TGUF7=&1iyi_!b#5awJXz&G%f0&pc8qgS{MC1X(Lp3D+Br4I6;GLb_X$vi_h@0&0 z%st;dKi@s)+_Sg1X=BThl}l2oR7<{7@23BEMBhaV>F>hx&upcCi@nbNAeFjhS@d0y zI&g4BDz(J4d;7w^!u=X{D`{l921(Z{9z~~8YuDF2gm;pVG01@JejT&6rcnhI5+bHnDLa8y%dvI68hwtIIhLtI!ksy` zEi%aT6^cx|>k~#zLx3TKjI5@4na6@`wK4(}1P&@3p9Q?4K|vEUOyk2+bG~V5-TH=x zG5VHcOJV3~99OMY)74Dc^#?d!RaFiOoFD*-0Ku>mq8f05RZR^#39xT_q3t?Mq!AhJ zV3=d6t8ok!FH!3R4W1}tTn%{~pN3IPb)bn8oHyu~>&8vYkus?eCk!Z-Pq1Fe4c(yR z&Z0UIPcuNdEff+PGx}1gBqoBeV~B>)AY?{#&^zoAuA2nzppQw%5Os4^GnydmCX;;5 zV>^W>n?u{0Wp5;z78I%3vp^$B0`;_ZpP0+v5(kilef)&94B2+WLkVF$01Vg|} zs%5Gc;bo*WwLRe5wDwVXs@BLWlWLR=%x6rQ2dZW8lva@k29`{q$|5wgD5FBfVwvc) zHL8ZXgrfS&v3z5(FUq>|V7w>`wD2LvN52hu{~Yp3@n*-S6bmd9;>*Q`u(f^`#*khk&E( zBqrNfwr4oV`B4_Dt(FKS>nd3r!vfa|tH>v91C-%8tAd-&`2Y=F-E~D$Oqv)NV3d&o zvP1-s%8LLCv}FqdF?d9ppL{Xhr~q#Lfi(p z%R5B;uE$Jnh|Z>dhiWtRg8Akky;L>Y!jq={@7ix{-~F#`Jj$AS;8P~0<`NyhqQ_+L zqc6$mNE}+JJ{=6b?=D@WL*>_by{%W-cXIsg+n<8Bc0B*kj-Kwl3l6pX_~I`0%)96Y z`NR($A1r7++jaLV%%1dnyU(pYcxKO|qd)!r#rUh+P7M~{cwG7mTr8dv_g(m?vTgCi z@FOqWm>N5--jlbM-c|no$kQKQ_ym^vx*o)DF6XQRujN|ZKSz(A2NQ=r+dqEfrb`zO zzx?w{V_j?1iRX6c;<4i!pZIwB-(Q{3caKecGuEl!d^kuSt1bO>#UI4zm48$t$VV4(XU!}3LbmC|J3IEnq?28FPD!jY$H?~{{XWe%oG3s delta 663 zcmV;I0%-k_7q117B!2;OQb$4nuFf3k00004XF*Lt006O%3;baP00009a7bBm000id z000id0mpBsWB>pHL`g(JR5(wKlsjuGQ51zUquzjTeBdp_N=aiaXeZj(`Dpzof<=Cd zKfo@9h@hQ?DXeT1jEckuJ`hA`_;qc|<#cH)O8k5O{N+miT zk6*jZ=W|h-{{eZbaAYS`Dm>X)4ug5T0FHo>Tacs*2PS+}X1TX+w@U%Wdc8(w*nA+* zR3!%Fd%fOtI>jt`R`X~y^7(wEkkN=?aEHQ9BoZEvM}J~K{_XAU{rw#aE|-fLtK;!l zhOA%0$H!NY&*vGe#bRl-S~LZ>RRUBhbHf0nUj_&;Un-R*lL^~48Vw$s%_cO0TN)~T zVAx=oJPXM1>OMU^RjXCQuMWDfUKth(d|f5AM+0~x?sPh}T8)6-M)8W**H@t-VV+UkpWGZzA^cCazCF9a-&XpaE%5JgEvMK(kVGg*Oin;HZygBN zHpsprv&cJ@7uAqWkW@dgg+m(DMvw_+PR>R-DUo&t#-TJx(*)@vC>Ez&JW2C*2913%=uVdce4!^h<_x~M zu~O62c!H>?sIXNqHdQYnD30R@k|t;xhZ?w1shC0-SBw#D7CgWZby+iIRY5I_f?q8& z-53ltnnOs7n^lY$P7pC7ENBE}Bdwewijo-D)5`Q<#JMCAAP7Q0F%76o#dWn()l`jA zwG-2E@m&rewq9@CM~AV5LU9*{nN<$chyl`}w&APP08t1GwM-X5RyhoFL|Zn7SqSdn z`4HQodVI4f2RhknN$yGtgyl|DElFHe<1=+2n5ynm)nFTW3ffRaX}gU?N6nHINv$wO zTRFrw0FPh-HwKBs;G`2L9X^WYDVDdhILYuN8CCVFk{qbKU)90eA?@I{cB+uZl3)s5 zDoY|CQ1y@iYaoY&5AVC ziZ}!8c4(3nAuu2y34+5#GXAz`@^u;Zz7TA0)rv}j7F`tOci0^gPBQ@)?y~H-fP=;D z0YC~YLkfb(VW?GY9-4t6308l(F)FrLWU($-7F~4Gu<=QPvVLRo;x6QO#4{8bLQG?* z#g{0m)8Xubu(A#Z?tUtk^bTZF`9yCu@gvGY+3H0kPio0)NDm5fM7jz4$?~?!d-R+(OK|@ zQ2yZ18G)r(n(^ZZM`aNCrPePBuDwYaL34o^% zfpwaUs4C?^Z&wRV&;@w-0Nrq70bLEDf~Ey!F+xb9T#;fUJ>DazsiJo}wo^Y6(B*cp zwf7Pa0sRmCby=i`8x)=K>whZ}VV$Yb&LQq?s_45Xie$D`o5-=lcho))%RzV!@o?(J z=iuL)SW*A#zny#*Ya)rayIiy_!5fS97{4pQm-uZ9D3IJbyi0BT=EidflJHTkC*9{- zv+Yf)_R6HB>P!1ep1D#!ob7eEeCaPwkf(d#!DT(p&L5pHzAkTY65jpH>~2qbsG6R2 zIknX@S5^1?AlWmxZtualsVnl|YVp-GO?bWWO6!!=e%HsgR<37yA87h=W^HqdJTSYi z=%>b(%jT^|`cWtC?&FDvnr_}s%gy*sb9uhseQo~A!XK|T4;1(GNtpEc>=`rqx2#L8 zK5)Kj-~I+=d*A*U+A)WBj%~yK#^uP{XM#gtn|!LQ&Oc%3u)fPj?wD&kvMX3TK-}RQ zv*=jn#?wKzL20?TW!MS((M3Z}l_gepyL5Zo*!1&jM!kQvd2?Z}#@60fs`g=*|CpHl z=Z4iD3_+Kz`1Zo~H&(ujZaQ*tS<;f7$fRf2%l1KgUOF=eIk$D5?WwG3FuP)=C4xX5o zkwd;%-;n*@v@taw|FGav6E|qh;aw9pO-0U`{3kPOZ!TV2b3AoHT@gBD)xqCd#;-%J xf7<=$-*-1C`5&H?=)GsJJwIS^>#h77kM^Iq%lkrd%1Z00ihb@2&s< delta 631 zcmV--0*L*Y7mx*zB!2;OQb$4nuFf3k00004XF*Lt006O%3;baP00009a7bBm000id z000id0mpBsWB>pHB}qged%WxutIGoFupW`^ra8CbEy}y3X^M5|y=k~so%jIHx2>QoI zp}+r&Z+9NX3-2`%BoGL25|gHBwOTEc$*$KcqKT96N6pLSVm6ygrIJ>wMJV8KI0l0u zpU)=}36V%d^n~9^)R9Oep-_mTD7)Q`EIb~sP$=y8d!Nt8=ks&99O^&Cw{D3Hu0SAw zXzWd+(ZD>P&wufF-0gN}GMQ8=bvz!E$t0J{eRPWlvS2V6i^YsaBgu!x*lf1VX7hTz zkw^q{Mx)VmIxUq-olYl`-jwJKN~_gsu~@#ofGo@9^7EZ~y{^~mH=7MQH3XVo2T(IZKWP({%s})o%JTNc=(tq53jbC)TUGxlpzu(7VaG6f0 z*us21M{xwuEEbE&WLB%yMxz1olTN3jR4NC9!EiWqI2guRW&WB8F9->_1tgu`L{ z2|}R|dvHD+4v4&Uiw6(`qhs~xq*klJ-0gNAj|a1r%Vlia@As1p5h&DsTp0{h!zq`` zx7#i8U@(zfQ8&V7cU+=!#PTITU?zVM{ z!GJOZe6a<=2OwKu!}*BsAYu3jl4TJ>CL%!*L`7T%VuKJB@VmAvLz&1K^zh~JE&!fMgdhsk1!-gZl@EZnU&%JOX zT3fADgsf0-x*%#%2avQdbi|@MLStC|T`?Vq^Pz=@VWpyai4$A56SyLIiJ4rG4(gL( zl~P=9!1DT%3bB5^$Vh>oJOa%ME+?M)5XhV%$wHaGC}j-2 zd5J2^(gljDt*v#`Ivtu(NijUnQ#4DlEQt`LS*KbcMyh63p9ViPMMKdoMN@HGBM58N zmX|iUFNs9JK9I0w{@ToL+5262>Kwf)N;ns%0W9lg8>*nx&al z+5oE4;)@KR*am}X8<*q~jiybQR$&ctBNdQKqRomr9a3e`)T#{;7S>FM$flNz!>F%~de0z_=)0FV+8 zX%KeP5+@^8cD4ni22lcbe|ZTewHUIiE>fLb%wtjG(-dR>rsT6OBflV?p(-fEEP>ng zl8kCOnq4TYZjN(usr6DN1|uQAf}&$4iSYd;vo4m{qs(qLp;$3d&DEu5O*veUdWtA` zqQ3+nCS4Hi>Vy)JT2?NR$SVt3Qf+M&M8W!ts!hU7O}1)*0ezJy!k6s|Y9R6^sQGK^ zjGJRQQRGOM3vwjubV;N~=4g_Y8JXu(>6Ll^xM>M7k~6;LZ7I)x}=Kxafv zt${|rTeHET3R&{%;ekdJv z&5zykOBJt`2YtW2T<+VrXo!%r9RI$J$S7HG?9kUQhB7CX4fc_3k8EA;7<9|Ds|kni znok-#$3K!Wff!YIP+xIs^9k?4F-`F!U&N0d9R5U6OT~nvasIc;2jn;R7q$5A{q)#& zOZc+qRAc8ib+g*{Vt7+$=3z_d)ji{ymhGv^pSbK)J(;n%>sw>X?8SI-<6D(mW~-Cd zH)VIek$Ze$EcX5gOdpEn?>>^%dx!X0#C_e;HPbhpK7D!~eJ1Pd!t?QXJmPNZl$I1M zYHn+7ZOs~jHRs&dKBEDsnzkM0jxL|DYTKL>@wmD5%Z_c^)(-jZRQ;HS&HH+=LnmV$ zw_}eNwS-?^Gj(J5_0QFJ?;LS0c4NcJu5UAU?vK1PcFSumYgg^!||+T)t4-a2;duV)v&dtk?+!!tMT r>p9T-^T~DRbC)+iH0i6Zt}bfd+M5==H*x79`(hs`Eb+fuFmLhirN~EK delta 733 zcmV<30wVpj81)5^B!2;OQb$4nuFf3k00004XF*Lt006O%3;baP00009a7bBm000id z000id0mpBsWB>pHib+I4R5(wKlFdqLVHAeldux%3*q=%WrAdKc5r`Cx(u8u*HFym= z@dCt&H{dlib5s*2(m+VGP*kKz6qZ7knMd*WJloxob3AZ3?|7RQi>#deexKhtC^1~UzP^fs!QjUfxIR8U zEEY>J7*ujigMa6t1jCYeF{s?}o7EJUmbU4+UX~G|7jl%z@mD9{&CPy~E*%L?W?RESt^JLcLyx zC2ekQQUOU%PfvEc{rkyPs(3uksA;cQEJ9G;e!rg-jYflXMB`!jx3{;IN`;xjVYbv1yk777`#Y~k5HH5k zuCK2nPp{X*~*}So_LB8p8sK`1y0di(1KsL)zuh)M9;o%Dtm()Nr P00000NkvXXu0mjf+l^Xa diff --git a/Icons/DarkTheme/VideoPlayer/MuteOver.png b/Icons/DarkTheme/VideoPlayer/MuteOver.png index 4ac1d735e35095f941b8d8ced17b2a8458bb6597..6b8278e72ce86a5cb060b65d8c5537ccf683f29d 100644 GIT binary patch literal 2874 zcmcImd2AF_7#}2oT0}7jK~mx{5W_V)$L{RzOuFUh7P`d6(w5K?2+qFuW_Qxvnd!`Q zciW&QXow&tHRVtaiGnB)K`J3CDMvjBO6VU=G=c_E6GBiL#Yp(0!8d!gHCpYxT(e@?#M0@d1VKy;RR?SF?_}q{I_AyFhH#q!fe>6 zL@~9x%|vx=E9ya86A&S_u!1a4OISey*)o|<#5GGw2dIo*3BNnb3`J%jc2j^_>=+~) z!Zl>2ZX!~2u{2;=mh_1(&c^}Xrz{|OmggDP&v0Iv^Ghr*dE8{~kHY3ms7STJr8#5x zD?r6;+mIM0l}fo%ZkKLG8BP>MhUFQar!j)IS~Xiv)0#CauOWymV5)|#>Kf^2lp}hJ z9iXtQ*%%T=L9J%xc*2Y^Y1v>n7wg270YXr~87*c!V;lko#ZdxjwuP}=0gGu0hYRpw z)g}@Jv}IQ%u}8VshDBTTtp;Lhk)^ko097Ti#aVgBEV~vBP&10{7+%QYrGc@>WgfEb}YKHg6&oCnadM}f2(LNA07 zKjb)1et%F0ElyE6`?C!Ob%1pgvf*e$03ea(MITEG&?C~K=u>Fk=VcL#wXq_f*Y>oj z;vSddgS9$dL97w@B9MiGmj*oa)6nlhbi^-;w1Qa98$o`~?L!nfV7F3_>tjsJ0+WFaTGH=VplN5oVVoU{asf)tN>sH(VQSE zGyonSEh>JF_HsgmM^F&FeqTQH;anfmL;u9}9IYTGYf*$xA%-d%4A8YCG6&_tkWCpM zKFG8Jlw#@$QZ|gZ3Ni)BBsG{D>4h35ZJiwG*rIkIGSxw}4YpEnf&35cjhLj-4UppX z^*<$van96i=P-Y5s_b_#%j8lgH<`0a8m@gtTZ8!UlJGPv%*Ves$+GtKe>)MKs>uXC z=yH)?!Z#M@wQyI$ABEc%(r|H`_%79M_r5?7V?v?e;(Grpd$%3`a^s?DpYN;K^{LUZ z)_m#8{)LO0UtaUVC*KGqm%H(!Y^^r+9BodSQTBF!EIGA*?CEP2)Wsh@h<<$MR)2F} z;E``*-rd*c_iymuEAt$< zRpPk!ztdJ9+5YaTRoiDDN=>>Xf{V?2%6pC+o<7!J_HfsGJ(uI&-W#4R)bbl`UCP#H ze>*wreDjkXp&e+G{Jk}==ZnsVh?zenPd&P1Tzle5Y3Jd2$8WE%-GPWbR=9W5s|VFm z^LT@CX?!~|4TO7NJNWu_G5E$iy@xukHy!x;=9II~of+Rg`@$2CpKmTZ|5oM7ZDfhP z?)k2cNlWGi_VsihxOJjs-IbGj58jx6LA?4)a^+*2JMZm1dh?HN)L8MAKEqsh$NY%+ i@M>Sz#Qn$ay}16?GW%S+dZOF8-G-`G1dlFxX5*h)*3R7k delta 788 zcmV+v1MB>{7OMu3B!2;OQb$4nuFf3k00004XF*Lt006O%3;baP00009a7bBm000id z000id0mpBsWB>pHz)3_wR5(w4lf6rNaTLaX_bOKAOD_bK4j~yqK~okeB;?TGpx`1n zv`4#0G&t2#%|Q+2|L1?2APCiJb$54H zzPPx^`~CerA?XZ=pT2}hw|+#c)lwygVYys>d3lktTdfvJ1P2BNcs83&X8HK|Xt&!$ zIHD4tBauI-OMeE$(9qDv#s(QrPfyR!&&;DzsjOBjO+bgIlu4EN`T5ysG80MGJCl-t0jE;^1 zjYFSYE{C>vcXw3vv_%*+WQ?DdPN(T6ITYhOJUk2z4i*Xp2BE5VKd2H8hp(=#5U_7I zH#a(+4u4{hwApN#OlE3oiuvR5I2TKmoFCrF$q8gQV1dz=d5A}&(R@Dd^?JFXq@q=)(}4oV zIEYN}@$nI8X-_65CeT)}+wJS?>&0S`CPbkMACfScOooQUsmI4i09UWqUtV4ctSFx- z!q9;O7~+rw1st}FGUC7iDmi@Ffj~eQ8ykZIFt8#j74!UMQW;o`3c+@}{S6Wi7vuxG S;|+=c0000$4;!dfv{Zy~O0f}V=g#}lY)hI=O+vSgn@E$`Lhs(WlMLCN8E0m* zn+mm5L9JAzD3)S>ih`xu9|~eYYo$;`!HS?%REQF#)T%!e3xa3%F-c0ciM4_Yvomw= zx#xAi^PM}-_V0M8ZRNU^sZ^@1ww^@qiC0Qv%PY`ywd8|zD%G*2>SHoaBc?z{9XG>XdGCFeajXoxOUa>} z-$loqo_zrw*tcVl>>DSB#ctWmbW}}HP@)lLs->bEn$-+j(`&+WJj}C9O(Yu6u${3% zW+>Osba??~j5Oj1LWt3fw4ez@)a(Zt5s4y?bY4(7K{t_T$`aG~v0yH+Y%`zT)-VQd z8Fnm+e3R!Zl}frIrM+O37YxJTk;sc82NGO3=|;H9x#9YzhAa(9;P{c_xlF7P7rb(m zVZqgU3?)BN>xPXyLB{wh_IV+V;+SfJ7D?p%a!{-pw+K&*v_#z~1X&@G^~b!(3&*?` zs*~wC1|YY&Tw-HhUrMFKL>P5XKp2gL%qtxZPWqJ3)6gpigmzDWo9mm=gi)T(2GF{5#=;uHtup<%d3R#aSV+G zG>apeVF5@Ihcpf;gMw%Zswt}+l1zl^qB+lU?8$3H)j_10l4v4%jwry`!Vz9j*dnIw z1tko7;FRzv<$ZUQWs;pWyS$>I^T%4^n_R0c{T7d|Xr3sv27X(PFEN}&)Se&8B$WpOnAl+t} zc(+YZ11{mXzA~)P7#xaGS1i{DH4zFQ@k0FHm>*tXerEa+*MSs^EED6Up49>1E=a4Y zD3a0`?{})SIFxlDJ7LWc5iHeK)Mkd~&H%T}q^uc!Cu~dz2n-v{vlWjvo{G-q`Lk`v zkRsKPA<;zPBumDejxCLo;9W`~5qdLa1E*X-IHBQmA zLP3%(B4cTmuA0`mi~RLtsnLqryTP(W7wGovWo*p zU2SEI0xYgmpLMa&v!eTW>L+mHR9&9+na~D8X49(jlY)e>hIY)EVji!s~vsJ`G{??1qEjz6FP6wi~m{I ztlRhgZTF2!pceS718#E&PR;RSa$bj*uyPo3_}rd~gIJUn;ww{vT!UU}o-rSgjXzbr}pa5nh#)%NKVZ~y*H zxG6W#=REyVUf6aj{c--ouP650Z>NtvadnzM^X3PuAHM6!TQ0tn+g`djGQQ!h@}92c zo3>|1#!tR`bb5I2_+|b13wL~W@%tAqpjEpcze1Nk_o(p9{=2_Cb0l>je`r0vkG=iZ hzWoO-m4Etb=gX)2MyAA%y!dOUw|htS6Pg*q3=aPPd(l~~%1pP5 zYXBAjxCLMxfMo#ol-Z+aGbVP_m(nYHCR*zZGNI>74otKMr_iZ;-}IpiCNk?(D$hll zzlExp*ivm)&OpZ)Q!}xlPTU=(l<1h4#mR-VPGTl;o@bJiXq<#MjZ80UPF@p%yod;Y Z@B{AD8Aj@g0G9v&002ovPDHLkV1l&~c=`YU diff --git a/Icons/DarkTheme/VideoPlayer/NoFullScreenDown.png b/Icons/DarkTheme/VideoPlayer/NoFullScreenDown.png index dddaec903bf767c1f35933236486acbe18926b22..a7c22829cd90b5d40010d99df514e2bf5e7dbe60 100644 GIT binary patch literal 3115 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 delta 671 zcmV;Q0$}}$7qpHOi4sRR5(wKl(}kZQ51&nakzpr4tNW-(k``Nq2SQiDYian~#m+iw{r_ImHh)S!pZ}%ddc7)&!YQBM zK{%YMoy+C;W3gBwk%-M^yId|B=UeD>y3JP%IYlyuQB9=X2&tKE$YW#3ZvcL-E8CiG;`i>*#j7ED}FaI56R> znPqS7cAEfYe|&t|9Rz&{#|rqd}=hr_{)b(6_NhO91OzZZkG-9a|`1ox;IsC2YW0Y;*oqYQ(=z_$R8$nJnmNBD0HqY=KU!Ubpy2&36-b~+vL-_h&! zTCJAQkbiOFRJ>j{#e6eQE^|7a5~eoJ2T12!x>~I$^B8nG{R2Zw6y@N_S#kgX002ovPDHLk FV1nd`HxmE= diff --git a/Icons/DarkTheme/VideoPlayer/Pause.png b/Icons/DarkTheme/VideoPlayer/Pause.png index e7d349c11a6802916d429bb4f5ad84eaa6cbb776..d051b41729e0d74e0e898938382e40eb1b54cd26 100644 GIT binary patch literal 3054 zcmcguZEO@p7~X=!f?`O(Km@|FXar$zXZQ9yJqh$$TGE3{DbOk)bF;JU+PmFlciUbo zL__!phF}vbQ36C`P~s2xp;SN-4Mx-mCTb)~6n_}?hX@7?CN;#_`|4F&+TcgiyW5?4 z=KXl)dEc2`$rZ~cPr7dsMNyOM>*9^%cXs%x97n#t`t@ov`I+d}wfGcu*VOP+LG9Z= zgQ6yRR#S7(oM_OIlZimXN#RH~;}SGQRV~iC5VhlgPT^L|jxkr>I?d3Q5o6X$36OBB zahp}w1nn_qN$8Mn zP9*7S$HTN10W1Ol(25q}6&?wSxri2kAaFqCc$wu@9SFJ@r3-%yapxJP-WabfI3sT{ zrY#6uo#VQ?x*}cCh~u?#yryX!5I8|#34-;z?Eq$3+n-mo5XV09EH|(mn+`3)l+zK! z7!qnehm2b?Yx@PB2xD9px*Q(?VNN-qfl4^H!%OF!8;HYcoWXYB6D(iCx@}J2_-)Pz zrc2X991w03iIR_DW65MnF8rXTlcZ4~WLUJ{)a_!f5&KSuhj2|N33FaC8$W2ogM5x* zIf0iJ2bMX)+Hht_QaEdk01anKP*<<^Fbo{8$#K#}@g$2Z(t;QP^!&A!Z8%;2f-r}| z0vv|{jxj_?Q5HxnFE;Ut&PR0-upp`fkcTE5!!o89glAlU;e16wiY+N}&-+F8BYNjn~KOrneCqDUn4dfN}6jc|QD#*h>umSyNE03Ze_ z%mTwOSXCB9R^wrmRU`-$MHVGfmW%7-4(bTS7Ou}1p5Y*3W6-Ol$XJ$Do>jDz!~$NF zSPjb}YXDx81Vclzoacl@v(mFj?Zb4r)i5f9SQG^fAO#>+0a3t0QB>I!(gapAc@-)m z2~83hI^6Bh3<(K_^%Z0I!eDc#x^zc=P!UMs1C9^B3-c|b%nwelwk<+2aTe+&&+01D zy9lkaBt@mdc+$$^baUJy?D)Ar1g(6gW#~-U%EDsP>nxvWuDj4{R^d&Br?f@q>Pv?x zp8^Wii4CSOYz?!KW1}o@wyO;jvTmW;Jj{2@pbL6(d~p@pcS=2yA_jDh+}R)89@^b zq-qMwrv%7ql4!Citdja7N(QDTK|v)2_4j=!CNrcZ{Kv^4$L_>lnXp{wL2{B}&yO*t z=VWN;x@imLs*CHijl%gQnw9K*;n;Pf QD!h@`*Q|&iS-NrSp97!oO#lD@ delta 1299 zcmV+u1?>9n7n=%@8Gi!+003c4mpuRg00DDSM?wIu&K&6g000DMK}|sb0I`n?{9y$E z00F;HOjJc#Sy@|KTU}jUSXfw7Q&U%0S5Hq*IXO8eCnp^p9U2-M92^{0R#r|lqQy}eOUQ5hK-OiWB#T3WZax7^&^$jHdU!^6J5zS!8SVo10BdO{=S`)z#IXpP#(EyoiX1jg5_`r>AUe zY|_%wxw*NFjDL*(|NpA0s(yZc%*@O&F)<$>AC;Ar+1c5#v9WM)aFUXeOG`_xuCAh@ zqI7h0*4EZ#Wo5g&yGBMv7#J8qK|x?(V79ildU|?pZf-VGd00QMnL_t(IPd(7*SK3e<#__8p5!3{@5Ks}21ZqTr0|x{I z(Sj5xIIDkm?J(b*pJ>6X{FhKURIN(^N zl7I60K6r=Rj6X0O@H6fqucIqSDU~b-I5lY;8U5%T3XO)tW0A3Ncr@S{bbJ~yl4>j9 zqA@(^@_OQt&*5+)84QO%N5(xtQxK0uIWQ56qNd5IcxZY?(l3(EOo!s0$yqcSn*ejE zx;|4dJ|0L)I#$(WAQYdP?W;@80d;CVy?@{iEH0ta-5_R=?xIVJ0rx_BKJ^u}5}EAs z3c^zTt7~ghdc)eCMGwkyvG`ljmQ`nYkbAZpNihqrJ zvYma~fy*_VK6JSbZ2LR1y~d&{!vpcim~tK`_fHC^e*a*&M=JqIb9;3@O(~uQ$gf^!#{MH)~WugbaeUX5B$wnPyl4La?wbsqe_~ll~FZi zES6tqaP%4>D4bagfe4m$Dg@$f1uyT#8X97yQmOKJTV7uN0qRl7%p6pIybJ&U002ov JPDHLkV1fpdQUm}1 diff --git a/Icons/DarkTheme/VideoPlayer/PauseDown.png b/Icons/DarkTheme/VideoPlayer/PauseDown.png index 0bdd53d46dbb976eb103a4ae5ba2a0542ed64e26..abff786e3feed380f4f81846f6865a2b3ea5a1ea 100644 GIT binary patch literal 3000 zcmcguTWl0n7+#1mP}7LP7-A%jL!uCScFxSsJ*-%}#Wr@!+Agv+NIY}qOn2z+%s4aK z-7Vq43Ml$wOyB|02a*zfkcctHNTMbhj66Vmu^2ExqxJ=YhA7dXcxG?iYD*iuY<6zv z|IdH<&iDW4?9U87+Sze;M=TcW?C(nr(dXLeTCtqozxwIN9DS_x`bL6S?6%d>wJdh% z@S0ex!?&}!Fqamhl&Z^9?T6N6biF@`mh-SiN%v7%E0MG_*WQY<)uUP-bwyE=W3hB=n0sf1%mwmWjj zQKR%kgp|?)sw~uW1?w1x^qE)c`@&2~h<&!Mdh}6bZ0zd!g+*Ok@!mZYfN% zG}L+yMXzPn2^u(2#JCFbI6e-eoN9_DZs~a?zff~-VvZC@kvL&Mb@`UAmv=)q$h!-e zZi(kOpxCCJe^;1a8U4q<5T#xvrT_5Dt-9JeM$? zs<$SGwza_ANHQlWQn43MjU+8qPw(*w3SB?zx`ifrGEEd2L5xFY{WjY%-Ey!Y%AqlV zq)p^Ff}gbra{HSLq{vU-nOaDD2SMwh5XkxuLVP7opolm1kar76U1+oUn7yva)t z$R;lWq=*tghQtF?BnB}=i9oD0=cim;ipUntuNR)_Vrpa7E5fEI3Kq3tCIlc0q5=%4 zn7|T=2BE^MJXV|5w)i%!eNgcq#}ZlT}nHM1O|y1jVvB0n3yu9Gj9>v)a%i> z|Fo$`9IC<4c5Z48(Zg8u+Byc(kJdqwIJ9nkdQ5!p$YaCwh4S5Tkkk=tS2?Ir~j4r_Z_vrRX@Dg zwdaK+`PXN9p4fU|=GUox{QXn+eD=kYyVRNF`l;B3Uos;Hzy3jtJ-p%j?_Q0cm#=MH z|IM4_E8EZfO#kPvpDL}sI^DhUf$23@)=nHcdhXhC>7-gcT^+mhPM3X1IGKO$%MUK^ xQa+w8b$*gr(LJ{6c=25E+~F&~;p=bQzUQ?qcwqP5x1+OlfA3)G*dtF*{s|7~+y4Ln delta 1236 zcmV;_1S|Wv7u^Yv8Gi!+003c4mpuRg00DDSM?wIu&K&6g000DMK}|sb0I`n?{9y$E z00Em&OjJc!SXftAS6W(HU0q#NR8&PpMLaw_K0ZD|LPAznR$E(JIyyR8Sy^^=c7%k4 zg@uJfLqj+?IAUUAh=_=BadApYNcfGy6tE;PJWo4wKq)SUnKR-WgY;4KN z$^ZZVnwpxSp?{%zdU{@7UeeOib8~Zof`XBek!oscMn*nRdq+n{ZEbCbhlesU zGR@7+G&D4ikB==aEfy9QDk>@`CnqQF zA0HhZ9h4%A;Q#;t32;bRa{vGi!vFvd!vV){sAK>D0?SE6K~y+TRgL{u(oh(HuR1o| z#0hL%7=QASb23x}aYKe8=`1yK5NaYw^5I7l&6ETYl_<*o>@MQzoSt9a_dL&e?*%>j z`uYbj1CA3$0>=&5K!0D~vmfk1ViZ1P8m4J_*ffMw82M}g)@6_!FT-L$Ua!afYShUYD1bQ}V1En&D1Mw3JQH4@D2o2cDc>|Z&QmA> zm&+BHF^t=Sp~+dA3x~rTJv%pHv5gyM0xrPwF5b+s!H}O0OH3CzLW@)LENA9jAR2W* zi<1xel~`n9F&>XEE<|FSxFk3&&;i(J0v~?u@hP$86;)jYbE>)$k8ys#Z5U4gmM4Z7 z@PCGW%dD-d>J&Dqs_SdZF=aBq3=u#`zzyu(W`ubUQ1x!Dq6#!7A||m72n50GPHift z4{_|dqLN#klNuJqchJAPA60b+k78Ofz0DC|Z;xo@%dQ+8 z%;l{I2P@fJE>CS`+ywY^h|7gyshmB^AAg^m_)e`SpO5oLxpJvkka3_N@-i%*<&G++ z=NA{^u5xj4ep)%oofV_`29jAQ=S2}PNP!;Gv!RC yCqdyKPk)}y^7;H3nlGjRsQ<9r?JpaGqW%I6O2FV1SalQt00006H`2@(h}&m3`1=m{qH5J~6k@h&5=zansy|cMfx`W2L!`$t=qH z-L&ZRZ42o7Z3B68+ZI!^xYc*Ct7`*qxc6$M3wFKf#gb=G}2~iPEtk^4Aj4&3EDu^jwRCR=PSz?<%4%`Kntq*2;o6g`X z%@w1_*9D40Bp0_wvS0;DVN(W!l-8i(r5xQsdktj^{FsOL$4B;v}XjuT-M4aj0WjAo->#Z z>g~yqV^1+RmP|;B)|@F+V@X@p*SiBsA}`2$Ua3W%Tnj}O%L&9T-{`oOR}ELhIW#BG z42fu(10qR0O7fzd7ZqKUbQ$qT(h+K?W|y&9;Na~(J|H$%~4I|>3v_F&PAcchESUN#Olr=-) zDa8h_S#pXenym2#vTaK2#P`HjM}JQHk;d!;GM&{76Wr(%+~ZQ15k z10!BDu&N;y8=~641fsb+aG>@{sncp4l?4`MtRYiDCa)j~@kEwY-Y_-HCv8zBicFA_ z#2g#1c5DVhB5{4CIS92rI25z4RA~$<7z!T=VtjAPho_N`i#NCqKn%`ezBEu>54{Uu zO(m03vN@h}YP2+zaR8mL9thStCBqXXaVv|9P49C;;M{1l*Q}>on{OqDt=E@M%ti`k z%uZ@?&0%Mfg`62=4YSoE1+Xr`+J;)_*-@1QbWH&ep0+B4se%v5$fZL!ZJfelTr;K! zT%oeX6Fa5xwx%WxRin0w%~tB2p|`3Ci8|1>Sw)uYdJX&E=OuJ^w$k`Nyd8f`%M zYlmojXBtTM#%ojGL-ome!Av;_o2m{ie43`NU@R#~=)TlW0<9%z>V|Ddyl5*Dl`&N$ z3;JLq8t*>B%95yx=J{sF)ncpy*X3gzYXD^)d;n8nzKe&~7;L+LEiBn4l4|YAff9<>j zXTLx5_2}5{rTtItS#ZPg^Ib15IQ#y>74-AU;M)7;57vEZ9r$$xbEO3U8=vjVc`rP;m^pIbW@X^o zhZpbmPruvap6iAGPltnJPybf&kDlx~UM*%;ofdNLSFf-9<%IUu%BKcz{Um(k$RcUS zOX10VKfb-!+5gPhbmo-&@uBjIJOB7%^$&Az8_S(pGUDuv&(!@r1DRLv-2B*|(CO8u delta 1279 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 delta 1293 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 delta 1224 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 F_cx)WyNLh* delta 1308 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 literal 312 zcmeAS@N?(olHy`uVBq!ia0y~yU@QZ&c{rGXq@!P&3y@+g4sv&5Sa(k5C6L3C?&#~t zz_78O`%fY(knb1Z6XIG}SXf+KTvSw)mzP&iP>`OUo|cxDot>SNlar8;pr@xNFE1}A zCzp|tVQy}2Z*LzL7nhuzoS2vx92}gQnwpZ55+5I*nVA_A6B8XB{qc(48=%RY1s;*b z3=DjSL74G){)!Z!V6mr*V@QPi+pDKVTNDIbE+z#mDgASS%j;ifRhzM)$?RQw<+tPR|vd zd9pmPRiyXb|BWdJTy>kw%u`;3%kY;rcs|(;==5_dH>)0 ze}B9;X3jmkZ}*Yil}csb^i+Ko-uvO%wd*1HfA!#Rx8U_~Jar+hRQ5b7o*k9<-aibB z9YJ$Gn{PbtvZ!07Uew~%UN;7Gr80K17gM&#GpWVfL0FT2|NIMC3cQ+p-e}-PJjoY= zskMa9t(|MKwMFK5^2u>&tmguQF3+gc>vqD_?bYNyUl-P5Tal$cBwMV>6GEUg-H~hJc;{Y!YXMsQB ztf1Us6z>Hipn_6DV|Oy)G>ejE6m+b@H)+SO@>6$ z5VjCDnnZPp>FOrJnu~D`ZA4z+uigbUo7i@B)fLBvppeEM&FGe3kGX!7bScCj=+ZV< z;;=1CWn|sSs1qe17_`&+S~ME&beLu|WPG|_lfi^)5O^+kY@6tmAqzVW@=e`94#gfK zx@sC8v5D652j}Y%TN248&gX^aMGSasNL3A!8=gjxNezN*O;?d^nG6x!vMgISn8WM= zw-=HCYM*w7xeBd3;OMnH)l&&Yrm5?QGF?M0%Wx1U3|lQ2B@t~G*nmn@)K^U= z#pb-oy3SI*X{k{7SRvxSpkLU6zCnH|48X;zEQx%{y*dZI3*2fNhGrD|GeM7c=Ia4? zC(RWxhbb3^D7I(}8y*{2KLK$`Apz5(@tmgZV$})8H+Qy=HO#r@L)3f-ouM;Cscs|g z*}APVOSe6JOc6Z?SV;LQXRF*_e!mmAQ-RQDwa{XYUoQ2L`o-^3miw29(&3(5YzLcU z+4ka@vt3!>5Xt+LR1QlcKU<**pJ+q)w=7v@l=3NEzQ5|GM!3!iM!pZ(jD6il4#Ot$ zIcJocjzcVGVEVnP8?NrSqB-Ox{%=$-+{zYc*yb=I6?vpFEDD!-G8BuLCKM(kPtuy~ zCs9|Taoh=5zgm>#&@1LmnGRAGNgM5Cq#TbY!I0aArIad24^ZCLL1Nrux~U`6Ask^x zGz|kfkU>;#>mFsc1zl`Ze*M2e+R~Wqwd75Wxp$~MxQy#}lDrKlcXx>VyPl`TS&?Y{ z0q<_s3$|NOF!5cOFXhDfXR{%fAN|)EBTAre_|P?OumyKRu`F+;@KN4tc?gx7z^!%f zzITtnjkh~ppJ*O_XKDR|L${>8JJ;6_;p6jH`FBq|dGzPEZ=QJl*jr@(_3^dZpO+H( zGC8~U)s>&FC?B3W@a-QzJkC!2cujlkk*S%FK7I4+i+c_nytw%Bk<+j3yyiTmee%q) u@$YY6cYfWw`pb>a4!ro>H@E+~x#P=MCg;X(UoypAd-}||`i;{sU;P^x*~H}l delta 291 zcmV+;0o?w`7qbG88Gi!+0076RkEH+r0E$pdR7GEDgHv2{QCe?SUw2Yla9U%0Pgre| znyX!AfJsqjhmN03R%=R9XoZZNTx5StRBBvfcUWP1OH^rIXo8oWtxi^KN>XQ5UwCtR zkXvMaSzvT^e2-04ZFYT-U}%D0Xn|Q`dx40UZ+47NSZ{)fnSV=DYjAgrP+4wNU3Gwm znowA9O;u}vh?`JZaRiM8i~s-tWJyFpRCr!J#6=FnKo9`1;e~LD%nbkkUZ;vw9}I)h zKZvg0%@?uWdNG3PzB`Wdth;)u3e5LM2;uqmKFkb=r&Z4Rvhmi42qKo+Lsh2sTs0yB pM7K$rE}LI3A{+v9MPC*}W?!eY27ZxmxfK8a002ovPDHLkV1hd6dSL(n diff --git a/Icons/DarkTheme/VideoPlayer/ReverseDown.png b/Icons/DarkTheme/VideoPlayer/ReverseDown.png new file mode 100644 index 0000000000000000000000000000000000000000..ccfa45162f93507bbe91863c11219992c197da78 GIT binary patch literal 3008 zcmd5;PiP!f7~hr(wKY(+hf+a?X%80qcHaEo8M-ZLHZ>`3Ow(x7o_zD(o6VTrnQ>;4 z-Q;5Ft=OVHNTGTXyb6MdQm~>YK}t_OcoI*d2gOScBKWx;sf%f?w*PtY?5f@R@DMC^ z1@jBpLi-h$M!h;=k;m(UUJTr|+KE$xn9wDjNgnS6VN?F?_8nOYSW~`WwsAY2;ETc3 zTEfq-&CJuaCF(Hw)Jf^Yzy$$4o)Kx#>xQX2Xv(=<7uI51k)@m^TWZSVLZP(Ko|Pt| zgiB5xBZ@JWY^Sc;D%EWNxTIlCQ*c93Eu=PFtht6Rl|LEOCCqo{T4zdS@YR$Tvn+NM zrQh$@`+7Y}I*RHzj)FBs(-3f=bT!P#0EOw1p@bGsX%fU)5QUPENW5q{Ysvt%u%Q=M zV#Bob6L?G+kXTXcSlE;^GFtJ)%Sks^&Zxq>yvM^V1zxq{jTfUVN*ALMqAT(P3c$DR zcBNxWEWKW(BF!dOz>Lx%TXLuKt1(yRcp5Dyluxbz%p*f<(rk`z_;UxxfxSAM1^$S$ zg7Sb-d=QLa6_koKb|(@}vM8C4qV6zxW`|ysG^38Cmo5Y$i~8v?VMBRxo(~wRL9TBf#Am8Sm zr(>((GkbWx713ppY~p-Tcr2nIV?(RQxoz3lL#*NZh-0IHJnWfBH5`hGVKG&+hSFY5 z0;qk`-7Hn0Vjz(L7^bNNS(afSB2am@=^(CBY|Kl z-Q{A_)}ZjQqKf~LesLT62Klux02gbrB=V*3>Urp0;8x2tb+g=`4FA7(HJ&7Hne^m;*vrFre)(fO*-YO8=TzQ*~GG_$~i#}I320J!BE52z+KE| znn^8_>;4Hv^c)Z&6{|w5@_7AuCvc|%foHWuah|_b;gRy0OGW8$CYRg67Fo8l zcot&&iyR{Pn35{k(#X&HB;n&72>-SvtBeAll9k6pw{(>oT*b)u4Gm%6@Db#)g?!E_ z;g;j5wlg&SQRt$+UC|thZt!oQmu{ttB?cuA zB5~XeXkIPKO32E2Q>BBHMbbt)8L5ZyB-rG(%~~o5(i7CTeUK=(sbLw&a#W76BbtV3 zs>oC|-Y^)U4cq^}1ZjI?cGQwb70W|I<;i7S-bso!pgi0mitkpD7H34FDbrOGkZ>*JACx@%VY7kKYf3C|I)pC@9n<2@cZOfe|*=!x&GptcfUMD z&t8=;|M}T<_2BxC@Ba1F{T~i|vldNVxqs={$LljU_RwpWmhP^eec_kpueYA7J?q@q fbLpeT`tA>Io;`Z}^P69YJNESCOzV@=Z(R8s4|~d+ literal 0 HcmV?d00001 diff --git a/Icons/DarkTheme/VideoPlayer/ReverseMouseDown.png b/Icons/DarkTheme/VideoPlayer/ReverseMouseDown.png deleted file mode 100644 index c57b383d4898d0f93418d3d592fc6ab2b43b3e4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~c!3-piujpS2q`CrpLR{lBn}cJD1Ecc8;>&}g z3!;*1{3CL+ikf578axBjEakt5odeEmG7{F0Ke#7 zTiz8S&(nO-zGL0Jv*H`?RT(zD+GpMOdCl&sRa|GjyK_AJ`OWSOPsj4mb3ZqIyw<^? zH0_pi=(2Ayrbzopr0Jq(9 AHvj+t diff --git a/Icons/DarkTheme/VideoPlayer/ReverseMouseOver.png b/Icons/DarkTheme/VideoPlayer/ReverseMouseOver.png deleted file mode 100644 index b43d264aa38dcd10933b5d700c829196e4c778c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 307 zcmV-30nGl1P)XT;pR>Wp*i2MvO;&49SZ`iv zf=*U!R$q8aRB2gadrDGgTV#GvSa48TZctfqUuc0}X@g*Bf|Z=GO;u~FvdFBn$gj4{ zvAD~!xy-!7*1W{my~NbM#nnw!ZA(*YR9$t`+36$tmtg<^0Axu-K~#8NJ;X&4LQxC^ zz==Kij=Q_v|9S+dq8E+TSN|V^E0>39DA!&HFdG-UR~#05&&;6uJg1aq7jL1e5a}Ib zjE|Fd7ZEUL)Yqm$eQR1~2GM+g$)^3ZB_d?kjjHZf&TnR)2mc7@#2Ekp002ovPDHLk FV1nADgfsvE diff --git a/Icons/DarkTheme/VideoPlayer/ReverseOver.png b/Icons/DarkTheme/VideoPlayer/ReverseOver.png new file mode 100644 index 0000000000000000000000000000000000000000..2741b7fe3eaaaf462256ec0fb5affab5ee4701f7 GIT binary patch literal 2846 zcmd5;O>Epm6kb9PX&@D%6{;#BSuPSFG3)WaJuY)T@!Atb4qaO&*Lcw=SPV{9k8 z$$_GZ3rI*H1ql%1gt&pq1r8NzdM;NuAt6p6f#|UunOS?Cq|G(~dSE55?Rnq4zj@#D zduM*`T-nns8RYF=*FWU{+h^N?UIJ1?o z#jUv|vb9Ehs-AyQndl**pu;k(^g8V*MZKEZ*NeonT-H>j56RYQ>ZCNNEH~zrDV{LJ zuR=f|go^7|byp{b8@!+x&@eRUX}SY+4?zQ2rc(S=VJ@KoTBu(rjET3Jx|(G%(zI^3 zTkV=vp0qUG_k9f-nqdHe0O@9w;U0+6vjYuvmXailvyexM)QFpWJ*%n0)jWnyT&j)I zB2OY?S`WvXUWGEIK9G_U7q2JnzHv%4)@B_RWvRgGB{p8=8BbUF5Y?r4p8=8EMx(TG zpf8v8usiKff09^p> zCEY-}gDeL?6G50m8=Qv0=KW9yK^y6CA5@ev#Th;nObH5j(!t^k!VYdREsk2MQl2cD z;%%M?!@@hW??t15W}`I25n;3Snkqu5h9O0UNBn?N8@QI?1L|22c&0;u>Djv5^qS1V z#$bP)lXY2aa(_-d%8AgiYZaQFZ!jvOcWn?DmJ2-3vH{Vtr$dKP>^TE%uO^}3K5p;T zD!rmYBW+TH8af7!V_5(b%LGl=_5srgbenXcy^0bjqBV59gUo}-P7MEq!wb%1S z*AT>qnlAqf`N|>kUGb$T6e$)dkoA&hby4&#kygjHO}kj14|}Y=Tn|Nd(%cadW`9Rt zva(0w$;Qy<8kz}HQF5C_t65}k6i@9?>C+2gl1D&faWbkF%i#g%c(jb=YP+jUVD z+sN{fq+iarf8%knoOzX=&R!uyuoZ7RAJK zga6AR9U9Ehn%*$7+|#xnUd3s0KFHgEc5jEs-|KlwLt^_wu#b3Vt?TDh9=YAP~a!Yx^nGr`E84X literal 0 HcmV?d00001 diff --git a/Icons/DarkTheme/VideoPlayer/Stop.png b/Icons/DarkTheme/VideoPlayer/Stop.png index 324c85c11a7f4ae0dcb60ffaa87d9c8d7e2a276d..5a48d8c8734e59ab2d2e28a193339cc3f1af97b4 100644 GIT binary patch literal 3372 zcmcgv&5ImG6rThPF&Zz47(7VRK`>xVe}A%*ubo|Y!CBYMN_NG=R##QewwdW_yL)$L zBZv_%5j@1?Vi3HVfTB4>Fo+O5c@%_PL=ZFwK@a`|zUt}e-HkiDYZ5asGu`!Gz0co! zuj=CL%u5FkJbR#4s~w!4YRBt@xklx_joe3nAK`e91`C>wX2^Tsnwp0 zqxpq=q4ly)c(;xz4_Lk5O@O;r8#~cYFgeF^DPZj=ZpeS#`c9T2+K|s$Ewz=5v*l>& ze9F$8pP47;&k>KxCyq;FeIEpLS&pTCw-aZ6zabZLeRvkjiYyf@`MHLCN+^^TTC>tP zPnqP^RYX)(l^n0GIU3QO@I^^ibzMKrc zsl>)v87GLC(#MIS)m7nB!AMEPm#n0nLOCT0>##11^9*>kiZ@y2InS2)2+8b1dU4DPa?K>)Deq;+gb(Eg*2Fn$$N(e* zsSZ-Dc}@2<+c#~b8osIySX-P%;o84hE#Gu}UERbAFs3-iJ2F$^hdk|K$U)S_ZKfn~ zTb8QK`s2LAQ&0@n8HE+CmOmY5IgSaNZZ>3ap&mulcX1dvj-jFe2L>{2(?U4VZRBXW zWe1*vEzKG3Z*sCCz$W$&3XgIEGS;;+7O2#*F;cPaA?!jN+|ck4F&x+SbdzE;7)pC3 zjiB~%XQNbM6$Od9iw(=v3}k6WfLzC9D6qgtn~~6=HgyAo$&$#n4`RS1Eb6NvYvtmC zKwW2Lu;}Pe_^P6b-;%z#1AU$RS{y-$by*U48ASCA^ezaiZCQp@uFpn&)>&vq5S^?r zLK zGYHl;s2#9nJj{DIWvAK@;T@|&8D)HiSGPCabZvl#%Mf;;j;IBw2||Y;-Sf1-CWc2b zpk|cmrYJbe8dlN$m|n^z%Q$W`m_mwt|IVnYMnlgEQJ`r$vK&!RhUFr|!1)@o|9=^7?Bu0S_q==a$Zt39{CrE?XQn4+ KnqQn=dhZ`5E;?ZV literal 1020 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQaEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e6&pP!G5ON@s{ zke^?emsgaZUqnDaSV%}nURhU7%h1T&)7Zkx#KzakG0?_2$i_L?)&+<{?A$`_-NGE) z!yP>%oxGx*y<=T{db}9H|}4#`QYxOmmj|V`Ss`jzkmOM&KL!wAutF- zK;EkHH_%zto-U3d8o|A%Z}J^d5NUb1k^72X)RC>FkN?JB;w!i`V~)iB-SvDAmK_Lf z>}E=5_2ZH`xx4m}jWD~^vk7OIg%?MEspMXmo^(g|*7l5pEurOx9Wcr&{a!#gN%cj9zE-c1%5<|G)2A9Ru$vd$@? F2>>1me~bVC diff --git a/Icons/DarkTheme/VideoPlayer/StopDown.png b/Icons/DarkTheme/VideoPlayer/StopDown.png index f97f6c442e1e61c5c6305b9dbc84dba70a0faaa7..57c3a1b0fccbb17fb6efe2a41b73e64305d7ec64 100644 GIT binary patch literal 3568 zcmc&%&2QX96kj4Cpr}X{NPL`(BcviRYkNH7FLkNXY)c~864F#jDh`Zi##yVowy~Y; zrUy{z2_z1*^n&2V0S+KFNL)aw5ND1^@DIR&12+y_;LUzGNt^9P{eYEr*PeOv=Dpwh zz4vC`Upo8B(Id|tsnu#n7Z;k#@c)$hJ~{)xGk<(=0sbD#7S@Ye?eQno_o3P+pFX36 zK({7!KG?evzHv{Qf?ZnA`#`r~9YN6bSlZO81cQZvf9~*wD3sNO`fLWywbqh0 zpXO5Y>n7r+X=<)tw_J;3H+o6KCdP*88J2@AFEDXHY;E+>VY^&J!E*D=Xft?g=kL_di9=NPxB4K@_pYhv4JrH2~=z+CF`T4m>p|q%7W){R>olH_L_&rVf4R zW|i8c7~uqn8GV)+R^3!S4Fm*l)^u7%M z+g7XE<3L-w-D-=XJiP^Oi~u=Mx>(uHq_HfEbTjAj^cI*oJNBk1m*p;=hgc5c)#5Ua zCahI6`<#;fc!H>!sYJ72K9{Ua^OZF1jLEY!Mp470ZfeI@<3yyr;zi}dXn}09QZ{rT zl8sCknRLa%f#n3mL8cv;=1{biia6T7UDO$H&e|smG#0F6Q-uW&qBQR^h(X+C8`8*< z4PC1u8_cJjG>47BI(uM6s}(FJMadE_7n=j~4P2@-(xxx`%XiHsF(GEZjn8Z|mHFRqmiIK5tP}sgUMv@XkhyRl$`$tys5N~Eanj(T!>^S zk;{pPpt5pA9D(6OeJ`vs`gU4V;B;VDedGZ%p$hjH-Mw5GFknj16)!51OlH908Fzp7 zn;Ik!=w?yjAeElT;SjD+It&Rff_7ntf`)vI$^RXssm>g(nNO-cw;V_AAL9&l?j3eF zdd&Xr>?eE;Um-|9}bc=~Mf>r-#N_b;kia~A*r delta 590 zcmV-U0pG{7FPXR5(wKlRK*-K@f$v$G3vw0~FCj#6Z-{Utl7LpqTjs%>+Xe ze}NbY24W(jU?4v5{oHT1hThA%UhVv8@&UpL1On}LTU9EROeRw-7LUiHmHz>}UT?qOx24l*zuzB;L=fZWa=DyN zC)UJ&Ku00apnu!#hJHSu+vyV7&-` zbt;vj;yZXwR%q~18I;r~gZ+Mwy-y%3H2A3O+!&kjc+3Xdq*tqz_g&bUGII4Ge|LXf z*ELNhvXzFJ;zFUo1t2DY5ppa5R9;W!krIFs5Lh4%27{KEsbp?oV~+?(b1Q6R;3-WB zz?SIoct@C16$*u7u~;^nrTZcSC^e92h#v4QjYcC=jKgR&8jr{IJ&8SufEUpb@FI)F cV!2%Y1_htb{c6?bZ2$lO07*qoM6N<$f~s#9djJ3c diff --git a/Icons/DarkTheme/VideoPlayer/StopOver.png b/Icons/DarkTheme/VideoPlayer/StopOver.png index ab3978e74faa996f26ca986001df286d422f96e6..6fbce33c5a551a75fef7eeb918c2c228900926fc 100644 GIT binary patch literal 3367 zcmd5<&2QX96kn*2pinMF0&zf=%Yg#39)FDOvAV6=Y|}(yLr8;~A`ThPj5ls~ZDTvx zP2oThAhi-g(4G+gK#SnO1tbn!IC0>{8Hq!CK!Ou@-gtN2q|GK#TM#Slu08L~`~1E4 zX09wQoH=yx`Gbu{@EZ&B(QQ z?ouw#URqe@mo9QD^b^OmW5WOh^kvDkVZWCY!LX%Qaszl)%Z9F1EakJkJpgFLcY2GzVN~wV@!?F-?pkgyA*$^egk%@%1EO;JgWt=9OlE}hzy=>`V>d1$F zR*OxFahxDx#*k%(*~H4Hic#>IFI&%hm2$xi*^_;llm+mbHE*_-mT9q;P7z&`w<&LB=5v?AKQVw-dx7f zl)Z|w%_%vIr?4tY&6))>xnyOUFQ;j50-nW56gA6fV(q1KaU#+|aa8#*-XPnolr0^A zWFzb$OqNY6Fx|j$5w-)2N35Mx#L?!xtRx_2V8hNWtN>%dO13An;6aq;eFiy*`>ZRC zEa~c6o!MX}?WH*=2J7s~icTk(Pl}QyT+X*!I=Ik`V-ZNx^KmGAL@gO2mpT>-F|m-~ zzU!HUm_GI=``amBS71~7M};R+4l?d&6&_}S5{W{WM2KJ~Le#`AqRbTzGi}GW&55+v z^B8KM^|ne?Rtb=3`OGGcX(M9VA@V&3BoZ4VSMtacuJA)!>YB=S0Aj!-rs}JugYar` zMWL>@K3eoFD12;~>UT^(zX$ye`OPGT5L>#Y@G^?(S?FC5R+kW)jMo?Aq3o@+V~9>s z8DfE^YDYymzn!95nJTtmE-nCbo8w+{R=zWS>cv`BUjgGI7q~*F6#95M-XW3u3)x8Q zU`;}>c0uiktw^JCz;b!A3lZM4DvW8y7i?p9(;a}C@A?uk59&w|sGczLII<`;LzmlB zuyEq~y{0>=;0T#i(fyb{4l7?{Nms%YGW7d*CgL)bo(Hw$h7JH4X)^%d%d~tCBM|5-}cH zbr*Pm;7Q6N=}8N5JG7B+IW}ULI>;lgMK}`?b)4x)Ac0K->wkj;>SIhK94;6a(BvJ* zN6eQI;+`!9mL9Vy+s&D6!{J|sb)D{sL0hp3YJlsREFamOkisS1q^-!ao5Mz)O9lkO_3~94-v6e7@R- z%f=h??UT#?C;a-gYg~I4fA;mY%a<=dcIw8>o40P?K76D5`%hQCOMi=2S64su-~IXe z(b?JA_J!kvKi^(hc>2Iczr674v74LUU-d!Uh=IsEC$S8IQ(tIYiA Lh4we6RzLU$^5it^ delta 590 zcmV-U0pG{7FPXR5(wKl)1`cK@f%KZZqJH3r-+Lni&g*qKTPe>a!U5EWU%0 zFJNF|WTM~#;)c6;$7R00<@|^X^Pixt+kH;e>FRE^a=HA&!GG;`(=?4yK0iS?j4Cdb zO8mIp?sPis^?I+@tHb#SUDvnUZL8JV@Aq1GTZ)mSz2PK!EvAc%-3H z4a0_MntThy;al7pmIWV`5`$k4Xt&#BeFgJ(h67YuBofJHv!tQtG>i+xmS~$=b0A77 zzzv}+WZoZSCC=ybJgnJlh8dwMOaDMDAeMAo4^$kr#!Jj(GPzuiGovO9S}3Cg$hZ$c z0!HfdmPeY+rWOnaIq^!R!k+^Why7;YvOr+nsk8!Qd$}MoJX~p~+-oOK_yWZHr3ol}v2x1I>$dHU(KP1y!=_OF3S4YHLYZcRUO0uir>>E+^F+ z_Zf%|RU$H=Yp#iX6Sw-dL+m#3+9q}h#&c*ac{(_F6bd+>INk$L&Yq?cEU=1lZDkpVedY03#tn8R$4O3M!iW}AD$ z41$oF0k)l1!hFZG+e`b7WP5dIm-Za&2Z=9ui`Mo5HruYp%!IMfq%5H=Px#Dt=T(6C zACxH^Ejm82pZdVnk|5o*f@U2oPQ+F5@nSVj^_dC?Wwp8^gVk*n+*oXN)FV7mSSxP)q0|w&~fA|y8n3U?jXTQ+oLAO0fS-U*=FE|&;eUuyWI*} z4)d3(KS~|s2O0&{&Xsx+>Wi|n5zU7JW+gICp3KuJ@wh%bbe8_VWKcaJ=L$m)i*NSs zzG(`LoNd8~u9wZ_01wUeB66rx375y}tuJ1LiwE~QYyIx+fBsxs(eN4V2Yd40kDq*% zo`3DiA8-Ej`^L2kH@|)7f~Iy}y8ijy?{e+e=)=FC{qohnetDt3wR#(yo$s&Q{PZ5$ Clrl~L delta 146 zcmbQlw~ldwNGZx^prw85kH?(j9#r85lP9bN@+X1@buyJR*x382Ao@Fyrz3 z6)8YLXHOT$5D)LSCk%NR0y$U$xBWfH?8q_c#m9z>b&f|SzImONkY=pxQo^-LODUw3 wT`;!c49f;r7xx9b@BZDpy}9F`{}bl_`J8aHP?E1-x-3gREy*X%DyoKM z*7WDMBDS)%SaY}5U7O0sW~8G%2Mn}XLZn{16~s=jB=_w)@GO>9S?WWQ^^!a*97?Oz zC8^9KCfRwUxCkMsXy>(}=HjCFn1m6=Dza3qplFtZuw&@b;3tE-hsq>AbBtxia z4(%{A8^nV;LB-S_2~{nRL{5Dmbu(PJ5w-fxsjIRUYqKDU0jp)$u*nl1H~ARTnRtf- zsBN{H`Pem&@u*E;5BxT1Ff|Ms zvXt$tQ|2umfn$hH??+LsItxLZkicaNm68l8+g@2wGl*%L3Zn(0n7UypmW^G7c^D&P*RfHshSr{r zeBeH5jan5^QLu=MhZzU22e;? z)=;A_SsRgPx|j@ovN`j93_Z6wm^CZx^x&!GOMQMh#7$FhMRzhtIbHU5*~tBsEYCkvDpSxcu!WSwiO?-Dbgl2?ZZj z2S#`{)c@J|P5tx#I>rSB`iYO6l!i-i{1T7Z!4F=tqazD|sSz9ufBxj9YjCLa7b>&0 z`Lox~%}#tQ-FMge5qsjfQ&(<0f9}bd2VR_c_lHBT9Q^U41N!|Jb07Y8`uaoPl)wDt z(?@b|uD$nJbY{MC{Jl!`PVd;XP%WoKl0YZBS_&$3I1bKiF8gM`twpx_zXg0pyo zzNVhHSz++q<6?xx`N>?>?ILH73MF-MX|}OyPD;9)5Epm6m}XF(N^IQep-4O+zTM=8GF6E@u+SSvME^!hmfw+aO>=NcGqO>G4>?u zq=zCnAytS2C+Lkc+&C49azR{?IP}Ve6F(QuRp0E7m6oKfdc=~S$1~si-tWB6HaFf` zIDP)KVHgYT_12bQoGf8&J%0k^*Nb0%3ZGNi`Uiz!oOw~dbH-P<&jIRA+}T#!;k%T} z#AcD~3cE})KpV!z%Voy+j!>v8`f(bV|J?b}L~#_D*Xkh&vsE#O*AH@W^pn6)UZ@xG-aAiGt^Grec{Q&B(fPR|O`xI*B34D%!M|<_R)}OO|2BCOW1u zFya+1+s%h#;}OSVC=!vX0&qPeICxRnRdooWL1RN)< zFL0LjO;n|kuF9dz!7zAN8+#Fkw4D};rChXIfeA6&aU9VmafR;+&uZ3to<$tbw|vs= zT8uExnp}9%k~h8epf)xa;@L=>sG_(k`7f`JI>5aH5KANtEF&cLPWn6c6U~*kn5t-BN_=pTVT?7-_(Ley{ zW6C{&6|$#BEEg+%$kr3v2_NTt!S){S`qLHfIM*L(zh`lMnpQqwX!C6! z3VyU+ mU-edW>p75!|G!oKIPvno^KX85=I(Dg=Jwh~>$|tFfARp literal 1117 zcmeAS@N?(olHy`uVBq!ia0y~yV66bMbvc-Ur1HAY&wvz5x}&cn1H;CC?mvmFK)yn< zN02WALzNl>LqiJ#!!Mvv!wUw6QUeBtR|yOZRx=nF#0%!^3bbKhU}gyL3327;=MxkZ z6aoQZAt5m#A#p(=89^ag5h-m^X&p5!Lv;fm4MSfW=O9~`U|ZJ^JGW3%hcq+CbO-lv zN6$znuV`oQSXbXTH@^gT|0IvV6tCbk?~rug&`iJZZ2ySdz^MG7=z`#w;;{JgsN|a1 zw1)W1=D5t(gsj%Y?6%UHS!K1eyC*FNx^onah5-FT;6;g#Ezs6Go-U3d6>)E`9S?O5 zWN>zDJbBV(@Smd z2scoK%OUg`P(-3()z`@swk6ssc&R=NQ>Ya>J7+Gtb0O1^W}}HXNlX^Ig({vob7ptQ?wsk& zB)f?SjZz_qpdb{APvV2npuV-G6oZN&h>y0QFXD@!pcH}#k@(MECcUH=f(yHIX6HNK z|NZ~}{d1P5CSDlWb6^k0aRcLHWN;R!IFIj{&3)o{WEwq~vpgC@Es2yQ4OHP+z? zET+6!Kq5g1@w!=%b(tu-e}q?%qDaV)nx=#lNl`>Vh{-~j;8_ivE-7al|-ak2z8+j^8$b27HFx03`;|n zQoIQYp7C&s?+NyZ<+HenA>p8jYgCHDn!x8}v_@Ei#Sj?OsT~!LV~vMNibF!j%eDYH z7lOdEG{g6GuUHgSStFw9X^MzlLltFLrmludt|51`fc<4g=CaQA_j|A(Y-{MQFN;Vv zG*R_6D!Q(0h_pnMqD)Ez%U(bJWE{X~;l{RkU;;KX?6V9*MhUbo>CMM6TaqDX{Ak)t>SkKYmEh& zo`s%@8G0($!*@JtVUo?BEs)G~6zbFcJJ_N>_gCNU{#Km=>0Qj&g(b{STR5h}HR$C% z%`V+Ze1hliF5RSNi7Et(TILU;YQAWAI+#S)U99MeU!rC|_1mQvVSFqlpQG(a@0FF* zaag19CYOZmCv$&uvSlA`pY;DPnT|=j4wG&*U+38k@A|%z;Q+~&`OyV8`Qb-Hs8b9_ z+l77SUxQ=uo$>N;IA#;@7pUofZ>th)ArAwe!h$Q_{EtY UCZ4rVWheFc=tTLmW3RvUANwnqp8x;= delta 340 zcmV-a0jvIo5aa@o8Gi!+004NWbtnJ;0IN_;R7FizYln`XlA5bYQD<9Zeot6!T4Q`s zT5ncgcT-$*Qd@9JQfORce@s+rg^ZkBV|Q3#dP-7fUulC&RB26CYF=o9O;u@OYldEF zg-%v%R$q8sW`IjnXLEXxmz}Mgp|D+Me_v>Uc72ddRc%;ed4GV2n^|IeU}%DMe2;>O znM+e^aCeMRT5fN4j7?Q*SYLEcSZ`2Saamw=P+4wJSa5)cnp9nNQCe|Epm6gG`ik)jF;f&vx7axX1g8ji-apbd{ZS8C+Vyz+&HKLh z-shRq%S+Gi-}m@FNs{(2HoO(MA1KH7?t%XchaU9dHk~$J&L!!-hsxhQ(g$ZBm88Az zMa@>x@?UVMh%1DNfLHo)3TR21IoeMNUFC%w@OG5A%5PtNt;i8`l@m2z^V50Wi5i<3 zKfbxtq?@bMX3Ei7d8Y3`fS4CV?#JCEclxd}i0i<(oK_Wi04Y{oWv(QYTmG^o zswIvm6nU|*4rz=EvMV}oZlqjY;kj7LC|_6ynTN}4QfEHnq!3wCi0-&k%VWv1Zd5e+ z$cZRnqL)9lV*&R_!CeKqRz;eHv|1DE4mKUbL|WC+v?0_NEDASngw_Dz81^+#@C+jb zxhRr3VJVL}z#$?ZqsD4~=wpMlDq_hzK7;-3rQupa@k%gQFn8b;M1o*Dy6H!K`%i zz#vW|%As`|qwnK5e{(eIM)JTD4xy#jU4@oS=1dt)N4wPHj+jU5dmRozZ_)fAdoIGF zM>0OwhT7fMT$YX0x`AuRBnC7U2MmQeu2wB-W31Q4soyC5Iy2sl z^if%8ha_zdJEyALeKL3E%c08uF&VYoFNY3OuQ%V|-HyE#8abGP4Z9ppjtY2~95y_G zI%RN_oNqpi;23&i(VJ@?d6#bgesyZ<^jp(sE^Te~&;R&mDpb1t*CPiHe&o&^`s}Bl zFTvacKfLqW{oWH-etqTRSI=(#oll?q;^}X`=NCV`dghp*qs q{n;7srBmO1du~g<@Yvqwb literal 0 HcmV?d00001 diff --git a/Icons/DefaultTheme/VideoPlayer/FastForwardMouseDown.png b/Icons/DefaultTheme/VideoPlayer/FastForwardMouseDown.png deleted file mode 100644 index 79fd466ac1d5565528a595cc1ef7b3a955dcab7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^f*>{rGmxxUUaA44RtNZmxcY`=$EK8K6f}AUrbnmL z`A6hNCD#N-<%h+W2gei#MHhGlWyGY^`-EggClwi4`bH#Hc?G4%XEu9>Wcr3>#bq@4 zhGr&ax5Z_)`i13$#aG0pHF$@ldj_QC7B?4_x5cK_$7eM91gH6i=0+q{hQ$>|CRHb7 zG2SgU?n|TF9<^@C)gvAzw#Fhp|6^6&< zO*?Sz8_?M$o-U3d6>+i0OvR2EFdVsH*it!h=FErx)NdEw`6*uIbiQ>RcW>0~V+V3P zs`mKKtUT5JEz@AGjQ6vcyqYymySz28>p%O;`LQ=cvn4`i#$8>foRpvY0zCg|PZ57C ya^Y#z%DQg}^B8TIJ%!C`R;LEP-eFMmm+@Y!fHB{_bt{1OGkCiCxvXd6Ai!;r=JvaoqVAdP2{I zt_zJ?+s43bNP4_YnR&{G_GvJk982b0ZhWjlx=Sh7FXsIT@r`IHgjgJy-7P|FWcj{O zN&YL87vmJr0N)RNDREo-h3kdP5C`d?L0l|qIf{G#}9tRNo-rbnAO&{t3OS>N1-+ce~ z|Nl2LC+B95?AvqC9zhWH%`_YHaNl2!ckO`xkMF(HgWK-3`9v-Vd+#cLHwmw;-z^BY zyc)IIMcaGCr975Nzk|GDJT4B>JFL>VNSD>ywUlagp>v>g- zZMDR46(TRDS0IgXLAFKbt<{t%^DO7f8D-NeAoD<(P3lf%j1)X;ao*eP)ZC_IQ8Q#L z9$bu)fcNwJw@hFSQn0!NUDFY^5U#aU%~eg;FcH>Wj7Lz92T{0sIkW}{S9dOgf@cC! zkZXbi>V`av2_ziFq{Ean=}2N#Mt6$$cm{z%ojz3IdG1V-7bKxo(GK!$Lkbd}LzZP&Lc3m^R7+<~KN9E<0P!AGti>6gd8isyPmG^uR}IKzxJ) zLq|5)5xg8aKC4-V8CGnMW)Unj(%Z^fstSM+7K3g1p^C6-8%PfghJ0VO5i_Y)Q>jUb z8kBAx8pLfzIkawdygnA#GviS&5{I5}2`#-|muT5!7D(gQ(KhwCuE^v0{VoI2t2BQU zJ?CN3CmEaUK<%z+F6Bz%bFy-E>9%hA0Wm`qV%tVkg)S1a#!yJZTFnf73sYk=^~mrRE!c+p@PpBZseG!!C!_Q2`It zVZ#!rQwB%L9gjEufMaNBrZL$%_%i+Lm+yD(Jb8Tg!Vh14H!*nko8La&IQGx4KTRAx zy8ip0^0B>(Cq6rO=ER%k`8Dy!SF8^||Ki-~BkQl9{`!sk9yoRLsTaO{?CjHL54GQG zpa10TXW`nf&+-rcetu)eOD{fo`{Z%`wzoEJ6?VPjwJtQj{kc5;W~OHwXC8X$xqkt> CLR%F8 literal 0 HcmV?d00001 diff --git a/Icons/DefaultTheme/VideoPlayer/Fullscreen.png b/Icons/DefaultTheme/VideoPlayer/Fullscreen.png index f81ae6cb8056064f781b74587ff032a08bedebf4..01304de5018cac5fb315b97b457c560ec1bec9f2 100644 GIT binary patch literal 1599 zcmbVMTWB0r7@jtz)pUysy=AM&WcpBxJ3D7)FWEh26SBL}taOr)E@Uf0ot-%|J7j0h zbY?cYo2adoDv7n~gG5CU1oc5sQBX9+1;rP!^r845SZP!&*4p||EZUfOW^c4wEq36{ zxqavR@BiHR=zW{IcXU$}wJAH2nIQ8PZ``t${MY_G{{We8wMOn`ZIyqg#IKp7h$Nx=masu~tSQ&j(8)so~X1L9-xL9XsT}d*NQ4xq%8Wr`C z85`}L8O_NvQ*uIK1_$W=DkKC3awWQIluQR!lT3pblC^itF?0jsP9>QkPavHa$LTb- z5uFGDRt5mjeTfj?$IC*W8l(jv2pouWe2nGe5C||5rduCF#Mz1pCo=c8gppm6DY~u& zIj&Nvgeu_>wl$7VBoZ7DI6+_uf^}-9D^*$3+1X~uAV;=!%hj<-dyG;6m)#^oRBhT| zSRGo^Y59qGjH^l($A^GtQv;~T9h_CROAX9V^Z09g8wIem& zR+$zeAwb_XshbL}IJ>WUfHIPck_?Gjm<4?-h~{_!@-Y~Ru^*_~u$FRVymTF3fLd!R{MDI!ApAK`Ao z9IUz($wosO@zxE~i6hE$UL7{=;Qnr6pD*Y?clz?dBlipp{Jy;X(_gF~!_TXa-wpq~H2L|r zWBw0(oKxRW_wU-Aa+Z!gb30x+^wzfTQU{*%Z$I_5R_{IkzONqW>Djivn~9{)FOT=m zeO3G7aM0TQ*s-(LhKV1v`A9hR+PO=o_NN})LoU`uzjS? zUHSOR%5D6P3!khyfBeL4Ik9ziFmUo=@u>R!i|;ID%V(B-;#T4Kms;S_jc)&w*2y=X zVs^c-cyX1Uz5j`Yz%bEouq!xAn&|N>zm4tlOP?*`)uXTHmtgOFV7+i;4YiQkKfMrq RFYmSZ?C@yj?bJhu{{qN&5-b1! delta 328 zcmV-O0k{6Y4A=sY8Gi!+006pI?LPnj0E$pdR7DaJ64cq?)7ans{{P+L>H7Tt@b&yX zL{tzE6Aup*7#J8E8yi1HR-2xuGB-&*L{l_8O*%nQ3=9z;BP|aP6AcX&%FNJ0N?Som zSp)ZRSypiCMq#JLsAL~7Cb{!0s;a90|P}(UVlSNT^1G=GdN09RaPAx z9yB#JDk>`;9v(qML#hRXMgRZ+iAh93RCr#k$wd;wFaSeQnZitEX1f3NYSojOEWGU7 zeF;ksoIP;yz{~@453DE)4^Egdv8H-Z&QLQ^hE}E2@kdomlsl_1#+=9$Ok})nfwi!L z8xvb19KW_$wQE708=EM*T@fei-97h~mt$$xChZ#6)Y1i0r?@?N?n!bqxx3w6 zo3vjP#Sbk?=tsv&DGmj}ei#F%Rayq4z6%N>$j~7=a9~@jlVRC>E=gmzb#{1gxtHhn z{C>ax%l$Ln-*>2`>5(RiqFQ1-(E)OO*gNm5C%^SqCXSNJ{Z`Mj4n=L-?wxhi$y2*1 z>Yh*Z#GpGE?^ThR=b&b$Fjvf51Wi!~!bJEn9muGS`0B|UX|Q?uX%46#~? zA#c@a4X2tXk}aK^Vo15f)#35D{H!@lQr)^U0c3M zfaEqFuW4-RC7-WJIBwSn38R{jP0>zb)WZA#cFbWL;jR&4v(<~nQX@8ou4yMsGq+x; z{&mZ=D06_`m(&f-EI3bY*np$Z#UX}NO=5wc1xi8?Rl%pqJ{CwS02OH5)b#Y|?NCJ( z{HhSV2}*iKgD%_>tRXdR+IdI<*7GofdCSN!bS;f)#LSsC5hm`WvWs|JjTw#$4TNLS z5JO_-bX`*wj1(D28XNRUeilPnW}%n{r2BknAPX31K5>12)I`HxWxf5CF4s&%IQ~@y zP*ZRKYpf5Y6jnsCpG^r;kkteziURPH^_rWfZJm5*Ft?G_bESE%NDBuLY2Z{aAhV)R zPO}gx3hPq<(qzSl(^AUo=5m9mJ-S0mH(LEZj^Gp3yPQs!dqRcC>-7+WydqTV*>s4OcFpk#YWX5^7wdqP8YV#QzgxV(4SNZk5r^w`9ibXpT zf!ER6@}-7`_g@;%O*J<+w>>bivUupr$W-t2vCeZp8flEi=1Qmlr?ZJ~;JP>DW&0 zLil3+ZwDvVdMDG}Jqg0}`}8X}_RP1z@7vqcYby^vbn3N+onJM~zH#m69dDIN<6keY z2&U+S|_^JU9L3Gp$eTB0DBSf0mMu zcC8lX?8d>X$H}p_GFcasekzq-ym0oCx_4rCqxfna6-^#J%zk%9@cy-8U47Bn&f_ot E1FQ~O=Kufz delta 827 zcmV-B1H}B24#x(N8Gi!+006pI?LPnj0k%*~R7C;;0@T^yMowVU*xw8$PEufW2|#uV zEmsOOU@kUS4N-><9zhTnGZPaP6B8B_8#EIpP!n2@6dX1d8!Q$aF&G#a8X!9x8yg!S zHydoH93LhfA~zy-ts^Nr1}$AMJ!CXTbvHm&I6_!KNm@cmT7N=KVM9(~Lr-Q28aq~H zc3f(CTxxn@aDHQPe`IxqWOasXevXo$rttOr`uzVA7AX=JE)pI*4j)1f8aEsuG7lj{ z9U?g$BQ^*bIVLVVDK9}THB1#6DsO>}6&o-WB1aWLc!-vs2^Kes2Q+3!Q)WzCa4t7oFEvgt zHBc`#Qwu3kBq}^FHcKx$VHzSO5J-j)P>^tfj&g&Ic#4;Li`-9UetZULGDExx~jNEH4ld5d>CZJ zF!*dztbctQw5Bk@OJ=Y6bx?CJ14c)yQE$AeH(Cz(;yo+@S27Qrh2fJ(?DS{fX)JOwya1fVQZ&J|RnOD5 z^m*0BOhikIz@hW52x4N1N;{%amnI0}ibn@FeOxnrMww*rpZJVP%GtDLoDL&OU3q=u zax_S;dQ{1WE;rW8Iwg#-lXJJL?asAUtG({DS8wN%?0>OdZ#K(c0vrGU002ovPDHLk FV1k3bNQnRd diff --git a/Icons/DefaultTheme/VideoPlayer/FullscreenOver.png b/Icons/DefaultTheme/VideoPlayer/FullscreenOver.png index f719655a7f6909b71d937055153eddc0b06d9b1a..2151b3868fcb0d098a97036403c19cebc70c0d02 100644 GIT binary patch literal 2017 zcmb_dZD<@t7+#Yav`IChwy9XyY_V8yc4xotc9&e!Bo|GR8;TgbTtO;Iha1sCZkZpH~5KjYlO zb#?j%0+QQAqRO$VmRzn%;Rl@~B#d%GRz>^CQ5SQ4*ms6K9e0ipnVZ9CT&=^yC~&-_ z<76w9>a9qo1&M|9(*u@mIC+2TG6Nh(0gf@GY9fG90OcevXnaJIA^?gSge7RgF)VX* zB~;e<@P7l8^o)T5bVsnEYo_Dn5DD1Ip)}@PJI&D5G-@4A*6|22Q70BvBobP;?FY!# zad$k%keFG^GBguIRp&(&@Ny&qBwjKBLJ|)m5|4OEG9w}{RqW%AJ{(pyv@dnJ;poK2 zf2>GBQ79V-D7=^g5iF@dfqDuEDmGMwH=!z<6>mE{i!3yhUG6nhWe|^0kW_(>N-lq5^cHc3BJo0c`n&j?|&BfhHypKk1FI~j~#(1L4D!s zOl|F_`^U3K55H`_KJn|TO9PX$vu{o9Yd-%_dRxC0sjEA1cE`RK=B}@K{MUsI z7mfCFy9nsayR8>?HM3ik*|~}7#y@u+m~LojsIR^MN4aBep|^Sbw+L=qKY4unH~!?= zraIxvrkVM@e_!H=1sQMo@XF^)*Dn9k+O_>eW=n1FcT*o6Tm0;w#fM+}IX}ImUjJjm z`X3&DrFG-f-h;a*=D$C8bis>tN51{~(39aI+}+s|KiU4$8~*~qlA99% delta 849 zcmV-X1Frnx58Vck8Gi!+006pI?LPnj0n1QKR7C;;0ud4#A1h`$P<}>EVAI&&)Y;$? z5)u+1KN2KJ5-3sH7Tt{{H_tK~)tuY!((4J40C> zP=Y;0TR%u$1AhYp1Ox;@Lqib}7DG*94iFYZO<_e%UKB4?6g+w%K!_qYVIoz7P;aUu zGEO5kRU{}jTY0fxeX(S8hi-|tbcK?5i=26loqLqP8c&TCB|{w@9wu9Zh@Gd1%ixNd zrHahoj?v$frLL3H-;}1Wm#MIq*58<@uqRifC|-n~*ni)jueYJHxuUbWC~2y&zr+avLDk>|=)7Ky>WYi|iD%hBK#UC&`1lVK+waRmIKSC}+g_2aTqskG8kRg#VC zt!C&mO)T@N1o0r25@InyRn7&T@Vq`2iG_E4IG5wX=Wx^LT$}YjZv3QUN8Gw`oxHTOEpO bZ28o_mS;b887!8sskMz8&PG~TscTeyQv znM*KJ;w#f-Ze&bJ<{rj5GbO;3+r!7)gH85w5f#ifHDsD)%0M3bdK?$s+{|op?bm+4 z@Av=z{;%6uRPcD>jCnH<1WC-#a}~p9vi_Ss8Qw>z-LJt%yqs6AB1i(7@UV4jSUZO~m!erA8WIG6#-O2qUsUOk1B>v|aIJqPFf;ReRgxyD zRnosu$F^@X0AuTR$86lump~w9Le+9>pp0lh?ub@BwK5=zfhtuiEXb{aZZ6c-$aIbZ z7)??&6rm}6;PQUVMVECd)IAY{>pp|LR1Ig(#epke5p zDdL6OP3McM#)vG)cR4Vq*&qlUZ8B4=mt;ts<0%GbfZ2>Qyv>H&C?jd~dP$!5S|`rC zB(_@5?8JHQf1WQ?1lU@P|DJjDhSN)e&J$FatlDTtlz?ZWE5Cq7s(@x#y}BJ3tEUxk zSoE`S&k-1>4ORh2`XA{Yhp7^;1sMfo`(U*0T22IXp3wVnTnF)YiIKfqdUgU12Z6qf zjUf0E8)86&lS_dkYU#WmmLbTbgZZv(k8LwMe64rNl=A1}x2_r<8koGGOKq)x*zJSs z`O;`nGT(M%$Qn;S^i%ul!JZvwwjbM?HPle@Ysb~GFZj+4RVysNEPJ_q`1jVXgRR|# z^$l`)YHBLqJaV}2igo(fnZ2FO^~U}!vom+{IVMkO)1i+y?7es?MY7DaujA)To3`O} zPulFMudMynhNdSaw(W>3|M~;GV|e776V6?aobB#)6P$_ zPi!ZiYF~Bko&E}GY~O+2V<{OY!xcLh^sSt4zwtRyZ@RFxkPCNx^l3OO4}K>>J1SZ*dMD3x}`ucb|_-Ir`qL6jx){;?)IE$f+aE zQ28E>p-VQmUHI(ho`L!YSDb4%tZTF+x}773dUnl9%Dc2bsgI*~rqAmfU3*#lW67S3 zui6(q@#FHDSLQ5VHJJQ*Y3R({f#Vx1)5CKQCrpWBueU)*TNa(#v~p6xWAT%b57S!w Umv0vA*8iRIa|>MimsP&-7jB+{Y5)KL literal 1174 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S3?yCqj{O5tEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e6&pP!GLTa1TC zke^?emsfPeDab zP2Esk!$?ibP)plPTgO!2z{=3b#>CXl%*xHg+Q-bs*WAv}!qU;w%GuK1-^xDF(!t-t zA;7{R(Ap`;#uL-DYGmsqaZ!2sGzvIxU?>(u%W25v8b%MsJyMIwXdP2zqzfyv299s z-;A#QnO*&}dM3=AHgnO`nM-EOSvq^(@|p8i%v-o>!QwRwmaJL0bkp)xn^vyfzH#f` zOTxA{iJMMLk^{ zLo|YuHymQ&c{ZcrAP@;kNtTqBZjG&0f4VZV-2G;FNk!JHS4J7xD_4v8%(|kN{o?MejO&-u7Op+JVBwUB zri>g@l8fg4=BiaYvO2>c<8ljSZ81=Y~hjb%|6HW@Z*IcFD07DEO`F9lBKN3cFFUVL{<01GOvHr*HbK`7EV7 zUHo$a)6pFkH(j(}KbrCL^dHyD-b-%oa7c=g$;sp0Hs=fz<5NwgoH+u93%nf7`1s;j yJ;Nplxb$>S7C!NeVUmo3oC}X=LRVoSBg4_R{!bcXJ^%|81_n=8KbLh*2~7ZxDrUR@ diff --git a/Icons/DefaultTheme/VideoPlayer/MuteDown.png b/Icons/DefaultTheme/VideoPlayer/MuteDown.png index 83218bcb4391faf99d79f50a51a4b799340e34d3..822db9ccdab9d36416fc86e779bba5a0bad7a5a9 100644 GIT binary patch literal 1884 zcmbVN3s4kg9ACvj#aA=LzmU1(MLf7H;`%6=PvR{l+S<#c_}y#Y!et7gvf;kEIA+$&9!EtMqUJ{ zUP0mvNs?%SUZG4-GO7f}3{*v`R0OFblv-S=qevAMuSP=;2E~c2gUT|!91;ds2FxYP z0!0vBuUFw!D|pdKDD`?hL8=Iq3Wo?>D)Gp)5BEs1eGDcbF(N0(9PdE`jI^CEmJJwG zwbur>5T^A=AwNNn5k6WVlnOFnQxM29VVqDb76pZ~3;~LO8+c?1VwGX6;NoRoa`FE{ z9X@_U0Q9ZZ8kX@`UEJ=l2uV(v2h9jM(@V3n-ciWVZoh0$~L# z7TV^X+5^3`UKfC*{}Jw9n8Z6|FD-&(C-l}6(}{q}6M;JHwS)M(iNUjnYPJs!8$n-iYf}#2+Gn5)S?^fNr z-x^VHC$*5gfKTh`)*)TT)caoWt->zRAC zb6mrKMV{FkW{P`abKUB0$J(B*LsezDmtV}dR95b)o2Kz+e?2~8^Os{H zk^0rCe^e+do9E`t`MGk+t`DlQljXHTR}}pAQEj1r<`?5S^Gk*!+69Al4x5QXawJnRW?pu3t^!_V}`=|csU(&Ka zmYE(s**|z-WBuMpwfn3&<9z;rG%%wo;&uM;((B!O%{xa`X(lrlw=Pvq}41+N#$gEDttn$JDJl7++B{qTz(nUdzzSudTm9 zJvh72SfEW6KF;dCl2qEU_ literal 1247 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S3?yCqj{O5tEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e62SXh)tNS9AU zk6+T9SK3xgN>4^!O+eaIT-sPb%0f`aN?hJvLe7$3!A43+RYb{JQo&qS$y`doT2{$Y zO-Elz-C9l0hELv!Q^Ad2!I@vtgzNnF7}RLNafEkMjLp4}vk-6DtGGMC#ToyR(h!=^yPz)RoE zThG)--_%dhEL`6-K;JZ2&n#TeJVxItQQtaA-#S^}CfUF$(ZDu^)1idZp^Vp|kjtZ9 z)Um?CDZz0}Do%GEd4*+0$GH^C>e&?mYeJSHbRHa{q#BrLToBB?k! zr8+93DkiHkCaWr`pq|I4kvFhiz@tq#vQIdwUm#$DVB{?E#K~fb^Tm=DNark*&RMQh zwpOEdQ)+ofdSz=~Sx0tFXI@2DL3w*=WpiasTYf`JVPj80Q(t+hwMm9&iGj!-8@)Y_CVQOCHV0U23bkLI>~WBl={P(4A#RRy46HX9I1bntT~SoM zqNRUdUGKWC;SDW=2W)~5jV&LW+21WKzFS`QA}#w=YiUF8^p=iktzFX_`)73Y&ugAI zt7YQ+_Gxolrp@n|Hm`T$?B0pjHSJ^7EGSCbjI9OGv}|Jv|!oP1ux|z$?&s(-`?wSqj+L~5(wXNuBU(wsKeEqg%8@4RpxOLsm{Tp{3-L~)4mIFt& z9z449$no7rPM)1O<6`&Zi__;GK5^mXxvOU`T)lAh?xpMZF5kF+<>rIycOKt)_~P!P zmv2uU`*7s&mt)5tzj*)h&4&+P|9t!Y`}g0!fB%80bf7@-k`5&X2F5r~ z7sn8d;N%aCV{t_0=y+ZiR$!rja#NZe=fJL z=BHE6&0Wot)qJdWY}4vdv`BxxuG>Mtw7fq3{guwS?9{yiL#Z_c

^aH6F8Fn?7w4nx^HJcTDQls;*C)cA4>*Rh|09rlwce zxzh9FyLD~9PF0!lH0_h)JgJ!}8F@2u=1a|!oO1h`cz6zN^DFzt*LUvRxjw#cWq#WZ Z@i5H1xTsK@FU=Md%bu=&F6*2UngA2p)U5yj diff --git a/Icons/DefaultTheme/VideoPlayer/MuteOver.png b/Icons/DefaultTheme/VideoPlayer/MuteOver.png index 7643ee97704132b9a041c1af40ec6c987cfbf1f5..459fd8de968ef8fb47d4f5d9a0a86b26971fe250 100644 GIT binary patch literal 1940 zcmcIleQeZZ7%w0WSVl-NfcRC)5SQ5N$8~qtx^vFmV8?db*e)_e0`1$kca^)gwB7D@ zLBhz4qHbA)guup(bE3imQ4mxFLkwTy2Sh$ZLpFm80TVzWqEXbhx4V-V!2M&Bwom*1 z-rw_kKKgV`UCrEr3DYNF7*-Ih4Ai6hWak_=8eMO&uXmx_c%yQmg<<($ky4L912p=tr>ahE9T5_Bcw20~+4Nomp$!7^y$5{#&tpSZl|69QLdKe3=VM2C!W z7*#7%CTvL6gh6T<;ANupal9lcAc8owMLZdgX_k=m6KP%n+0JWrOjWhvT6F&>if2{bEkZai}k$ek%GLVaLP#u<9@ z6H(hX1d2)|60U^XrJE6o;d!2-S&C&zgdnXJ%@&iSX3fkp1fT^>)v#4v!yQIZ(wl5Q zfus({5I1tPnw7~D${3Xt4T^EmPE1)~D0F9NJf1^ac11JtlF@rhVk_KYK&l>EdXouY zMKjdwnOSEt$n7TDVll6pEd5^g>D&w zv@Wzipo1nSea`;jzLj-=IC2>h6u^jzt)DdhLcGiND9e$BrosbC5BTxS+-hJ zMW2osyP4HdB_l?O^YV%)x=FW3kxAOe`AEsEJv z3@t+7|EMX~W4amAWt4Nb)6Iw-MNz3*sB|rv@1p@O&sZ@PPdA+)0;kvg1aOKBWg_!h zy+!s$rgNA!5rv5K4#gjaS-N5;L=%=pP^SO0xv1NTx5VZI?rJUjV8Zu53?7^I&63Vz4-F0$w(Sgda)B;# z;n(x)H19p@e>FG1b$;mNmA1nz^UfzyD-&Pk^$c8YJ#;+gVH&y{{ydQ1e&E`npW3C` zgZb@SPd~V7{T8i!;)bGG@089zwdY{Xu4j(~7M319%??d0I*YwmdvR#Tyo=XQ4Q?&n zhOIjP_PW8^f!#B=_DuTG9OL`&{hs~NpQQ!$`_?Yn_xT$er=DC#m&SK(?yHJd{Jy5` zf>iP8wMF-a3aiIVf{Vu;@9qDtv;WZeC;m85-v9E7-?oQScVjD`e|24}KbShlZz)tu z=AP-q>Q}$^<^u;_nv-fC;~M~>>t`CPw?FdPrX6R;vV~XG^&fxvLg0$=h1=EA@lgjkd-rpFJ1@DX7BosTIPWvH-F2?% nzHgUe{dq-43pzFov@Pk&d+}Z0jTI}M|7NhFCa~?vrK|r2c}bkf literal 1262 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S3?yCqj{O5tEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e62P)LM>OOun= zoLAnRUn-JM$(LUzPFT}lTH8xj+gn!GM_M;jRzFsDOw6`G#HLEju2R;vLfs@#(JWHKELh(%MAtgb)ILH%D@{Q=L(48j$39iu zu~gipR@S3f-m663x60HpR?Rs}%Q;uet3b!E+|)hS);GsGu+G&t&OI>KHzdbDBF{6j z*gLw^FQOnkp;TPIQCz=C*riw4wNK8aOTx2L(x+3>w_nkrQ^B!E#ko_>r9;J~U)!r+ zFRs}#s>wWTwtDyy&6Hl9^gf;J`MNnX3<~BNm(AA7S+1MESR-?#M&>H5yp`rPON@&) zyQcT}r?y6Ace$l6_s&`2kg+o$e^qGFn&`@n@wFS%@|rSBI&;c9GAp_>D<&0IbQe~4 z7S>ECu9;}ly3DR?wbR74<&9HHS|*jW&aY{kT-QFmrh7(h|LnZZ?P2{Vs;3;Nop!Lf zdtOWT?AG4-jT7cHOrGB`Wq#-6`HfQ-bWU8@J7r17jKzKPR?M8gZqlOFlb5cWx_sUA zg_~wB+%SLHmf0&e&RV^B&YCTA*KJ*}V%vhXTNka~vvAYSMVogm->`4lmR-xY?q0Ed z@7gVUSMAuhcE|oTTMw?^b#VRO!yC6B+OYq~mVHOI?mxP1&xsxTPj#KS-+TUU?}dAl zF5aDT>Grg%_vT!^JMYH*=0guVPCr<5^WMe-NB12$xA)kELnqH4IeG5j@r#E~T|RQ^ z^6|4*PoBGe;^Ng47q6YZaQ)<^Yo{(>KYi);*-N)BUAukp+P%v+?w`2#<-*kmS8hJI ze&_M+`;YG2dwA#m<2w&u+h1G4U*5d^@c#YBcke&F|ML68$4?(W zfBE|D`-iW8zI^-j{m0KAKYsrD^Z(z!|G?BsYmh8b$i~3HnCt1{7@`rJY+$6bdW}QF zDI;fPw!@3B>nS&9yYos;@_T!GfBkv~)et&l6h5Ngoemm*;H&{&7;E4bGjQst@?*qJF_eQ!dU;llZUw?YX z+cny@CGYP|ZJN}^{oLq${HnJ-sU0it@A<1Iu*CQF)T-?Kk9T+W8uG-Yh37Xp)LlC} z>!i7^o}BUbq=M;o#bPY8M9ytXonv~lB;wlKgHu0$5ER&8Vmm3O)+O&blU_KR_`Frm z9y=VEcxiEI!J>~JbL_;~)CI$yy?cDTe8Xu8omi#)Dbm|l2scljqOkwdLFL#zw{~9& zU6y-2eR5G!!M4d0MEdLmm#$kFU6HVce`|R zX{Ad>M1ey^UYy^8{qX@FE;~h;gYWG6dOB=P%-*uYvqH6}>qqa`>+5W6oapN5;2_Av e!ZIa7LXsgMas3M2#)WS{k?ZN|=d#Wzp$P!4PB^Ln diff --git a/Icons/DefaultTheme/VideoPlayer/NoFullScreen.png b/Icons/DefaultTheme/VideoPlayer/NoFullScreen.png index 04d57c038e91c528868d6fb7f2b3eddec5f000f3..23d3e7af30a6624db322a486e495a463d6ae2d7d 100644 GIT binary patch literal 2019 zcmcgtU1%Id9N#piHZ7q_Ekv=nY%8^ry`BBM+cnpi=At?1B{4Zn;!C?bJ9oF_ZfCo@ z$z1|AO=toM6jDX8wNf7h!H0^zSU<3(jZnd8Xh13|l8X4Cq!mS!)avZrax$IMK2wm)6B@u7_rMb*XIVqN6>K+ra4);UVWSVx}Bvx zpexfi5Rlj=5*3a$wd8UY3eRsHByN-gvZl3{9C8rXg*-gqLex4)WNr_=1%mO*d3mUIzlEMN}1E6G@z^0WN zT4kyv0k6r5CPZ#9B{gH}zJ6O{6KW~!=5*q)mDAIRbL=!jSHh^Z;4F3tF;OQLRU{Hx z-1dCkhA1A3GQ{VQWtkdG@jO(K#HLhJWer1;Ssn2PtB8sTp%_*W3@@*bVK@+EHdtS( zauY*>@h>Zod4o@d5i9YAKq4YZY($l1Ho^lzH6%&lrN}Z`hij3Ire{~82C7VgC`V+V znkmG}AeCZ~E}5*V@*+zbkRyg-h>8$YbFo0QHp?Ta8!GRQZgimB%UX1?CNv!ewH{?) zkYr>sE2v@cD$iL zk&TEFV)d{H*oXpv$^%`NgH)C@t&;xVV!RvaWo($y?KC1MC&%2qGj~>(|GP6>a9)-w zj9XoN#kmz{D@kN=h#c5Kw{lgGpUP!}Y!WAzTqS2m_y0_;p9)bNop9<5QQGYWv7@1U3<@yr=1!HI8_sm9{q;+ x@a=me)AZ<}`Hqp=1AOxfJE~@9s;5rWQTOlMH@K~51_sw~ytO@cYR~?$e*iF+oKye+ delta 327 zcmV-N0l5C-57z>a8Gi!+006pI?LPnj0E$pdR7DaJ64Th<{{H{)_5Aw$|J~y0Jw#Lx z5EBm%6x7+^8yg!xMphUY7&13W%FNI+I7%NQEe#D7Jw#Is3=uj(Q8YYF4-XSXO6Pg*q3=aPPd(l~~%1pP5 zYXBAjxCLMxfMo#ol-Z+aGbVP_m(nYHCR*zZGNI>74otKMr_iZ;-}IpiCNk?(D$hll zzlExp*ivm)&OpZ)Q!}xlPTU=(l<1h4#mR-VPGTl;o@bJiXq<#MjZ80UPF@p%yod;Y Z@B{AD8Aj@g0G9v&002ovPDHLkV1mZ}c?bXi diff --git a/Icons/DefaultTheme/VideoPlayer/NoFullScreenDown.png b/Icons/DefaultTheme/VideoPlayer/NoFullScreenDown.png index b02aad83054c1dbc71197e2711aed6afde62c543..b4b900e8bd91d0778e53cc3daab9de2e63fad0a2 100644 GIT binary patch literal 2243 zcmb_eU5wOJ6du9IvMfSS&U(J&;<;&UZye+Z6Uc<@BbN>@?jQSP{fxGdiQ=me`Kh z?vBN#`F3`BxI8mxVz(4W#Ldxowd67DSggCJ>LI+EhFp&3Z70e9zV{=Zvq_R4QZpdq z_0fVou+FE;)-BHBb*r&K_@0GachzJ7B^n~GS}Hn$SxxdaT$8P%+ak}^Ov2SkzBdZU zEzd0B`dpuKMjQwj0Kn-+9O@8Dy7dqz0Z9@;LWG(C6DE*MMdlhmo`v&?WiCxU(g?<` zl6)ZyJyR4bl}fxK$6Y@!Lc=gbAc>MBFbg3VaY9rToM2uPAw>i1+g@n94i_P!oLdf) zJfm9Aq2#q-ouE-CRxz=PJQ2o0lvB-+;Fg_N_KUUP1dFstOVkMiW(!-kUcn9Bpx|Bw zy7l;y0Iar|Oe@BuTuP-@h#>4=%hG5RWK!!OJK|AsDGl7Rk7@r}Msr@2jc4}x6osyz zb=_jKQ%jnZIZ25FZvK$%5VsO6nBYKDD5OcAbxjt4E&w$PB@=37P@amOljpfs8O=Vo==v-$V<*>GWHM&j z2}0yxnocEomUG;;i7Drlgr+E}ASsF>Af)I*LWT;<20{XWqFNGc`lno6jyfCp*Hunj z%rGuSrLs(*LJ~p_%DSNF3K9~A1qC%B=X9i~Ihw;ww8wp$4H_y=M2%PxhNvgO_W}iU%(m}G^S+{$~RU;d*S4y3DI*%k}bio zWJ!RKs)C^tNg#RxQ(eMVg5qv58WaXmpFy^0Ql&a1NF&S#N{Rq=R>ho#h@dIJP_RUZ ziq#3;HJmyr@!ITJ0M@esJIZFH5qB9~(_+BY^ll;?&2f^)k$@@T8@KIAdVNDxZTMFT zl!0DD*!AdvYlRi$)80JO#dQZqyc+oct-TI)id6;3L@+caEQ%tnN)})*NzDQZq=0Br zGxaN}t0vS4H0d08@7zBT^8WNOl^D@?pxe6?p2 z_6^p^+AX#jMa$MU$SztNDRo$#e6~#r+kZL9w%EVYsorej6+Cw4r>Rpve12o`^>0=A zxn~cJ{n5Us?cBi!2j|Z1d}n)Q#r)B&>&cy8&ii-Y!9^Rt9_)T|K%Q}Q^Oh}J@B4Gh z(7h|Z>Unz2$)TaY-+l7o4|cxw#D$-?^%tzMvuAg|sy%h8vezev?}&dhy3PBnV{A`H zN5|$33*I>O_C0fk4~e_?ciz^ue>^zz$!s`&{=mq4o%atPFSTFTbedBxjGoA^FV9|e zWY;d{bo__!PwX&mFYo#B*tF4)55K%>{B!Xic<$Dh4)+|J;!Hp4?tDf9VE=6H(=X0E zP*!ldi;wF)g)@b&!q{QnXjJO~#y4;nWJ8950SH%wb_3nxw;A~_u+HWeBw zBPly1Dm*4GJSi_haDt95HB1#7Fcl(46+w6lDN!#vVJ|yk*4o}LJ7X_AV=y{l5Kxd2 z96ARyW)@G94l}B6h75 z95xmkEH5=qFEvmvHB%NGF%~gjZ-I?+gN=BKmwJnpdyJNXkC=p(pM{f~hnAg)mYxPJ zU7f73FE&fGz{It|#S#({oujZ47AXrPObRq$3P^vZv46BQH8vI&78hZY5D^js0|Ol$ z9s~pgCM+)tIA%dZLsL~&e~p$ZDk~^`vbn^^9v&V(MO8&jUf0~?LrYyIDl$JuS3yWw z{{H_XuZGV600B@*L_t(|URBJ~Vq;Mh0MLD|V%xTDJEd*gHpZSmZqht7T_3Oj!!Yf? zZdwe3pMN^3@Tr?ns)OGd*U`6bN3INL&BvZA&$}znu^Il_4%{Cd*x-l7y}P%w^|@nf zXK&YSff3X8#^ze>e@AU?b7R{C8sqwE&g#e8UcURSxz%+eXrfNL!{`$sguaMA`HT*` zGYZ3osd2rE;Pa7)e~k#0etgORf7IDjI)UG`Jb$!?L^_pK!`?`H-4Ns#}zC9XK|o65IX(UaT*Hr4lDv^smPe5 zvm?PUI~647&5^yNqIZ4LK-izl8Z#hPi=R68z)XIL};KU_u>~@THIWgF`ze2&u zj5xBy>KW~q%zmAf^pEziO3E2Hk;UcBO10ilC=`u)wbGQwWv@-UZMaNO#lrvq002ov JPDHLkV1hB(OppKo diff --git a/Icons/DefaultTheme/VideoPlayer/NoFullScreenOver.png b/Icons/DefaultTheme/VideoPlayer/NoFullScreenOver.png index eb5e78fd361bf32cb12006f60bd60c7e149b4db5..33d5747a36223276db231884b1f1e1f82e0936e6 100644 GIT binary patch literal 2008 zcmb_de`wrP96wu~_O{Zoj#@<_%@8LxmzP{}m&D%2tygVf*VguMH-Bv}FE4kocS)9{ zy=&P}YE>o-^dG^Z3qE z<@3JZ&-eTNy!Q_G_de4Yd^i{g1R8s~69eSE)o%~fk!Rg+Z$D374R-flHxSs^?6-RY zlOMDO0vp~lQfV)p+^rxhAA*{t;!rVf6LcWZv9oAHG=x1$#Tmnl(F@ZvG-YTpdXJa{ zNxKtgjqWiA503Sw(AW@?HG1a`s-vh719|L0s+iB2u2PKACA$jg`@<|vl_1_wjE?&b zsdTcR>a-k8$sxcX000%0LtK-sizeMeLZJ{UghQ5-VL4frS-`VA&kzLTj+!1UGN!w&Y9WDLnBD7g91pJsvKn>M!_OO#HIoA-2b2yJp&m~x{hPAVnXSrEx z9n-bnH#s1=O(ttT*5s1U*Ic+>*9Zxtl8`mgZfexV>;QJHVF%%^5khmDAC0YaIv9GE zld`N_wNm|6$`mhz0JVLOVQN;vePYD~oPZvV(WGi&21FSkrZ`^VB8m`UKv)5w3{6^^ zp^vVDMpA%N#0a@>f)dSW(1W)HYe>;8Cl5)$MjmD`YnvIGs-;osv~re1920io5{qO~ z=`mdonh5tKVl;_4WEh$vU|9l!tTMbLatyBvDg!x5V~`eARXL(_JjB)c2@4JTmG$SB zRjyfx*tp>pp{NWb88T{w1B{LYiGiXlGZ5%eRh9%n<;1GBKF1&n4dzx_^;v1eq9}<# z)^yB>K-U=z1&xtqF3gYyL`jXP;Rx@mxg-#!+i*$gMl0)M5Fe=Yat2k>gaVPT^%#x( zB4drN3>$0Yv(Q4?cs8_|vOI0!64fRS|P!^gQOmjZOS zW&MA_u>O8oRv5cle5HRY_Eu8J(h%9O{ci23ARo2E2Ad>L4mnCLydIn)$IzvoL_8%O zLD#STT3`RgYlm|metP!c-~S$+?RzzT?%2_#FBg}Z8YYiqzCM0#vEdu?_`Wzlv_)uc z*#6V$y3B<`%lDrj<-a;@f4BF|xw=QswEZ%5`J*4k+b>Pd9a_w^e;fSy$Ayzku(P#q z$MPFb4z^6Z0w4J#F>e2L`Pj_Gv-Jl)+x&QQef_EFh2>!3;KWnYr`|u4nrwV&YV(7$ z=QA^HSEe@2Jk;9SvLVO=u=V$ApZ_u6q~Ub#xfbo8{=?!C5eq)UA{=bybjUA>9pyY`R&2hA;) A^8f$< delta 852 zcmV-a1FQVl58wun8Gi!+006pI?LPnj0n1QKR7C;;0ud4#MowVU*x%II;N9Zs@b&yU zP<|3DRT3~@7#J8E8yg)dMIJtS5fT(2D`+49V zPmMuCLnl|HM1M_RL``8RX{swqk1KDhP;aUoPKO>I9xp#!HGQlWEK(CKTyBZCbcK?5 zi=26loqLqPip<}R(chD$u9MT>nya&$q_rY9VIoz7BQj1SHC3M2-=D9yp|ZK6v$_=} zLlrPyw7$d^78a(oy0E{*5fK)|$<7iI5)vRk5+q3Q@qhB%-r?Nf~j5Bh+QfoFO1Vr2&^>hw}S33T5tb~U; zJx$SWF&wt&FZ%|{qcX*dLN;0+=)2Tk!Eu|?;+UOV$gJP5XBOsW9TsI99P{!jzEt{? eCYAD4dEPr@jCBf_5_4_<0000TTWF1owXC)(NblUa(@wfOGtNxA z+nP{8jbeO2LPAnVeD@b(LShj3QGRG3X%H1dLKF>>P%#?Y5EGDs-q{z6DNs>1nVp$C z=brC8zH{!`(z0gtoZ5S9Baz6Q=B8vTy)O!{JEqhBljCFU^fuFNdfJafX3Y<;X_3KQ z3+URDR=PcCPd%n#CmThEqmyVp>r&}RWciA`i*Ppy7@c%lc7px=;4sTrMuKgNrC`c! zAYE2dzem>guSw(nZmb&Yiieryd5tQ_k^nLJY{vGre1a|L)#!7$%&|;CBj*r67r-Gn?D{^j+mnnc7m?IgIC3fIbS-v9cb~%CLcRANl zUHN1AG%sts zs7Vk&QG>83nsN-w?5h@)0gR`i9I^wd*N9TW87M$E6*jPDI$jphXjxg*NjTT;WSL41 zv<4^RcodjgCl;(orL<<-50H&Xb27nF7owJBXsU@t2xSpSG9-WyNd=06Okk?A9w#!E zMV>G3Pdd0Kq(!*DSR#glsgA3t7$H-P=?LgCQvy1Y2+&1c0%ly)6#>cuHifdb$32Ty zDaur94XrY$MoCa1mLUc*6d^#8qyQbO0*INsf@BFnIVOaqP+*tVWcf68eWl`BOP()1 zWh|yZC=KDTP!cQ-lS~Y@v}{chk0~LS_UF0?ReFQu7twvk406aL^_?_!HzgN$J>z}U zdt=jSY~unSQV;VGs6;XVGUF;ur4rK>m6(cv%dS_OULhl|N%1lnZ^iUdSa27zI|*&O z9DD1|#0VvlfMs9^vI4|d$Rs2fKoPNmRb7xVj^EIk>dLy!&S1yxC0-S=T;w5obP&%^ zu%_o^8RWVd3!{*QT(51E8giv>n80DKR`GR%W)RP+;y^V@#RTSm#Jefurq(=)(VvuY zwsY9XNO9 z*k3y~Tsb@1abWw>+I@>p|3G#O4@`_7d-hFiZDrQY(@*Xl`SJAGm9rb;n>TG*+JEZO z$NM%eJ2;UzzI`FPdF!PM=aXori7tGrGp1XeD{I8CF6kQO@ef#|r z{_3NPV!6)-M~;2@`JqGb^6W<&FH!49KDqMlxlQSzBkVjX&b;{4AAFtn!mIcFHshD+ d&wQ~k^8Uo&htd5%9}g$Y=EgP2Ju5pl{|!18nj8QC delta 1599 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 z

)%I^^DqCwI=DKY#nt(>wmrXX2cS($g7|lasRp{LXk)y?k_T&FW>#maSfM?tlJ^ za<4Of0oln6Nl7V@RwtsXUfy1_Z2oKzn744v`KOi9C#)h<7!ngR944=ie06)pf`xBi zmz9;he!FnN^7GHb*H3oHUg^`5^ZG&z~R57A(Jd)$6231VdPo zOTwPKXKNSD%KH5C=TrAbKYxDCnt!-p#pB#P2`&sF5stfK&R$zQt3MVf`^5DDP&T%2 z*5ZpxV|F_-goIihi@LOO&V(L!uO4S6|5sgFN?+*Momx@41Ww<9tQ+? z`DEo(RNsI5c13&Lx9{&&Rg`4;cm)o4FtBpP9WdaPR8rB>e)IL~MctKOzrNAdQc;rR zH8>E*z{(c9D~3;5Q^&;k)t4{pOqYE5^2*pmM^l+EW>+u+E2G_%E*UMo>Ke1>A3m%! zoBQFzbF-RiJuT_3DRvC3%zvU42hDY=YwPQ-zk4^MVaB_6*X!zQt98r|R){jNva*Ix z?b4~OZ)|SAFt@3@Y3_yg=EnM3ovx|jtUy^7(Tc&bz zWdZ4Bww-pgy964I4IX*|KHRh7J2? zPIBS|2{W)m0Fzk!q?x<-?mM(^@9yc7;>DQ2q6|Dxz|AcdkXJEj+N6rS05NWEh#-S7 z90&;tiHM7fivVe;h$1k9H43n>uz<3Fz}gxBGgyNkYKQ1P00000NkvXXu0mjf{;1yW diff --git a/Icons/DefaultTheme/VideoPlayer/PauseOver.png b/Icons/DefaultTheme/VideoPlayer/PauseOver.png index 4f7362626771a070417894a83c2eb575c58b8995..3915be7de48e71c02976786a1f5cdcf576b1b467 100644 GIT binary patch literal 2703 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 delta 1688 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 YIA_DP<0m_&x(9xBWli{_C9iDw2a?U$O#lD@ delta 1682 zcmV;D25tGx5SI;*8Gi!+003c4mpuRg00d`2O+f$vv5yP zfP?@5`Tzg`fam}Kbua(`>RI+y?e7jT@qQ9J+u0{~D=R7DRD4i69y4-pm+5fKp* z5fTy-5fT#;5*HE_6cH2^6Bic{5gZW`9RL6{002D*5hM#1HGdKqC=?kg6&oxUA21st zCL1Fy9Va>`Ei?oGMgRa#0t8C}1xy71Ndy2*2M0|F2u}h4Pyh#31p!e30$TtKRt+0h z5e!loA6)|rWB?Rn02OWk7;gX^a~2z77A#mEDO~_2X#gX40XTUaBVidabSE!NAU8)Q zKT0StO(-`@D}OmdD>+0cIYufwMJPK)EjvdnJxMV?Od~F0B`tFzI%_XGcr-nDDML>! zKujb?pUT{}QdGC@%_L{c_JR5wmtK15PHMpZvXRyayoK1f(TOMNVKxPhvw! zdPh-XMN(u#S#C&CWJ*$HN>gS@RA@_7X-rpZO;~M8P<~imZAWE%S72{mW^({7fB-dx z06c>MK8*lIi~>rO08g9}Q;PspqX%4|16!yCV5|pew-$Q39B{HIQGz8`l`UqPC}p5N ze5MF`%YQ*if<#n`OjLqSSBXqqj!{^FR$PTmZiYZ{ghg|SM|zJ;a*IrQl2&7lU15h- zY?NAcond8&V{46UZ<%dyk7IF_V|bKjd7W-|m2G>Nb9RSub&_#)o^^VaaDJP6f0=21 zp+A6~H-fSohQ$+*+#Z_YE{w<`m)JC!(;=SYCx52qDz5D@ujw?l@Hf2lMuC<|gPlQx zp+bbALxrbBh@(b`q(_UULx`5bcIN+tiJyv(qKJ^DiI%E{n6Q$Ut&E_yl%TYl zpntZWro5b~yr{3fwY$i{#?8UQ)XB@&&(quA-{{)l=iA`x+~Mfz@AmHR^X&2X^Yixl z`uqC&{rdd>|Ns900000000000000000000000000$$dg20009PNkliRB zhX!|d$rvPshxt+;W+>#Rov zLs+s?;=#N}>z2;Ve*NRekGG56V}B(>woL2wM~yzh%&IUvWCy<)2VA{ZR=Uk)Y9G$1nsR2b=rNi z!dZc`ETR=Bx@+3{`#U-|Z{N9d=hiJ-`rB%{PgaPsfb=q3&pzGVyk*y}J$v^7!QS0F zw={O2o^8zx(#y)q5kBX1Z~N|>H*bN!&6~U1dr!{^=U|1%vT}vbK7Y~Ix&7vC5V*O$ zv+u<0a4w)Y0~;7{I!vE)bknA7J9g~YwrSImIny0DLBb5|5WplBKYh-DLx+zaK6GHt z^ms8QuqXo$6mWBk1>{vspFO=IFF=f&8zRUc3L$Ty8r+H diff --git a/Icons/DefaultTheme/VideoPlayer/PlayOver.png b/Icons/DefaultTheme/VideoPlayer/PlayOver.png index 56b0e5945298d894b063c0a07a8907915b30534b..32de7290120db139c76685410b736c489149350c 100644 GIT binary patch literal 2124 zcmb_dYitx%7#$EPloXAkJOrE!s1TT)JCE+{j4V*Qm94PYEGv|#z}=ZUyF+(prZdy- zw%`w*v5K1bAZo-&kcT89hD3rSC^SZ1kq~^87=tE21gZ$t77M6%cDHLmULkHWJ9F=x z`+etp-lF+$c1D!oiZFb8>Dh^W&G?-GZdMFxOG9Q!b?cj zMrz1P(?+D^1GEAFAVtZ?imbwk+C-8A9LInF!}@79AOlVoc(U-La5`Jn3SD?pu&T(KX{R9;tfyfDF_w{_$YL4gN;75JI5B3&=U7A{ za<$>O&`?lyC`e(=K3!L3fkkmY$N6baf_@rln0Y+zN3;k6yaYJ_Q6R4ZuMe3@gV$Ma zect7&so)s@W(B-duEGGo=7n)u(u4pF6+9GqKA@pEh_imJhs~3=jz2V*>K)Z%rQ(Px z)L>i?5e@vJNNaup&;g0%XaN8Xs4C#00zEh93?heh2e+=N@O{ie^@XRDPUbuzL&fuY zkW#!RBb6#l>({8qEoCmO&m<8JdV}WYvpc5dW}uBK61a9ZH5YR|@(yggG4=8QfI#9U zn$uL4)>Oey!+=yy$C1jxxL@J}0QE@kO+9Z$UM?49PU!LN?NBe2MM**~`Cltue}vFGB<@cZ11snRNz7Jut5f{lZ}s(*7+;e z5JaD6szVjAaLYH}?zERq9n$~D`5_=zcd7Zyr!0JbO=T z=Zd3GY-?<3-m++k_1@fzyBCi-7A@_1DRpYWuE7u1EbMBVH~PyL>F0(LcTXNG{9v(b zPwp}P`03ZvlV)s6=&cTVDs^D%=ywmEuqUqj{ehM{nVl0_yWO@wKUl8SPYX86?U&}A zKeB_GKkJK6_I~%*;`33l-m!O#Jg{jyePTn?+Be(xoGERe-O;r@d92^D%fkq8`s1&= g*$*#m|9cIy50Dy!50Qvv`0D$NK z0Cg|`0P0`>06Lfe02gqax=}m;00q8DL_t(YOLdkDP*i0YhEGm8O_|HCt7gPBV|ZsR zH7r39gx%$~yK+fj92iYR4N*tSTk2S5K!^>Oa4<(56U3pUG=H%ioxGsUpvi=?D4;?q zR{>L5RFv)c{b_?u&%ATy=lkFHIp6utIkPAskqe$B)2v07=*8x!#UT+12J;*#)>Npo z>*Vh(B{(9XkHY5*MJ_T$C+WlECmSMlzM*6NEgr^5U2qg<)>Npoiw9>RjMLjSZ(nlZ60B0+kuTv;9Nkd_rTH6gMTI1oDpE zA`fW&_J2CGYFoWS8+X=Ir`bJ6Zk?&PQ*c(G$wGhw4W{B36r(rK88;=sXXz&9m42|b zwC+9uV&KRZov2-yRvDLkZQhm!sl<#Pdir-w4EkhMXY%*0WFd_4)|bW4-T=z=3Gnp6l~=Xc?e=@NE_$E2u@=qxqJJqiO(-cxydgNhIo=MMECe{v`~suJ z941T;<$d(eyqI2m`;fJhmN)KePTJmNS#w@;5y$5};mC?~M1US${ zzu;-!_}LD9>NTJ{f9t>@-qY-6xaTf4_E7&l7$`G=9+A=54*Z~s~{E!rZIu zZ76ETiepkzqg(War*h@dcISZ{3muT+Mj^m~=H+KrM(N&R6`XPOl?j!C6<*PQYNg^; zt@zeG?{$t>_~9e_Q`FThh37?|$`P}xy?>WALVyF!ee`%`(9oegL_A;6J9!BuNS z%Rvbn0#kPlH_05$ysxc%kv)aeV^#COR=Ux zUCtCIeo|z6C{GT!gB;>rR)1>;^Gjt~vY8h6cu4YPYXYvmW~`TDO+`GVlma|B@slFk z8wHo^^pQ$E#Pv-bpN*vR-$GzYzCO7~iZvBU#Df#R69MtPxj9LradT0>j>zy+=oh_& z2W?)G%>8m^O@%tU(uUuOfRw?m9?z0?*jUZ0qd5<{907*qoM6N<$f~}VC_y7O^ diff --git a/Icons/DefaultTheme/VideoPlayer/ProgressBar.png b/Icons/DefaultTheme/VideoPlayer/ProgressBar.png index d372a39e93b6a84bf8e211f2243d9eb938557e92..4d5df3789bed9a58f891cec526e01330454612fb 100644 GIT binary patch literal 1607 zcmbVMO^e$`7}mB8O}6CJ9zq~tP;yA2(u`!;l7}eEX1$3G)polvWOLim%-B}e(x}qx z+PkOHLmV_OaDP%`9tJmHwiJ=el>dD=Y8Ifc^__X z-9Ep1an&%4^Sy3o$1qlIfc@Utci{J%-+#FPf9LY@TgrADzFCRu3y`}8LhB_cHMHX{<{8*-F%j|+L{c&pEk z_jy~GYd6sKDFuR5YKEriI4kKiG-tdN?CKbsXa>>yp}AfKM7z;8+E9f=ZJSt}5Q6-+ z?f4FN{lO>5C9aD}fSs1*1eCbcYoNu)gm8rz(4Ee$MKE{@&5_nQ#dtEA*pr5>iXnE| z?KUPZc3le)R(X_ZHnp{}Mi#3B9hx9@o zR5{Ing4ekGpcv1B3y$SjrZUqdV4WJ9kCayBNS#7mzkV(N)HaIh7$<5;(>g?{HxD6= zML|wPm;Iw$;vHG4gM!P=Ly&o;$|k29g=AV4eWk|BPHitGBiFMDx^_3ogqoBeKjR=f zOv})Ot~D&;Tcp`{TKZc@QAB%LsaeKluM?V(vz;V@`kvPoP2aOxjBqPpo@WJt z6IeVTG7dOtND?glJBlAvon871@Rzu7N!?#M3|);K}4DWHs3(;b?;YO56H;y5{>0&kYVoOUvj zK>CVy&tat+=m{(2`Vgx1+Hu0Ci7(mVtEInL^G=ig!uY+7^hH_uh-E_wyAqpKGPqhQ z^QPbz`!##_%mP}%VXIYUy-(qx-pDco>H_xd_s)agU{|}n&U(N5kc%Il{6SW4{e11h z{V$V8mu4n<|LehDpOe)GSNHA>TYv6dKJ$3*?-k?rfA4yv-hs#V|H-0J*zbMLGF E0Y|{`xc~qF literal 934 zcmeAS@N?(olHy`uVBq!ia0y~yV6+3WSvZ)1q(Z^sS`a7Q(btiIVPik{pF~!WaI!~` zF9SoB8UsT^3j@P1pisjL28L1t28LG&3=CE?7#PG0=IjczVPIfp2=EDUm621Fl~dw( zJS*XPD57FUQstKH{&#uP{@3kz+j8_jQ2Qtt4S``C0=aYZegeIx>gnPbV&R{hkRrh< x!XU@k(HDdq( diff --git a/Icons/DefaultTheme/VideoPlayer/ProgressBarBackground.png b/Icons/DefaultTheme/VideoPlayer/ProgressBarBackground.png index d0c08a29f6f9776d94b06fb680e77aa8ca3b78a7..3680908d01370a323a9d52c837716081ff9dbe12 100644 GIT binary patch literal 2765 zcmb_e4Nwzj8eXXuidYnXilt*S(e~6~*`I8Fb|rE^q96njX$7ku`}1uQNwOhXAozEj zSb7D$yV1%G;`KVTs0=OEo~=^+Ik1CP&I(d1b<8bP9CJWiI+2C{+!W~)Q5?5{trR9FSQ za)sK2o1F2$Vog}*0?XH>r1R^td0J4$EL22$7)W3TGOO^|Z4Ni%(JOtt3|xC}V@ib& zB4_KBvEG1+3{$EiUUC5i9fhMjj^hd~9Ytsfp45tw3KAzt4A)_V1|@V1PBN5AG5S)% za4tb)(hQ46gTX7k(jv=F2E+36^P}=rQIgAy5j0I>IEj%Y3K6Kgz#+39)Zv~z#$W($ z-eq;lR>`68GP0bME9;d|>PQZDr=Qm09<39s80KM}7!iegbMgTN-j8$Ux@^AS0*?V3 zumgwehFHRng=I3C{P2g;+U4b)%Xokd5T*ct{2-F0PAh0s~|6nac(2VMT!IEGV3w{tP@Qf(A>@2L3)y|p$ z=5&~S(M%>L(czX^2M-brdL@(^WwiZVXR|oR$^=N@`RhDhiZ{(kf0sH6qFBw1k!t)v7VJr7kNx zP^|4iR<9}nGHQ9X$N?RTvMNCbwNNao<3tjrG#sG;EUP9tL8-VOH(s(yE|Vm{nyb8S z_PL5lu)1OE3P#Vza*#8+vRM^ABQY%R^}1fkdz%a($8gvn~*8hBf^`b77AX?`HEJFI@y2^r4nU;nPHe>I8~Jbt*!KQaXy)aRSQ`02=bq z($xf`qQ`vuQ>2e_^A^@&2Jp#=DSvu0KhCd@O6Gg#>gP)a^FA*}9EN@0eD`fSX7yNj z2))*HkM=Z;9GCplh?YFKCitw{0kJi$4@>C^(P*5E2NU?14+;~5c!Jzl*J`M}(Op?$aDF!C<_ zV-Q~W2Ptqs54hl%++2IT8qVl(iH6v8&+cm#XUaC?A+Nr2wQU$VcJHfg3w{;9`fwam z`sSyf98?xjEuQ1A2CiMwhy9TnZtm`SbKt9!;eGA&;=PTLOKpGROyk<8-CiC#SQ*4{ z!Il?NL$}YJz0%n3u8`-4EhdATFE28NT`D^jQ+1@OW%s73ce08sAEjOUcG*gx#XEj;erM{wiPMQSGcto!OE%o;#l+D4wZrr8y|I46?e^X&AJ&;B zoOc|0_JXu>$5SB|@Soz$>Y!8KZOh6ke`(+5#;wkGm2F4qx~dz&b>`=nTt_RvmM8b# z^+Xp>K63Nxxa79M@y8|&hwLeQ`C?FSP|M`9;_M5#C-AM$4Q|x;Z(NdmZ%;?pqFFIj zSBa)@zT@U=Ct?rR2kignrsHS-m3*td)_wM4Tjz@f4J-E>{=6b}c^_t}V@xq~BGI&$ z4je3`j`n;|S^9b5$*13)(6K$~#%G-kSF7&ajeaIzMQi_sv{-%00RM z(yD*FaxOIdnefv5nsplkngfv!4-EY>;H}leGiD87t!W{-uBw?Q&jfTI>FDnntm|KY z{oLi8KBa4|!_?C@6!B5jr4qy2NpF*`A{$;k@ zd`iD{`1Nl}ujVaq+}(Si_Cn2XQEX8~4>(&rV5aon{q<1m?Y7U@COgu-Y|E@bdqZy8 zz#y|CxbL&69c5{Mj}NV@Zpk#3@1f7g3yZI0P05^?6rl_^MvRM_fz(X96ju;@A$dc@ zd%bzC@~rtKd&Bw5zufA3DTdm(tj+%gN>%yT literal 350 zcmeAS@N?(olHy`uVBq!ia0y~yU@QZ&c{rGXq@!P&3y@+g4sv&5Sa(k5C6L3C?&#~t zz_78O`%fY(ke?Ia6XF_|*_xQu7N6OikkuNS))1RkAD7V-o=_eZUlx^I6P;QY7?rP~ zV~xv#tepX8UACj06+}RfgI=(2_V)0E{5dQ(eLcu3nDSZ%D@FX*nZR_+x2QoQHzTfxz zez$WzTwOUjx9^#Kf*{N_>a{g~e~e#y_ddw~PdxSKd478&s;?)4u>Z;IdO-N}vw1;y zXx(qM({}S^2eUv%gt=561`$UK!ouP(LU@CwqDwn|Sdp&$_>(01q#_+JHDNPaqFukf z9n)jmD=oaefo&o!9u^md4krj`io{{i3lnEpk#b&#ud~;RB<7HGqasx^hhn?ADlV~@ zina^^h7gLTEvu%AHPd@h)S#v*&{EVgP%Q^)j-iW_pTyn8#B7Gu3>rBY&wlFNl}PtqgIi4%(Cwj z$0UThreOm@Tm;;bVFF7f5ZDOmwxJ?Jx6#zT#&AEY?9`rcdy9C6N(~nncDV$QX&_*g zObu{Tf{c=@A`?&TUx|G_TBvv5JbVInBb>5Sc|-{>T{4-EBd9Z3_58!*VI&N5sk^2g z)FGw12fVUp1FvLYfRJGUN-V?DuxVJtSWvRj;1uF`HKtW|NoM)a8`i1&nVzkQievQc zLXVjDsDp4edld<1O-G3|dF{`r&%Nb$OgrdOPI`xC9K#akr2`bxYKPbIuFbC8PJDtk z?=1b^T5G2C{}0FgNS~w?cTw1(d?#0=ESS8mH`i)w(HUA0Tx%$VRJx>h(x&HZ;@4o+PZFv+wJwJa2zM70Q_wpAT zC+iRUv3uG5?ey8d-#vY(^TFJsugTATdw%`gUpwzz`2Er)cT|1j3{5`1x^wN#Q9OF* z^=AHb?bj2d_`u1>L7UTs=l=cj(8W_9?H8);qrbdx{hI^XS=LxyseOIqtyBL2_MuQt delta 291 zcmV+;0o?wm4zmJ~8Gi!+0076RkEH+r0E$pdR7GEDgHv2{QCe?SUw2Yla9U%0Pgre| znyX!AfJsqjhmN03R%=R9XoZZNTx5StRBBvfcUWP1OH^rIXo8oWtxi^KN>XQ5UwCtR zkXvMaSzvT^e2-04ZFYT-U}%D0Xn|Q`dx40UZ+47NSZ{)fnSV=DYjAgrP+4wNU3Gwm znowA9O;u}vh?`JZaRiM8i~s-tWJyFpRCr!J#6=FnKo9`1;e~LD%nbkkUZ;vw9}I)h zKZvg0%@?uWdNG3PzB`Wdth;)u3e5LM2;uqmKFkb=r&Z4Rvhmi42qKo+Lsh2sTs0yB pM7K$rE}LI3A{+v9MPC*}W?!eY27ZxmxfK8a002ovPDHLkV1f)*dN=?8 diff --git a/Icons/DefaultTheme/VideoPlayer/ReverseDown.png b/Icons/DefaultTheme/VideoPlayer/ReverseDown.png new file mode 100644 index 0000000000000000000000000000000000000000..c8a34130c41b3d4babf9d72219bb75a1be0130f7 GIT binary patch literal 1674 zcmbVNPl()99F7*Dw!0vVvf_kV_@#@8cS1T11^q{@eMNqt{7kkrF54xzo%sZIzVG)Z zzjPZj0pvHZACdH;hsMS0+x zpwY~l_0xpOut2%=MPU%efL4_G#X(G2S7fR$+Ck)Lzg_uUQv>d4XYD$!$IGGen5aA6d6?qVJ}L_z|)4j1lIXuT~mjUtm|n@xuDvtuc^y25vp6j zh+&LX$1NC+!Az(1lxkwr)NxriO2{Y^Y!a)ej(-}+CA>w}E6dTGH)4=K|hA^JeM(H?D zkTHEgW8Em=JfRrawB1)x(PN<=F!AtIT19INkhusq*7}W%c^M=u=@Df zAmXy0KCy3usL)J!8dR-_u!FGOFic{Uh*d(kNH88j>yihpty`fMv0Y-o&V5km8BQ~L zS1@O!C6kasz(GjcLXV@ircTpHmSs;SAPnw`Ll^ZrsYPi`7u7BD$=Ee}S|N6e@w`pxwk zzS}pBCUBT>`Eoj4;buCYMFi9dOkeMp-Rm&9+qKG4W9}l``~BxbhaNt+cjMhQ`~KIj zFE&4&nVC6#>7(}+=D)gH{o&~gFCCwK;Y#X}^JNEXe-Pf<4|6>+4Pt46-TA1H^OnqzTsB-zUYFByj$G`J`i&}NH^6@k0 GUi$}jE*KgB literal 0 HcmV?d00001 diff --git a/Icons/DefaultTheme/VideoPlayer/ReverseMouseDown.png b/Icons/DefaultTheme/VideoPlayer/ReverseMouseDown.png deleted file mode 100644 index c57b383d4898d0f93418d3d592fc6ab2b43b3e4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~c!3-piujpS2q`CrpLR{lBn}cJD1Ecc8;>&}g z3!;*1{3CL+ikf578axBjEakt5odeEmG7{F0Ke#7 zTiz8S&(nO-zGL0Jv*H`?RT(zD+GpMOdCl&sRa|GjyK_AJ`OWSOPsj4mb3ZqIyw<^? zH0_pi=(2Ayrbzopr0Jq(9 AHvj+t diff --git a/Icons/DefaultTheme/VideoPlayer/ReverseMouseOver.png b/Icons/DefaultTheme/VideoPlayer/ReverseMouseOver.png deleted file mode 100644 index b43d264aa38dcd10933b5d700c829196e4c778c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 307 zcmV-30nGl1P)XT;pR>Wp*i2MvO;&49SZ`iv zf=*U!R$q8aRB2gadrDGgTV#GvSa48TZctfqUuc0}X@g*Bf|Z=GO;u~FvdFBn$gj4{ zvAD~!xy-!7*1W{my~NbM#nnw!ZA(*YR9$t`+36$tmtg<^0Axu-K~#8NJ;X&4LQxC^ zz==Kij=Q_v|9S+dq8E+TSN|V^E0>39DA!&HFdG-UR~#05&&;6uJg1aq7jL1e5a}Ib zjE|Fd7ZEUL)Yqm$eQR1~2GM+g$)^3ZB_d?kjjHZf&TnR)2mc7@#2Ekp002ovPDHLk FV1nADgfsvE diff --git a/Icons/DefaultTheme/VideoPlayer/ReverseOver.png b/Icons/DefaultTheme/VideoPlayer/ReverseOver.png new file mode 100644 index 0000000000000000000000000000000000000000..6edd68a5786975136743dc5c5bff143ba28ccb4c GIT binary patch literal 1671 zcmbVNO^Do798bGcYu$oawPU@6R8Vm<&8X?slXrDEji=o0+hayqIKm zW)?y4q=*QDB2p2(h$4c$^q|nHRPf+QK~ENM-s;7JDB?f!5x4F30|zpBNq+D5`~5%i z&#S8|Ck`GsazK)#gN^0dI-Ku-WB>lW@c+_XznzEEZSnHcsU+QgC_nZ{@18D6(!TG4 z)<(9`d;(JumI)I+FAu{Q(2{iQ_%J4PlV`HeJ3&-cE`4!Mkpos$PT5V=jF)&fSl&+f z$?cUE-QJ`gQ;t6(9~)vI2zf^2Vc3gOJgh2XUJUE}wx-BqNVZv37IQ&)qq!ML(guz6Caq=F!A>Dd8j&NlS>{tWv8p%d%mWk^JDP zAYx*WKD1*4uaS&b6{wo2B3DIrOE<9YV9QaFi4mGWn}P-H(bZ53+a5N&%b?IRjAZ17 zU`BCUBq4!-gOGH%7DpXLF4BmXL{B6j4DQUai)IryqBJ8B<&9cZftbrdz%U{{V~%C2 z7PVZJyB1M>9YSF?)g99zrr}JYfc-T=`*~&a{gWHV)&v7i(HSD(PA(^W5!$31}w&3nD7(7ec;Dbw4*F8R1A<>~%Gmjmf_ia$|L zMLQdigfDg=cQm`B(TxAc`ZO)HOQH^k$*C!MFj_uhCPmS% ztk?M2j&U@D!;H(9#dL*>Vm|W-s1umJdoO%)hiozp*Av+fr!zOnH7w--MA;HUSVJAK~+hhMv;Pu~81 z?d!PSeP-cEsZ{!L_3n?!58u3U&!_YA^JjngXYEk?s|)+2#WznpUK#Dd`KO{$U#Wfe I=<_fC3y&uZ?*IS* literal 0 HcmV?d00001 diff --git a/Icons/DefaultTheme/VideoPlayer/Stop.png b/Icons/DefaultTheme/VideoPlayer/Stop.png index 324c85c11a7f4ae0dcb60ffaa87d9c8d7e2a276d..6d5361c1f13a3053c9b49381f8d7a350151ad29e 100644 GIT binary patch literal 1863 zcmb_d&x_nt9FMyowQj+p2T_DH?ZHYjdHFR-9vhc+W_1_McHIu_>dBXvH#1?AyqIKn zX4cEDBG?7-)PvgM!GhF-pa($|1g|3g1)>%4P%Vl_>A`R2N9d2;wk!scyu5tAzdzsi zJ-@R2!m*=I92ErN*wSKi72c1P_mL@hPW`d>D!d*_7hlN*;o(Qi`vKvDi;oM!gYSf` z^&Gde1z~ospAx#k3ejhsFma{7zW!Dc!@!l+Ob>Z!gLT8j?Tnq< zUT)Ft4eA8a+_U0rAA^FJ6-4aEQIg}nD-HExSeM(1Bn~0PhAYjN2E}!6MQreliB1j4 z6d@#9PEEB`s#)zbqJ}h0LAIjSW!1(=!-g)7FA2Vh9=8t7N$kW6S34te7;$@61X~wAx6-*tlN8LAplZ5|EE$8+94!7@-l=<3ZRS+zBtxl2SAkDER@=Z=R%gRpV1CZBjqML@Q%ciRPvTYe4YU)U?GupO- zdSLrHo5-KdLTD`#9a>M>a3v-1Vwgj*2IG!6$6g<=qEH;N025lW+m&cpRu)L(?QowA z++PGEwY@F_rFSX!2$u79(IXj~??AThNhjqX=X0`kch?QOZrOF4$;1Kz1}4zXZ(CH> z97px*RCfa6PeQ-bb)#geX-?>O7}v*XrCpMA7@U=gbogNIkBJA>;kI7-|AJA<6LQ2b z<#zH7|J`(&LLrA+a735OYB<10HC|W(dCFjTe12u>Ef_q|jq@%0U3%m1tJBk8?VOJ; z&CJZ4dF0wZ-~W8!jk)7jKKbeWvuhVG?C$O!|26uE@%Lu`UAWwS()m(;`MV<@p7^El z_NnS>XsIk Lo1Z=R+ME9YP5(^c literal 1020 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQaEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e6&pP!G5ON@s{ zke^?emsgaZUqnDaSV%}nURhU7%h1T&)7Zkx#KzakG0?_2$i_L?)&+<{?A$`_-NGE) z!yP>%oxGx*y<=T{db}9H|}4#`QYxOmmj|V`Ss`jzkmOM&KL!wAutF- zK;EkHH_%zto-U3d8o|A%Z}J^d5NUb1k^72X)RC>FkN?JB;w!i`V~)iB-SvDAmK_Lf z>}E=5_2ZH`xx4m}jWD~^vk7OIg%?MEspMXmo^(g|*7l5pEurOx9Wcr&{a!#gN%cj9zE-c1%5<|G)2A9Ru$vd$@? F2>>1me~bVC diff --git a/Icons/DefaultTheme/VideoPlayer/StopDown.png b/Icons/DefaultTheme/VideoPlayer/StopDown.png index 11777e0948abd94436466e73c11fd1e7be731f82..8da54058defa85acdbd032b2ec8bf0e3bf4b62b8 100644 GIT binary patch literal 1857 zcmb_dO^6&t6mByh8h1fR4k1BodJz&xO;`VS7a7C4v$_k;y1N0+TMPaUhS$CM8~JfSF$ zzZbVR%gxrygvq2%xeP^pkYs>Xlym0?8D(3dR725;(}wo@7hh^>%p2N<)55K6L3HD# zye$x}7a2amCb2Db{L>&^&Lgtkd~uu%o*G)WEHk3( z{eHjRx9T$Q=td9(IyQCFM1VlWZd%d-N{hKkgr+E19%p4NQ?-gnL%CfxG@v@tkYv-a zX)&%7R7@YxOgHMd(li8eHpOMzd2g7UGhOsVBGR$|tTDxAU0KSaEAJ6{`uRWtsBNn? z&2cD~B$=it%EcX!F)qlV=%T%w34L7@ayw^YaR+G5RcbP_kPBMMye(yK(y7%6W!1Fn zSUtTFr(E`nGy5ipCM`ungRWT!dk8yi!z6}FY!_jRU_64hB#)!ryP-BQ9fJJ>Q1A?= zC4C^6GZM)>p&&R;Xh-N-+R@Z$8Oeg|$s7^`J8Q_I)gsGjQPPx& zg{~PPi`!llM#2jCs3ySXl{|)pMtl3CR;)NgG<|A0wqYU1utMZ}wm_j{VdM%Hc^v45 zmZ;o3GzeLW3uxW$czs+DZ;VI1SRHzTP*!=pp|PsT0`!bt$A{G8p)!x>_qzgu-lzGa zG=+@HKF!5^2Ws~~bLsaYU(lWVQ@4HB^Icyc>VX}(111b3k0CP%jL>CJdm2up-%Z`F zeCs$9Gd>FSaamZGrX2x0r>;G^n1}P_h~;5o4y>&IPmEsemm`Pi|25z6+rGUO8aaFg z8+J9E9u@E~J#0h@b;{u=`KI{(8XQAw%gy<=|2F&U_RqE2XK!BaU7eYkIs5dLKX0LT zt{=Pf-JP4C|8(Qh$y%*8_tg(Sp89n2+SR%BJI|iEe&g?NPn<6Q`1qH#TQ^^|?2WZ| gpZmIYJUFGipFY$1HJkmYI^>oYSDK%^@cLW-0B_<*ga7~l literal 1216 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQaEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e62Ku`z>goQljC*-g^eEpxd{61XkWH1!?z&AjzYee_NJ^i2cw zO@sB!!u8B!^sN&0t&{Yvll5(q4XhFkY*RQL%D6o0MI9^59YU?00&Sc_Y+QovTtn^M z!!4X5Ox#NyJt7@Fqnx~=oV{aRedC;b6P^7Mo&D3?{1V)Q(|n=}f)Yx?Qp;kpDr2&$ z5)0~*3+s6U+XXz@groWe0wxGX&Js_YES9uDI%m03*;?DlDMTc*wLm^N?Hf@O0TZz`kL{{Q>;9~fn$fNmk+cJTTp1_nlZ zPZ!4!jo{GJk>QMt5)BW}^Gux3;-Yyw!pYT;LsZx0WJ*eYs8&k+o6T`Ju$#Y*O7@eINxq)eu>a+73k7rt>od0+< zx*^XyopsMg8;K7rn=j=$T`3;7x>or5U#G22g7{270=Cm|sGjo^p zRf%O6Uz(elf3f0iTiI)&u){Mu?*3ix^!1xx?!8;O`C1EeuHlaPCu8s4xp(*e-Fq=l wjeZ|=U7%>xe*ERF!s@+o-}_F#EIctGJ|U}i^QGGdzk}k<)78&qol`;+0M~U!mjD0& diff --git a/Icons/DefaultTheme/VideoPlayer/StopOver.png b/Icons/DefaultTheme/VideoPlayer/StopOver.png index 5eab80f098be8618f4ae8a6ce672838af92eb12d..5117b0619277d0fa905f5e2ab41916e64f4d97f9 100644 GIT binary patch literal 1857 zcmb_dO^X~w815t>8h6294n`504nl;~bahpK7CSEM&gu?0o6TlmS5H<~)yy>8-PLyY z?#ymPTyF`8AVe{&coF;pkAip*JgR>|BtbmrLD8FduzJ4SHJcBD13g{c{nYzB@B2Pg zb!Bzs`Pq|?pVTyMwz=F`Q}@%=_26;!fBe_0FR9x@+475prak;qp^-D$yAwkUeh@@_6J z?XI-h?j{SkG5?G{Hy|oNB1)%wh&LvYZ{$+)phn=7@FZLYZAR7Z31{?&O zhmPfX9N}OR?Lr=@g+}9pQ7ctkMMOTuj%{J!SU3c}XA2NI7y?(Yj>lc@hgei@9vXx! zM}=zL&Uk%X60eL$aikADK`5)dUN>0PWWkN`>*$Dj+!OP7e!nMF&^t7L#9qiw*{8W! z=&IV?)m-N7#20k?&eCn)^?cVCfO^V~+)*YBJ01fl2&~X$IN&s#q<*V(yYj8$Ow4#c z(#K_CJ(_lf+Br?*{*$>kUyf8BmCT`)_5USfR{Q11Vdj6$H~e;BZ&i&PzET@@HJlz5 z>S21=h*Z@nS4YWBtNdOaLl>Kkg|`1D`}_ABCr*6%`jz atoG`eC%f<3uRT>Aa?Pcc#^=wz{Kh}9CPxJT literal 1215 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQaEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e6&Pe4paNJvmn zOi)NfP)Le{OOun=Tu8xQMZ=6=DpFL{SxntcNX0`|(^W_#NI*MWNGDW8GeAryNJKwW zST{!0Fig}SPF_1r$RI(;FiFTHThu&9-ZDqbrdY(LO3toI(ZEO9$WPfcRNp>EK`Tu` zJ44AlQQV=%(lOM+AStG8+JZ!dl_!5oGRoeNh4a(M-)~+!w+8mPB;FiAJJ7pxLF^stR=6>JB`;#x< zpMLHByc_qM4?XNS{b2E}`x_4&J#zBgsY};RUA}(##{CobzFfKa;Lg2=cOE>s`{?ES z_a8re{Pf}LpI?9e|NHkJ7>}cX79o&z%ruaJfzi&>#W6%9IN8A5+}zmIks;W)xR^~j zxp~PI5f%?$BZD*plZgV!=YwE=TiC` V-4^-Cvn~}BL!PdFF6*2UngES=Uqt`_ diff --git a/Icons/DefaultTheme/VideoPlayer/VolumeBar.png b/Icons/DefaultTheme/VideoPlayer/VolumeBar.png index d372a39e93b6a84bf8e211f2243d9eb938557e92..975876651d70552d8228be80682275faa8b24276 100644 GIT binary patch literal 1607 zcmbVM&yUka6!y|0U@K0oDue_YnI1r@J>zi_$0N*YyIDx2db?dBvD|hto+M^tk896v zvU{pHAR+Y+K!^iUFFkQa;!suUp@*t}Kqc;+TJ=BZbADK`>;fWElIQXFzW2Q!^B!() z+&aH}aoI48^PP5U%P^L1fc@#&Q}Fxf&)+Y=-?^-Pw=j&)J}u;f2?K&eYK|t!C@t6|FsHl>?D80!XbRE0fw@`+MBCveT2r}1zD+Da2tl52 zJDww`*Z&$(LMbLq>@+N=$p~dN7tKE=gv+Bo+iKmM2ZN`;9BQ30jK|}#J$7xC53u9= zJ|+}XY5~G34pPl0R$5$HFtlVL@;KA6N>RzkdumSyCP5b<{(>K z%fN)Lxfby(QtvvHISp28Sj1(7%%Gu);{L(gP>(qtBX2@sW+JZnd%=-leU&F15{?r- zkT^>RCaTKF*3?Ml5E#_CQx##zI%%PKDrBb>n2@s_#}Si}>(qtkSpAwuEuYt#mM>i2 za{RhzNK$L^$Xocgl-MgfyYP>|-=Vc0cv6e@oTlYAYr^tf&$W7@=lgZPPKE0%{J+a% zxLSPl(LCjaD@TI0;{uv>FuxJEAo%M~@vu}3p{|{#f B?7sj2 literal 934 zcmeAS@N?(olHy`uVBq!ia0y~yV6+3WSvZ)1q(Z^sS`a7Q(btiIVPik{pF~!WaI!~` zF9SoB8UsT^3j@P1pisjL28L1t28LG&3=CE?7#PG0=IjczVPIfp2=EDUm621Fl~dw( zJS*XPD57FUQstKH{&#uP{@3kz+j8_jQ2Qtt4S``C0=aYZegeIx>gnPbV&R{hkRrh< x!XU@k(HDdq( diff --git a/Icons/DefaultTheme/VideoPlayer/VolumeBarBackground.png b/Icons/DefaultTheme/VideoPlayer/VolumeBarBackground.png index e72ca6e8756397ed3c6f4b5bd04e08aa99e84ef4..bcd49203e12813ac67168e9ed42a21d836f06e00 100644 GIT binary patch literal 2175 zcmbVOeQeZZ94^Bkq9Yh!fvHdmf`Gk#+;`pG96Q(s+&H&`je&$-``%r%U0d32cN-WZ zj3t0zCc;oLi-xaV!p9$MhRiWgB5n{wjT4;#5rkv`2Qm>e%zS%aAdZi4Nw06)=lA@c z-`Cr&^AzT#kH{Q>AV_*azN-kH^&@?F8vJkGy6<;*dP>e;tRl$MqxEA5^1=3T2r_K3 z;4Rfk-SZhv3K>{l@&Q96BttZUWMxNWmMaGu>H`5mbYQ)$?HDTX4y?rNCf#x_2nzW% z3Mj5A^l~-joSnzAooH5sfdnC-v1lYzA*xKofyH=CL@~oVbGnz`&WBig5Vqw5Shz$Tj76TZXN+XjiRY(eS4AmK9D%@_S zKvXqW6akJFTk+UDa02c`m}JR; z5vj0rYGOWSv4O;@LU6{1k(W3q^^Pg9QYO}HHsgS|u(;W1vf(y6&EddL(^V;rVRel5%@ASVE8`Os!3?k8Sls~#-<(OT<%((f6L$B~{$D;H$N0DwC= zf$71->KZQ!ac{k1&+ghDlW@4_>dVw_4=+;h3m`&j1-=cIxiXg_$dHo-t{iXvx-AQ- zmNaU3?Y8eCNbkAsGu7$M2g(SfC@cDZ{_Y4Bt4~J=(nSc9j^A*Zru1g>$3Lc)DnB+hraRLm40!nwy9%( z)PHbc|Dv(A&$$nUx(jy~=eO-IKk=z&7&GCWRqV7ExaFUDiUu~-^P|_)cOq3CeZeQL zz2WIT@!RL!>16Kp+6f1`YTA}HUFtvFI;QUEizUPkq%*k9^Hxjk+PdY>j6eHx+n-bN zemXtZTe+(_wE6gjNsA3Tuhw5E+xzR0tbyLDn>(U;UCJWY*Ozb9w29prozC}0O>A_g zr#mA{o5hhM{(74E|Bu1D*=;M9Y$w}i)cwH8(Iw}WzTYm)oY*{Y%d^wo z*wfXzW$w`ozT9ELVa z=x^g3Wa}DY=N9VV9`5d+=pCE}v~d)ShQLq>0mXd@c0jildAc};SomK(w^6KFLBQoA z=dMj|hFxq)|Nc7%8_4|D>D@l((cFW}EuTD_pv708tfsoByXK9Xd)lgfclPwDy)s|+ zK})8jO3H`pxQN_Qslzfn&jiAkDI6_2b=~D$>&jUr%~HI5D`!pFXZ%WX*QB?16g59F YFZpWbJi%v^9w?+dUHx3vIVCg!0H8Zy6aWAK diff --git a/Icons/Legacy/VideoPlayer/Background.png b/Icons/Legacy/VideoPlayer/Background.png deleted file mode 100644 index c2642eb8788ee1d6c8c555ecfb266cf9babc8669..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1117 zcmeAS@N?(olHy`uVBq!ia0y~yV66bMbvc-Ur1HAY&wvz5x}&cn1H;CC?mvmFK)yn< zN02WALzNl>LqiJ#!!Mvv!wUw6QUeBtR|yOZRx=nF#0%!^3bbKhU}gyL3327;=MxkZ z6aoQZAt5m#A#p(=89^ag5h-m^X&p5!Lv;fm4MSfW=O9~`U|ZJ^JGW3%hcq+CbO-lv zN6$znuV`oQSXbXTH@^gT|0IvV6tCbk?~rug&`iJZZ2ySdz^MG7=z`#w;;{JgsN|a1 zw1)W1=D5t(gsj%Y?6%UHS!K1eyC*FNx^onah5-FT;6;g#Ezs6Go-U3d6>)E`9S?O5 zWN>zDJbBV(@Smd z2scoK%OUg`P(-3()z`{rGmxxUUaA44RtNZmxcY`=xA)DTG;6hIV0v^) zoqt4bRB}yVRDM`|d2mc|P;`M;P)1Bjy-!G1YtNjREu=tADv{rGmxxUUaA44RtNZmxcY`=$EK8K6f}AUrbnmL z`A6hNCD#N-<%h+W2gei#MHhGlWyGY^`-EggClwi4`bH#Hc?G4%XEu9>Wcr3>#bq@4 zhGr&ax5Z_)`i13$#aG0pHF$@ldj_QC7B?4_x5cK_$7eM91gH6i=0+q{hQ$>|CRHb7 zG2SgU?n|TF9<^@C)gvAzw#Fhp|6^6&< zO*?Sz8_?M$o-U3d6>+i0OvR2EFdVsH*it!h=FErx)NdEw`6*uIbiQ>RcW>0~V+V3P zs`mKKtUT5JEz@AGjQ6vcyqYymySz28>p%O;`LQ=cvn4`i#$8>foRpvY0zCg|PZ57C ya^Y#z%DQg}^B8TIJ%!C`R;LEP-eFMmm+@Y!fHB{_bt{1OGkCiCxvXd6Ai!;r=JvaoqVAdP2{I zt_zJ?+s43bNP4_YnR&{G_GvJk982b0ZhWjlx=Sh7FXsIT@r`IHgjgJy-7P|FWcj{O zN&YL87vmJrxN#0001rP)t-s5)u;B z+2GUI-~Rsp-Qwx`{QvOv{5?ce5D*g&4-^;}7#kZKKSoxYo~JT5Nj*eUG(1f@K~W40 z5g#Kh4-XR!4He4F&_YUEK}lHz1O!G-U_eJ#K1Nj!4-O_OF+4+33JMlHLsJ3*0s{jB zMNM8qOI;Qg7Be_XQ&m@QHEBf)bU4E zOq4sTFvgt76ij5iZh^J1f*TWCYPHsntEF2eHq=P@Oj4O7vSES{i+lPKLZl*Qj^q0y qXgYSebn*@(ME&0BBTUv2{@@EOgc&Q=to2R+0000xN#0005DP)t-s0s;cm z+2BS_VAI&&3?@!eU~~yUb_y+53N&CYHdhT%hYlV=5EnBO6BQE^784sZ6DCj-T8|VQ zHWnK!7924c7#JELI~yAt8z46uY^NL_CLJO-B6h7KDLV!&T`)alG)HweKvg(GSV2iz zLP}afO<_Y$VM9-52^u?AWp-R@d0c9GVQ_w9aeriWg=BSxYkrQBpr-Kk{QCU=5*8^E z7cLSWJPsd14;nWdATkdjL>(eI9V0df8962{JSi_hE;URQ8Y*vrjTIX(6(UC!L3oIk zo(UE=ovg5?v9zbLwY0#*wZX+NJ7O<8V-{kd7a%|q5)wN?Q9MIb7BOE7Cr%1Te*^>s z2Q+3!Q)WzCa4t7oFEvgtHBc`#Qwu3kBq}^FHcKx$VHzSO5J-j)P>^tfj&g&Ic#4;L ziIh67-YmS_-sg5!U0ar2)oQ2_&NbK}y-)Ssz zGQ0qs#ZolEv{ld3w)A<`#!N&@i@>4tt_WgciAp=7QI{qN;)+KHHho+(eMXsN@SpgM zNy^!@W}FTqN?mz<<8nx@dQ{1WE;rW8Iwg#-lXJJL?asAUtG({DS8wN%?0>OdZ#K(c R0vrGU002ovPDHLkV1hMlMp6I( diff --git a/Icons/Legacy/VideoPlayer/FullscreenOver.png b/Icons/Legacy/VideoPlayer/FullscreenOver.png deleted file mode 100644 index f719655a7f6909b71d937055153eddc0b06d9b1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 861 zcmV-j1ETziP)xN#0005YP)t-s0s;aN z5*i;XW;#%QMowVU*x%II;1UuN5+FYkBuEk{QW7jx5-?yAF=7%lYZEP86Ge^`DNq(C zMiwkm7CdtoKztY&7#U5E8yg!PDMcMlhaNt99z==>4L2V-Y#=LWAV7&AL5v|VOe8~z zBt(xUM2IU&k1KDhFF#xl8d*AotUF0!Ka8zFXt_g7V?<3~5Gz+kXQxM3aY$KmOKhlA zW`I?4tX7Z6eU`z4!r_IPq=%ZNnya&$q_w8By0pH;#L3PP5)=puDcs)S+~DNh;_3SQ z|Nj2}IYCtwH*6Lb7CS>(9#DckMO!~eT>}FH1Ox;@Lqib}7DG*94iFYZO<_e%UKB4? z6g+w%K!_qYVIoz7P;aUuGEO5kRU{}jTY0fxeX(S8hi-|tbcK?5i=26loqLqP8c&TC zB|{w@9wu9Zh@Gd1%ixNdrHahoj?v$frLL3H-;}1Wm#MIq*58<@uqRifC|-n~*x#S8 zx1qARqO-avX{xZl#1$}J6){%G-t@}S)*c=nFm|jna#b(!Gfgb>sRZ#LmJ(tyLFF$`m;f=1@B}pSpY#h!l2Vc;;Efmn z8CG*H>EvxUSwp|%sD}a3D%j1;6j7IAHnSC4Ky=C>k&xwO3|Rn7&T@Vq`2iG_E4IG5wX=Wx^LT$}YjZv3 nQUN8Gw`oxHTOEpOZ28!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e6&pP!GLTa1TC zke^?emsfPeDab zP2Esk!$?ibP)plPTgO!2z{=3b#>CXl%*xHg+Q-bs*WAv}!qU;w%GuK1-^xDF(!t-t zA;7{R(Ap`;#uL-DYGmsqaZ!2sGzvIxU?>(u%W25v8b%MsJyMIwXdP2zqzfyv299s z-;A#QnO*&}dM3=AHgnO`nM-EOSvq^(@|p8i%v-o>!QwRwmaJL0bkp)xn^vyfzH#f` zOTxA{iJMMLk^{ zLo|YuHymQ&c{ZcrAP@;kNtTqBZjG&0f4VZV-2G;FNk!JHS4J7xD_4v8%(|kN{o?MejO&-u7Op+JVBwUB zri>g@l8fg4=BiaYvO2>c<8ljSZ81=Y~hjb%|6HW@Z*IcFD07DEO`F9lBKN3cFFUVL{<01GOvHr*HbK`7EV7 zUHo$a)6pFkH(j(}KbrCL^dHyD-b-%oa7c=g$;sp0Hs=fz<5NwgoH+u93%nf7`1s;j yJ;Nplxb$>S7C!NeVUmo3oC}X=LRVoSBg4_R{!bcXJ^%|81_n=8KbLh*2~7ZxDrUR@ diff --git a/Icons/Legacy/VideoPlayer/MuteDown.png b/Icons/Legacy/VideoPlayer/MuteDown.png deleted file mode 100644 index 83218bcb4391faf99d79f50a51a4b799340e34d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1247 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S3?yCqj{O5tEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e62SXh)tNS9AU zk6+T9SK3xgN>4^!O+eaIT-sPb%0f`aN?hJvLe7$3!A43+RYb{JQo&qS$y`doT2{$Y zO-Elz-C9l0hELv!Q^Ad2!I@vtgzNnF7}RLNafEkMjLp4}vk-6DtGGMC#ToyR(h!=^yPz)RoE zThG)--_%dhEL`6-K;JZ2&n#TeJVxItQQtaA-#S^}CfUF$(ZDu^)1idZp^Vp|kjtZ9 z)Um?CDZz0}Do%GEd4*+0$GH^C>e&?mYeJSHbRHa{q#BrLToBB?k! zr8+93DkiHkCaWr`pq|I4kvFhiz@tq#vQIdwUm#$DVB{?E#K~fb^Tm=DNark*&RMQh zwpOEdQ)+ofdSz=~Sx0tFXI@2DL3w*=WpiasTYf`JVPj80Q(t+hwMm9&iGj!-8@)Y_CVQOCHV0U23bkLI>~WBl={P(4A#RRy46HX9I1bntT~SoM zqNRUdUGKWC;SDW=2W)~5jV&LW+21WKzFS`QA}#w=YiUF8^p=iktzFX_`)73Y&ugAI zt7YQ+_Gxolrp@n|Hm`T$?B0pjHSJ^7EGSCbjI9OGv}|Jv|!oP1ux|z$?&s(-`?wSqj+L~5(wXNuBU(wsKeEqg%8@4RpxOLsm{Tp{3-L~)4mIFt& z9z449$no7rPM)1O<6`&Zi__;GK5^mXxvOU`T)lAh?xpMZF5kF+<>rIycOKt)_~P!P zmv2uU`*7s&mt)5tzj*)h&4&+P|9t!Y`}g0!fB%80bf7@-k`5&X2F5r~ z7sn8d;N%aCV{t_0=y+ZiR$!rja#NZe=fJL z=BHE6&0Wot)qJdWY}4vdv`BxxuG>Mtw7fq3{guwS?9{yiL#Z_c

^aH6F8Fn?7w4nx^HJcTDQls;*C)cA4>*Rh|09rlwce zxzh9FyLD~9PF0!lH0_h)JgJ!}8F@2u=1a|!oO1h`cz6zN^DFzt*LUvRxjw#cWq#WZ Z@i5H1xTsK@FU=Md%bu=&F6*2UngA2p)U5yj diff --git a/Icons/Legacy/VideoPlayer/MuteOver.png b/Icons/Legacy/VideoPlayer/MuteOver.png deleted file mode 100644 index 7643ee97704132b9a041c1af40ec6c987cfbf1f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1262 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S3?yCqj{O5tEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e62P)LM>OOun= zoLAnRUn-JM$(LUzPFT}lTH8xj+gn!GM_M;jRzFsDOw6`G#HLEju2R;vLfs@#(JWHKELh(%MAtgb)ILH%D@{Q=L(48j$39iu zu~gipR@S3f-m663x60HpR?Rs}%Q;uet3b!E+|)hS);GsGu+G&t&OI>KHzdbDBF{6j z*gLw^FQOnkp;TPIQCz=C*riw4wNK8aOTx2L(x+3>w_nkrQ^B!E#ko_>r9;J~U)!r+ zFRs}#s>wWTwtDyy&6Hl9^gf;J`MNnX3<~BNm(AA7S+1MESR-?#M&>H5yp`rPON@&) zyQcT}r?y6Ace$l6_s&`2kg+o$e^qGFn&`@n@wFS%@|rSBI&;c9GAp_>D<&0IbQe~4 z7S>ECu9;}ly3DR?wbR74<&9HHS|*jW&aY{kT-QFmrh7(h|LnZZ?P2{Vs;3;Nop!Lf zdtOWT?AG4-jT7cHOrGB`Wq#-6`HfQ-bWU8@J7r17jKzKPR?M8gZqlOFlb5cWx_sUA zg_~wB+%SLHmf0&e&RV^B&YCTA*KJ*}V%vhXTNka~vvAYSMVogm->`4lmR-xY?q0Ed z@7gVUSMAuhcE|oTTMw?^b#VRO!yC6B+OYq~mVHOI?mxP1&xsxTPj#KS-+TUU?}dAl zF5aDT>Grg%_vT!^JMYH*=0guVPCr<5^WMe-NB12$xA)kELnqH4IeG5j@r#E~T|RQ^ z^6|4*PoBGe;^Ng47q6YZaQ)<^Yo{(>KYi);*-N)BUAukp+P%v+?w`2#<-*kmS8hJI ze&_M+`;YG2dwA#m<2w&u+h1G4U*5d^@c#YBcke&F|ML68$4?(W zfBE|D`-iW8zI^-j{m0KAKYsrD^Z(z!|G?BsYmh8b$i~3HnCt1{7@`rJY+$6bdW}QF zDI;fPw!@3B>nS&9yYos;@_T!GfBkv~)et&l6h5Ngoemm*;H&{&7;E4bGjQst@?*qJF_eQ!dU;llZUw?YX z+cny@CGYP|ZJN}^{oLq${HnJ-sU0it@A<1Iu*CQF)T-?Kk9T+W8uG-Yh37Xp)LlC} z>!i7^o}BUbq=M;o#bPY8M9ytXonv~lB;wlKgHu0$5ER&8Vmm3O)+O&blU_KR_`Frm z9y=VEcxiEI!J>~JbL_;~)CI$yy?cDTe8Xu8omi#)Dbm|l2scljqOkwdLFL#zw{~9& zU6y-2eR5G!!M4d0MEdLmm#$kFU6HVce`|R zX{Ad>M1ey^UYy^8{qX@FE;~h;gYWG6dOB=P%-*uYvqH6}>qqa`>+5W6oapN5;2_Av e!ZIa7LXsgMas3M2#)WS{k?ZN|=d#Wzp$P!4PB^Ln diff --git a/Icons/Legacy/VideoPlayer/NoFullScreen.png b/Icons/Legacy/VideoPlayer/NoFullScreen.png deleted file mode 100644 index 04d57c038e91c528868d6fb7f2b3eddec5f000f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 343 zcmV-d0jU0oP)xN#0001rP)t-s5)u;A z*x&yC|M2zv`uzXh;^{p^R1gpo4-XX7+29)+8$U)?7#J8bH%ZFO&@(tnA0sUd4HZ2^ zQw$6dIzdr1JWUS|6Gcs4K}lH_78XKETMrKoCMq#LMpZyZS3E;fJVR3o3Kjwa0s{jB zMowTuOI-v61e>0xQ&m<$Lqi@O9yB#J9UUGjDl49M#fty{0EkIMK~#7Ft;jV3!!Q5@ z!4sMp!VC`n|9jC{t;$Tdi)#QD0k{QV9e`y3_LSM9XEP>t)R)pLdnQ`z3^JkTOAbu5 z2dB`fd*Ae-3nnt_R4UI!n!kmrnAlQnR?f#5Q!}xlPTU=(l<1h4#mR-VPGTl;o@bJi pXq<#MjZ80UPF@p%yod;Y@B{AD8Aj@g0G9v&002ovPDHLkV1gMBcw+zn diff --git a/Icons/Legacy/VideoPlayer/NoFullScreenDown.png b/Icons/Legacy/VideoPlayer/NoFullScreenDown.png deleted file mode 100644 index b02aad83054c1dbc71197e2711aed6afde62c543..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 843 zcmV-R1GM~!P)xN#0005DP)t-s0s;cm z+2BS_VAI&&-QwvCCQdFkR}E2z4jw@cA3_ipGZ09I2^u>S6BZL2G!rIJ7#J8DAUhf& zB^w(X8z46uY^NL_CKD4CE;n2-J!CXTbvHm&I6_!ELQz3UT0%-%Lr!5sPi9hJbXH|{ zTxxk-YIG94l}B6h7595xmkEH5=qFEvmvHB%NGF%~gjZ-I?+gN=BKmwJnpdyJNX zkC=p(pM{f~hnAg)mYxPJU7f73FE&fGz{It|#S#({oujZ47AXrPObRq$3P^vZv9vTb zHWn5Z7h#hS5fTFf105Y61Ox;oEH4WUqK~#8NRm{_3V^I_U(0#6A+qP{xrES|b z#-2ZJ(mXU>AFu$!Fzvr?S`34qI;rrfn^3BQ-x=4@w{AzS3~0^Ao-5D0E6=eR{@M=Q zA061>hsC|Sx3l%RV{2z`*KL6j)Aq*ZTJ3*FZEbU7+XNcp`fASV$J<`M`>navbt7n^ zPP@bC6Cs4Yh(7s@4!bi7!-lDGy^7%Tk%)hd2$g<($^d`V*;G1#-?TimhD17*Rm0uk zbaMU-J+=@8fzIZW(}y6-iwny`=)TS8Lqp32aUM7e0`43Whc|wlImZ<&0B3QaHxN4g z)o~gM^bRZnXQ{}Tq_ZQzFgqNKu<4VG;u3Hu-Z@Fe%HE6T3vW3_lIJ`MWYo%j-{8b0 zZR~c8b~!QFx4%Nc$&9kZ>KW~q%zmAf^pEziO3E2Hk;UcBO10ilC=`u)wbGQwWv@-U VZMaNO#lrvq002ovPDHLkV1gmEN*w?I diff --git a/Icons/Legacy/VideoPlayer/NoFullScreenOver.png b/Icons/Legacy/VideoPlayer/NoFullScreenOver.png deleted file mode 100644 index eb5e78fd361bf32cb12006f60bd60c7e149b4db5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 864 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 Ef(o|TO8@`> diff --git a/Icons/Legacy/VideoPlayer/PauseOver.png b/Icons/Legacy/VideoPlayer/PauseOver.png deleted file mode 100644 index 4f7362626771a070417894a83c2eb575c58b8995..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1710 zcmV;f22uHmP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00093 zP)t-s4-XCx5DyO#77!5;5fTv+5)u&-6A}^^5)>2>6crN}7Z4E~5fU8|7$_7ODis?n z7auSiA|@LnEgdI1CoME5FH9ysN+>W*D>+0dJ4G!!M=U)_F+WTwLry9~Pc1-9Dn?Q) zM^r6JS1nInGC@%_L{c_JR5wmtJw;PIMpZaUSw2WuK1^LQS7tj?WjkhgKu1?WNm)Wl zTSH4-Lrh*pOXJ?Q)Wn1XG&CQOIB-4S8GjJZA4^w zNoIZkF477l)ebGw06WbAHrE9<-v&I_06N?aG1m+;-3UI}5iiabHP0D6(EvT*6g%ZV zaD)Ly(h6175=7k|SQTJlW{cTulE!$M%5;^}f1T8Qnb>`p-eHO5 zW0mD&lW8iEjHKp`tm%!i?TxnZlBegBsOOZf>zS_TnX&Ghz3-y5 z&ZoKAw!6Zhv+AO?>!7yorMBy&x9_C7?WwxttGw-=$Mu8s{)+Jbm;e8$#`C7u{I$j7 zyvgXa#PGDt^Rw3Xvj6|T^8dlc&Ck@^z{}{z(do|C=)~3a!P@uC)b-EU_Rie)(b($O z-1gbt_sZe;!}|Z-;_2Dq`0DTW>+tvb{Qv*|{{R30000000000000000%`e}v0009m zNkl)tvb<>(@v-?BER2{5=;tXa$U~Vt1+&ydl)pwsh0>RtM^JjG{ zOWT{9nK76Gft{4@+$m?iy?c1$%9SfO9=`o}YRX()DLYeB24iDm3l-(LQyzVLcS{vuD!lHrCUtLgu&3z zOd@pFvCr2|ZC?4{`kd8su0L40`RL_0hi8RKnlTs{YRmS``+WE4)+H~0{W@56@Yk=G zOEw)n`(|FBtTuzDk&OP#xu>R25yHgt_88kG-I;$QZ+p=~6ST++RTQPs_mc#d|I>i_aG!Slw?u-0m08faBOt#zrLJb*g$omFCtkR)ucj`gIzOPp zS&)I1l~t=W*KbE%eSO!Y3DXx%pD?MbzP@gUUv8-uD^Qk2(4{#wWA~07ix)23xqIir zg^PFW*qxEu>>|hl(#tGS))AC<`_}H=d-m?#yJz?ATetIq+R7xDL3&wPIkd_ zA|W9mA}Y77yhw@@B+S4L0Zc-AMdeNHt*x!?P31*;LQG&$1|BHj<`z=1aw#q=cCk_s z;^u}3GVsFzA1|MPu&}TIkcNuzGl-)AQBhGS3kbx;0R(DlNj$@Y)Bpeg07*qoM6N<$ Eg2KTyrT_o{ diff --git a/Icons/Legacy/VideoPlayer/Play.png b/Icons/Legacy/VideoPlayer/Play.png deleted file mode 100644 index 76d93d5043f05ae635986dfa78bf0a1dc008090c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1693 zcmV;O24eY%P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00093 zP)t-s4-O3v4-N_n7Y+^*4h|Lx3?C2=4-gO!5fKp)5fTy-5)u*<5)u~^6ciK{6%`d0 z5D*&?5*-s2859*578e;67aJBA92XcF7Z@8C7#|oJ92puN1qUt$2Q>;2ED{$d7a1cJ z8Y&eVEE^pl9UmhaATl5!DIp^$BPA;%CM+Z;EhHx{B`Gf-DL{mORRz5~mKSowRMp{2dUN1myK1N_PKy^SzS3yZxLP}dh zOI$=tT}4e^MonNwPGCk)VMkA5M^Iu&P-93@WJ*$HN>gS_RA)<6XiZjWO;&17S8PvM zYz7F301TP{6P*AYk`5N10TiGB8K3|jq6HeE1{|OX7ODssssJgF4kMTVHJBAOmjEcH z3n;PxJE;IXuook>8#JvVE}kYjh$lRYDmscRJC*=Nod7_u08h36NxKSEpdLh`2V=Y$ zYpo(ljWR%uDowg8TDLV!q&r%xIa|0kV45~}uK-lW09eNWVaNq(+6sBt5@XK;cjX~c z(k)=vNLQvtWVS_PyhUifN@B5BX{J|hyHt6iWOBMiX245p#8GX;S#QHra>rG6$zXTL zVSdbQe93Wr#u{nCu#u^d^(gKb7+?tLiGO_A#~hH@oyZ!uwu?rhAOBS(@Nh zxA$#=&1i|zafZWlfyr`&&Uk~zdWFn!jnjIQ)kVwwOwj&c=Ko{X|7Pp|eDwd3qr8KS z&xex9f|S&Pp4y3!(2kYUlbO|;smqa|*OjB%m8jjEquHOR+k~y?kFw{Oxagv$+N7-9 zsjl6rvcRab)V90Aw7=M>yymgB;DFQok?#M$#@)8a>%qp&&(zz+&Edz+>(0~T(bw|Ns900000000000>O}-$0009V zNkl?tl395ePoqniJ^CuN@m55y21+1Tk7tz75yEy?gfH-o1PGpS}BVt-)7HD<(Xg zAuKF3%8=i;;njy{H?Lg2bm`LND>om!d)nyBZx|KI5E2sR$>&`E^xds1=MEoSw|4Ep zBj+yPeD$>6na?wfAvicpUES@%tLqmIo`1At(TWu-R4CcSLe=KwtU6veaEi7>T}_9XYdZzSMfjg^unRl3*P_v^XKb<3GP z>aU{D;2ET%Uw8N7(KRdkL9&1Tyj?T_Bz^HtoxTc#r-!(GWO3|t(BQr6Wux#g9mkG_Dxr`@*2 z<+(Z4))IycTx`Y~mem#IRjrj*-+;i`uF}fp%JPb8OATWNE=C~MzJC4s z;l!qvDN`o5R?W(mv(o{ZEaEC^HG9V7X;aTWez>@;WBSaQGp9|SG22SiRfK_yi^14P zu4K!!nbRlj>g-&i&LFi>C-fCw@u n!GWT@yrQbADu{vzC@BE|hW2^mtIGDe00000NkvXXu0mjfIH~ao diff --git a/Icons/Legacy/VideoPlayer/PlayDown.png b/Icons/Legacy/VideoPlayer/PlayDown.png deleted file mode 100644 index 91ceecf2832d3bbd68109d7015bd583edde30d09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1687 zcmV;I259+-P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00093 zP)t-s4-XCx5DyO#77!5;5fTv+5)u&-6A}^^5)>2>6crN}7Z4E~5fU8$05kvqJqQsb z3l=pJ7$_7ODis?n7auSiA|@LnEgdI1CoMDt07d`+P67l=0tHM307(P@O$P@}2?$RD z08ju2Rs{i30Rme93|0*rR}lMViqh|9w}V_CTRd8 zcL6wg93x>FF?1&{OdvN$CO=9jFij{oODj1;D>+0cIYufwMJPK)EjvdnJxMV?Od~F0 zB`tFzI%_XGcr-nDDML>!Kujb?pUT{}QdGC@%_L{c_JR5wmtK15PH zMpZvXRyayoK1f(TOXJ?Q)Wq2XiHRSOjm17SZzvBepp^@ zM`e6hU~gV#a{w)X05ydGJc9u~jQ~cB0!owsPn;4{ivU!k2V9^7Tc`zKtOseg7J9lI zaIz>-f+bg#EoPc1WuQKMrU-h=K}v!|REkVgf=*Y7Ok9ppSbt$Rd~6G?~*Op5rH`<|?l3F|X+~ zw(vK+^hSY}NrRn1gP}r%p+kkIMTnzDh@?l0rbCFWNQR(Dh@eb}p-7CVOp&fnm9$co zu~L_}QJA?@o4i$?zG{J+eS({OfSi7Xo@s@ud5oq<%lcK+|90m8go&SukD`c>riqrS zhM2IDm#vJTwv?c>nxM9xro5b~yr{3fwY$i{#?8UQ)XB@&&(quA-{{)l=iA`x+~Mfz z@AmHR^X&2X^Yixl`uqC&{rdd>|Ns900000000000000000000000000$$dg20009P zNklLp8-tX{kR-ji~#OMU@4DGbTUsgV}vqN|?XS-WK6!g=%NEnKu@?X@SB(dR58QyG$y zGVNw;jC^)&#iFavrc)ooQzp7YWPf~pI$^?;`OB|Iov~mD3-vi` zetp42cNaaV?2jLx*0@bvaNYc@4}*k+&l!FL4S6|5saM}&;G4RFi8KEh9|i_4k0S!S ze3Hs4N-sWw!ROEKr^(9l@d_OAU|{8nJEG4El+@IE{s9c$T~kw4QI_P@KN82l$`-u8 zi%(fo+sN?Q8xVNxYG|mdqp8f-wLh4FmC(>+7nuO^;QGGO)6;hR^ELscUF$>sip$(%ugQ z?X3-U+I_RaS%I=Fq7^5)YuftzJ32OR-??+=)-7B5+iJQ`R*15I^fFt|KHc5CW!J7f zd-nms-rYO5GxCa)r-6(bu{C z=4}wTxxKUR#O!b`pg02?7;rjFpL2B6rfoZR?AW$x(~&vT9XLV44D1lVBo;q?&VfUR zj~_mCV9xY-F($Am0}m8%bBhJ!RZO2fy&^9_jGG%G$RG>{LV`jf;^N{WKpH9{%wUNE h%*@Q7EFiG71OTAEh{RNfdhq}N002ovPDHLkV1oP`%`yN0 diff --git a/Icons/Legacy/VideoPlayer/PlayOver.png b/Icons/Legacy/VideoPlayer/PlayOver.png deleted file mode 100644 index 56b0e5945298d894b063c0a07a8907915b30534b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1587 zcmV-32F&@1P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw000HP zNklq1tL=90#%UkML zWL5RFv)c{b_?u&%ATy=lkFHIp6ut zIkPAskqe$B)2v07=*8x!#UT+12J;*#)>Npo>*Vh(B{(9XkHY5*MJ_T$C+WlECmSMl zzM*6NEgr^5U2qg<)>Npoiw9>{4sbhC>8@qUL z;wMEGf`g{$O>t6zkqdO*#)(l0VcSpoets?Y$F`ck?g2e=rmgT;YhH1S6l*G=xj^=T z7M%D=k%i!(DgGg`$QU+nqF)$Sme8L{@6sdr-G`cU4>V*IG;G;>Ln?D$0~P9A;6jZJ zr$m#507n9q8NsvtL*slxW0@2;C7}fJj@=>;X#Ms&v}#+uLmPM2Q>WQIM{b>|xKnUe zpvgjj0}ZC)7Zjs6&lxu*z-Q?u=9PZ1wY2U&0b=0D7oDhGm{u8=d~M#A2C2l19(wwB zO$_>ERcG?|tz;pL@zz6wDY!m?(WCv%rtDv4rrrR`^$GCw!If9F*zNXvwk~>~xv>__ z`l2Z|O(-cxydgNhIo=MMECe{v`~suJ941T;<$d(eyqI2m`;fJhmN)KePTJmNS#w@; z5y$5};mC?~M1US${zu;-!_}LD9>NTJ{f9t>@-qY-6xaTf4_E7&l z7$`G=9+A==Ybpx9gyNiA;5v= zE2-#oN@G(36+8sUeSMQrQ%hs_|`q|b&gl~;UoJ~)YUD8=S82&5wokkmo-9w z1I>N(cxBMgp*%!GO2I(g#TO=DSH_nso>l=3YI-i9oR_S*-S&UcY)xGwgMusk>cB#6zsOVzzfU^5?d^1iN zfeQf+G#8ahQMsu2*z_w>y;hxi$-QF4NB0GEnN7RCQ*uw9{avcCxWu?3&o%xB>aLq? z2oFyDq{u>m15L#oT-0jU;Ufd$*94~TSHE=uhYYx9b&X3c&&WRt4lUeLFlKonl_}rW zqe*!W5FVWPNs)yB2b!3J=E?D1aExKiRxZdW3_o`hAVz-XSH%#$HsnvuIb}I~#Z=N^ zDSeDWPTR3bGz(H>A;6J9!BuNS%Rvbn0#kPlHYC7WjBb@?~oR zuD)ihmtsvtJf)NZJUH=_BHJ4Um+SPANf!LA<9l6Kfw&8wq14}Ifp lw^3eFtQ~bH|9^7z_y-frtOo#`CgnPbV&R{hkRrh< x!XU@k(HDdq( diff --git a/Icons/Legacy/VideoPlayer/ProgressBarBackground.png b/Icons/Legacy/VideoPlayer/ProgressBarBackground.png index d0c08a29f6f9776d94b06fb680e77aa8ca3b78a7..f5878a945a21c4794224b09fa1d4b4fc1c387d0f 100644 GIT binary patch literal 2380 zcmb_ddrZ`J94})!Wr*nJW1>=voA~IpSMJs7iFk*A@!)_H4-lc({*J5MwY4qWLDV}R z2yRBFiafB?jHlIbGaz8sj#{9)B#EnPfWm$IRw_<>2Cb#_ZB-e*OJE z-}mSH{jGNw7Ys`omx3V3u%bd|8GX!sJwLZjl9X5UfRC#Le8N3Vw?@xOiy|k_l>B|W zJohZjWYE39lfOi0WtXn271q=(ZLRUgYW&e9fz^xZ!WFemRowDwu(GsD%AR4GFcBL+ zaZ*KX*z0R1O|vaC3ri~{w>MP2SS_tuHm|sD;gUvA4Sck+YS~>WdVMXP8h9jDgB2y- zP;o_rYoYLE*}0|A?ohd~QbmxoZvCIMb$VI`f($+^c)Xg|wSeKIkb%|fYKVknh(?fE zxe=M=8i0oSK)oQ^vEI%u3>A1gw#e)vU9tlNgu)gDl(!UnxRwTv=CRz_=&T3>6@-As zqLENgRGEk!>(k4?wZ2VYXdgstuw!u|d0lSQAt?Z*4J6KyB#BySgVAc_D64-4N|6*r zkT$|-!HqVCq!?2U+W*6#IfeH#WzKp1#^9G73uv0m5JWf}HiUBwl2T7VmeK@C5fp_( z1gM`{J zc`kvI88Wj%YH$gYE^k`(pp#WBs6pthY2P)+ra2cgc1`^F)B#68eR;S)4 z0GzA_>=>+C4o+He(&B+7BXbzD4To=%j6+=#FZi1ug<2V-m7y#TKp|&%R%8DY%yW!i zQbH^YSO~H8fRM#{3{9kwaY#W)frfSO?%ywh6HSr)LJ%H2JlXoZb-9=#QPo(H14T|d z26JN&1fHRNX3}S|(l}|dSaDyD$%oT^mcq@X&1ME>E8zHev{2qDag90y2IP4t@8@XB ztP7aTv>ykw$%5N>lE*Co*eF2zeI|+@uwSAGum#!RbL-I?Q>PA7D5$Wg&HbHI4wm(= zf&$vd7KY{YF0f;qUVZ>Qh;Ivz$-uKk5SI@J095)ETEtcg#M`OkfvrvXLp>@&*OT3 zTDbr#)&n?G3GDfUc{V0KsSXeI-2WF0p-<8{!-$8;*LQZ`)P;rY+k&H9UnVXQ_>s7V zfC%%Xz)QxZzV|Dw-`K0#7jf6RS-^nv}CFW${Oe?8;KxHc?6yq$LM zD8J(TnzgaL(Gk~&?%ne_a(LWG_qS(PwVMyNI`PUu-P_ycOcoAsQ>IPVFU_L-V&|c`b*ujcVB#ba delta 230 zcmX>jbdSldGr-TCmrII^fq{Y7)59f*fq}6M$mZc-29l0`X)ZvDu{g-xiDBJ2nU_Eg zOS+@4BLl<6e(pbstdmn1o9hoVFz_8_Jf6QI1t?wZ>Eaj?;r{mONx^0V0hfznX@(qU z(#&`zHhemNG2p3$+w?lcKd0GQ6EzrIrn77A>Q?r&}g z3!;*1{3CKF%~~Cs*5DbK-rhIgH!RyLD5JG!PE1O@Pe@iwa(P5zm3K&HTt?IMxoiEx za=e1l!{RH7t0qLJ)I}zgl-Bh7hUS*lPDsdTiqB|_Osa0|n2}%B;~$aV)H%~TIJ=;{ zCm=E}B(}7neO5q3fp2JbL&xlZ$U>H0)*hg%QaoK8Ln`8IkGS$3b`W6L@UXR@>kQBT z|8dK^LgaaxFWPskyLVQ6YgEyh%d$z{9eEWO$B`btd2uJK~dY4OXqu+>e>-zf^TkHOQ`&t;ucLK6V8 C`g#Wd diff --git a/Icons/Legacy/VideoPlayer/ReverseMouseDown.png b/Icons/Legacy/VideoPlayer/ReverseMouseDown.png deleted file mode 100644 index c57b383d4898d0f93418d3d592fc6ab2b43b3e4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~c!3-piujpS2q`CrpLR{lBn}cJD1Ecc8;>&}g z3!;*1{3CL+ikf578axBjEakt5odeEmG7{F0Ke#7 zTiz8S&(nO-zGL0Jv*H`?RT(zD+GpMOdCl&sRa|GjyK_AJ`OWSOPsj4mb3ZqIyw<^? zH0_pi=(2Ayrbzopr0Jq(9 AHvj+t diff --git a/Icons/Legacy/VideoPlayer/ReverseMouseOver.png b/Icons/Legacy/VideoPlayer/ReverseMouseOver.png deleted file mode 100644 index b43d264aa38dcd10933b5d700c829196e4c778c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 307 zcmV-30nGl1P)XT;pR>Wp*i2MvO;&49SZ`iv zf=*U!R$q8aRB2gadrDGgTV#GvSa48TZctfqUuc0}X@g*Bf|Z=GO;u~FvdFBn$gj4{ zvAD~!xy-!7*1W{my~NbM#nnw!ZA(*YR9$t`+36$tmtg<^0Axu-K~#8NJ;X&4LQxC^ zz==Kij=Q_v|9S+dq8E+TSN|V^E0>39DA!&HFdG-UR~#05&&;6uJg1aq7jL1e5a}Ib zjE|Fd7ZEUL)Yqm$eQR1~2GM+g$)^3ZB_d?kjjHZf&TnR)2mc7@#2Ekp002ovPDHLk FV1nADgfsvE diff --git a/Icons/Legacy/VideoPlayer/Stop.png b/Icons/Legacy/VideoPlayer/Stop.png deleted file mode 100644 index 324c85c11a7f4ae0dcb60ffaa87d9c8d7e2a276d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1020 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQaEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e6&pP!G5ON@s{ zke^?emsgaZUqnDaSV%}nURhU7%h1T&)7Zkx#KzakG0?_2$i_L?)&+<{?A$`_-NGE) z!yP>%oxGx*y<=T{db}9H|}4#`QYxOmmj|V`Ss`jzkmOM&KL!wAutF- zK;EkHH_%zto-U3d8o|A%Z}J^d5NUb1k^72X)RC>FkN?JB;w!i`V~)iB-SvDAmK_Lf z>}E=5_2ZH`xx4m}jWD~^vk7OIg%?MEspMXmo^(g|*7l5pEurOx9Wcr&{a!#gN%cj9zE-c1%5<|G)2A9Ru$vd$@? F2>>1me~bVC diff --git a/Icons/Legacy/VideoPlayer/StopDown.png b/Icons/Legacy/VideoPlayer/StopDown.png deleted file mode 100644 index 11777e0948abd94436466e73c11fd1e7be731f82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1216 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQaEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e62Ku`z>goQljC*-g^eEpxd{61XkWH1!?z&AjzYee_NJ^i2cw zO@sB!!u8B!^sN&0t&{Yvll5(q4XhFkY*RQL%D6o0MI9^59YU?00&Sc_Y+QovTtn^M z!!4X5Ox#NyJt7@Fqnx~=oV{aRedC;b6P^7Mo&D3?{1V)Q(|n=}f)Yx?Qp;kpDr2&$ z5)0~*3+s6U+XXz@groWe0wxGX&Js_YES9uDI%m03*;?DlDMTc*wLm^N?Hf@O0TZz`kL{{Q>;9~fn$fNmk+cJTTp1_nlZ zPZ!4!jo{GJk>QMt5)BW}^Gux3;-Yyw!pYT;LsZx0WJ*eYs8&k+o6T`Ju$#Y*O7@eINxq)eu>a+73k7rt>od0+< zx*^XyopsMg8;K7rn=j=$T`3;7x>or5U#G22g7{270=Cm|sGjo^p zRf%O6Uz(elf3f0iTiI)&u){Mu?*3ix^!1xx?!8;O`C1EeuHlaPCu8s4xp(*e-Fq=l wjeZ|=U7%>xe*ERF!s@+o-}_F#EIctGJ|U}i^QGGdzk}k<)78&qol`;+0M~U!mjD0& diff --git a/Icons/Legacy/VideoPlayer/StopOver.png b/Icons/Legacy/VideoPlayer/StopOver.png deleted file mode 100644 index 5eab80f098be8618f4ae8a6ce672838af92eb12d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1215 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQaEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e6&Pe4paNJvmn zOi)NfP)Le{OOun=Tu8xQMZ=6=DpFL{SxntcNX0`|(^W_#NI*MWNGDW8GeAryNJKwW zST{!0Fig}SPF_1r$RI(;FiFTHThu&9-ZDqbrdY(LO3toI(ZEO9$WPfcRNp>EK`Tu` zJ44AlQQV=%(lOM+AStG8+JZ!dl_!5oGRoeNh4a(M-)~+!w+8mPB;FiAJJ7pxLF^stR=6>JB`;#x< zpMLHByc_qM4?XNS{b2E}`x_4&J#zBgsY};RUA}(##{CobzFfKa;Lg2=cOE>s`{?ES z_a8re{Pf}LpI?9e|NHkJ7>}cX79o&z%ruaJfzi&>#W6%9IN8A5+}zmIks;W)xR^~j zxp~PI5f%?$BZD*plZgV!=YwE=TiC` V-4^-Cvn~}BL!PdFF6*2UngES=Uqt`_ diff --git a/Icons/Legacy/VideoPlayer/VolumeBar.png b/Icons/Legacy/VideoPlayer/VolumeBar.png deleted file mode 100644 index d372a39e93b6a84bf8e211f2243d9eb938557e92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 934 zcmeAS@N?(olHy`uVBq!ia0y~yV6+3WSvZ)1q(Z^sS`a7Q(btiIVPik{pF~!WaI!~` zF9SoB8UsT^3j@P1pisjL28L1t28LG&3=CE?7#PG0=IjczVPIfp2=EDUm621Fl~dw( zJS*XPD57FUQstKH{&#uP{@3kz+j8_jQ2Qtt4S``C0=aYZegeIx>gnPbV&R{hkRrh< x!XU@k(HDdq( diff --git a/Icons/Legacy/VideoPlayer/VolumeBarBackground.png b/Icons/Legacy/VideoPlayer/VolumeBarBackground.png index e72ca6e8756397ed3c6f4b5bd04e08aa99e84ef4..cd74ccd8d5ce6b4e6cda4fd438451e77843b2ec5 100644 GIT binary patch literal 2576 zcmeHHZA=qq96vxEA}=i>FAC{-z5%nn>kE{gRH`fp6tbNlZ|lg(o*6NSv9q+dVdh_W`t~d?A{z zw^&LF5F~%=wk`dY$2=M9`=>bv_AE>M{<<({i6?OJ=qA_7*U-BC_RbGo_HDj&t~Y!~ zwVBIX_1*LFbIOm}ZcbdAFwpao{pIBG8?W8kdCii0Ca&9eY3I5n>xS$0w|>2~_ovgB zv;5oRBURh?w(f61RCCsRk$r6_F>=Y>H)uM3H*C=Ct4x^D&^HZCe>LfB|M{K?`f*?F z-u0X+Ez(ozJyJ*4u~?X{}ak;{@*v&nKKSzH~rIPcl!$coO?3-v?Z z)9-`&^MkW(Gq*hT_U1FjLz?v)Dkon&w zv23n2tKJscqYE$1p4auW?@J*kb%^TlGJR&@VBDmG&QDgn@>^zUY8W|ky!!Xy+65;N zBmwa(_BvBjlGD;sRjM?#TBTO2)6>&4GNw$)%$ky!otc%Bos*k0H5Z#%fXytNRe;Yf z)aO5KoJ&|tq|;L7o@c8rwbxjk-ua7`mX$9rucn@<^}`Z9xt?U;|B`{}pEt~hu}%~! z>Lmo3G+DXhkR9)2BgnWx)>|jnxfhc(AJkEb*62b(A5gXF!e9&LqopAd8VCZJLPNm-Cy^m57PU*lwelOs z&?rQ1wqhgVR_FGhc3uRiMMr39f*??{MW;9GX@l867c~$D15T9S`eLoVgd_~4$%u|# z7<4BxezL}~Xw(_}vSLlLERZf3-VVE-%HUeoE0VVUIm*)dxmGX>*j2cWj0?l8}atz-l72J0KI4BudF<3RDmN09H zVlONiVI+%6wD3s~BTzTbu>SVHL(L?tvEK9m6!r{5$;XMxWF}H zXe^DSoe%ILbgV=djl%6FU7RFS91UC!D+W31Se79ze%erC(d)IvR58#pjLE09=uIXq zFd7X$pT$%}8BJs79X#ElRCeq<^B>Pwi!2;1D)88Llz~%Pf~;UASgiKZiKqo@MppqA zjdlS^(Moq)F|gr{27!sI1Fb<>+15@Zz74v~-C8 delta 207 zcmV;=05JcM6!Qm=BRT*CXF*Lt006O%3;baP0000WV@Og>004R>004l5008;`004mK z004C`008P>0026e000+ooVrmwvt$7e1AlT!L_t(IPu0$`7K0!VM9~SlvPLnA24epI zLsKvu`z(#OoZ_9qr#a;2kSY#;VNlqFDjalr8cYhu6duJI z!yF9e5Lc!k#d6BmM9zh&nskF24UVarl)f|S8M>0~+#xCQ1ElpfLy%0eE&u=k00>D% JPDHLkV1hZePjdhO diff --git a/src/ui/Controls/VideoPlayerContainer.cs b/src/ui/Controls/VideoPlayerContainer.cs index 3075903cd..38e0ce193 100644 --- a/src/ui/Controls/VideoPlayerContainer.cs +++ b/src/ui/Controls/VideoPlayerContainer.cs @@ -92,6 +92,13 @@ namespace Nikse.SubtitleEdit.Controls private readonly Color _backgroundColor = Color.FromArgb(18, 18, 18); private Panel _panelControls; + private Bitmap _bitmapFullscreen; + private Bitmap _bitmapFullscreenDown; + private Bitmap _bitmapFullscreenOver; + private Bitmap _bitmapNoFullscreen; + private Bitmap _bitmapNoFullscreenDown; + private Bitmap _bitmapNoFullscreenOver; + private PictureBox _pictureBoxBackground; private PictureBox _pictureBoxReverse; private PictureBox _pictureBoxReverseOver; @@ -733,7 +740,7 @@ namespace Nikse.SubtitleEdit.Controls _pictureBoxPlayDown = new PictureBox { Image = (Image)_resources.GetObject("pictureBoxPlayDown.Image"), - Location = new Point(22, 127 - 113), + Location = new Point(22, 126 - 113), Name = "_pictureBoxPlayDown", Size = new Size(29, 29), SizeMode = PictureBoxSizeMode.AutoSize, @@ -744,7 +751,7 @@ namespace Nikse.SubtitleEdit.Controls _pictureBoxPlayOver = new PictureBox { Image = (Image)_resources.GetObject("pictureBoxPlayOver.Image"), - Location = new Point(23, 126 - 113), + Location = new Point(22, 126 - 113), Name = "_pictureBoxPlayOver", Size = new Size(29, 29), SizeMode = PictureBoxSizeMode.AutoSize, @@ -765,7 +772,7 @@ namespace Nikse.SubtitleEdit.Controls _panelControls.Controls.Add(_pictureBoxPause); _pictureBoxPauseDown.Image = (Image)_resources.GetObject("pictureBoxPauseDown.Image"); - _pictureBoxPauseDown.Location = new Point(22, 127 - 113); + _pictureBoxPauseDown.Location = new Point(23, 126 - 113); _pictureBoxPauseDown.Name = "_pictureBoxPauseDown"; _pictureBoxPauseDown.Size = new Size(29, 29); _pictureBoxPauseDown.SizeMode = PictureBoxSizeMode.AutoSize; @@ -773,7 +780,7 @@ namespace Nikse.SubtitleEdit.Controls _panelControls.Controls.Add(_pictureBoxPauseDown); _pictureBoxPauseOver.Image = (Image)_resources.GetObject("pictureBoxPauseOver.Image"); - _pictureBoxPauseOver.Location = new Point(22, 127 - 113); + _pictureBoxPauseOver.Location = new Point(23, 126 - 113); _pictureBoxPauseOver.Name = "_pictureBoxPauseOver"; _pictureBoxPauseOver.Size = new Size(29, 29); _pictureBoxPauseOver.SizeMode = PictureBoxSizeMode.AutoSize; @@ -819,6 +826,7 @@ namespace Nikse.SubtitleEdit.Controls _pictureBoxFullscreen.TabStop = false; _pictureBoxFullscreen.MouseEnter += PictureBoxFullscreenMouseEnter; _panelControls.Controls.Add(_pictureBoxFullscreen); + _bitmapFullscreen = _pictureBoxFullscreen.Image as Bitmap; _pictureBoxFullscreenDown.Image = (Image)_resources.GetObject("pictureBoxFSDown.Image"); _pictureBoxFullscreenDown.Location = new Point(95, 130 - 113); @@ -827,6 +835,7 @@ namespace Nikse.SubtitleEdit.Controls _pictureBoxFullscreenDown.SizeMode = PictureBoxSizeMode.AutoSize; _pictureBoxFullscreenDown.TabStop = false; _panelControls.Controls.Add(_pictureBoxFullscreenDown); + _bitmapFullscreenDown = _pictureBoxFullscreenDown.Image as Bitmap; _pictureBoxFullscreenOver.Image = (Image)_resources.GetObject("pictureBoxFSOver.Image"); _pictureBoxFullscreenOver.Location = new Point(95, 130 - 113); @@ -838,6 +847,11 @@ namespace Nikse.SubtitleEdit.Controls _pictureBoxFullscreenOver.MouseDown += PictureBoxFullscreenOverMouseDown; _pictureBoxFullscreenOver.MouseUp += PictureBoxFullscreenOverMouseUp; _panelControls.Controls.Add(_pictureBoxFullscreenOver); + _bitmapFullscreenOver = _pictureBoxFullscreenOver.Image as Bitmap; + + _bitmapNoFullscreen = (Image)_resources.GetObject("pictureBoxNoFS.Image") as Bitmap; + _bitmapNoFullscreenDown = (Image)_resources.GetObject("pictureBoxNoFSDown.Image") as Bitmap; + _bitmapNoFullscreenOver = (Image)_resources.GetObject("pictureBoxNoFSOver.Image") as Bitmap; _pictureBoxProgressbarBackground.Anchor = AnchorStyles.Top | AnchorStyles.Left; _pictureBoxProgressbarBackground.BackColor = Color.Transparent; @@ -1009,13 +1023,10 @@ namespace Nikse.SubtitleEdit.Controls _labelVideoPlayerName.Font = new Font(_labelTimeCode.Font.FontFamily, 6); _panelControls.Controls.Add(_labelVideoPlayerName); - if (Configuration.Settings.General.UseDarkTheme) - { - _labelVolume.ForeColor = Color.Gray; - _labelTimeCode.ForeColor = Color.Gray; - _labelVideoPlayerName.ForeColor = Color.Gray; - } - + var bg = (_pictureBoxBackground.Image as Bitmap); + _labelVolume.BackColor = bg.GetPixel(_labelVolume.Left, _labelVolume.Top); + _labelTimeCode.BackColor = bg.GetPixel(_labelTimeCode.Left, _labelTimeCode.Top); + _labelVideoPlayerName.BackColor = bg.GetPixel(_labelVideoPlayerName.Left, _labelVideoPlayerName.Top); _pictureBoxBackground.SendToBack(); _pictureBoxFastForwardDown.BringToFront(); @@ -1295,16 +1306,16 @@ namespace Nikse.SubtitleEdit.Controls public void ShowFullScreenControls() { - _pictureBoxFullscreen.Image = (Image)_resources.GetObject("pictureBoxNoFS.Image"); - _pictureBoxFullscreenDown.Image = (Image)_resources.GetObject("pictureBoxNoFSDown.Image"); - _pictureBoxFullscreenOver.Image = (Image)_resources.GetObject("pictureBoxNoFSOver.Image"); + _pictureBoxFullscreen.Image = (Image)_bitmapNoFullscreen; + _pictureBoxFullscreenDown.Image = (Image)_bitmapNoFullscreenDown; + _pictureBoxFullscreenOver.Image = (Image)_bitmapNoFullscreenOver; } public void ShowNonFullScreenControls() { - _pictureBoxFullscreen.Image = (Image)_resources.GetObject("pictureBoxFS.Image"); - _pictureBoxFullscreenDown.Image = (Image)_resources.GetObject("pictureBoxFSDown.Image"); - _pictureBoxFullscreenOver.Image = (Image)_resources.GetObject("pictureBoxFSOver.Image"); + _pictureBoxFullscreen.Image = (Image)_bitmapFullscreen; + _pictureBoxFullscreenDown.Image = (Image)_bitmapFullscreenDown; + _pictureBoxFullscreenOver.Image = (Image)_bitmapFullscreenOver; } private void PictureBoxFullscreenMouseEnter(object sender, EventArgs e) @@ -2088,6 +2099,36 @@ namespace Nikse.SubtitleEdit.Controls TryLoadIcon(_pictureBoxProgressBar, "ProgressBar"); TryLoadIcon(_pictureBoxVolumeBarBackground, "VolumeBarBackground"); TryLoadIcon(_pictureBoxVolumeBar, "VolumeBar"); + + TryLoadBitmap(ref _bitmapFullscreen, "Fullscreen"); + TryLoadBitmap(ref _bitmapFullscreenDown, "FullscreenDown"); + TryLoadBitmap(ref _bitmapFullscreenOver, "FullscreenOver"); + + TryLoadBitmap(ref _bitmapNoFullscreen, "NoFullscreen"); + TryLoadBitmap(ref _bitmapNoFullscreenDown, "NoFullscreenDown"); + TryLoadBitmap(ref _bitmapNoFullscreenOver, "NoFullscreenOver"); + + var bg = (_pictureBoxBackground.Image as Bitmap); + _labelVolume.BackColor = bg.GetPixel(_labelVolume.Left, _labelVolume.Top); + _labelTimeCode.BackColor = bg.GetPixel(_labelTimeCode.Left, _labelTimeCode.Top); + _labelVideoPlayerName.BackColor = bg.GetPixel(_labelVideoPlayerName.Left, _labelVideoPlayerName.Top); + + //TODO: Auto set fore color depending on bg color + // _labelVolume.ForeColor = Color.Gray; + // _labelTimeCode.ForeColor = Color.Gray; + // _labelVideoPlayerName.ForeColor = Color.Gray; + } + + private void TryLoadBitmap(ref Bitmap bmp, string name) + { + var pb = new PictureBox(); + TryLoadIcon(pb, name); + if (pb.Image != null) + { + bmp = pb.Image as Bitmap; + } + + pb.Dispose(); } private static void TryLoadIcon(PictureBox pb, string iconName) From 7f284bce27bff64fba7559719feb1ab694bf495b Mon Sep 17 00:00:00 2001 From: niksedk Date: Thu, 6 Jul 2023 18:25:19 +0200 Subject: [PATCH 80/96] Minor gfx theme adjustments --- Icons/DarkTheme/VideoPlayer/MuteDown.png | Bin 3125 -> 3104 bytes src/ui/Controls/VideoPlayerContainer.cs | 65 +++++++++++++++-------- 2 files changed, 44 insertions(+), 21 deletions(-) diff --git a/Icons/DarkTheme/VideoPlayer/MuteDown.png b/Icons/DarkTheme/VideoPlayer/MuteDown.png index 4a5088acdfa8b46bd8c7a648d9d4f518f9588722..9a018744f95f569d2387a4618a831e2f8530b829 100644 GIT binary patch delta 905 zcmdlgu|Q%&1T&Xeh=HXQ5E)rcPGVL@=JqoOsH7OAr6rrB8R;4%rI_eiq?)AZCK)6p z>86+_8zh<-m?aunnoVYA(NeLrv`jHHOfuFrHcCy^H83VPIg=_jGX# zvFM#T**E)>gGg)sACC)}b2*kJ3QRUzu=S|UmXf8@yzYMEFITM4j%M6ctP1(06-LhEzoNf6#j#r$RL9y3MWA9rQueq7CE=;>6VE_H+ zSJTtecVA;-NVr|L_~MQ7XA#?P-!<<%{+OSifBN+4_VXkj`>0Jmn`V2y+eJxSTzvD* zGn;h0G#Lb(%I2MZ8YIxNdiCmq2^-?pGcyzv7b|;Ss<8R@=g*zI?d9d=`_3>V)JwEw z&Z^O9OZ-#9%`oLs*y^vJJ_W75y6yJchX)uGrk`#-{P1DH3?H@nlXGikMz0mKm*;D@ zd6i?aE#k^hAoKjmlPCH`@<4yDT2KV%$P%OrvLNj&v)PbHaVvGV8h`>8ddYIzyB_oEOW26=dnur;)@!JDMm9t{6Co(3v}%J o_wWDB`9EdVs+T3de*XL^9r0Q2evxQfAp;P2y85}Sb4q9e08SNrjQ{`u delta 883 zcmZ1=u~lM21T&Xuh@q*Ksgaeb#pEPrWn^wYbAXDWiIIVEa$=gUfswJ9u4ST$k#3@4 znxSr@nW3Rsl4W9IlBvmLW)>|K3j<5bl%y0RT?^AxOWkB66BAv_lr$hKHO(T~z{1qb zA}x7yAd3)_ilLdQk!f8?}s7!=oCZA@NM$$M-nF!k^b8()oU$$HfYh(+(z%eEP>0z}w9 zTuxgRvOd_?@z0uI$EA&IRvKLjFIFgV_!Yi<@MuAVjCK%?n`T0HWUbn>|TF*aQ{z;Eb+kDe)v18zsm-|bs z?!Nvy>16$r%E;AM85Aa;lzCWU^|ru5ZF1+u3>)pvuT{DnO{bq0?Tl$s@R+nEeP>Lb z-TcWaCpYQ5tE;Fuz{^m;$zXH-vGQB>vS!uvAciz^lAO;bEO)0X}3RM00K`}KbLh*2~7YOgl= _panelControls.Height - 4) @@ -1306,16 +1305,16 @@ namespace Nikse.SubtitleEdit.Controls public void ShowFullScreenControls() { - _pictureBoxFullscreen.Image = (Image)_bitmapNoFullscreen; - _pictureBoxFullscreenDown.Image = (Image)_bitmapNoFullscreenDown; - _pictureBoxFullscreenOver.Image = (Image)_bitmapNoFullscreenOver; + _pictureBoxFullscreen.Image = _bitmapNoFullscreen; + _pictureBoxFullscreenDown.Image = _bitmapNoFullscreenDown; + _pictureBoxFullscreenOver.Image = _bitmapNoFullscreenOver; } public void ShowNonFullScreenControls() { - _pictureBoxFullscreen.Image = (Image)_bitmapFullscreen; - _pictureBoxFullscreenDown.Image = (Image)_bitmapFullscreenDown; - _pictureBoxFullscreenOver.Image = (Image)_bitmapFullscreenOver; + _pictureBoxFullscreen.Image = _bitmapFullscreen; + _pictureBoxFullscreenDown.Image = _bitmapFullscreenDown; + _pictureBoxFullscreenOver.Image = _bitmapFullscreenOver; } private void PictureBoxFullscreenMouseEnter(object sender, EventArgs e) @@ -2090,8 +2089,11 @@ namespace Nikse.SubtitleEdit.Controls TryLoadIcon(_pictureBoxStopOver, "StopOver"); TryLoadIcon(_pictureBoxStopDown, "StopDown"); TryLoadIcon(_pictureBoxFullscreen, "Fullscreen"); + TryLoadBitmap(ref _bitmapFullscreen, "Fullscreen"); TryLoadIcon(_pictureBoxFullscreenOver, "FullscreenOver"); + TryLoadBitmap(ref _bitmapFullscreenOver, "FullscreenOver"); TryLoadIcon(_pictureBoxFullscreenDown, "FullscreenDown"); + TryLoadBitmap(ref _bitmapFullscreenDown, "FullscreenDown"); TryLoadIcon(_pictureBoxMute, "Mute"); TryLoadIcon(_pictureBoxMuteOver, "MuteOver"); TryLoadIcon(_pictureBoxMuteDown, "MuteDown"); @@ -2100,26 +2102,47 @@ namespace Nikse.SubtitleEdit.Controls TryLoadIcon(_pictureBoxVolumeBarBackground, "VolumeBarBackground"); TryLoadIcon(_pictureBoxVolumeBar, "VolumeBar"); - TryLoadBitmap(ref _bitmapFullscreen, "Fullscreen"); - TryLoadBitmap(ref _bitmapFullscreenDown, "FullscreenDown"); - TryLoadBitmap(ref _bitmapFullscreenOver, "FullscreenOver"); - TryLoadBitmap(ref _bitmapNoFullscreen, "NoFullscreen"); TryLoadBitmap(ref _bitmapNoFullscreenDown, "NoFullscreenDown"); TryLoadBitmap(ref _bitmapNoFullscreenOver, "NoFullscreenOver"); - var bg = (_pictureBoxBackground.Image as Bitmap); - _labelVolume.BackColor = bg.GetPixel(_labelVolume.Left, _labelVolume.Top); - _labelTimeCode.BackColor = bg.GetPixel(_labelTimeCode.Left, _labelTimeCode.Top); - _labelVideoPlayerName.BackColor = bg.GetPixel(_labelVideoPlayerName.Left, _labelVideoPlayerName.Top); + if (_pictureBoxBackground.Image is Bitmap bg) + { + _labelVolume.BackColor = bg.GetPixel(_labelVolume.Left, _labelVolume.Top); + _labelTimeCode.BackColor = bg.GetPixel(_labelTimeCode.Left, _labelTimeCode.Top); + _labelVideoPlayerName.BackColor = bg.GetPixel(_labelVideoPlayerName.Left, _labelVideoPlayerName.Top); + } - //TODO: Auto set fore color depending on bg color - // _labelVolume.ForeColor = Color.Gray; - // _labelTimeCode.ForeColor = Color.Gray; - // _labelVideoPlayerName.ForeColor = Color.Gray; + // Set ForeColor to either white or black depending on background color + if (_labelVolume.BackColor.R + _labelVolume.BackColor.G + _labelVolume.BackColor.B > 255 * 1.5) + { + _labelVolume.ForeColor = Color.Black; + } + else + { + _labelVolume.ForeColor = Color.White; + } + + if (_labelTimeCode.BackColor.R + _labelTimeCode.BackColor.G + _labelTimeCode.BackColor.B > 255 * 1.5) + { + _labelTimeCode.ForeColor = Color.Black; + } + else + { + _labelVolume.ForeColor = Color.White; + } + + if (_labelVideoPlayerName.BackColor.R + _labelVideoPlayerName.BackColor.G + _labelVideoPlayerName.BackColor.B > 255 * 1.5) + { + _labelVideoPlayerName.ForeColor = Color.Black; + } + else + { + _labelVideoPlayerName.ForeColor = Color.White; + } } - private void TryLoadBitmap(ref Bitmap bmp, string name) + private static void TryLoadBitmap(ref Bitmap bmp, string name) { var pb = new PictureBox(); TryLoadIcon(pb, name); @@ -2139,7 +2162,7 @@ namespace Nikse.SubtitleEdit.Controls theme = Configuration.Settings.General.ToolbarIconTheme; } - var themeFullPath = Path.Combine(Configuration.IconsDirectory, theme, "VideoPlayer", iconName + ".png"); + var themeFullPath = Path.Combine(Configuration.IconsDirectory, theme, "VideoPlayer", iconName + ".png"); if (File.Exists(themeFullPath)) { pb.Image = new Bitmap(themeFullPath); From 2c5238a0993dce7bbb19b62700f8f152248a13a0 Mon Sep 17 00:00:00 2001 From: niksedk Date: Fri, 7 Jul 2023 06:37:43 +0200 Subject: [PATCH 81/96] Work on hard-burn preview --- .../GenerateVideoWithHardSubs.Designer.cs | 1 - src/ui/Forms/GenerateVideoWithHardSubs.cs | 35 +++++++++++++------ 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/src/ui/Forms/GenerateVideoWithHardSubs.Designer.cs b/src/ui/Forms/GenerateVideoWithHardSubs.Designer.cs index 84c8540c7..0885d5139 100644 --- a/src/ui/Forms/GenerateVideoWithHardSubs.Designer.cs +++ b/src/ui/Forms/GenerateVideoWithHardSubs.Designer.cs @@ -453,7 +453,6 @@ namespace Nikse.SubtitleEdit.Forms this.comboBoxSubtitleFont.Name = "comboBoxSubtitleFont"; this.comboBoxSubtitleFont.Size = new System.Drawing.Size(250, 21); this.comboBoxSubtitleFont.TabIndex = 3; - this.comboBoxSubtitleFont.SelectedIndexChanged += new System.EventHandler(this.comboBoxSubtitleFont_SelectedIndexChanged); this.comboBoxSubtitleFont.SelectedValueChanged += new System.EventHandler(this.comboBoxSubtitleFont_SelectedValueChanged); // // labelSubtitleFont diff --git a/src/ui/Forms/GenerateVideoWithHardSubs.cs b/src/ui/Forms/GenerateVideoWithHardSubs.cs index 3ea414549..c9b9d4384 100644 --- a/src/ui/Forms/GenerateVideoWithHardSubs.cs +++ b/src/ui/Forms/GenerateVideoWithHardSubs.cs @@ -1216,6 +1216,7 @@ namespace Nikse.SubtitleEdit.Forms if (_mpvOn) { + SavePreviewSubtitle(); UiUtil.InitializeVideoPlayerAndContainer(_inputVideoFileName, _videoInfo, videoPlayerContainer1, VideoStartLoaded, VideoStartEnded); } @@ -1225,10 +1226,6 @@ namespace Nikse.SubtitleEdit.Forms private void VideoStartEnded(object sender, EventArgs e) { videoPlayerContainer1.Pause(); - if (videoPlayerContainer1.VideoPlayer is LibMpvDynamic libmpv) - { - libmpv.RemoveSubtitle(); - } } private void VideoStartLoaded(object sender, EventArgs e) @@ -1243,6 +1240,8 @@ namespace Nikse.SubtitleEdit.Forms { videoPlayerContainer1.CurrentPosition = _assaSubtitle.Paragraphs[0].StartTime.TotalSeconds + 0.1; } + + //videoPlayerContainer1.ShowFullscreenButton = true; //TODO: Add full screen? } private void checkBoxTargetFileSize_CheckedChanged(object sender, EventArgs e) @@ -1566,7 +1565,28 @@ namespace Nikse.SubtitleEdit.Forms private void UpdateVideoPreview() { - + if (_loading) + { + return; + } + + if (videoPlayerContainer1.VideoPlayer is LibMpvDynamic libmpv) + { + SavePreviewSubtitle(); + libmpv.ReloadSubtitle(); + } + } + + private void SavePreviewSubtitle() + { + var temp = new Subtitle(_assaSubtitle); + if (!_isAssa) + { + SetStyleForNonAssa(temp); + } + + FixRightToLeft(temp); + FileUtil.WriteAllText(_mpvSubtitleFileName, new AdvancedSubStationAlpha().ToText(temp, null), new TextEncoding(Encoding.UTF8, "UTF8")); } private void checkBoxBox_CheckedChanged(object sender, EventArgs e) @@ -1574,11 +1594,6 @@ namespace Nikse.SubtitleEdit.Forms UpdateVideoPreview(); } - private void comboBoxSubtitleFont_SelectedIndexChanged(object sender, EventArgs e) - { - - } - private void comboBoxSubtitleFont_SelectedValueChanged(object sender, EventArgs e) { UpdateVideoPreview(); From 5b8566f54412efba09531821b22c18a7cde9514e Mon Sep 17 00:00:00 2001 From: May Kittens Devour Your Soul Date: Fri, 7 Jul 2023 20:44:10 +0200 Subject: [PATCH 82/96] Update hrv_OCRFixReplaceList.xml added bunch of ocr fixes --- Dictionaries/hrv_OCRFixReplaceList.xml | 340 +++++++++++++++++++++++++ 1 file changed, 340 insertions(+) diff --git a/Dictionaries/hrv_OCRFixReplaceList.xml b/Dictionaries/hrv_OCRFixReplaceList.xml index 6445f6835..b72ace325 100644 --- a/Dictionaries/hrv_OCRFixReplaceList.xml +++ b/Dictionaries/hrv_OCRFixReplaceList.xml @@ -500,6 +500,8 @@ + + @@ -813,6 +815,7 @@ + @@ -1336,6 +1339,7 @@ + @@ -1434,6 +1438,7 @@ + @@ -1451,6 +1456,7 @@ + @@ -2006,6 +2012,7 @@ + @@ -2061,6 +2068,7 @@ + @@ -2170,6 +2178,7 @@ + @@ -2690,6 +2699,336 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2802,6 +3141,7 @@ + From 51b974c275f0953219308496d4cef6bc9e485b33 Mon Sep 17 00:00:00 2001 From: May Kittens Devour Your Soul Date: Fri, 7 Jul 2023 23:30:07 +0200 Subject: [PATCH 83/96] Update hrv_OCRFixReplaceList.xml --- Dictionaries/hrv_OCRFixReplaceList.xml | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/Dictionaries/hrv_OCRFixReplaceList.xml b/Dictionaries/hrv_OCRFixReplaceList.xml index b72ace325..bb70a4e3e 100644 --- a/Dictionaries/hrv_OCRFixReplaceList.xml +++ b/Dictionaries/hrv_OCRFixReplaceList.xml @@ -291,6 +291,7 @@ + @@ -352,6 +353,7 @@ + @@ -507,6 +509,7 @@ + @@ -665,6 +668,7 @@ + @@ -1425,7 +1429,7 @@ - + @@ -1485,6 +1489,8 @@ + + @@ -1840,6 +1846,8 @@ + + @@ -2010,6 +2018,7 @@ + @@ -2778,8 +2787,7 @@ - - + @@ -2912,6 +2920,7 @@ + @@ -3108,6 +3117,7 @@ + @@ -3219,6 +3229,7 @@ + @@ -3550,6 +3561,7 @@ + @@ -3612,6 +3624,7 @@ + From a4612365efeca44a3b1fdedc1579719844d33e5a Mon Sep 17 00:00:00 2001 From: niksedk Date: Sat, 8 Jul 2023 08:01:45 +0200 Subject: [PATCH 84/96] Try to fix Find - thx OmrSi :) + Minor clean --- src/ui/Forms/FindDialog.cs | 18 ++++++++---------- src/ui/Forms/GenerateVideoWithHardSubs.cs | 21 +++++++++++---------- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/src/ui/Forms/FindDialog.cs b/src/ui/Forms/FindDialog.cs index d9245af41..e3abc7d5d 100644 --- a/src/ui/Forms/FindDialog.cs +++ b/src/ui/Forms/FindDialog.cs @@ -125,9 +125,9 @@ namespace Nikse.SubtitleEdit.Forms private void ButtonFind_Click(object sender, EventArgs e) { + SetRegEx(); FindNext(); buttonFind.Focus(); - SetRegEx(); } private void SetRegEx() @@ -137,8 +137,6 @@ namespace Nikse.SubtitleEdit.Forms try { _regEx = new Regex(RegexUtils.FixNewLine(FindText), RegexOptions.Compiled, TimeSpan.FromSeconds(5)); - DialogResult = DialogResult.OK; - _findAndReplaceMethods.FindDialogFind(FindText, FindReplaceType); } catch (Exception exception) { @@ -156,12 +154,7 @@ namespace Nikse.SubtitleEdit.Forms { DialogResult = DialogResult.Cancel; } - else if (radioButtonNormal.Checked) - { - DialogResult = DialogResult.OK; - _findAndReplaceMethods.FindDialogFind(FindText, FindReplaceType); - } - else if (radioButtonCaseSensitive.Checked) + else { DialogResult = DialogResult.OK; _findAndReplaceMethods.FindDialogFind(FindText, FindReplaceType); @@ -304,15 +297,20 @@ namespace Nikse.SubtitleEdit.Forms else if (radioButtonNormal.Checked) { DialogResult = DialogResult.OK; + SetRegEx(); _findAndReplaceMethods.FindDialogFindPrevious(FindText); } else if (radioButtonCaseSensitive.Checked) { DialogResult = DialogResult.OK; + SetRegEx(); _findAndReplaceMethods.FindDialogFindPrevious(FindText); } + else + { + SetRegEx(); + } - SetRegEx(); buttonFindPrev.Focus(); } } diff --git a/src/ui/Forms/GenerateVideoWithHardSubs.cs b/src/ui/Forms/GenerateVideoWithHardSubs.cs index c9b9d4384..2853402ad 100644 --- a/src/ui/Forms/GenerateVideoWithHardSubs.cs +++ b/src/ui/Forms/GenerateVideoWithHardSubs.cs @@ -519,15 +519,17 @@ namespace Nikse.SubtitleEdit.Forms private void FixRightToLeft(Subtitle subtitle) { - if (checkBoxRightToLeft.Checked) + if (!checkBoxRightToLeft.Checked) { - for (var index = 0; index < subtitle.Paragraphs.Count; index++) + return; + } + + for (var index = 0; index < subtitle.Paragraphs.Count; index++) + { + var paragraph = subtitle.Paragraphs[index]; + if (LanguageAutoDetect.ContainsRightToLeftLetter(paragraph.Text)) { - var paragraph = subtitle.Paragraphs[index]; - if (LanguageAutoDetect.ContainsRightToLeftLetter(paragraph.Text)) - { - paragraph.Text = Utilities.FixRtlViaUnicodeChars(paragraph.Text); - } + paragraph.Text = Utilities.FixRtlViaUnicodeChars(paragraph.Text); } } } @@ -663,7 +665,7 @@ namespace Nikse.SubtitleEdit.Forms private void RunOnePassEncoding(string assaTempFileName) { - var process = GetFfmpegProcess(_inputVideoFileName, VideoFileName, assaTempFileName, null); + var process = GetFfmpegProcess(_inputVideoFileName, VideoFileName, assaTempFileName); _log.AppendLine("ffmpeg arguments: " + process.StartInfo.Arguments); if (!CheckForPromptParameters(process, Text)) @@ -1407,7 +1409,7 @@ namespace Nikse.SubtitleEdit.Forms style.ShadowWidth = 5; } - sub.Header = AdvancedSubStationAlpha.GetHeaderAndStylesFromAdvancedSubStationAlpha(sub.Header, new System.Collections.Generic.List() { style }); + sub.Header = AdvancedSubStationAlpha.GetHeaderAndStylesFromAdvancedSubStationAlpha(sub.Header, new List { style }); sub.Header = AdvancedSubStationAlpha.AddTagToHeader("PlayResX", "PlayResX: " + ((int)numericUpDownWidth.Value).ToString(CultureInfo.InvariantCulture), "[Script Info]", sub.Header); sub.Header = AdvancedSubStationAlpha.AddTagToHeader("PlayResY", "PlayResY: " + ((int)numericUpDownHeight.Value).ToString(CultureInfo.InvariantCulture), "[Script Info]", sub.Header); } @@ -1625,6 +1627,5 @@ namespace Nikse.SubtitleEdit.Forms } Application.DoEvents(); } - } } From d4a75d4eda8d7260244942298e1f8bb93661361b Mon Sep 17 00:00:00 2001 From: niksedk Date: Sun, 9 Jul 2023 07:34:58 +0200 Subject: [PATCH 85/96] Check for known error "Invalid username or password" when downloading Whisper models Related to #7080 --- .../Forms/AudioToText/WhisperModelDownload.cs | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/ui/Forms/AudioToText/WhisperModelDownload.cs b/src/ui/Forms/AudioToText/WhisperModelDownload.cs index ba99e53a9..c6d819bc4 100644 --- a/src/ui/Forms/AudioToText/WhisperModelDownload.cs +++ b/src/ui/Forms/AudioToText/WhisperModelDownload.cs @@ -4,8 +4,11 @@ using Nikse.SubtitleEdit.Logic; using System; using System.IO; using System.Linq; +using System.Runtime.InteropServices.ComTypes; +using System.Text; using System.Threading; using System.Windows.Forms; +using Nikse.SubtitleEdit.Core.Common; using Vosk; namespace Nikse.SubtitleEdit.Forms.AudioToText @@ -189,11 +192,24 @@ namespace Nikse.SubtitleEdit.Forms.AudioToText private void CompleteDownload(Stream downloadStream) { - if (downloadStream.Length == 0) + var streamLength = downloadStream.Length; + if (streamLength == 0) { throw new Exception("No content downloaded - missing file or no internet connection!"); } + downloadStream.Flush(); + downloadStream.Close(); + + if (streamLength < 50) + { + var text = FileUtil.ReadAllTextShared(_downloadFileName, Encoding.UTF8); + if (text.Contains("Invalid username or password.")) + { + throw new Exception("Unable to download file - Invalid username or password! (Perhaps file has a new location)"); + } + } + var newFileName = _downloadFileName.Replace(".$$$", string.Empty); try { @@ -204,9 +220,6 @@ namespace Nikse.SubtitleEdit.Forms.AudioToText // ignore } - downloadStream.Flush(); - downloadStream.Close(); - Application.DoEvents(); File.Move(_downloadFileName, newFileName); labelFileName.Text = string.Empty; From 76c55124bc31ec126ea7bb220f9089659a064b3a Mon Sep 17 00:00:00 2001 From: niksedk Date: Sun, 9 Jul 2023 08:21:07 +0200 Subject: [PATCH 86/96] Add "Graphics buttons theme" settings (remove toolbar theme) --- LanguageBaseEnglish.xml | 1 + src/ui/Forms/Options/Settings.Designer.cs | 161 ++++++++++++++-------- src/ui/Forms/Options/Settings.cs | 19 ++- src/ui/Logic/Language.cs | 1 + src/ui/Logic/LanguageDeserializer.cs | 3 + src/ui/Logic/LanguageStructure.cs | 1 + 6 files changed, 130 insertions(+), 56 deletions(-) diff --git a/LanguageBaseEnglish.xml b/LanguageBaseEnglish.xml index f12a23665..c9f269a7d 100644 --- a/LanguageBaseEnglish.xml +++ b/LanguageBaseEnglish.xml @@ -2412,6 +2412,7 @@ can edit in same subtitle file (collaboration) Dark theme Use dark theme Show list view grid lines + Graphics buttons Update Focus set video position Toggle dock/undock of video controls diff --git a/src/ui/Forms/Options/Settings.Designer.cs b/src/ui/Forms/Options/Settings.Designer.cs index 99b8f801c..02e64d05e 100644 --- a/src/ui/Forms/Options/Settings.Designer.cs +++ b/src/ui/Forms/Options/Settings.Designer.cs @@ -176,6 +176,8 @@ this.labelCustomSearch = new System.Windows.Forms.Label(); this.comboBoxCustomSearch1 = new System.Windows.Forms.ComboBox(); this.groupBoxVideoPlayerDefault = new System.Windows.Forms.GroupBox(); + this.numericUpDownMarginVertical = new System.Windows.Forms.NumericUpDown(); + this.labelMarginVertical = new System.Windows.Forms.Label(); this.panelMpvBackColor = new System.Windows.Forms.Panel(); this.buttonMpvBackColor = new System.Windows.Forms.Button(); this.panelMpvOutlineColor = new System.Windows.Forms.Panel(); @@ -329,8 +331,6 @@ this.pictureBoxAssAttachments = new System.Windows.Forms.PictureBox(); this.pictureBoxAssProperties = new System.Windows.Forms.PictureBox(); this.pictureBoxAssStyleManager = new System.Windows.Forms.PictureBox(); - this.labelToolbarIconTheme = new System.Windows.Forms.Label(); - this.comboBoxToolbarIconTheme = new System.Windows.Forms.ComboBox(); this.labelToggleSourceView = new System.Windows.Forms.Label(); this.pictureBoxSourceView = new System.Windows.Forms.PictureBox(); this.checkBoxTBToggleSourceView = new System.Windows.Forms.CheckBox(); @@ -378,6 +378,12 @@ this.checkBoxToolbarNew = new System.Windows.Forms.CheckBox(); this.panelFont = new System.Windows.Forms.Panel(); this.groupBoxAppearance = new System.Windows.Forms.GroupBox(); + this.groupBoxGraphicsButtons = new System.Windows.Forms.GroupBox(); + this.pictureBoxPreview3 = new System.Windows.Forms.PictureBox(); + this.pictureBoxPreview2 = new System.Windows.Forms.PictureBox(); + this.pictureBoxPreview1 = new System.Windows.Forms.PictureBox(); + this.labelToolbarIconTheme = new System.Windows.Forms.Label(); + this.comboBoxToolbarIconTheme = new System.Windows.Forms.ComboBox(); this.groupBoxFontInUI = new System.Windows.Forms.GroupBox(); this.groupBoxFontGeneral = new System.Windows.Forms.GroupBox(); this.comboBoxSubtitleFont = new System.Windows.Forms.ComboBox(); @@ -441,8 +447,6 @@ this.labelUpdateFileTypeAssociationsStatus = new System.Windows.Forms.Label(); this.imageListFileTypeAssociations = new System.Windows.Forms.ImageList(this.components); this.toolTipDialogStylePreview = new System.Windows.Forms.ToolTip(this.components); - this.numericUpDownMarginVertical = new System.Windows.Forms.NumericUpDown(); - this.labelMarginVertical = new System.Windows.Forms.Label(); this.panelGeneral.SuspendLayout(); this.groupBoxMiscellaneous.SuspendLayout(); this.groupBoxGeneralRules.SuspendLayout(); @@ -466,6 +470,7 @@ this.panelVideoPlayer.SuspendLayout(); this.groupBoxMainWindowVideoControls.SuspendLayout(); this.groupBoxVideoPlayerDefault.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownMarginVertical)).BeginInit(); this.groupBoxMpvBorder.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownMpvShadowWidth)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownMpvOutline)).BeginInit(); @@ -515,6 +520,10 @@ ((System.ComponentModel.ISupportInitialize)(this.pictureBoxFileNew)).BeginInit(); this.panelFont.SuspendLayout(); this.groupBoxAppearance.SuspendLayout(); + this.groupBoxGraphicsButtons.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxPreview3)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxPreview2)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxPreview1)).BeginInit(); this.groupBoxFontInUI.SuspendLayout(); this.groupBoxFontGeneral.SuspendLayout(); this.groupBoxFontListViews.SuspendLayout(); @@ -525,7 +534,6 @@ this.groupBoxProxySettings.SuspendLayout(); this.groupBoxProxyAuthentication.SuspendLayout(); this.panelFileTypeAssociations.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.numericUpDownMarginVertical)).BeginInit(); this.SuspendLayout(); // // buttonOK @@ -2410,6 +2418,27 @@ this.groupBoxVideoPlayerDefault.TabIndex = 14; this.groupBoxVideoPlayerDefault.TabStop = false; // + // numericUpDownMarginVertical + // + this.numericUpDownMarginVertical.Location = new System.Drawing.Point(380, 153); + this.numericUpDownMarginVertical.Maximum = new decimal(new int[] { + 1000, + 0, + 0, + 0}); + this.numericUpDownMarginVertical.Name = "numericUpDownMarginVertical"; + this.numericUpDownMarginVertical.Size = new System.Drawing.Size(44, 21); + this.numericUpDownMarginVertical.TabIndex = 21; + // + // labelMarginVertical + // + this.labelMarginVertical.AutoSize = true; + this.labelMarginVertical.Location = new System.Drawing.Point(325, 155); + this.labelMarginVertical.Name = "labelMarginVertical"; + this.labelMarginVertical.Size = new System.Drawing.Size(42, 13); + this.labelMarginVertical.TabIndex = 20; + this.labelMarginVertical.Text = "Vertical"; + // // panelMpvBackColor // this.panelMpvBackColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; @@ -4045,8 +4074,6 @@ this.groupBoxShowToolBarButtons.Controls.Add(this.pictureBoxAssAttachments); this.groupBoxShowToolBarButtons.Controls.Add(this.pictureBoxAssProperties); this.groupBoxShowToolBarButtons.Controls.Add(this.pictureBoxAssStyleManager); - this.groupBoxShowToolBarButtons.Controls.Add(this.labelToolbarIconTheme); - this.groupBoxShowToolBarButtons.Controls.Add(this.comboBoxToolbarIconTheme); this.groupBoxShowToolBarButtons.Controls.Add(this.labelToggleSourceView); this.groupBoxShowToolBarButtons.Controls.Add(this.pictureBoxSourceView); this.groupBoxShowToolBarButtons.Controls.Add(this.checkBoxTBToggleSourceView); @@ -4179,25 +4206,6 @@ this.pictureBoxAssStyleManager.TabIndex = 51; this.pictureBoxAssStyleManager.TabStop = false; // - // labelToolbarIconTheme - // - this.labelToolbarIconTheme.AutoSize = true; - this.labelToolbarIconTheme.Location = new System.Drawing.Point(15, 346); - this.labelToolbarIconTheme.Name = "labelToolbarIconTheme"; - this.labelToolbarIconTheme.Size = new System.Drawing.Size(39, 13); - this.labelToolbarIconTheme.TabIndex = 50; - this.labelToolbarIconTheme.Text = "Theme"; - // - // comboBoxToolbarIconTheme - // - this.comboBoxToolbarIconTheme.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.comboBoxToolbarIconTheme.FormattingEnabled = true; - this.comboBoxToolbarIconTheme.Location = new System.Drawing.Point(15, 361); - this.comboBoxToolbarIconTheme.Name = "comboBoxToolbarIconTheme"; - this.comboBoxToolbarIconTheme.Size = new System.Drawing.Size(202, 21); - this.comboBoxToolbarIconTheme.TabIndex = 49; - this.comboBoxToolbarIconTheme.SelectedIndexChanged += new System.EventHandler(this.comboBoxToolbarIconTheme_SelectedIndexChanged); - // // labelToggleSourceView // this.labelToggleSourceView.AutoSize = true; @@ -4617,6 +4625,7 @@ this.groupBoxAppearance.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.groupBoxAppearance.Controls.Add(this.groupBoxGraphicsButtons); this.groupBoxAppearance.Controls.Add(this.groupBoxFontInUI); this.groupBoxAppearance.Controls.Add(this.groupBoxDarkTheme); this.groupBoxAppearance.Controls.Add(this.labelFontNote); @@ -4627,6 +4636,62 @@ this.groupBoxAppearance.TabStop = false; this.groupBoxAppearance.Text = "Appearance"; // + // groupBoxGraphicsButtons + // + this.groupBoxGraphicsButtons.Controls.Add(this.pictureBoxPreview3); + this.groupBoxGraphicsButtons.Controls.Add(this.pictureBoxPreview2); + this.groupBoxGraphicsButtons.Controls.Add(this.pictureBoxPreview1); + this.groupBoxGraphicsButtons.Controls.Add(this.labelToolbarIconTheme); + this.groupBoxGraphicsButtons.Controls.Add(this.comboBoxToolbarIconTheme); + this.groupBoxGraphicsButtons.Location = new System.Drawing.Point(383, 310); + this.groupBoxGraphicsButtons.Name = "groupBoxGraphicsButtons"; + this.groupBoxGraphicsButtons.Size = new System.Drawing.Size(461, 109); + this.groupBoxGraphicsButtons.TabIndex = 41; + this.groupBoxGraphicsButtons.TabStop = false; + this.groupBoxGraphicsButtons.Text = "Graphics buttons"; + // + // pictureBoxPreview3 + // + this.pictureBoxPreview3.Location = new System.Drawing.Point(306, 31); + this.pictureBoxPreview3.Name = "pictureBoxPreview3"; + this.pictureBoxPreview3.Size = new System.Drawing.Size(32, 32); + this.pictureBoxPreview3.TabIndex = 56; + this.pictureBoxPreview3.TabStop = false; + // + // pictureBoxPreview2 + // + this.pictureBoxPreview2.Location = new System.Drawing.Point(267, 31); + this.pictureBoxPreview2.Name = "pictureBoxPreview2"; + this.pictureBoxPreview2.Size = new System.Drawing.Size(32, 32); + this.pictureBoxPreview2.TabIndex = 55; + this.pictureBoxPreview2.TabStop = false; + // + // pictureBoxPreview1 + // + this.pictureBoxPreview1.Location = new System.Drawing.Point(230, 31); + this.pictureBoxPreview1.Name = "pictureBoxPreview1"; + this.pictureBoxPreview1.Size = new System.Drawing.Size(32, 32); + this.pictureBoxPreview1.TabIndex = 54; + this.pictureBoxPreview1.TabStop = false; + // + // labelToolbarIconTheme + // + this.labelToolbarIconTheme.AutoSize = true; + this.labelToolbarIconTheme.Location = new System.Drawing.Point(13, 23); + this.labelToolbarIconTheme.Name = "labelToolbarIconTheme"; + this.labelToolbarIconTheme.Size = new System.Drawing.Size(39, 13); + this.labelToolbarIconTheme.TabIndex = 52; + this.labelToolbarIconTheme.Text = "Theme"; + // + // comboBoxToolbarIconTheme + // + this.comboBoxToolbarIconTheme.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBoxToolbarIconTheme.FormattingEnabled = true; + this.comboBoxToolbarIconTheme.Location = new System.Drawing.Point(13, 38); + this.comboBoxToolbarIconTheme.Name = "comboBoxToolbarIconTheme"; + this.comboBoxToolbarIconTheme.Size = new System.Drawing.Size(202, 21); + this.comboBoxToolbarIconTheme.TabIndex = 51; + // // groupBoxFontInUI // this.groupBoxFontInUI.Controls.Add(this.groupBoxFontGeneral); @@ -4954,9 +5019,9 @@ this.groupBoxDarkTheme.Controls.Add(this.buttonDarkThemeBackColor); this.groupBoxDarkTheme.Controls.Add(this.panelDarkThemeColor); this.groupBoxDarkTheme.Controls.Add(this.buttonDarkThemeColor); - this.groupBoxDarkTheme.Location = new System.Drawing.Point(5, 307); + this.groupBoxDarkTheme.Location = new System.Drawing.Point(6, 307); this.groupBoxDarkTheme.Name = "groupBoxDarkTheme"; - this.groupBoxDarkTheme.Size = new System.Drawing.Size(839, 114); + this.groupBoxDarkTheme.Size = new System.Drawing.Size(368, 114); this.groupBoxDarkTheme.TabIndex = 40; this.groupBoxDarkTheme.TabStop = false; this.groupBoxDarkTheme.Text = "Dark theme"; @@ -5297,40 +5362,19 @@ this.toolTipDialogStylePreview.InitialDelay = 500; this.toolTipDialogStylePreview.ReshowDelay = 100; // - // numericUpDownMarginVertical - // - this.numericUpDownMarginVertical.Location = new System.Drawing.Point(380, 153); - this.numericUpDownMarginVertical.Maximum = new decimal(new int[] { - 1000, - 0, - 0, - 0}); - this.numericUpDownMarginVertical.Name = "numericUpDownMarginVertical"; - this.numericUpDownMarginVertical.Size = new System.Drawing.Size(44, 21); - this.numericUpDownMarginVertical.TabIndex = 21; - // - // labelMarginVertical - // - this.labelMarginVertical.AutoSize = true; - this.labelMarginVertical.Location = new System.Drawing.Point(325, 155); - this.labelMarginVertical.Name = "labelMarginVertical"; - this.labelMarginVertical.Size = new System.Drawing.Size(42, 13); - this.labelMarginVertical.TabIndex = 20; - this.labelMarginVertical.Text = "Vertical"; - // // Settings // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(1092, 574); this.Controls.Add(this.labelUpdateFileTypeAssociationsStatus); - this.Controls.Add(this.panelVideoPlayer); + this.Controls.Add(this.panelFont); this.Controls.Add(this.panelToolBar); + this.Controls.Add(this.panelVideoPlayer); this.Controls.Add(this.panelTools); this.Controls.Add(this.panelWaveform); this.Controls.Add(this.panelGeneral); this.Controls.Add(this.panelShortcuts); - this.Controls.Add(this.panelFont); this.Controls.Add(this.panelNetwork); this.Controls.Add(this.panelFileTypeAssociations); this.Controls.Add(this.panelSubtitleFormats); @@ -5381,6 +5425,7 @@ this.groupBoxMainWindowVideoControls.PerformLayout(); this.groupBoxVideoPlayerDefault.ResumeLayout(false); this.groupBoxVideoPlayerDefault.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownMarginVertical)).EndInit(); this.groupBoxMpvBorder.ResumeLayout(false); this.groupBoxMpvBorder.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownMpvShadowWidth)).EndInit(); @@ -5446,6 +5491,11 @@ this.panelFont.ResumeLayout(false); this.groupBoxAppearance.ResumeLayout(false); this.groupBoxAppearance.PerformLayout(); + this.groupBoxGraphicsButtons.ResumeLayout(false); + this.groupBoxGraphicsButtons.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxPreview3)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxPreview2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxPreview1)).EndInit(); this.groupBoxFontInUI.ResumeLayout(false); this.groupBoxFontGeneral.ResumeLayout(false); this.groupBoxFontGeneral.PerformLayout(); @@ -5463,7 +5513,6 @@ this.groupBoxProxyAuthentication.ResumeLayout(false); this.groupBoxProxyAuthentication.PerformLayout(); this.panelFileTypeAssociations.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.numericUpDownMarginVertical)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -5871,8 +5920,6 @@ private System.Windows.Forms.Button buttonMpvOutlineColor; private System.Windows.Forms.Panel panelMpvPrimaryColor; private System.Windows.Forms.Button buttonMpvPrimaryColor; - private System.Windows.Forms.Label labelToolbarIconTheme; - private System.Windows.Forms.ComboBox comboBoxToolbarIconTheme; private System.Windows.Forms.PictureBox pictureBoxAssStyleManager; private System.Windows.Forms.PictureBox pictureBoxAssAttachments; private System.Windows.Forms.PictureBox pictureBoxAssProperties; @@ -5885,5 +5932,11 @@ private System.Windows.Forms.PictureBox pictureBoxWebVttStyle; private System.Windows.Forms.NumericUpDown numericUpDownMarginVertical; private System.Windows.Forms.Label labelMarginVertical; + private System.Windows.Forms.GroupBox groupBoxGraphicsButtons; + private System.Windows.Forms.PictureBox pictureBoxPreview3; + private System.Windows.Forms.PictureBox pictureBoxPreview2; + private System.Windows.Forms.PictureBox pictureBoxPreview1; + private System.Windows.Forms.Label labelToolbarIconTheme; + private System.Windows.Forms.ComboBox comboBoxToolbarIconTheme; } } \ No newline at end of file diff --git a/src/ui/Forms/Options/Settings.cs b/src/ui/Forms/Options/Settings.cs index f943cb88b..4346e0407 100644 --- a/src/ui/Forms/Options/Settings.cs +++ b/src/ui/Forms/Options/Settings.cs @@ -535,6 +535,7 @@ namespace Nikse.SubtitleEdit.Forms.Options buttonTextBoxHtmlColor.Text = language.HtmlColor; buttonTextBoxAssColor.Text = language.AssaColor; groupBoxDarkTheme.Text = language.DarkTheme; + groupBoxGraphicsButtons.Text = language.GraphicsButtons; checkBoxDarkThemeEnabled.Text = language.DarkThemeEnabled; checkBoxDarkThemeShowListViewGridLines.Text = language.DarkThemeShowGridViewLines; buttonDarkThemeColor.Text = language.WaveformTextColor; @@ -1885,8 +1886,11 @@ namespace Nikse.SubtitleEdit.Forms.Options { Icon = (Icon)icon.Clone(); pictureBoxFileNew.Image = (Image)newFile.Clone(); + pictureBoxPreview1.Image = (Image)newFile.Clone(); pictureBoxFileOpen.Image = (Image)openFile.Clone(); + pictureBoxPreview2.Image = (Image)openFile.Clone(); pictureBoxSave.Image = (Image)saveFile.Clone(); + pictureBoxPreview3.Image = (Image)saveFile.Clone(); pictureBoxSaveAs.Image = (Image)saveFileAs.Clone(); pictureBoxFind.Image = (Image)find.Clone(); pictureBoxReplace.Image = (Image)replace.Clone(); @@ -3271,6 +3275,8 @@ namespace Nikse.SubtitleEdit.Forms.Options buttonDarkThemeBackColor.Enabled = enabled; panelDarkThemeBackColor.Enabled = enabled; checkBoxDarkThemeShowListViewGridLines.Enabled = enabled; + + comboBoxToolbarIconTheme_SelectedIndexChanged(null, null); } private void listBoxFavoriteSubtitleFormats_SelectedIndexChanged(object sender, EventArgs e) @@ -3660,6 +3666,10 @@ namespace Nikse.SubtitleEdit.Forms.Options private void comboBoxToolbarIconTheme_SelectedIndexChanged(object sender, EventArgs e) { + TryLoadIcon(pictureBoxPreview1, "New"); + TryLoadIcon(pictureBoxPreview2, "Open"); + TryLoadIcon(pictureBoxPreview3, "Save"); + TryLoadIcon(pictureBoxFileNew, "New"); TryLoadIcon(pictureBoxFileOpen, "Open"); TryLoadIcon(pictureBoxSave, "Save"); @@ -3692,9 +3702,14 @@ namespace Nikse.SubtitleEdit.Forms.Options pictureBox.Image?.Dispose(); pictureBox.Image = null; - var theme = comboBoxToolbarIconTheme.Text; + var theme = checkBoxDarkThemeEnabled.Checked ? "DarkTheme" : "DefaultTheme"; + if (comboBoxToolbarIconTheme.SelectedIndex != 0) + { + theme = comboBoxToolbarIconTheme.Text; + } + var themeFullPath = Path.Combine(Configuration.IconsDirectory, theme, iconName + ".png"); - if (comboBoxToolbarIconTheme.SelectedIndex > 0 && File.Exists(themeFullPath)) + if (File.Exists(themeFullPath)) { pictureBox.Image = new Bitmap(themeFullPath); return; diff --git a/src/ui/Logic/Language.cs b/src/ui/Logic/Language.cs index b143f9581..41c24f7f2 100644 --- a/src/ui/Logic/Language.cs +++ b/src/ui/Logic/Language.cs @@ -2747,6 +2747,7 @@ can edit in same subtitle file (collaboration)", DarkTheme = "Dark theme", DarkThemeEnabled = "Use dark theme", DarkThemeShowGridViewLines = "Show list view grid lines", + GraphicsButtons = "Graphics buttons", ListViewAndTextBox = "List view and text box", UpdateShortcut = "Update", FoucsSetVideoPosition = "Focus set video position", diff --git a/src/ui/Logic/LanguageDeserializer.cs b/src/ui/Logic/LanguageDeserializer.cs index b711c88f0..ad0b13089 100644 --- a/src/ui/Logic/LanguageDeserializer.cs +++ b/src/ui/Logic/LanguageDeserializer.cs @@ -6577,6 +6577,9 @@ namespace Nikse.SubtitleEdit.Logic case "Settings/DarkThemeShowGridViewLines": language.Settings.DarkThemeShowGridViewLines = reader.Value; break; + case "Settings/GraphicsButtons": + language.Settings.GraphicsButtons = reader.Value; + break; case "Settings/UpdateShortcut": language.Settings.UpdateShortcut = reader.Value; break; diff --git a/src/ui/Logic/LanguageStructure.cs b/src/ui/Logic/LanguageStructure.cs index a16ea426a..740068e7f 100644 --- a/src/ui/Logic/LanguageStructure.cs +++ b/src/ui/Logic/LanguageStructure.cs @@ -2599,6 +2599,7 @@ namespace Nikse.SubtitleEdit.Logic public string DarkTheme { get; set; } public string DarkThemeEnabled { get; set; } public string DarkThemeShowGridViewLines { get; set; } + public string GraphicsButtons { get; set; } public string UpdateShortcut { get; set; } public string FoucsSetVideoPosition { get; set; } public string ToggleDockUndockOfVideoControls { get; set; } From ef82c3dd791063ff51874330bd4e25f1ebe4644f Mon Sep 17 00:00:00 2001 From: niksedk Date: Sun, 9 Jul 2023 08:33:09 +0200 Subject: [PATCH 87/96] Minor optimize --- src/ui/Forms/Options/Settings.cs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/ui/Forms/Options/Settings.cs b/src/ui/Forms/Options/Settings.cs index 4346e0407..7bd431bdd 100644 --- a/src/ui/Forms/Options/Settings.cs +++ b/src/ui/Forms/Options/Settings.cs @@ -38,7 +38,7 @@ namespace Nikse.SubtitleEdit.Forms.Options private readonly Dictionary _newShortcuts = new Dictionary(); private List _rulesProfiles; private List _pluginShortcuts; - + private bool _loading = true; private readonly BackgroundWorker _shortcutsBackgroundWorker; private static IEnumerable GetSubtitleFormats() => SubtitleFormat.AllSubtitleFormats.Where(format => !format.IsVobSubIndexFile).Select(format => format.FriendlyName); @@ -108,8 +108,10 @@ namespace Nikse.SubtitleEdit.Forms.Options UiUtil.FixFonts(this); UiUtil.FixLargeFonts(this, buttonOK); + _shortcutsBackgroundWorker = new BackgroundWorker(); Init(); + _loading = false; _oldSettings = Core.Common.Settings.CustomSerialize(Configuration.Settings); } @@ -1241,7 +1243,6 @@ namespace Nikse.SubtitleEdit.Forms.Options } comboBoxToolbarIconTheme.SelectedIndexChanged += comboBoxToolbarIconTheme_SelectedIndexChanged; - } private void ShowMpvVideoOutput() @@ -2315,6 +2316,9 @@ namespace Nikse.SubtitleEdit.Forms.Options section = panelToolBar; break; case AppearanceSection: + TryLoadIcon(pictureBoxPreview1, "New"); + TryLoadIcon(pictureBoxPreview2, "Open"); + TryLoadIcon(pictureBoxPreview3, "Save"); section = panelFont; break; case NetworkSection: @@ -3666,6 +3670,11 @@ namespace Nikse.SubtitleEdit.Forms.Options private void comboBoxToolbarIconTheme_SelectedIndexChanged(object sender, EventArgs e) { + if (_loading) + { + return; + } + TryLoadIcon(pictureBoxPreview1, "New"); TryLoadIcon(pictureBoxPreview2, "Open"); TryLoadIcon(pictureBoxPreview3, "Save"); From 4aa3f0f6fe6f2628ce18080dfcda090d77e0324c Mon Sep 17 00:00:00 2001 From: bovirus <1262554+bovirus@users.noreply.github.com> Date: Sun, 9 Jul 2023 10:14:07 +0200 Subject: [PATCH 88/96] Update italian language --- src/ui/Languages/it-IT.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ui/Languages/it-IT.xml b/src/ui/Languages/it-IT.xml index 40d646a93..6c742879a 100644 --- a/src/ui/Languages/it-IT.xml +++ b/src/ui/Languages/it-IT.xml @@ -3,7 +3,7 @@ Subtitle Edit 3.6.13 - Tradotto da NAMP e bovirus - Data traduzione: 03.07.2023 + Tradotto da NAMP e bovirus - Data traduzione: 09.07.2023 it-IT OK @@ -2412,6 +2412,7 @@ stesso file di sottotitolo (collaborazione) Tema scuro Usa tema scuro Visualizza le linee della griglia nella vista elenco + Pulsanti grafici Aggiorna Imposta la posizione del video Alterna blocca/sblocca controlli video From 9a1c247e2dcf9837cfbae49a3cf426fd35ad4aec Mon Sep 17 00:00:00 2001 From: niksedk Date: Mon, 10 Jul 2023 16:56:58 +0200 Subject: [PATCH 89/96] Fix for second regex search/replace - thx OmrSi :) --- src/ui/Forms/FindDialog.cs | 2 +- src/ui/Forms/Main.cs | 3 ++- src/ui/Forms/Ocr/VobSubOcr.cs | 3 ++- src/ui/Forms/ReplaceDialog.cs | 7 ++++--- src/ui/Logic/FindReplaceDialogHelper.cs | 4 ++++ src/ui/Logic/IFindAndReplace.cs | 5 +++-- 6 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/ui/Forms/FindDialog.cs b/src/ui/Forms/FindDialog.cs index e3abc7d5d..05c250115 100644 --- a/src/ui/Forms/FindDialog.cs +++ b/src/ui/Forms/FindDialog.cs @@ -157,7 +157,7 @@ namespace Nikse.SubtitleEdit.Forms else { DialogResult = DialogResult.OK; - _findAndReplaceMethods.FindDialogFind(FindText, FindReplaceType); + _findAndReplaceMethods.FindDialogFind(FindText, FindReplaceType, _regEx); } } diff --git a/src/ui/Forms/Main.cs b/src/ui/Forms/Main.cs index 45f048e64..80e145e5c 100644 --- a/src/ui/Forms/Main.cs +++ b/src/ui/Forms/Main.cs @@ -6333,7 +6333,7 @@ namespace Nikse.SubtitleEdit.Forms FindPrevious(); } - public void FindDialogFind(string findText, ReplaceType findReplaceType) + public void FindDialogFind(string findText, ReplaceType findReplaceType, Regex regex) { _findHelper = _findHelper ?? _findDialog.GetFindDialogHelper(_subtitleListViewIndex); _findHelper.FindText = findText; @@ -6341,6 +6341,7 @@ namespace Nikse.SubtitleEdit.Forms _findHelper.FindReplaceType = findReplaceType; if (findReplaceType.FindType == FindType.RegEx) { + _findHelper.SetRegex(regex); } DialogFind(_findHelper); diff --git a/src/ui/Forms/Ocr/VobSubOcr.cs b/src/ui/Forms/Ocr/VobSubOcr.cs index f28c1e432..d0ea2fa33 100644 --- a/src/ui/Forms/Ocr/VobSubOcr.cs +++ b/src/ui/Forms/Ocr/VobSubOcr.cs @@ -9790,13 +9790,14 @@ namespace Nikse.SubtitleEdit.Forms.Ocr Configuration.Settings.Tools.OcrGoogleCloudVisionSeHandlesTextMerge = checkBoxSeHandlesTextMerge.Checked; } - public void FindDialogFind(string findText, ReplaceType findReplaceType) + public void FindDialogFind(string findText, ReplaceType findReplaceType, Regex regex) { _findHelper = _findHelper ?? _findDialog.GetFindDialogHelper(_selectedIndex); _findHelper.FindText = findText; _findHelper.FindTextLength = findText.Length; _findHelper.FindReplaceType = findReplaceType; _findHelper.InProgress = true; + _findHelper.SetRegex(regex); if (!string.IsNullOrWhiteSpace(_findHelper.FindText)) { if (Configuration.Settings.Tools.FindHistory.Count == 0 || Configuration.Settings.Tools.FindHistory[0] != _findHelper.FindText) diff --git a/src/ui/Forms/ReplaceDialog.cs b/src/ui/Forms/ReplaceDialog.cs index 4e27b5cf4..893d3faed 100644 --- a/src/ui/Forms/ReplaceDialog.cs +++ b/src/ui/Forms/ReplaceDialog.cs @@ -181,6 +181,7 @@ namespace Nikse.SubtitleEdit.Forms { ReplaceAll = false; FindOnly = false; + SetRegEx(); Validate(FindText); if (DialogResult == DialogResult.OK) @@ -190,7 +191,6 @@ namespace Nikse.SubtitleEdit.Forms } buttonReplace.Focus(); - SetRegEx(); } private void ButtonReplaceAllClick(object sender, EventArgs e) @@ -198,6 +198,7 @@ namespace Nikse.SubtitleEdit.Forms ReplaceAll = true; FindOnly = false; + SetRegEx(); Validate(FindText); if (DialogResult == DialogResult.OK) { @@ -206,7 +207,6 @@ namespace Nikse.SubtitleEdit.Forms } buttonReplaceAll.Focus(); - SetRegEx(); } private void Validate(string searchText) @@ -242,9 +242,9 @@ namespace Nikse.SubtitleEdit.Forms private void ButtonFindClick(object sender, EventArgs e) { + SetRegEx(); Find(); buttonFind.Focus(); - SetRegEx(); } private void SetRegEx() @@ -304,6 +304,7 @@ namespace Nikse.SubtitleEdit.Forms _findHelper.FindReplaceType = GetFindType(); _findHelper.FindText = FindText; _findHelper.FindTextLength = _findHelper.FindText.Length; + _findHelper.SetRegex(_regEx); } private void RadioButtonCheckedChanged(object sender, EventArgs e) diff --git a/src/ui/Logic/FindReplaceDialogHelper.cs b/src/ui/Logic/FindReplaceDialogHelper.cs index f033ee967..bf886bd3b 100644 --- a/src/ui/Logic/FindReplaceDialogHelper.cs +++ b/src/ui/Logic/FindReplaceDialogHelper.cs @@ -500,5 +500,9 @@ namespace Nikse.SubtitleEdit.Logic private StringComparison GetComparison() => FindReplaceType.FindType == FindType.Normal ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal; + public void SetRegex(Regex regex) + { + _regEx = regex; + } } } diff --git a/src/ui/Logic/IFindAndReplace.cs b/src/ui/Logic/IFindAndReplace.cs index f486c8b75..afa8b4471 100644 --- a/src/ui/Logic/IFindAndReplace.cs +++ b/src/ui/Logic/IFindAndReplace.cs @@ -1,10 +1,11 @@ -using Nikse.SubtitleEdit.Core.Enums; +using System.Text.RegularExpressions; +using Nikse.SubtitleEdit.Core.Enums; namespace Nikse.SubtitleEdit.Logic { public interface IFindAndReplace { - void FindDialogFind(string findText, ReplaceType findReplaceType); + void FindDialogFind(string findText, ReplaceType findReplaceType, Regex regex); void FindDialogFindPrevious(string findText); void FindDialogClose(); From 0f32c4152369df846b6ffbcad1fc3f8116d8a52e Mon Sep 17 00:00:00 2001 From: niksedk Date: Mon, 10 Jul 2023 17:17:46 +0200 Subject: [PATCH 90/96] Add missing images for legacy video player --- Icons/Legacy/VideoPlayer/Background.png | Bin 0 -> 1117 bytes Icons/Legacy/VideoPlayer/FastForward.png | Bin 0 -> 356 bytes .../Legacy/VideoPlayer/FastForwardMouseDown.png | Bin 0 -> 356 bytes .../Legacy/VideoPlayer/FastForwardMouseOver.png | Bin 0 -> 356 bytes Icons/Legacy/VideoPlayer/Fullscreen.png | Bin 0 -> 344 bytes Icons/Legacy/VideoPlayer/FullscreenDown.png | Bin 0 -> 839 bytes Icons/Legacy/VideoPlayer/FullscreenOver.png | Bin 0 -> 861 bytes Icons/Legacy/VideoPlayer/Mute.png | Bin 0 -> 1174 bytes Icons/Legacy/VideoPlayer/MuteDown.png | Bin 0 -> 1247 bytes Icons/Legacy/VideoPlayer/MuteOver.png | Bin 0 -> 1262 bytes Icons/Legacy/VideoPlayer/NoFullScreen.png | Bin 0 -> 343 bytes Icons/Legacy/VideoPlayer/NoFullScreenDown.png | Bin 0 -> 843 bytes Icons/Legacy/VideoPlayer/NoFullScreenOver.png | Bin 0 -> 864 bytes Icons/Legacy/VideoPlayer/Pause.png | Bin 0 -> 1616 bytes Icons/Legacy/VideoPlayer/PauseDown.png | Bin 0 -> 1710 bytes Icons/Legacy/VideoPlayer/PauseOver.png | Bin 0 -> 1710 bytes Icons/Legacy/VideoPlayer/Play.png | Bin 0 -> 1693 bytes Icons/Legacy/VideoPlayer/PlayDown.png | Bin 0 -> 1687 bytes Icons/Legacy/VideoPlayer/PlayOver.png | Bin 0 -> 1587 bytes Icons/Legacy/VideoPlayer/ProgressBar.png | Bin 0 -> 934 bytes Icons/Legacy/VideoPlayer/Reverse.png | Bin 0 -> 307 bytes Icons/Legacy/VideoPlayer/ReverseMouseDown.png | Bin 0 -> 307 bytes Icons/Legacy/VideoPlayer/ReverseMouseOver.png | Bin 0 -> 307 bytes Icons/Legacy/VideoPlayer/Stop.png | Bin 0 -> 1020 bytes Icons/Legacy/VideoPlayer/StopDown.png | Bin 0 -> 1216 bytes Icons/Legacy/VideoPlayer/StopOver.png | Bin 0 -> 1215 bytes Icons/Legacy/VideoPlayer/VolumeBar.png | Bin 0 -> 934 bytes 27 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Icons/Legacy/VideoPlayer/Background.png create mode 100644 Icons/Legacy/VideoPlayer/FastForward.png create mode 100644 Icons/Legacy/VideoPlayer/FastForwardMouseDown.png create mode 100644 Icons/Legacy/VideoPlayer/FastForwardMouseOver.png create mode 100644 Icons/Legacy/VideoPlayer/Fullscreen.png create mode 100644 Icons/Legacy/VideoPlayer/FullscreenDown.png create mode 100644 Icons/Legacy/VideoPlayer/FullscreenOver.png create mode 100644 Icons/Legacy/VideoPlayer/Mute.png create mode 100644 Icons/Legacy/VideoPlayer/MuteDown.png create mode 100644 Icons/Legacy/VideoPlayer/MuteOver.png create mode 100644 Icons/Legacy/VideoPlayer/NoFullScreen.png create mode 100644 Icons/Legacy/VideoPlayer/NoFullScreenDown.png create mode 100644 Icons/Legacy/VideoPlayer/NoFullScreenOver.png create mode 100644 Icons/Legacy/VideoPlayer/Pause.png create mode 100644 Icons/Legacy/VideoPlayer/PauseDown.png create mode 100644 Icons/Legacy/VideoPlayer/PauseOver.png create mode 100644 Icons/Legacy/VideoPlayer/Play.png create mode 100644 Icons/Legacy/VideoPlayer/PlayDown.png create mode 100644 Icons/Legacy/VideoPlayer/PlayOver.png create mode 100644 Icons/Legacy/VideoPlayer/ProgressBar.png create mode 100644 Icons/Legacy/VideoPlayer/Reverse.png create mode 100644 Icons/Legacy/VideoPlayer/ReverseMouseDown.png create mode 100644 Icons/Legacy/VideoPlayer/ReverseMouseOver.png create mode 100644 Icons/Legacy/VideoPlayer/Stop.png create mode 100644 Icons/Legacy/VideoPlayer/StopDown.png create mode 100644 Icons/Legacy/VideoPlayer/StopOver.png create mode 100644 Icons/Legacy/VideoPlayer/VolumeBar.png diff --git a/Icons/Legacy/VideoPlayer/Background.png b/Icons/Legacy/VideoPlayer/Background.png new file mode 100644 index 0000000000000000000000000000000000000000..c2642eb8788ee1d6c8c555ecfb266cf9babc8669 GIT binary patch literal 1117 zcmeAS@N?(olHy`uVBq!ia0y~yV66bMbvc-Ur1HAY&wvz5x}&cn1H;CC?mvmFK)yn< zN02WALzNl>LqiJ#!!Mvv!wUw6QUeBtR|yOZRx=nF#0%!^3bbKhU}gyL3327;=MxkZ z6aoQZAt5m#A#p(=89^ag5h-m^X&p5!Lv;fm4MSfW=O9~`U|ZJ^JGW3%hcq+CbO-lv zN6$znuV`oQSXbXTH@^gT|0IvV6tCbk?~rug&`iJZZ2ySdz^MG7=z`#w;;{JgsN|a1 zw1)W1=D5t(gsj%Y?6%UHS!K1eyC*FNx^onah5-FT;6;g#Ezs6Go-U3d6>)E`9S?O5 zWN>zDJbBV(@Smd z2scoK%OUg`P(-3()z`{rGmxxUUaA44RtNZmxcY`=xA)DTG;6hIV0v^) zoqt4bRB}yVRDM`|d2mc|P;`M;P)1Bjy-!G1YtNjREu=tADv{rGmxxUUaA44RtNZmxcY`=$EK8K6f}AUrbnmL z`A6hNCD#N-<%h+W2gei#MHhGlWyGY^`-EggClwi4`bH#Hc?G4%XEu9>Wcr3>#bq@4 zhGr&ax5Z_)`i13$#aG0pHF$@ldj_QC7B?4_x5cK_$7eM91gH6i=0+q{hQ$>|CRHb7 zG2SgU?n|TF9<^@C)gvAzw#Fhp|6^6&< zO*?Sz8_?M$o-U3d6>+i0OvR2EFdVsH*it!h=FErx)NdEw`6*uIbiQ>RcW>0~V+V3P zs`mKKtUT5JEz@AGjQ6vcyqYymySz28>p%O;`LQ=cvn4`i#$8>foRpvY0zCg|PZ57C ya^Y#z%DQg}^B8TIJ%!C`R;LEP-eFMmm+@Y!fHB{_bt{1OGkCiCxvXd6Ai!;r=JvaoqVAdP2{I zt_zJ?+s43bNP4_YnR&{G_GvJk982b0ZhWjlx=Sh7FXsIT@r`IHgjgJy-7P|FWcj{O zN&YL87vmJrxN#0001rP)t-s5)u;B z+2GUI-~Rsp-Qwx`{QvOv{5?ce5D*g&4-^;}7#kZKKSoxYo~JT5Nj*eUG(1f@K~W40 z5g#Kh4-XR!4He4F&_YUEK}lHz1O!G-U_eJ#K1Nj!4-O_OF+4+33JMlHLsJ3*0s{jB zMNM8qOI;Qg7Be_XQ&m@QHEBf)bU4E zOq4sTFvgt76ij5iZh^J1f*TWCYPHsntEF2eHq=P@Oj4O7vSES{i+lPKLZl*Qj^q0y qXgYSebn*@(ME&0BBTUv2{@@EOgc&Q=to2R+0000xN#0005DP)t-s0s;cm z+2BS_VAI&&3?@!eU~~yUb_y+53N&CYHdhT%hYlV=5EnBO6BQE^784sZ6DCj-T8|VQ zHWnK!7924c7#JELI~yAt8z46uY^NL_CLJO-B6h7KDLV!&T`)alG)HweKvg(GSV2iz zLP}afO<_Y$VM9-52^u?AWp-R@d0c9GVQ_w9aeriWg=BSxYkrQBpr-Kk{QCU=5*8^E z7cLSWJPsd14;nWdATkdjL>(eI9V0df8962{JSi_hE;URQ8Y*vrjTIX(6(UC!L3oIk zo(UE=ovg5?v9zbLwY0#*wZX+NJ7O<8V-{kd7a%|q5)wN?Q9MIb7BOE7Cr%1Te*^>s z2Q+3!Q)WzCa4t7oFEvgtHBc`#Qwu3kBq}^FHcKx$VHzSO5J-j)P>^tfj&g&Ic#4;L ziIh67-YmS_-sg5!U0ar2)oQ2_&NbK}y-)Ssz zGQ0qs#ZolEv{ld3w)A<`#!N&@i@>4tt_WgciAp=7QI{qN;)+KHHho+(eMXsN@SpgM zNy^!@W}FTqN?mz<<8nx@dQ{1WE;rW8Iwg#-lXJJL?asAUtG({DS8wN%?0>OdZ#K(c R0vrGU002ovPDHLkV1hMlMp6I( literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/FullscreenOver.png b/Icons/Legacy/VideoPlayer/FullscreenOver.png new file mode 100644 index 0000000000000000000000000000000000000000..f719655a7f6909b71d937055153eddc0b06d9b1a GIT binary patch literal 861 zcmV-j1ETziP)xN#0005YP)t-s0s;aN z5*i;XW;#%QMowVU*x%II;1UuN5+FYkBuEk{QW7jx5-?yAF=7%lYZEP86Ge^`DNq(C zMiwkm7CdtoKztY&7#U5E8yg!PDMcMlhaNt99z==>4L2V-Y#=LWAV7&AL5v|VOe8~z zBt(xUM2IU&k1KDhFF#xl8d*AotUF0!Ka8zFXt_g7V?<3~5Gz+kXQxM3aY$KmOKhlA zW`I?4tX7Z6eU`z4!r_IPq=%ZNnya&$q_w8By0pH;#L3PP5)=puDcs)S+~DNh;_3SQ z|Nj2}IYCtwH*6Lb7CS>(9#DckMO!~eT>}FH1Ox;@Lqib}7DG*94iFYZO<_e%UKB4? z6g+w%K!_qYVIoz7P;aUuGEO5kRU{}jTY0fxeX(S8hi-|tbcK?5i=26loqLqP8c&TC zB|{w@9wu9Zh@Gd1%ixNdrHahoj?v$frLL3H-;}1Wm#MIq*58<@uqRifC|-n~*x#S8 zx1qARqO-avX{xZl#1$}J6){%G-t@}S)*c=nFm|jna#b(!Gfgb>sRZ#LmJ(tyLFF$`m;f=1@B}pSpY#h!l2Vc;;Efmn z8CG*H>EvxUSwp|%sD}a3D%j1;6j7IAHnSC4Ky=C>k&xwO3|Rn7&T@Vq`2iG_E4IG5wX=Wx^LT$}YjZv3 nQUN8Gw`oxHTOEpOZ28!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e6&pP!GLTa1TC zke^?emsfPeDab zP2Esk!$?ibP)plPTgO!2z{=3b#>CXl%*xHg+Q-bs*WAv}!qU;w%GuK1-^xDF(!t-t zA;7{R(Ap`;#uL-DYGmsqaZ!2sGzvIxU?>(u%W25v8b%MsJyMIwXdP2zqzfyv299s z-;A#QnO*&}dM3=AHgnO`nM-EOSvq^(@|p8i%v-o>!QwRwmaJL0bkp)xn^vyfzH#f` zOTxA{iJMMLk^{ zLo|YuHymQ&c{ZcrAP@;kNtTqBZjG&0f4VZV-2G;FNk!JHS4J7xD_4v8%(|kN{o?MejO&-u7Op+JVBwUB zri>g@l8fg4=BiaYvO2>c<8ljSZ81=Y~hjb%|6HW@Z*IcFD07DEO`F9lBKN3cFFUVL{<01GOvHr*HbK`7EV7 zUHo$a)6pFkH(j(}KbrCL^dHyD-b-%oa7c=g$;sp0Hs=fz<5NwgoH+u93%nf7`1s;j yJ;Nplxb$>S7C!NeVUmo3oC}X=LRVoSBg4_R{!bcXJ^%|81_n=8KbLh*2~7ZxDrUR@ literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/MuteDown.png b/Icons/Legacy/VideoPlayer/MuteDown.png new file mode 100644 index 0000000000000000000000000000000000000000..83218bcb4391faf99d79f50a51a4b799340e34d3 GIT binary patch literal 1247 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S3?yCqj{O5tEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e62SXh)tNS9AU zk6+T9SK3xgN>4^!O+eaIT-sPb%0f`aN?hJvLe7$3!A43+RYb{JQo&qS$y`doT2{$Y zO-Elz-C9l0hELv!Q^Ad2!I@vtgzNnF7}RLNafEkMjLp4}vk-6DtGGMC#ToyR(h!=^yPz)RoE zThG)--_%dhEL`6-K;JZ2&n#TeJVxItQQtaA-#S^}CfUF$(ZDu^)1idZp^Vp|kjtZ9 z)Um?CDZz0}Do%GEd4*+0$GH^C>e&?mYeJSHbRHa{q#BrLToBB?k! zr8+93DkiHkCaWr`pq|I4kvFhiz@tq#vQIdwUm#$DVB{?E#K~fb^Tm=DNark*&RMQh zwpOEdQ)+ofdSz=~Sx0tFXI@2DL3w*=WpiasTYf`JVPj80Q(t+hwMm9&iGj!-8@)Y_CVQOCHV0U23bkLI>~WBl={P(4A#RRy46HX9I1bntT~SoM zqNRUdUGKWC;SDW=2W)~5jV&LW+21WKzFS`QA}#w=YiUF8^p=iktzFX_`)73Y&ugAI zt7YQ+_Gxolrp@n|Hm`T$?B0pjHSJ^7EGSCbjI9OGv}|Jv|!oP1ux|z$?&s(-`?wSqj+L~5(wXNuBU(wsKeEqg%8@4RpxOLsm{Tp{3-L~)4mIFt& z9z449$no7rPM)1O<6`&Zi__;GK5^mXxvOU`T)lAh?xpMZF5kF+<>rIycOKt)_~P!P zmv2uU`*7s&mt)5tzj*)h&4&+P|9t!Y`}g0!fB%80bf7@-k`5&X2F5r~ z7sn8d;N%aCV{t_0=y+ZiR$!rja#NZe=fJL z=BHE6&0Wot)qJdWY}4vdv`BxxuG>Mtw7fq3{guwS?9{yiL#Z_c
^aH6F8Fn?7w4nx^HJcTDQls;*C)cA4>*Rh|09rlwce zxzh9FyLD~9PF0!lH0_h)JgJ!}8F@2u=1a|!oO1h`cz6zN^DFzt*LUvRxjw#cWq#WZ Z@i5H1xTsK@FU=Md%bu=&F6*2UngA2p)U5yj literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/MuteOver.png b/Icons/Legacy/VideoPlayer/MuteOver.png new file mode 100644 index 0000000000000000000000000000000000000000..7643ee97704132b9a041c1af40ec6c987cfbf1f5 GIT binary patch literal 1262 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S3?yCqj{O5tEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e62P)LM>OOun= zoLAnRUn-JM$(LUzPFT}lTH8xj+gn!GM_M;jRzFsDOw6`G#HLEju2R;vLfs@#(JWHKELh(%MAtgb)ILH%D@{Q=L(48j$39iu zu~gipR@S3f-m663x60HpR?Rs}%Q;uet3b!E+|)hS);GsGu+G&t&OI>KHzdbDBF{6j z*gLw^FQOnkp;TPIQCz=C*riw4wNK8aOTx2L(x+3>w_nkrQ^B!E#ko_>r9;J~U)!r+ zFRs}#s>wWTwtDyy&6Hl9^gf;J`MNnX3<~BNm(AA7S+1MESR-?#M&>H5yp`rPON@&) zyQcT}r?y6Ace$l6_s&`2kg+o$e^qGFn&`@n@wFS%@|rSBI&;c9GAp_>D<&0IbQe~4 z7S>ECu9;}ly3DR?wbR74<&9HHS|*jW&aY{kT-QFmrh7(h|LnZZ?P2{Vs;3;Nop!Lf zdtOWT?AG4-jT7cHOrGB`Wq#-6`HfQ-bWU8@J7r17jKzKPR?M8gZqlOFlb5cWx_sUA zg_~wB+%SLHmf0&e&RV^B&YCTA*KJ*}V%vhXTNka~vvAYSMVogm->`4lmR-xY?q0Ed z@7gVUSMAuhcE|oTTMw?^b#VRO!yC6B+OYq~mVHOI?mxP1&xsxTPj#KS-+TUU?}dAl zF5aDT>Grg%_vT!^JMYH*=0guVPCr<5^WMe-NB12$xA)kELnqH4IeG5j@r#E~T|RQ^ z^6|4*PoBGe;^Ng47q6YZaQ)<^Yo{(>KYi);*-N)BUAukp+P%v+?w`2#<-*kmS8hJI ze&_M+`;YG2dwA#m<2w&u+h1G4U*5d^@c#YBcke&F|ML68$4?(W zfBE|D`-iW8zI^-j{m0KAKYsrD^Z(z!|G?BsYmh8b$i~3HnCt1{7@`rJY+$6bdW}QF zDI;fPw!@3B>nS&9yYos;@_T!GfBkv~)et&l6h5Ngoemm*;H&{&7;E4bGjQst@?*qJF_eQ!dU;llZUw?YX z+cny@CGYP|ZJN}^{oLq${HnJ-sU0it@A<1Iu*CQF)T-?Kk9T+W8uG-Yh37Xp)LlC} z>!i7^o}BUbq=M;o#bPY8M9ytXonv~lB;wlKgHu0$5ER&8Vmm3O)+O&blU_KR_`Frm z9y=VEcxiEI!J>~JbL_;~)CI$yy?cDTe8Xu8omi#)Dbm|l2scljqOkwdLFL#zw{~9& zU6y-2eR5G!!M4d0MEdLmm#$kFU6HVce`|R zX{Ad>M1ey^UYy^8{qX@FE;~h;gYWG6dOB=P%-*uYvqH6}>qqa`>+5W6oapN5;2_Av e!ZIa7LXsgMas3M2#)WS{k?ZN|=d#Wzp$P!4PB^Ln literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/NoFullScreen.png b/Icons/Legacy/VideoPlayer/NoFullScreen.png new file mode 100644 index 0000000000000000000000000000000000000000..04d57c038e91c528868d6fb7f2b3eddec5f000f3 GIT binary patch literal 343 zcmV-d0jU0oP)xN#0001rP)t-s5)u;A z*x&yC|M2zv`uzXh;^{p^R1gpo4-XX7+29)+8$U)?7#J8bH%ZFO&@(tnA0sUd4HZ2^ zQw$6dIzdr1JWUS|6Gcs4K}lH_78XKETMrKoCMq#LMpZyZS3E;fJVR3o3Kjwa0s{jB zMowTuOI-v61e>0xQ&m<$Lqi@O9yB#J9UUGjDl49M#fty{0EkIMK~#7Ft;jV3!!Q5@ z!4sMp!VC`n|9jC{t;$Tdi)#QD0k{QV9e`y3_LSM9XEP>t)R)pLdnQ`z3^JkTOAbu5 z2dB`fd*Ae-3nnt_R4UI!n!kmrnAlQnR?f#5Q!}xlPTU=(l<1h4#mR-VPGTl;o@bJi pXq<#MjZ80UPF@p%yod;Y@B{AD8Aj@g0G9v&002ovPDHLkV1gMBcw+zn literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/NoFullScreenDown.png b/Icons/Legacy/VideoPlayer/NoFullScreenDown.png new file mode 100644 index 0000000000000000000000000000000000000000..b02aad83054c1dbc71197e2711aed6afde62c543 GIT binary patch literal 843 zcmV-R1GM~!P)xN#0005DP)t-s0s;cm z+2BS_VAI&&-QwvCCQdFkR}E2z4jw@cA3_ipGZ09I2^u>S6BZL2G!rIJ7#J8DAUhf& zB^w(X8z46uY^NL_CKD4CE;n2-J!CXTbvHm&I6_!ELQz3UT0%-%Lr!5sPi9hJbXH|{ zTxxk-YIG94l}B6h7595xmkEH5=qFEvmvHB%NGF%~gjZ-I?+gN=BKmwJnpdyJNX zkC=p(pM{f~hnAg)mYxPJU7f73FE&fGz{It|#S#({oujZ47AXrPObRq$3P^vZv9vTb zHWn5Z7h#hS5fTFf105Y61Ox;oEH4WUqK~#8NRm{_3V^I_U(0#6A+qP{xrES|b z#-2ZJ(mXU>AFu$!Fzvr?S`34qI;rrfn^3BQ-x=4@w{AzS3~0^Ao-5D0E6=eR{@M=Q zA061>hsC|Sx3l%RV{2z`*KL6j)Aq*ZTJ3*FZEbU7+XNcp`fASV$J<`M`>navbt7n^ zPP@bC6Cs4Yh(7s@4!bi7!-lDGy^7%Tk%)hd2$g<($^d`V*;G1#-?TimhD17*Rm0uk zbaMU-J+=@8fzIZW(}y6-iwny`=)TS8Lqp32aUM7e0`43Whc|wlImZ<&0B3QaHxN4g z)o~gM^bRZnXQ{}Tq_ZQzFgqNKu<4VG;u3Hu-Z@Fe%HE6T3vW3_lIJ`MWYo%j-{8b0 zZR~c8b~!QFx4%Nc$&9kZ>KW~q%zmAf^pEziO3E2Hk;UcBO10ilC=`u)wbGQwWv@-U VZMaNO#lrvq002ovPDHLkV1gmEN*w?I literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/NoFullScreenOver.png b/Icons/Legacy/VideoPlayer/NoFullScreenOver.png new file mode 100644 index 0000000000000000000000000000000000000000..eb5e78fd361bf32cb12006f60bd60c7e149b4db5 GIT binary patch literal 864 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 Ef(o|TO8@`> literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/PauseOver.png b/Icons/Legacy/VideoPlayer/PauseOver.png new file mode 100644 index 0000000000000000000000000000000000000000..4f7362626771a070417894a83c2eb575c58b8995 GIT binary patch literal 1710 zcmV;f22uHmP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00093 zP)t-s4-XCx5DyO#77!5;5fTv+5)u&-6A}^^5)>2>6crN}7Z4E~5fU8|7$_7ODis?n z7auSiA|@LnEgdI1CoME5FH9ysN+>W*D>+0dJ4G!!M=U)_F+WTwLry9~Pc1-9Dn?Q) zM^r6JS1nInGC@%_L{c_JR5wmtJw;PIMpZaUSw2WuK1^LQS7tj?WjkhgKu1?WNm)Wl zTSH4-Lrh*pOXJ?Q)Wn1XG&CQOIB-4S8GjJZA4^w zNoIZkF477l)ebGw06WbAHrE9<-v&I_06N?aG1m+;-3UI}5iiabHP0D6(EvT*6g%ZV zaD)Ly(h6175=7k|SQTJlW{cTulE!$M%5;^}f1T8Qnb>`p-eHO5 zW0mD&lW8iEjHKp`tm%!i?TxnZlBegBsOOZf>zS_TnX&Ghz3-y5 z&ZoKAw!6Zhv+AO?>!7yorMBy&x9_C7?WwxttGw-=$Mu8s{)+Jbm;e8$#`C7u{I$j7 zyvgXa#PGDt^Rw3Xvj6|T^8dlc&Ck@^z{}{z(do|C=)~3a!P@uC)b-EU_Rie)(b($O z-1gbt_sZe;!}|Z-;_2Dq`0DTW>+tvb{Qv*|{{R30000000000000000%`e}v0009m zNkl)tvb<>(@v-?BER2{5=;tXa$U~Vt1+&ydl)pwsh0>RtM^JjG{ zOWT{9nK76Gft{4@+$m?iy?c1$%9SfO9=`o}YRX()DLYeB24iDm3l-(LQyzVLcS{vuD!lHrCUtLgu&3z zOd@pFvCr2|ZC?4{`kd8su0L40`RL_0hi8RKnlTs{YRmS``+WE4)+H~0{W@56@Yk=G zOEw)n`(|FBtTuzDk&OP#xu>R25yHgt_88kG-I;$QZ+p=~6ST++RTQPs_mc#d|I>i_aG!Slw?u-0m08faBOt#zrLJb*g$omFCtkR)ucj`gIzOPp zS&)I1l~t=W*KbE%eSO!Y3DXx%pD?MbzP@gUUv8-uD^Qk2(4{#wWA~07ix)23xqIir zg^PFW*qxEu>>|hl(#tGS))AC<`_}H=d-m?#yJz?ATetIq+R7xDL3&wPIkd_ zA|W9mA}Y77yhw@@B+S4L0Zc-AMdeNHt*x!?P31*;LQG&$1|BHj<`z=1aw#q=cCk_s z;^u}3GVsFzA1|MPu&}TIkcNuzGl-)AQBhGS3kbx;0R(DlNj$@Y)Bpeg07*qoM6N<$ Eg2KTyrT_o{ literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/Play.png b/Icons/Legacy/VideoPlayer/Play.png new file mode 100644 index 0000000000000000000000000000000000000000..76d93d5043f05ae635986dfa78bf0a1dc008090c GIT binary patch literal 1693 zcmV;O24eY%P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00093 zP)t-s4-O3v4-N_n7Y+^*4h|Lx3?C2=4-gO!5fKp)5fTy-5)u*<5)u~^6ciK{6%`d0 z5D*&?5*-s2859*578e;67aJBA92XcF7Z@8C7#|oJ92puN1qUt$2Q>;2ED{$d7a1cJ z8Y&eVEE^pl9UmhaATl5!DIp^$BPA;%CM+Z;EhHx{B`Gf-DL{mORRz5~mKSowRMp{2dUN1myK1N_PKy^SzS3yZxLP}dh zOI$=tT}4e^MonNwPGCk)VMkA5M^Iu&P-93@WJ*$HN>gS_RA)<6XiZjWO;&17S8PvM zYz7F301TP{6P*AYk`5N10TiGB8K3|jq6HeE1{|OX7ODssssJgF4kMTVHJBAOmjEcH z3n;PxJE;IXuook>8#JvVE}kYjh$lRYDmscRJC*=Nod7_u08h36NxKSEpdLh`2V=Y$ zYpo(ljWR%uDowg8TDLV!q&r%xIa|0kV45~}uK-lW09eNWVaNq(+6sBt5@XK;cjX~c z(k)=vNLQvtWVS_PyhUifN@B5BX{J|hyHt6iWOBMiX245p#8GX;S#QHra>rG6$zXTL zVSdbQe93Wr#u{nCu#u^d^(gKb7+?tLiGO_A#~hH@oyZ!uwu?rhAOBS(@Nh zxA$#=&1i|zafZWlfyr`&&Uk~zdWFn!jnjIQ)kVwwOwj&c=Ko{X|7Pp|eDwd3qr8KS z&xex9f|S&Pp4y3!(2kYUlbO|;smqa|*OjB%m8jjEquHOR+k~y?kFw{Oxagv$+N7-9 zsjl6rvcRab)V90Aw7=M>yymgB;DFQok?#M$#@)8a>%qp&&(zz+&Edz+>(0~T(bw|Ns900000000000>O}-$0009V zNkl?tl395ePoqniJ^CuN@m55y21+1Tk7tz75yEy?gfH-o1PGpS}BVt-)7HD<(Xg zAuKF3%8=i;;njy{H?Lg2bm`LND>om!d)nyBZx|KI5E2sR$>&`E^xds1=MEoSw|4Ep zBj+yPeD$>6na?wfAvicpUES@%tLqmIo`1At(TWu-R4CcSLe=KwtU6veaEi7>T}_9XYdZzSMfjg^unRl3*P_v^XKb<3GP z>aU{D;2ET%Uw8N7(KRdkL9&1Tyj?T_Bz^HtoxTc#r-!(GWO3|t(BQr6Wux#g9mkG_Dxr`@*2 z<+(Z4))IycTx`Y~mem#IRjrj*-+;i`uF}fp%JPb8OATWNE=C~MzJC4s z;l!qvDN`o5R?W(mv(o{ZEaEC^HG9V7X;aTWez>@;WBSaQGp9|SG22SiRfK_yi^14P zu4K!!nbRlj>g-&i&LFi>C-fCw@u n!GWT@yrQbADu{vzC@BE|hW2^mtIGDe00000NkvXXu0mjfIH~ao literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/PlayDown.png b/Icons/Legacy/VideoPlayer/PlayDown.png new file mode 100644 index 0000000000000000000000000000000000000000..91ceecf2832d3bbd68109d7015bd583edde30d09 GIT binary patch literal 1687 zcmV;I259+-P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00093 zP)t-s4-XCx5DyO#77!5;5fTv+5)u&-6A}^^5)>2>6crN}7Z4E~5fU8$05kvqJqQsb z3l=pJ7$_7ODis?n7auSiA|@LnEgdI1CoMDt07d`+P67l=0tHM307(P@O$P@}2?$RD z08ju2Rs{i30Rme93|0*rR}lMViqh|9w}V_CTRd8 zcL6wg93x>FF?1&{OdvN$CO=9jFij{oODj1;D>+0cIYufwMJPK)EjvdnJxMV?Od~F0 zB`tFzI%_XGcr-nDDML>!Kujb?pUT{}QdGC@%_L{c_JR5wmtK15PH zMpZvXRyayoK1f(TOXJ?Q)Wq2XiHRSOjm17SZzvBepp^@ zM`e6hU~gV#a{w)X05ydGJc9u~jQ~cB0!owsPn;4{ivU!k2V9^7Tc`zKtOseg7J9lI zaIz>-f+bg#EoPc1WuQKMrU-h=K}v!|REkVgf=*Y7Ok9ppSbt$Rd~6G?~*Op5rH`<|?l3F|X+~ zw(vK+^hSY}NrRn1gP}r%p+kkIMTnzDh@?l0rbCFWNQR(Dh@eb}p-7CVOp&fnm9$co zu~L_}QJA?@o4i$?zG{J+eS({OfSi7Xo@s@ud5oq<%lcK+|90m8go&SukD`c>riqrS zhM2IDm#vJTwv?c>nxM9xro5b~yr{3fwY$i{#?8UQ)XB@&&(quA-{{)l=iA`x+~Mfz z@AmHR^X&2X^Yixl`uqC&{rdd>|Ns900000000000000000000000000$$dg20009P zNklLp8-tX{kR-ji~#OMU@4DGbTUsgV}vqN|?XS-WK6!g=%NEnKu@?X@SB(dR58QyG$y zGVNw;jC^)&#iFavrc)ooQzp7YWPf~pI$^?;`OB|Iov~mD3-vi` zetp42cNaaV?2jLx*0@bvaNYc@4}*k+&l!FL4S6|5saM}&;G4RFi8KEh9|i_4k0S!S ze3Hs4N-sWw!ROEKr^(9l@d_OAU|{8nJEG4El+@IE{s9c$T~kw4QI_P@KN82l$`-u8 zi%(fo+sN?Q8xVNxYG|mdqp8f-wLh4FmC(>+7nuO^;QGGO)6;hR^ELscUF$>sip$(%ugQ z?X3-U+I_RaS%I=Fq7^5)YuftzJ32OR-??+=)-7B5+iJQ`R*15I^fFt|KHc5CW!J7f zd-nms-rYO5GxCa)r-6(bu{C z=4}wTxxKUR#O!b`pg02?7;rjFpL2B6rfoZR?AW$x(~&vT9XLV44D1lVBo;q?&VfUR zj~_mCV9xY-F($Am0}m8%bBhJ!RZO2fy&^9_jGG%G$RG>{LV`jf;^N{WKpH9{%wUNE h%*@Q7EFiG71OTAEh{RNfdhq}N002ovPDHLkV1oP`%`yN0 literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/PlayOver.png b/Icons/Legacy/VideoPlayer/PlayOver.png new file mode 100644 index 0000000000000000000000000000000000000000..56b0e5945298d894b063c0a07a8907915b30534b GIT binary patch literal 1587 zcmV-32F&@1P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw000HP zNklq1tL=90#%UkML zWL5RFv)c{b_?u&%ATy=lkFHIp6ut zIkPAskqe$B)2v07=*8x!#UT+12J;*#)>Npo>*Vh(B{(9XkHY5*MJ_T$C+WlECmSMl zzM*6NEgr^5U2qg<)>Npoiw9>{4sbhC>8@qUL z;wMEGf`g{$O>t6zkqdO*#)(l0VcSpoets?Y$F`ck?g2e=rmgT;YhH1S6l*G=xj^=T z7M%D=k%i!(DgGg`$QU+nqF)$Sme8L{@6sdr-G`cU4>V*IG;G;>Ln?D$0~P9A;6jZJ zr$m#507n9q8NsvtL*slxW0@2;C7}fJj@=>;X#Ms&v}#+uLmPM2Q>WQIM{b>|xKnUe zpvgjj0}ZC)7Zjs6&lxu*z-Q?u=9PZ1wY2U&0b=0D7oDhGm{u8=d~M#A2C2l19(wwB zO$_>ERcG?|tz;pL@zz6wDY!m?(WCv%rtDv4rrrR`^$GCw!If9F*zNXvwk~>~xv>__ z`l2Z|O(-cxydgNhIo=MMECe{v`~suJ941T;<$d(eyqI2m`;fJhmN)KePTJmNS#w@; z5y$5};mC?~M1US${zu;-!_}LD9>NTJ{f9t>@-qY-6xaTf4_E7&l z7$`G=9+A==Ybpx9gyNiA;5v= zE2-#oN@G(36+8sUeSMQrQ%hs_|`q|b&gl~;UoJ~)YUD8=S82&5wokkmo-9w z1I>N(cxBMgp*%!GO2I(g#TO=DSH_nso>l=3YI-i9oR_S*-S&UcY)xGwgMusk>cB#6zsOVzzfU^5?d^1iN zfeQf+G#8ahQMsu2*z_w>y;hxi$-QF4NB0GEnN7RCQ*uw9{avcCxWu?3&o%xB>aLq? z2oFyDq{u>m15L#oT-0jU;Ufd$*94~TSHE=uhYYx9b&X3c&&WRt4lUeLFlKonl_}rW zqe*!W5FVWPNs)yB2b!3J=E?D1aExKiRxZdW3_o`hAVz-XSH%#$HsnvuIb}I~#Z=N^ zDSeDWPTR3bGz(H>A;6J9!BuNS%Rvbn0#kPlHYC7WjBb@?~oR zuD)ihmtsvtJf)NZJUH=_BHJ4Um+SPANf!LA<9l6Kfw&8wq14}Ifp lw^3eFtQ~bH|9^7z_y-frtOo#`CgnPbV&R{hkRrh< x!XU@k(HDdq( literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/Reverse.png b/Icons/Legacy/VideoPlayer/Reverse.png new file mode 100644 index 0000000000000000000000000000000000000000..e7e8f5e7860a36743e68623302fd8a4d9e6bb3cc GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~c!3-piujpS2q`CrpLR{lBn}cJD1Ecc8;>&}g z3!;*1{3CKF%~~Cs*5DbK-rhIgH!RyLD5JG!PE1O@Pe@iwa(P5zm3K&HTt?IMxoiEx za=e1l!{RH7t0qLJ)I}zgl-Bh7hUS*lPDsdTiqB|_Osa0|n2}%B;~$aV)H%~TIJ=;{ zCm=E}B(}7neO5q3fp2JbL&xlZ$U>H0)*hg%QaoK8Ln`8IkGS$3b`W6L@UXR@>kQBT z|8dK^LgaaxFWPskyLVQ6YgEyh%d$z{9eEWO$B`btd2uJK~dY4OXqu+>e>-zf^TkHOQ`&t;ucLK6V8 C`g#Wd literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/ReverseMouseDown.png b/Icons/Legacy/VideoPlayer/ReverseMouseDown.png new file mode 100644 index 0000000000000000000000000000000000000000..c57b383d4898d0f93418d3d592fc6ab2b43b3e4a GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~c!3-piujpS2q`CrpLR{lBn}cJD1Ecc8;>&}g z3!;*1{3CL+ikf578axBjEakt5odeEmG7{F0Ke#7 zTiz8S&(nO-zGL0Jv*H`?RT(zD+GpMOdCl&sRa|GjyK_AJ`OWSOPsj4mb3ZqIyw<^? zH0_pi=(2Ayrbzopr0Jq(9 AHvj+t literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/ReverseMouseOver.png b/Icons/Legacy/VideoPlayer/ReverseMouseOver.png new file mode 100644 index 0000000000000000000000000000000000000000..b43d264aa38dcd10933b5d700c829196e4c778c1 GIT binary patch literal 307 zcmV-30nGl1P)XT;pR>Wp*i2MvO;&49SZ`iv zf=*U!R$q8aRB2gadrDGgTV#GvSa48TZctfqUuc0}X@g*Bf|Z=GO;u~FvdFBn$gj4{ zvAD~!xy-!7*1W{my~NbM#nnw!ZA(*YR9$t`+36$tmtg<^0Axu-K~#8NJ;X&4LQxC^ zz==Kij=Q_v|9S+dq8E+TSN|V^E0>39DA!&HFdG-UR~#05&&;6uJg1aq7jL1e5a}Ib zjE|Fd7ZEUL)Yqm$eQR1~2GM+g$)^3ZB_d?kjjHZf&TnR)2mc7@#2Ekp002ovPDHLk FV1nADgfsvE literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/Stop.png b/Icons/Legacy/VideoPlayer/Stop.png new file mode 100644 index 0000000000000000000000000000000000000000..324c85c11a7f4ae0dcb60ffaa87d9c8d7e2a276d GIT binary patch literal 1020 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQaEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e6&pP!G5ON@s{ zke^?emsgaZUqnDaSV%}nURhU7%h1T&)7Zkx#KzakG0?_2$i_L?)&+<{?A$`_-NGE) z!yP>%oxGx*y<=T{db}9H|}4#`QYxOmmj|V`Ss`jzkmOM&KL!wAutF- zK;EkHH_%zto-U3d8o|A%Z}J^d5NUb1k^72X)RC>FkN?JB;w!i`V~)iB-SvDAmK_Lf z>}E=5_2ZH`xx4m}jWD~^vk7OIg%?MEspMXmo^(g|*7l5pEurOx9Wcr&{a!#gN%cj9zE-c1%5<|G)2A9Ru$vd$@? F2>>1me~bVC literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/StopDown.png b/Icons/Legacy/VideoPlayer/StopDown.png new file mode 100644 index 0000000000000000000000000000000000000000..11777e0948abd94436466e73c11fd1e7be731f82 GIT binary patch literal 1216 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQaEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e62Ku`z>goQljC*-g^eEpxd{61XkWH1!?z&AjzYee_NJ^i2cw zO@sB!!u8B!^sN&0t&{Yvll5(q4XhFkY*RQL%D6o0MI9^59YU?00&Sc_Y+QovTtn^M z!!4X5Ox#NyJt7@Fqnx~=oV{aRedC;b6P^7Mo&D3?{1V)Q(|n=}f)Yx?Qp;kpDr2&$ z5)0~*3+s6U+XXz@groWe0wxGX&Js_YES9uDI%m03*;?DlDMTc*wLm^N?Hf@O0TZz`kL{{Q>;9~fn$fNmk+cJTTp1_nlZ zPZ!4!jo{GJk>QMt5)BW}^Gux3;-Yyw!pYT;LsZx0WJ*eYs8&k+o6T`Ju$#Y*O7@eINxq)eu>a+73k7rt>od0+< zx*^XyopsMg8;K7rn=j=$T`3;7x>or5U#G22g7{270=Cm|sGjo^p zRf%O6Uz(elf3f0iTiI)&u){Mu?*3ix^!1xx?!8;O`C1EeuHlaPCu8s4xp(*e-Fq=l wjeZ|=U7%>xe*ERF!s@+o-}_F#EIctGJ|U}i^QGGdzk}k<)78&qol`;+0M~U!mjD0& literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/StopOver.png b/Icons/Legacy/VideoPlayer/StopOver.png new file mode 100644 index 0000000000000000000000000000000000000000..5eab80f098be8618f4ae8a6ce672838af92eb12d GIT binary patch literal 1215 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQaEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq|JJz$e6&Pe4paNJvmn zOi)NfP)Le{OOun=Tu8xQMZ=6=DpFL{SxntcNX0`|(^W_#NI*MWNGDW8GeAryNJKwW zST{!0Fig}SPF_1r$RI(;FiFTHThu&9-ZDqbrdY(LO3toI(ZEO9$WPfcRNp>EK`Tu` zJ44AlQQV=%(lOM+AStG8+JZ!dl_!5oGRoeNh4a(M-)~+!w+8mPB;FiAJJ7pxLF^stR=6>JB`;#x< zpMLHByc_qM4?XNS{b2E}`x_4&J#zBgsY};RUA}(##{CobzFfKa;Lg2=cOE>s`{?ES z_a8re{Pf}LpI?9e|NHkJ7>}cX79o&z%ruaJfzi&>#W6%9IN8A5+}zmIks;W)xR^~j zxp~PI5f%?$BZD*plZgV!=YwE=TiC` V-4^-Cvn~}BL!PdFF6*2UngES=Uqt`_ literal 0 HcmV?d00001 diff --git a/Icons/Legacy/VideoPlayer/VolumeBar.png b/Icons/Legacy/VideoPlayer/VolumeBar.png new file mode 100644 index 0000000000000000000000000000000000000000..d372a39e93b6a84bf8e211f2243d9eb938557e92 GIT binary patch literal 934 zcmeAS@N?(olHy`uVBq!ia0y~yV6+3WSvZ)1q(Z^sS`a7Q(btiIVPik{pF~!WaI!~` zF9SoB8UsT^3j@P1pisjL28L1t28LG&3=CE?7#PG0=IjczVPIfp2=EDUm621Fl~dw( zJS*XPD57FUQstKH{&#uP{@3kz+j8_jQ2Qtt4S``C0=aYZegeIx>gnPbV&R{hkRrh< x!XU@k(HDdq( literal 0 HcmV?d00001 From 7c891e61b3adfbfde12abf7ae43f4d39faef8089 Mon Sep 17 00:00:00 2001 From: niksedk Date: Mon, 10 Jul 2023 18:15:34 +0200 Subject: [PATCH 91/96] Allow extra parameters to Whisper --- .../AudioToText/WhisperAdvanced.Designer.cs | 112 ++++++++++++++++ src/ui/Forms/AudioToText/WhisperAdvanced.cs | 41 ++++++ src/ui/Forms/AudioToText/WhisperAdvanced.resx | 120 ++++++++++++++++++ .../WhisperAudioToText.Designer.cs | 73 ++++++----- .../Forms/AudioToText/WhisperAudioToText.cs | 49 ++----- ...hisperAudioToTextSelectedLines.Designer.cs | 31 ++++- .../WhisperAudioToTextSelectedLines.cs | 15 ++- src/ui/SubtitleEdit.csproj | 9 ++ 8 files changed, 374 insertions(+), 76 deletions(-) create mode 100644 src/ui/Forms/AudioToText/WhisperAdvanced.Designer.cs create mode 100644 src/ui/Forms/AudioToText/WhisperAdvanced.cs create mode 100644 src/ui/Forms/AudioToText/WhisperAdvanced.resx diff --git a/src/ui/Forms/AudioToText/WhisperAdvanced.Designer.cs b/src/ui/Forms/AudioToText/WhisperAdvanced.Designer.cs new file mode 100644 index 000000000..540c7ec4d --- /dev/null +++ b/src/ui/Forms/AudioToText/WhisperAdvanced.Designer.cs @@ -0,0 +1,112 @@ +namespace Nikse.SubtitleEdit.Forms.AudioToText +{ + partial class WhisperAdvanced + { + /// + /// 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.labelMeasureFont = new System.Windows.Forms.Label(); + this.comboBoxWhisperExtra = new System.Windows.Forms.ComboBox(); + this.buttonCancel = new System.Windows.Forms.Button(); + this.buttonOK = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // labelMeasureFont + // + this.labelMeasureFont.AutoSize = true; + this.labelMeasureFont.Location = new System.Drawing.Point(12, 22); + this.labelMeasureFont.Name = "labelMeasureFont"; + this.labelMeasureFont.Size = new System.Drawing.Size(202, 13); + this.labelMeasureFont.TabIndex = 217; + this.labelMeasureFont.Text = "Extra pameters for whisper command line:"; + // + // comboBoxWhisperExtra + // + this.comboBoxWhisperExtra.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.comboBoxWhisperExtra.DropDownWidth = 240; + this.comboBoxWhisperExtra.FormattingEnabled = true; + this.comboBoxWhisperExtra.Location = new System.Drawing.Point(15, 38); + this.comboBoxWhisperExtra.Name = "comboBoxWhisperExtra"; + this.comboBoxWhisperExtra.Size = new System.Drawing.Size(518, 21); + this.comboBoxWhisperExtra.TabIndex = 214; + // + // 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(458, 107); + this.buttonCancel.Name = "buttonCancel"; + this.buttonCancel.Size = new System.Drawing.Size(75, 23); + this.buttonCancel.TabIndex = 216; + 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(377, 107); + this.buttonOK.Name = "buttonOK"; + this.buttonOK.Size = new System.Drawing.Size(75, 23); + this.buttonOK.TabIndex = 215; + this.buttonOK.Text = "&OK"; + this.buttonOK.UseVisualStyleBackColor = true; + this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click); + // + // WhisperAdvanced + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(545, 142); + this.Controls.Add(this.labelMeasureFont); + this.Controls.Add(this.comboBoxWhisperExtra); + this.Controls.Add(this.buttonCancel); + this.Controls.Add(this.buttonOK); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.KeyPreview = true; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "WhisperAdvanced"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "WhisperAdvanced"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label labelMeasureFont; + private System.Windows.Forms.ComboBox comboBoxWhisperExtra; + private System.Windows.Forms.Button buttonCancel; + private System.Windows.Forms.Button buttonOK; + } +} \ No newline at end of file diff --git a/src/ui/Forms/AudioToText/WhisperAdvanced.cs b/src/ui/Forms/AudioToText/WhisperAdvanced.cs new file mode 100644 index 000000000..cb5c862d4 --- /dev/null +++ b/src/ui/Forms/AudioToText/WhisperAdvanced.cs @@ -0,0 +1,41 @@ +using Nikse.SubtitleEdit.Core.Common; +using Nikse.SubtitleEdit.Logic; +using System; +using System.Windows.Forms; + +namespace Nikse.SubtitleEdit.Forms.AudioToText +{ + public partial class WhisperAdvanced : Form + { + public WhisperAdvanced(string whisperEngine) + { + UiUtil.PreInitialize(this); + InitializeComponent(); + UiUtil.FixFonts(this); + + comboBoxWhisperExtra.Items.Clear(); + comboBoxWhisperExtra.Items.Add("--temperature "); + comboBoxWhisperExtra.Items.Add("--best_of "); + comboBoxWhisperExtra.Items.Add("--beam_size "); + comboBoxWhisperExtra.Items.Add("--patience "); + comboBoxWhisperExtra.Items.Add("--condition_on_previous_text False"); + comboBoxWhisperExtra.Items.Add("--fp16 False"); + comboBoxWhisperExtra.Items.Add("--temperature_increment_on_fallback "); + + buttonOK.Text = LanguageSettings.Current.General.Ok; + buttonCancel.Text = LanguageSettings.Current.General.Cancel; + comboBoxWhisperExtra.Text = Configuration.Settings.Tools.WhisperExtraSettings; + } + + private void buttonOK_Click(object sender, EventArgs e) + { + Configuration.Settings.Tools.WhisperExtraSettings = comboBoxWhisperExtra.Text; + DialogResult = DialogResult.OK; + } + + private void buttonCancel_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.Cancel; + } + } +} diff --git a/src/ui/Forms/AudioToText/WhisperAdvanced.resx b/src/ui/Forms/AudioToText/WhisperAdvanced.resx new file mode 100644 index 000000000..1af7de150 --- /dev/null +++ b/src/ui/Forms/AudioToText/WhisperAdvanced.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/ui/Forms/AudioToText/WhisperAudioToText.Designer.cs b/src/ui/Forms/AudioToText/WhisperAudioToText.Designer.cs index dd963f7d2..ff50fe66c 100644 --- a/src/ui/Forms/AudioToText/WhisperAudioToText.Designer.cs +++ b/src/ui/Forms/AudioToText/WhisperAudioToText.Designer.cs @@ -57,15 +57,15 @@ this.checkBoxTranslateToEnglish = new System.Windows.Forms.CheckBox(); this.labelElapsed = new System.Windows.Forms.Label(); this.contextMenuStripWhisperAdvanced = new System.Windows.Forms.ContextMenuStrip(this.components); + this.runOnlyPostProcessingToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparatorRunOnlyPostprocessing = new System.Windows.Forms.ToolStripSeparator(); this.setCPPConstmeModelsFolderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.removeTemporaryFilesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.checkBoxAutoAdjustTimings = new System.Windows.Forms.CheckBox(); - this.labelCharsPerSub = new System.Windows.Forms.Label(); - this.comboBoxCharsPerSub = new System.Windows.Forms.ComboBox(); this.comboBoxWhisperEngine = new System.Windows.Forms.ComboBox(); this.labelEngine = new System.Windows.Forms.Label(); - this.runOnlyPostProcessingToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparatorRunOnlyPostprocessing = new System.Windows.Forms.ToolStripSeparator(); + this.buttonAdvanced = new System.Windows.Forms.Button(); + this.labelAdvanced = new System.Windows.Forms.Label(); this.groupBoxModels.SuspendLayout(); this.groupBoxInputFiles.SuspendLayout(); this.contextMenuStripWhisperAdvanced.SuspendLayout(); @@ -374,9 +374,21 @@ this.setCPPConstmeModelsFolderToolStripMenuItem, this.removeTemporaryFilesToolStripMenuItem}); this.contextMenuStripWhisperAdvanced.Name = "contextMenuStripWhisperAdvanced"; - this.contextMenuStripWhisperAdvanced.Size = new System.Drawing.Size(259, 98); + this.contextMenuStripWhisperAdvanced.Size = new System.Drawing.Size(259, 76); this.contextMenuStripWhisperAdvanced.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStripWhisperAdvanced_Opening); // + // runOnlyPostProcessingToolStripMenuItem + // + this.runOnlyPostProcessingToolStripMenuItem.Name = "runOnlyPostProcessingToolStripMenuItem"; + this.runOnlyPostProcessingToolStripMenuItem.Size = new System.Drawing.Size(258, 22); + this.runOnlyPostProcessingToolStripMenuItem.Text = "Run only post processing"; + this.runOnlyPostProcessingToolStripMenuItem.Click += new System.EventHandler(this.runOnlyPostProcessingToolStripMenuItem_Click); + // + // toolStripSeparatorRunOnlyPostprocessing + // + this.toolStripSeparatorRunOnlyPostprocessing.Name = "toolStripSeparatorRunOnlyPostprocessing"; + this.toolStripSeparatorRunOnlyPostprocessing.Size = new System.Drawing.Size(255, 6); + // // setCPPConstmeModelsFolderToolStripMenuItem // this.setCPPConstmeModelsFolderToolStripMenuItem.Name = "setCPPConstmeModelsFolderToolStripMenuItem"; @@ -401,24 +413,6 @@ this.checkBoxAutoAdjustTimings.Text = "Auto adjust timings"; this.checkBoxAutoAdjustTimings.UseVisualStyleBackColor = true; // - // labelCharsPerSub - // - this.labelCharsPerSub.AutoSize = true; - this.labelCharsPerSub.Location = new System.Drawing.Point(522, 150); - this.labelCharsPerSub.Name = "labelCharsPerSub"; - this.labelCharsPerSub.Size = new System.Drawing.Size(94, 13); - this.labelCharsPerSub.TabIndex = 24; - this.labelCharsPerSub.Text = "Max chars/subtitle"; - // - // comboBoxCharsPerSub - // - this.comboBoxCharsPerSub.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.comboBoxCharsPerSub.FormattingEnabled = true; - this.comboBoxCharsPerSub.Location = new System.Drawing.Point(618, 147); - this.comboBoxCharsPerSub.Name = "comboBoxCharsPerSub"; - this.comboBoxCharsPerSub.Size = new System.Drawing.Size(79, 21); - this.comboBoxCharsPerSub.TabIndex = 25; - // // comboBoxWhisperEngine // this.comboBoxWhisperEngine.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); @@ -440,27 +434,36 @@ this.labelEngine.TabIndex = 27; this.labelEngine.Text = "Engine"; // - // runOnlyPostProcessingToolStripMenuItem + // buttonAdvanced // - this.runOnlyPostProcessingToolStripMenuItem.Name = "runOnlyPostProcessingToolStripMenuItem"; - this.runOnlyPostProcessingToolStripMenuItem.Size = new System.Drawing.Size(258, 22); - this.runOnlyPostProcessingToolStripMenuItem.Text = "Run only post processing"; - this.runOnlyPostProcessingToolStripMenuItem.Click += new System.EventHandler(this.runOnlyPostProcessingToolStripMenuItem_Click); + this.buttonAdvanced.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonAdvanced.Location = new System.Drawing.Point(541, 147); + this.buttonAdvanced.Name = "buttonAdvanced"; + this.buttonAdvanced.Size = new System.Drawing.Size(156, 23); + this.buttonAdvanced.TabIndex = 28; + this.buttonAdvanced.Text = "Advanced"; + this.buttonAdvanced.UseVisualStyleBackColor = true; + this.buttonAdvanced.Click += new System.EventHandler(this.buttonAdvanced_Click); // - // toolStripSeparatorRunOnlyPostprocessing + // labelAdvanced // - this.toolStripSeparatorRunOnlyPostprocessing.Name = "toolStripSeparatorRunOnlyPostprocessing"; - this.toolStripSeparatorRunOnlyPostprocessing.Size = new System.Drawing.Size(255, 6); + this.labelAdvanced.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.labelAdvanced.AutoSize = true; + this.labelAdvanced.Location = new System.Drawing.Point(541, 177); + this.labelAdvanced.Name = "labelAdvanced"; + this.labelAdvanced.Size = new System.Drawing.Size(65, 13); + this.labelAdvanced.TabIndex = 29; + this.labelAdvanced.Text = "Advanced..."; // // WhisperAudioToText // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(709, 494); + this.Controls.Add(this.labelAdvanced); + this.Controls.Add(this.buttonAdvanced); this.Controls.Add(this.labelEngine); this.Controls.Add(this.comboBoxWhisperEngine); - this.Controls.Add(this.comboBoxCharsPerSub); - this.Controls.Add(this.labelCharsPerSub); this.Controls.Add(this.labelElapsed); this.Controls.Add(this.checkBoxAutoAdjustTimings); this.Controls.Add(this.checkBoxTranslateToEnglish); @@ -530,12 +533,12 @@ private System.Windows.Forms.ContextMenuStrip contextMenuStripWhisperAdvanced; private System.Windows.Forms.ToolStripMenuItem removeTemporaryFilesToolStripMenuItem; private System.Windows.Forms.CheckBox checkBoxAutoAdjustTimings; - private System.Windows.Forms.Label labelCharsPerSub; - private System.Windows.Forms.ComboBox comboBoxCharsPerSub; private System.Windows.Forms.ComboBox comboBoxWhisperEngine; private System.Windows.Forms.Label labelEngine; private System.Windows.Forms.ToolStripMenuItem setCPPConstmeModelsFolderToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem runOnlyPostProcessingToolStripMenuItem; private System.Windows.Forms.ToolStripSeparator toolStripSeparatorRunOnlyPostprocessing; + private System.Windows.Forms.Button buttonAdvanced; + private System.Windows.Forms.Label labelAdvanced; } } \ No newline at end of file diff --git a/src/ui/Forms/AudioToText/WhisperAudioToText.cs b/src/ui/Forms/AudioToText/WhisperAudioToText.cs index 07397d6e0..68fbe1235 100644 --- a/src/ui/Forms/AudioToText/WhisperAudioToText.cs +++ b/src/ui/Forms/AudioToText/WhisperAudioToText.cs @@ -73,13 +73,14 @@ namespace Nikse.SubtitleEdit.Forms.AudioToText buttonBatchMode.Text = LanguageSettings.Current.AudioToText.BatchMode; groupBoxInputFiles.Text = LanguageSettings.Current.BatchConvert.Input; linkLabeWhisperWebSite.Text = LanguageSettings.Current.AudioToText.WhisperWebsite; - labelCharsPerSub.Text = LanguageSettings.Current.AudioToText.MaxCharsPerSubtitle; buttonAddFile.Text = LanguageSettings.Current.DvdSubRip.Add; buttonRemoveFile.Text = LanguageSettings.Current.DvdSubRip.Remove; buttonClear.Text = LanguageSettings.Current.DvdSubRip.Clear; runOnlyPostProcessingToolStripMenuItem.Text = LanguageSettings.Current.AudioToText.OnlyRunPostProcessing; setCPPConstmeModelsFolderToolStripMenuItem.Text = LanguageSettings.Current.AudioToText.SetCppConstMeFolder; removeTemporaryFilesToolStripMenuItem.Text = LanguageSettings.Current.AudioToText.RemoveTemporaryFiles; + buttonAdvanced.Text = LanguageSettings.Current.General.Advanced; + labelAdvanced.Text = Configuration.Settings.Tools.WhisperExtraSettings; columnHeaderFileName.Text = LanguageSettings.Current.JoinSubtitles.FileName; @@ -118,14 +119,6 @@ namespace Nikse.SubtitleEdit.Forms.AudioToText labelEngine.Text = LanguageSettings.Current.AudioToText.Engine; labelEngine.Left = comboBoxWhisperEngine.Left - labelEngine.Width - 5; - comboBoxCharsPerSub.BeginUpdate(); - comboBoxCharsPerSub.Items.Add(LanguageSettings.Current.General.None); - for (var i = 1; i < 99; i++) - { - comboBoxCharsPerSub.Items.Add(i.ToString(CultureInfo.InvariantCulture)); - } - comboBoxCharsPerSub.EndUpdate(); - Init(); var maxChars = (int)Math.Round(Configuration.Settings.General.SubtitleLineMaximumLength * 1.8, MidpointRounding.AwayFromZero); @@ -139,15 +132,6 @@ namespace Nikse.SubtitleEdit.Forms.AudioToText maxChars = Configuration.Settings.Tools.AudioToTextLineMaxCharsCn; } - if (Configuration.Settings.Tools.WhisperUseLineMaxChars) - { - comboBoxCharsPerSub.Text = maxChars.ToString(CultureInfo.InvariantCulture); - } - else - { - comboBoxCharsPerSub.SelectedIndex = 0; - } - InitializeWhisperEngines(comboBoxWhisperEngine); } @@ -193,10 +177,6 @@ namespace Nikse.SubtitleEdit.Forms.AudioToText removeTemporaryFilesToolStripMenuItem.Checked = Configuration.Settings.Tools.WhisperDeleteTempFiles; ContextMenuStrip = contextMenuStripWhisperAdvanced; - - comboBoxCharsPerSub.Visible = Configuration.Settings.Tools.WhisperChoice == WhisperChoice.Cpp; - labelCharsPerSub.Left = comboBoxCharsPerSub.Left - labelCharsPerSub.Width - 9; - labelCharsPerSub.Visible = Configuration.Settings.Tools.WhisperChoice == WhisperChoice.Cpp; } public static void FillModels(ComboBox comboBoxModels, string lastDownloadedModel) @@ -571,7 +551,7 @@ namespace Nikse.SubtitleEdit.Forms.AudioToText labelProgress.Refresh(); Application.DoEvents(); _resultList = new List(); - var process = GetWhisperProcess(waveFileName, model.Name, _languageCode, checkBoxTranslateToEnglish.Checked, comboBoxCharsPerSub.SelectedIndex, OutputHandler); + var process = GetWhisperProcess(waveFileName, model.Name, _languageCode, checkBoxTranslateToEnglish.Checked, OutputHandler); var sw = Stopwatch.StartNew(); _outputText.Add($"Calling whisper ({Configuration.Settings.Tools.WhisperChoice}) with : {process.StartInfo.FileName} {process.StartInfo.Arguments}{Environment.NewLine}"); _startTicks = DateTime.UtcNow.Ticks; @@ -936,7 +916,7 @@ namespace Nikse.SubtitleEdit.Forms.AudioToText } } - public static Process GetWhisperProcess(string waveFileName, string model, string language, bool translate, int maxCharsPerSub, DataReceivedEventHandler dataReceivedHandler = null) + public static Process GetWhisperProcess(string waveFileName, string model, string language, bool translate, DataReceivedEventHandler dataReceivedHandler = null) { // whisper --model tiny.en --language English --fp16 False a.wav @@ -953,11 +933,6 @@ namespace Nikse.SubtitleEdit.Forms.AudioToText { translateToEnglish += "--print-progress "; } - - if (!Configuration.Settings.Tools.WhisperExtraSettings.Contains("--max-len") && maxCharsPerSub > 0) - { - translateToEnglish += $"--max-len {maxCharsPerSub} "; - } } var outputSrt = string.Empty; @@ -966,12 +941,6 @@ namespace Nikse.SubtitleEdit.Forms.AudioToText Configuration.Settings.Tools.WhisperChoice == WhisperChoice.ConstMe) { outputSrt = "--output-srt "; - - if (Configuration.Settings.Tools.WhisperExtraSettings != null && - Configuration.Settings.Tools.WhisperExtraSettings.Contains("--fp16")) - { - Configuration.Settings.Tools.WhisperExtraSettings = string.Empty; - } } else if (Configuration.Settings.Tools.WhisperChoice == WhisperChoice.StableTs) { @@ -1052,7 +1021,6 @@ namespace Nikse.SubtitleEdit.Forms.AudioToText Configuration.Settings.Tools.VoskPostProcessing = checkBoxUsePostProcessing.Checked; Configuration.Settings.Tools.WhisperAutoAdjustTimings = checkBoxAutoAdjustTimings.Checked; - Configuration.Settings.Tools.WhisperUseLineMaxChars = comboBoxCharsPerSub.SelectedIndex > 0; DeleteTemporaryFiles(_filesToDelete); } @@ -1630,5 +1598,14 @@ namespace Nikse.SubtitleEdit.Forms.AudioToText comboBoxModels.Enabled = true; } } + + private void buttonAdvanced_Click(object sender, EventArgs e) + { + using (var form = new WhisperAdvanced(comboBoxWhisperEngine.Text)) + { + var res = form.ShowDialog(this); + labelAdvanced.Text = Configuration.Settings.Tools.WhisperExtraSettings; + } + } } } diff --git a/src/ui/Forms/AudioToText/WhisperAudioToTextSelectedLines.Designer.cs b/src/ui/Forms/AudioToText/WhisperAudioToTextSelectedLines.Designer.cs index 2b0071f04..4b805d3c6 100644 --- a/src/ui/Forms/AudioToText/WhisperAudioToTextSelectedLines.Designer.cs +++ b/src/ui/Forms/AudioToText/WhisperAudioToTextSelectedLines.Designer.cs @@ -55,6 +55,8 @@ this.removeTemporaryFilesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.labelEngine = new System.Windows.Forms.Label(); this.comboBoxWhisperEngine = new System.Windows.Forms.ComboBox(); + this.labelAdvanced = new System.Windows.Forms.Label(); + this.buttonAdvanced = new System.Windows.Forms.Button(); this.groupBoxModels.SuspendLayout(); this.groupBoxInputFiles.SuspendLayout(); this.contextMenuStripWhisperAdvanced.SuspendLayout(); @@ -115,7 +117,7 @@ this.textBoxLog.Name = "textBoxLog"; this.textBoxLog.ReadOnly = true; this.textBoxLog.ScrollBars = System.Windows.Forms.ScrollBars.Both; - this.textBoxLog.Size = new System.Drawing.Size(168, 258); + this.textBoxLog.Size = new System.Drawing.Size(77, 258); this.textBoxLog.TabIndex = 0; // // labelInfo @@ -290,7 +292,7 @@ this.setCPPConstmeModelsFolderToolStripMenuItem, this.removeTemporaryFilesToolStripMenuItem}); this.contextMenuStripWhisperAdvanced.Name = "contextMenuStripWhisperAdvanced"; - this.contextMenuStripWhisperAdvanced.Size = new System.Drawing.Size(259, 70); + this.contextMenuStripWhisperAdvanced.Size = new System.Drawing.Size(259, 48); this.contextMenuStripWhisperAdvanced.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStripWhisperAdvanced_Opening); // // setCPPConstmeModelsFolderToolStripMenuItem @@ -328,11 +330,34 @@ this.comboBoxWhisperEngine.TabIndex = 28; this.comboBoxWhisperEngine.SelectedIndexChanged += new System.EventHandler(this.comboBoxWhisperEngine_SelectedIndexChanged); // + // labelAdvanced + // + this.labelAdvanced.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.labelAdvanced.AutoSize = true; + this.labelAdvanced.Location = new System.Drawing.Point(535, 178); + this.labelAdvanced.Name = "labelAdvanced"; + this.labelAdvanced.Size = new System.Drawing.Size(65, 13); + this.labelAdvanced.TabIndex = 31; + this.labelAdvanced.Text = "Advanced..."; + // + // buttonAdvanced + // + this.buttonAdvanced.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonAdvanced.Location = new System.Drawing.Point(535, 148); + this.buttonAdvanced.Name = "buttonAdvanced"; + this.buttonAdvanced.Size = new System.Drawing.Size(156, 23); + this.buttonAdvanced.TabIndex = 30; + this.buttonAdvanced.Text = "Advanced"; + this.buttonAdvanced.UseVisualStyleBackColor = true; + this.buttonAdvanced.Click += new System.EventHandler(this.buttonAdvanced_Click); + // // WhisperAudioToTextSelectedLines // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(709, 464); + this.Controls.Add(this.labelAdvanced); + this.Controls.Add(this.buttonAdvanced); this.Controls.Add(this.labelEngine); this.Controls.Add(this.comboBoxWhisperEngine); this.Controls.Add(this.checkBoxTranslateToEnglish); @@ -396,5 +421,7 @@ private System.Windows.Forms.Label labelEngine; private System.Windows.Forms.ComboBox comboBoxWhisperEngine; private System.Windows.Forms.ToolStripMenuItem setCPPConstmeModelsFolderToolStripMenuItem; + private System.Windows.Forms.Label labelAdvanced; + private System.Windows.Forms.Button buttonAdvanced; } } \ No newline at end of file diff --git a/src/ui/Forms/AudioToText/WhisperAudioToTextSelectedLines.cs b/src/ui/Forms/AudioToText/WhisperAudioToTextSelectedLines.cs index c1f28a5b5..c68e4527d 100644 --- a/src/ui/Forms/AudioToText/WhisperAudioToTextSelectedLines.cs +++ b/src/ui/Forms/AudioToText/WhisperAudioToTextSelectedLines.cs @@ -48,9 +48,9 @@ namespace Nikse.SubtitleEdit.Forms.AudioToText buttonCancel.Text = LanguageSettings.Current.General.Cancel; groupBoxInputFiles.Text = LanguageSettings.Current.BatchConvert.Input; linkLabeWhisperWebSite.Text = LanguageSettings.Current.AudioToText.WhisperWebsite; - + buttonAdvanced.Text = LanguageSettings.Current.General.Advanced; + labelAdvanced.Text = Configuration.Settings.Tools.WhisperExtraSettings; columnHeaderFileName.Text = LanguageSettings.Current.JoinSubtitles.FileName; - checkBoxUsePostProcessing.Checked = Configuration.Settings.Tools.VoskPostProcessing; Init(); @@ -177,7 +177,7 @@ namespace Nikse.SubtitleEdit.Forms.AudioToText labelProgress.Refresh(); Application.DoEvents(); _resultList = new List(); - var process = WhisperAudioToText.GetWhisperProcess(waveFileName, model.Name, _languageCode, checkBoxTranslateToEnglish.Checked, 0, OutputHandler); + var process = WhisperAudioToText.GetWhisperProcess(waveFileName, model.Name, _languageCode, checkBoxTranslateToEnglish.Checked, OutputHandler); var sw = Stopwatch.StartNew(); _outputText.Add($"Calling whisper ({Configuration.Settings.Tools.WhisperChoice}) with : whisper {process.StartInfo.Arguments}{Environment.NewLine}"); buttonCancel.Visible = true; @@ -642,5 +642,14 @@ namespace Nikse.SubtitleEdit.Forms.AudioToText setCPPConstmeModelsFolderToolStripMenuItem.Text = "Set CPP/Const-me models folder..."; } } + + private void buttonAdvanced_Click(object sender, EventArgs e) + { + using (var form = new WhisperAdvanced(comboBoxWhisperEngine.Text)) + { + var res = form.ShowDialog(this); + labelAdvanced.Text = Configuration.Settings.Tools.WhisperExtraSettings; + } + } } } diff --git a/src/ui/SubtitleEdit.csproj b/src/ui/SubtitleEdit.csproj index 1e926306a..a88068126 100644 --- a/src/ui/SubtitleEdit.csproj +++ b/src/ui/SubtitleEdit.csproj @@ -220,6 +220,12 @@ AudioClipsGet.cs + + Form + + + WhisperAdvanced.cs + Form @@ -1595,6 +1601,9 @@ AudioClipsGet.cs + + WhisperAdvanced.cs + WhisperDownload.cs From 3d6be0275e636b877ce0736f73c6d224006eb920 Mon Sep 17 00:00:00 2001 From: niksedk Date: Mon, 10 Jul 2023 20:03:54 +0200 Subject: [PATCH 92/96] Rename a few legacy video player pngs - thx OmrSi :) --- ...FastForwardMouseDown.png => FastForwardDown.png} | Bin ...FastForwardMouseOver.png => FastForwardOver.png} | Bin .../{ReverseMouseDown.png => ReverseDown.png} | Bin .../{ReverseMouseOver.png => ReverseOver.png} | Bin 4 files changed, 0 insertions(+), 0 deletions(-) rename Icons/Legacy/VideoPlayer/{FastForwardMouseDown.png => FastForwardDown.png} (100%) rename Icons/Legacy/VideoPlayer/{FastForwardMouseOver.png => FastForwardOver.png} (100%) rename Icons/Legacy/VideoPlayer/{ReverseMouseDown.png => ReverseDown.png} (100%) rename Icons/Legacy/VideoPlayer/{ReverseMouseOver.png => ReverseOver.png} (100%) diff --git a/Icons/Legacy/VideoPlayer/FastForwardMouseDown.png b/Icons/Legacy/VideoPlayer/FastForwardDown.png similarity index 100% rename from Icons/Legacy/VideoPlayer/FastForwardMouseDown.png rename to Icons/Legacy/VideoPlayer/FastForwardDown.png diff --git a/Icons/Legacy/VideoPlayer/FastForwardMouseOver.png b/Icons/Legacy/VideoPlayer/FastForwardOver.png similarity index 100% rename from Icons/Legacy/VideoPlayer/FastForwardMouseOver.png rename to Icons/Legacy/VideoPlayer/FastForwardOver.png diff --git a/Icons/Legacy/VideoPlayer/ReverseMouseDown.png b/Icons/Legacy/VideoPlayer/ReverseDown.png similarity index 100% rename from Icons/Legacy/VideoPlayer/ReverseMouseDown.png rename to Icons/Legacy/VideoPlayer/ReverseDown.png diff --git a/Icons/Legacy/VideoPlayer/ReverseMouseOver.png b/Icons/Legacy/VideoPlayer/ReverseOver.png similarity index 100% rename from Icons/Legacy/VideoPlayer/ReverseMouseOver.png rename to Icons/Legacy/VideoPlayer/ReverseOver.png From 7452348facddc80bda1f45ff4b46c0b707d7e794 Mon Sep 17 00:00:00 2001 From: niksedk Date: Mon, 10 Jul 2023 20:11:55 +0200 Subject: [PATCH 93/96] Move vol label one pixel up --- src/ui/Controls/VideoPlayerContainer.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ui/Controls/VideoPlayerContainer.cs b/src/ui/Controls/VideoPlayerContainer.cs index 7da55f9c1..fd3146674 100644 --- a/src/ui/Controls/VideoPlayerContainer.cs +++ b/src/ui/Controls/VideoPlayerContainer.cs @@ -1003,7 +1003,7 @@ namespace Nikse.SubtitleEdit.Controls }; _panelControls.Controls.Add(_pictureBoxFastForwardDown); - _labelVolume.Location = new Point(120, 17); + _labelVolume.Location = new Point(120, 16); _labelVolume.ForeColor = Color.WhiteSmoke; _labelVolume.BackColor = Color.FromArgb(67, 75, 93); _labelVolume.AutoSize = true; @@ -1023,7 +1023,7 @@ namespace Nikse.SubtitleEdit.Controls _labelVideoPlayerName.Font = new Font(_labelTimeCode.Font.FontFamily, 6); _panelControls.Controls.Add(_labelVideoPlayerName); - var bg = (_pictureBoxBackground.Image as Bitmap); + var bg = _pictureBoxBackground.Image as Bitmap; _labelVolume.BackColor = bg.GetPixel(_labelVolume.Left, _labelVolume.Top); _labelTimeCode.BackColor = bg.GetPixel(_labelTimeCode.Left, _labelTimeCode.Top); _labelVideoPlayerName.BackColor = bg.GetPixel(_labelVideoPlayerName.Left, _labelVideoPlayerName.Top); From 4a80adae65aea8d150b8f593aee72fdaf4097556 Mon Sep 17 00:00:00 2001 From: niksedk Date: Mon, 10 Jul 2023 20:29:09 +0200 Subject: [PATCH 94/96] Improve space for translation - thx hugok79 :) Related to #7059 --- src/ui/Forms/Main.cs | 2 +- src/ui/Forms/Options/Settings.Designer.cs | 14 +++++++------- src/ui/Forms/Options/Settings.cs | 4 ++++ 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/ui/Forms/Main.cs b/src/ui/Forms/Main.cs index 80e145e5c..3dcc489d1 100644 --- a/src/ui/Forms/Main.cs +++ b/src/ui/Forms/Main.cs @@ -20051,7 +20051,7 @@ namespace Nikse.SubtitleEdit.Forms else { numericUpDownDuration.DecimalPlaces = 3; - numericUpDownDuration.Increment = (decimal)(0.1); + numericUpDownDuration.Increment = (decimal)0.1; toolStripSeparatorFrameRate.Visible = Configuration.Settings.General.ShowFrameRate; toolStripLabelFrameRate.Visible = Configuration.Settings.General.ShowFrameRate; diff --git a/src/ui/Forms/Options/Settings.Designer.cs b/src/ui/Forms/Options/Settings.Designer.cs index 02e64d05e..781f8863a 100644 --- a/src/ui/Forms/Options/Settings.Designer.cs +++ b/src/ui/Forms/Options/Settings.Designer.cs @@ -2442,7 +2442,7 @@ // panelMpvBackColor // this.panelMpvBackColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.panelMpvBackColor.Location = new System.Drawing.Point(399, 125); + this.panelMpvBackColor.Location = new System.Drawing.Point(420, 125); this.panelMpvBackColor.Name = "panelMpvBackColor"; this.panelMpvBackColor.Size = new System.Drawing.Size(21, 20); this.panelMpvBackColor.TabIndex = 19; @@ -2452,7 +2452,7 @@ // this.buttonMpvBackColor.Location = new System.Drawing.Point(325, 124); this.buttonMpvBackColor.Name = "buttonMpvBackColor"; - this.buttonMpvBackColor.Size = new System.Drawing.Size(69, 23); + this.buttonMpvBackColor.Size = new System.Drawing.Size(89, 23); this.buttonMpvBackColor.TabIndex = 18; this.buttonMpvBackColor.Text = "Shadow"; this.buttonMpvBackColor.UseVisualStyleBackColor = true; @@ -2461,7 +2461,7 @@ // panelMpvOutlineColor // this.panelMpvOutlineColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.panelMpvOutlineColor.Location = new System.Drawing.Point(387, 96); + this.panelMpvOutlineColor.Location = new System.Drawing.Point(420, 96); this.panelMpvOutlineColor.Name = "panelMpvOutlineColor"; this.panelMpvOutlineColor.Size = new System.Drawing.Size(21, 20); this.panelMpvOutlineColor.TabIndex = 17; @@ -2471,7 +2471,7 @@ // this.buttonMpvOutlineColor.Location = new System.Drawing.Point(325, 95); this.buttonMpvOutlineColor.Name = "buttonMpvOutlineColor"; - this.buttonMpvOutlineColor.Size = new System.Drawing.Size(58, 23); + this.buttonMpvOutlineColor.Size = new System.Drawing.Size(89, 23); this.buttonMpvOutlineColor.TabIndex = 16; this.buttonMpvOutlineColor.Text = "Outline"; this.buttonMpvOutlineColor.UseVisualStyleBackColor = true; @@ -2480,7 +2480,7 @@ // panelMpvPrimaryColor // this.panelMpvPrimaryColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.panelMpvPrimaryColor.Location = new System.Drawing.Point(403, 67); + this.panelMpvPrimaryColor.Location = new System.Drawing.Point(420, 67); this.panelMpvPrimaryColor.Name = "panelMpvPrimaryColor"; this.panelMpvPrimaryColor.Size = new System.Drawing.Size(21, 20); this.panelMpvPrimaryColor.TabIndex = 15; @@ -2490,7 +2490,7 @@ // this.buttonMpvPrimaryColor.Location = new System.Drawing.Point(325, 66); this.buttonMpvPrimaryColor.Name = "buttonMpvPrimaryColor"; - this.buttonMpvPrimaryColor.Size = new System.Drawing.Size(72, 23); + this.buttonMpvPrimaryColor.Size = new System.Drawing.Size(89, 23); this.buttonMpvPrimaryColor.TabIndex = 14; this.buttonMpvPrimaryColor.Text = "&Primary"; this.buttonMpvPrimaryColor.UseVisualStyleBackColor = true; @@ -5368,9 +5368,9 @@ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(1092, 574); this.Controls.Add(this.labelUpdateFileTypeAssociationsStatus); + this.Controls.Add(this.panelVideoPlayer); this.Controls.Add(this.panelFont); this.Controls.Add(this.panelToolBar); - this.Controls.Add(this.panelVideoPlayer); this.Controls.Add(this.panelTools); this.Controls.Add(this.panelWaveform); this.Controls.Add(this.panelGeneral); diff --git a/src/ui/Forms/Options/Settings.cs b/src/ui/Forms/Options/Settings.cs index 7bd431bdd..104a18c26 100644 --- a/src/ui/Forms/Options/Settings.cs +++ b/src/ui/Forms/Options/Settings.cs @@ -1209,6 +1209,10 @@ namespace Nikse.SubtitleEdit.Forms.Options buttonUpdateFileTypeAssociations.Text = language.UpdateFileTypeAssociations; labelUpdateFileTypeAssociationsStatus.Text = string.Empty; + numericUpDownMpvOutline.Left = radioButtonMpvOutline.Right + 9; + numericUpDownMpvShadowWidth.Left = numericUpDownMpvOutline.Right + 9; + labelMpvShadow.Left = numericUpDownMpvShadowWidth.Left; + checkBoxDarkThemeEnabled_CheckedChanged(null, null); ToolbarIconThemeInit(); From ee6d07e14e63234ba16885c35f491fbb7d482234 Mon Sep 17 00:00:00 2001 From: niksedk Date: Tue, 11 Jul 2023 06:31:53 +0200 Subject: [PATCH 95/96] Improve advanced whisper hints --- .../AudioToText/WhisperAdvanced.Designer.cs | 137 +++++++++++++++++- src/ui/Forms/AudioToText/WhisperAdvanced.cs | 27 ++++ src/ui/Forms/AudioToText/WhisperAdvanced.resx | 80 ++++++++++ 3 files changed, 240 insertions(+), 4 deletions(-) diff --git a/src/ui/Forms/AudioToText/WhisperAdvanced.Designer.cs b/src/ui/Forms/AudioToText/WhisperAdvanced.Designer.cs index 540c7ec4d..f811a53fa 100644 --- a/src/ui/Forms/AudioToText/WhisperAdvanced.Designer.cs +++ b/src/ui/Forms/AudioToText/WhisperAdvanced.Designer.cs @@ -28,10 +28,23 @@ /// private void InitializeComponent() { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(WhisperAdvanced)); this.labelMeasureFont = new System.Windows.Forms.Label(); this.comboBoxWhisperExtra = new System.Windows.Forms.ComboBox(); this.buttonCancel = new System.Windows.Forms.Button(); this.buttonOK = new System.Windows.Forms.Button(); + this.labelNote = new System.Windows.Forms.Label(); + this.tabControlCommandLineHelp = new System.Windows.Forms.TabControl(); + this.TabPageCPP = new System.Windows.Forms.TabPage(); + this.textBoxCpp = new System.Windows.Forms.TextBox(); + this.tabPageConstMe = new System.Windows.Forms.TabPage(); + this.textBoxConstMe = new System.Windows.Forms.TextBox(); + this.tabPageOpenAI = new System.Windows.Forms.TabPage(); + this.textBoxOpenAI = new System.Windows.Forms.TextBox(); + this.tabControlCommandLineHelp.SuspendLayout(); + this.TabPageCPP.SuspendLayout(); + this.tabPageConstMe.SuspendLayout(); + this.tabPageOpenAI.SuspendLayout(); this.SuspendLayout(); // // labelMeasureFont @@ -51,7 +64,7 @@ this.comboBoxWhisperExtra.FormattingEnabled = true; this.comboBoxWhisperExtra.Location = new System.Drawing.Point(15, 38); this.comboBoxWhisperExtra.Name = "comboBoxWhisperExtra"; - this.comboBoxWhisperExtra.Size = new System.Drawing.Size(518, 21); + this.comboBoxWhisperExtra.Size = new System.Drawing.Size(680, 21); this.comboBoxWhisperExtra.TabIndex = 214; // // buttonCancel @@ -59,7 +72,7 @@ this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.buttonCancel.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.buttonCancel.Location = new System.Drawing.Point(458, 107); + this.buttonCancel.Location = new System.Drawing.Point(620, 472); this.buttonCancel.Name = "buttonCancel"; this.buttonCancel.Size = new System.Drawing.Size(75, 23); this.buttonCancel.TabIndex = 216; @@ -71,7 +84,7 @@ // 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(377, 107); + this.buttonOK.Location = new System.Drawing.Point(539, 472); this.buttonOK.Name = "buttonOK"; this.buttonOK.Size = new System.Drawing.Size(75, 23); this.buttonOK.TabIndex = 215; @@ -79,11 +92,112 @@ this.buttonOK.UseVisualStyleBackColor = true; this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click); // + // labelNote + // + this.labelNote.AutoSize = true; + this.labelNote.Location = new System.Drawing.Point(12, 73); + this.labelNote.Name = "labelNote"; + this.labelNote.Size = new System.Drawing.Size(390, 13); + this.labelNote.TabIndex = 218; + this.labelNote.Text = "Note: Different Whisper implementations have different command line parameters!\r\n" + + ""; + // + // tabControlCommandLineHelp + // + this.tabControlCommandLineHelp.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.tabControlCommandLineHelp.Controls.Add(this.TabPageCPP); + this.tabControlCommandLineHelp.Controls.Add(this.tabPageConstMe); + this.tabControlCommandLineHelp.Controls.Add(this.tabPageOpenAI); + this.tabControlCommandLineHelp.Location = new System.Drawing.Point(15, 108); + this.tabControlCommandLineHelp.Name = "tabControlCommandLineHelp"; + this.tabControlCommandLineHelp.SelectedIndex = 0; + this.tabControlCommandLineHelp.Size = new System.Drawing.Size(680, 358); + this.tabControlCommandLineHelp.TabIndex = 219; + // + // TabPageCPP + // + this.TabPageCPP.Controls.Add(this.textBoxCpp); + this.TabPageCPP.Location = new System.Drawing.Point(4, 22); + this.TabPageCPP.Name = "TabPageCPP"; + this.TabPageCPP.Padding = new System.Windows.Forms.Padding(3); + this.TabPageCPP.Size = new System.Drawing.Size(672, 332); + this.TabPageCPP.TabIndex = 0; + this.TabPageCPP.Text = "CPP"; + this.TabPageCPP.UseVisualStyleBackColor = true; + // + // textBoxCpp + // + this.textBoxCpp.Dock = System.Windows.Forms.DockStyle.Fill; + this.textBoxCpp.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.textBoxCpp.Location = new System.Drawing.Point(3, 3); + this.textBoxCpp.Multiline = true; + this.textBoxCpp.Name = "textBoxCpp"; + this.textBoxCpp.ReadOnly = true; + this.textBoxCpp.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; + this.textBoxCpp.Size = new System.Drawing.Size(666, 326); + this.textBoxCpp.TabIndex = 0; + this.textBoxCpp.Text = resources.GetString("textBoxCpp.Text"); + this.textBoxCpp.WordWrap = false; + // + // tabPageConstMe + // + this.tabPageConstMe.Controls.Add(this.textBoxConstMe); + this.tabPageConstMe.Location = new System.Drawing.Point(4, 22); + this.tabPageConstMe.Name = "tabPageConstMe"; + this.tabPageConstMe.Padding = new System.Windows.Forms.Padding(3); + this.tabPageConstMe.Size = new System.Drawing.Size(636, 290); + this.tabPageConstMe.TabIndex = 1; + this.tabPageConstMe.Text = "Const-me"; + this.tabPageConstMe.UseVisualStyleBackColor = true; + // + // textBoxConstMe + // + this.textBoxConstMe.Dock = System.Windows.Forms.DockStyle.Fill; + this.textBoxConstMe.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.textBoxConstMe.Location = new System.Drawing.Point(3, 3); + this.textBoxConstMe.Multiline = true; + this.textBoxConstMe.Name = "textBoxConstMe"; + this.textBoxConstMe.ReadOnly = true; + this.textBoxConstMe.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; + this.textBoxConstMe.Size = new System.Drawing.Size(630, 284); + this.textBoxConstMe.TabIndex = 1; + this.textBoxConstMe.Text = resources.GetString("textBoxConstMe.Text"); + this.textBoxConstMe.WordWrap = false; + // + // tabPageOpenAI + // + this.tabPageOpenAI.Controls.Add(this.textBoxOpenAI); + this.tabPageOpenAI.Location = new System.Drawing.Point(4, 22); + this.tabPageOpenAI.Name = "tabPageOpenAI"; + this.tabPageOpenAI.Padding = new System.Windows.Forms.Padding(3); + this.tabPageOpenAI.Size = new System.Drawing.Size(636, 290); + this.tabPageOpenAI.TabIndex = 2; + this.tabPageOpenAI.Text = "OpenAI"; + this.tabPageOpenAI.UseVisualStyleBackColor = true; + // + // textBoxOpenAI + // + this.textBoxOpenAI.Dock = System.Windows.Forms.DockStyle.Fill; + this.textBoxOpenAI.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.textBoxOpenAI.Location = new System.Drawing.Point(3, 3); + this.textBoxOpenAI.Multiline = true; + this.textBoxOpenAI.Name = "textBoxOpenAI"; + this.textBoxOpenAI.ReadOnly = true; + this.textBoxOpenAI.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; + this.textBoxOpenAI.Size = new System.Drawing.Size(630, 284); + this.textBoxOpenAI.TabIndex = 2; + this.textBoxOpenAI.Text = resources.GetString("textBoxOpenAI.Text"); + this.textBoxOpenAI.WordWrap = false; + // // WhisperAdvanced // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(545, 142); + this.ClientSize = new System.Drawing.Size(707, 507); + this.Controls.Add(this.tabControlCommandLineHelp); + this.Controls.Add(this.labelNote); this.Controls.Add(this.labelMeasureFont); this.Controls.Add(this.comboBoxWhisperExtra); this.Controls.Add(this.buttonCancel); @@ -97,6 +211,13 @@ this.ShowInTaskbar = false; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.Text = "WhisperAdvanced"; + this.tabControlCommandLineHelp.ResumeLayout(false); + this.TabPageCPP.ResumeLayout(false); + this.TabPageCPP.PerformLayout(); + this.tabPageConstMe.ResumeLayout(false); + this.tabPageConstMe.PerformLayout(); + this.tabPageOpenAI.ResumeLayout(false); + this.tabPageOpenAI.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); @@ -108,5 +229,13 @@ private System.Windows.Forms.ComboBox comboBoxWhisperExtra; private System.Windows.Forms.Button buttonCancel; private System.Windows.Forms.Button buttonOK; + private System.Windows.Forms.Label labelNote; + private System.Windows.Forms.TabControl tabControlCommandLineHelp; + private System.Windows.Forms.TabPage TabPageCPP; + private System.Windows.Forms.TextBox textBoxCpp; + private System.Windows.Forms.TabPage tabPageConstMe; + private System.Windows.Forms.TabPage tabPageOpenAI; + private System.Windows.Forms.TextBox textBoxConstMe; + private System.Windows.Forms.TextBox textBoxOpenAI; } } \ No newline at end of file diff --git a/src/ui/Forms/AudioToText/WhisperAdvanced.cs b/src/ui/Forms/AudioToText/WhisperAdvanced.cs index cb5c862d4..f0048234b 100644 --- a/src/ui/Forms/AudioToText/WhisperAdvanced.cs +++ b/src/ui/Forms/AudioToText/WhisperAdvanced.cs @@ -1,7 +1,9 @@ using Nikse.SubtitleEdit.Core.Common; using Nikse.SubtitleEdit.Logic; using System; +using System.Drawing; using System.Windows.Forms; +using Nikse.SubtitleEdit.Core.AudioToText; namespace Nikse.SubtitleEdit.Forms.AudioToText { @@ -25,6 +27,31 @@ namespace Nikse.SubtitleEdit.Forms.AudioToText buttonOK.Text = LanguageSettings.Current.General.Ok; buttonCancel.Text = LanguageSettings.Current.General.Cancel; comboBoxWhisperExtra.Text = Configuration.Settings.Tools.WhisperExtraSettings; + + if (whisperEngine == WhisperChoice.Cpp) + { + tabControlCommandLineHelp.SelectedTab = TabPageCPP; + } + else if (whisperEngine == WhisperChoice.ConstMe) + { + tabControlCommandLineHelp.SelectedTab = tabPageConstMe; + } + else + { + tabControlCommandLineHelp.SelectedTab = tabPageOpenAI; + } + + try + { + textBoxCpp.Font = new Font("Consolas", textBoxCpp.Font.Size); + textBoxConstMe.Font = new Font("Consolas", textBoxCpp.Font.Size); + textBoxOpenAI.Font = new Font("Consolas", textBoxCpp.Font.Size); + } + catch + { + // ignore + } + } private void buttonOK_Click(object sender, EventArgs e) diff --git a/src/ui/Forms/AudioToText/WhisperAdvanced.resx b/src/ui/Forms/AudioToText/WhisperAdvanced.resx index 1af7de150..48052b87e 100644 --- a/src/ui/Forms/AudioToText/WhisperAdvanced.resx +++ b/src/ui/Forms/AudioToText/WhisperAdvanced.resx @@ -117,4 +117,84 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + CPP: + -t N, --threads N [4 ] number of threads to use during computation + -p N, --processors N [1 ] number of processors to use during computation + -ot N, --offset-t N [0 ] time offset in milliseconds + -on N, --offset-n N [0 ] segment index offset + -d N, --duration N [0 ] duration of audio to process in milliseconds + -mc N, --max-context N [-1 ] maximum number of text context tokens to store + -ml N, --max-len N [0 ] maximum segment length in characters + -sow, --split-on-word [false ] split on word rather than on token + -bo N, --best-of N [2 ] number of best candidates to keep + -bs N, --beam-size N [-1 ] beam size for beam search + -wt N, --word-thold N [0.01 ] word timestamp probability threshold + -et N, --entropy-thold N [2.40 ] entropy threshold for decoder fail + -lpt N, --logprob-thold N [-1.00 ] log probability threshold for decoder fail + -su, --speed-up [false ] speed up audio by x2 (reduced accuracy) + -tr, --translate [false ] translate from source language to english + -di, --diarize [false ] stereo audio diarization + -nf, --no-fallback [false ] do not use temperature fallback while decoding + -otxt, --output-txt [false ] output result in a text file + -ovtt, --output-vtt [false ] output result in a vtt file + -osrt, --output-srt [false ] output result in a srt file + -olrc, --output-lrc [false ] output result in a lrc file + -owts, --output-words [false ] output script for generating karaoke video + -fp, --font-path [/System/Library/Fonts/Supplemental/Courier New Bold.ttf] path to a monospace font for karaoke video + -ocsv, --output-csv [false ] output result in a CSV file + -oj, --output-json [false ] output result in a JSON file + -of FNAME, --output-file FNAME [ ] output file path (without file extension) + -ps, --print-special [false ] print special tokens + -pc, --print-colors [false ] print colors + -pp, --print-progress [false ] print progress + -nt, --no-timestamps [true ] do not print timestamps + + + Const-me: + -h, --help [default] show this help message and exit + -la, --list-adapters List graphic adapters and exit + -gpu, --use-gpu The graphic adapter to use for inference + -t N, --threads N [4 ] number of threads to use during computation + -p N, --processors N [1 ] number of processors to use during computation + -ot N, --offset-t N [0 ] time offset in milliseconds + -on N, --offset-n N [0 ] segment index offset + -d N, --duration N [0 ] duration of audio to process in milliseconds + -mc N, --max-context N [-1 ] maximum number of text context tokens to store + -ml N, --max-len N [0 ] maximum segment length in characters + -wt N, --word-thold N [0.01 ] word timestamp probability threshold + -su, --speed-up [false ] speed up audio by x2 (reduced accuracy) + -tr, --translate [false ] translate from source language to english + -di, --diarize [false ] stereo audio diarization + -otxt, --output-txt [false ] output result in a text file + -ovtt, --output-vtt [false ] output result in a vtt file + -osrt, --output-srt [false ] output result in a srt file + -owts, --output-words [false ] output script for generating karaoke video + -ps, --print-special [false ] print special tokens + -nc, --no-colors [false ] do not print colors + + + + OpenAI: +--temperature TEMPERATURE +--best_of BEST_OF +--beam_size BEAM_SIZE +--patience PATIENCE +--length_penalty LENGTH_PENALTY +--suppress_tokens SUPPRESS_TOKENS +--initial_prompt INITIAL_PROMPT +--condition_on_previous_text CONDITION_ON_PREVIOUS_TEXT +--fp16 FP16 +--temperature_increment_on_fallback TEMPERATURE_INCREMENT_ON_FALLBACK +--compression_ratio_threshold COMPRESSION_RATIO_THRESHOLD +--logprob_threshold LOGPROB_THRESHOLD +--no_speech_threshold NO_SPEECH_THRESHOLD +--word_timestamps WORD_TIMESTAMPS +--prepend_punctuations PREPEND_PUNCTUATIONS +--append_punctuations APPEND_PUNCTUATIONS +--highlight_words HIGHLIGHT_WORDS +--max_line_width MAX_LINE_WIDTH +--max_line_count MAX_LINE_COUNT +--threads THREADS + \ No newline at end of file From b409b6545423f951851a171270d5136e8f139c66 Mon Sep 17 00:00:00 2001 From: niksedk Date: Wed, 12 Jul 2023 19:22:49 +0200 Subject: [PATCH 96/96] Work on Whisper extra cmd line parameter --- LanguageBaseEnglish.xml | 5 +++ src/libse/Common/Settings.cs | 8 ++++ .../AudioToText/WhisperAdvanced.Designer.cs | 31 ++++++++-------- src/ui/Forms/AudioToText/WhisperAdvanced.cs | 37 +++++++++++++++---- src/ui/Logic/Language.cs | 8 ++++ src/ui/Logic/LanguageDeserializer.cs | 9 +++++ src/ui/Logic/LanguageStructure.cs | 7 ++++ 7 files changed, 82 insertions(+), 23 deletions(-) diff --git a/LanguageBaseEnglish.xml b/LanguageBaseEnglish.xml index c9f269a7d..184593d29 100644 --- a/LanguageBaseEnglish.xml +++ b/LanguageBaseEnglish.xml @@ -3222,4 +3222,9 @@ Keep changes? WebVTT styles + + Whisper Advanced - extra command line arguments + Extra pameters for whisper command line: + Note: Different Whisper implementations have different command line parameters! + \ No newline at end of file diff --git a/src/libse/Common/Settings.cs b/src/libse/Common/Settings.cs index 5b779f7ee..13e6b284f 100644 --- a/src/libse/Common/Settings.cs +++ b/src/libse/Common/Settings.cs @@ -438,6 +438,7 @@ namespace Nikse.SubtitleEdit.Core.Common public string WhisperStableTsLocation { get; set; } public string WhisperCppModelLocation { get; set; } public string WhisperExtraSettings { get; set; } + public string WhisperExtraSettingsHistory { get; set; } public bool WhisperAutoAdjustTimings { get; set; } public bool WhisperUseLineMaxChars { get; set; } public int AudioToTextLineMaxChars { get; set; } @@ -6419,6 +6420,12 @@ $HorzAlign = Center settings.Tools.WhisperExtraSettings = subNode.InnerText; } + subNode = node.SelectSingleNode("WhisperExtraSettingsHistory"); + if (subNode != null) + { + settings.Tools.WhisperExtraSettingsHistory = subNode.InnerText; + } + subNode = node.SelectSingleNode("WhisperLanguageCode"); if (subNode != null) { @@ -10819,6 +10826,7 @@ $HorzAlign = Center textWriter.WriteElementString("WhisperStableTsLocation", settings.Tools.WhisperStableTsLocation); textWriter.WriteElementString("WhisperCppModelLocation", settings.Tools.WhisperCppModelLocation); textWriter.WriteElementString("WhisperExtraSettings", settings.Tools.WhisperExtraSettings); + textWriter.WriteElementString("WhisperExtraSettingsHistory", settings.Tools.WhisperExtraSettingsHistory); textWriter.WriteElementString("WhisperLanguageCode", settings.Tools.WhisperLanguageCode); textWriter.WriteElementString("WhisperAutoAdjustTimings", settings.Tools.WhisperAutoAdjustTimings.ToString(CultureInfo.InvariantCulture)); textWriter.WriteElementString("WhisperUseLineMaxChars", settings.Tools.WhisperUseLineMaxChars.ToString(CultureInfo.InvariantCulture)); diff --git a/src/ui/Forms/AudioToText/WhisperAdvanced.Designer.cs b/src/ui/Forms/AudioToText/WhisperAdvanced.Designer.cs index f811a53fa..ae45d10bd 100644 --- a/src/ui/Forms/AudioToText/WhisperAdvanced.Designer.cs +++ b/src/ui/Forms/AudioToText/WhisperAdvanced.Designer.cs @@ -1,6 +1,6 @@ namespace Nikse.SubtitleEdit.Forms.AudioToText { - partial class WhisperAdvanced + sealed partial class WhisperAdvanced { /// /// Required designer variable. @@ -29,7 +29,7 @@ private void InitializeComponent() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(WhisperAdvanced)); - this.labelMeasureFont = new System.Windows.Forms.Label(); + this.labelWhisperExtraCmdLine = new System.Windows.Forms.Label(); this.comboBoxWhisperExtra = new System.Windows.Forms.ComboBox(); this.buttonCancel = new System.Windows.Forms.Button(); this.buttonOK = new System.Windows.Forms.Button(); @@ -47,14 +47,14 @@ this.tabPageOpenAI.SuspendLayout(); this.SuspendLayout(); // - // labelMeasureFont + // labelWhisperExtraCmdLine // - this.labelMeasureFont.AutoSize = true; - this.labelMeasureFont.Location = new System.Drawing.Point(12, 22); - this.labelMeasureFont.Name = "labelMeasureFont"; - this.labelMeasureFont.Size = new System.Drawing.Size(202, 13); - this.labelMeasureFont.TabIndex = 217; - this.labelMeasureFont.Text = "Extra pameters for whisper command line:"; + this.labelWhisperExtraCmdLine.AutoSize = true; + this.labelWhisperExtraCmdLine.Location = new System.Drawing.Point(12, 22); + this.labelWhisperExtraCmdLine.Name = "labelWhisperExtraCmdLine"; + this.labelWhisperExtraCmdLine.Size = new System.Drawing.Size(202, 13); + this.labelWhisperExtraCmdLine.TabIndex = 217; + this.labelWhisperExtraCmdLine.Text = "Extra pameters for whisper command line:"; // // comboBoxWhisperExtra // @@ -66,6 +66,7 @@ this.comboBoxWhisperExtra.Name = "comboBoxWhisperExtra"; this.comboBoxWhisperExtra.Size = new System.Drawing.Size(680, 21); this.comboBoxWhisperExtra.TabIndex = 214; + this.comboBoxWhisperExtra.KeyDown += new System.Windows.Forms.KeyEventHandler(this.comboBoxWhisperExtra_KeyDown); // // buttonCancel // @@ -147,7 +148,7 @@ this.tabPageConstMe.Location = new System.Drawing.Point(4, 22); this.tabPageConstMe.Name = "tabPageConstMe"; this.tabPageConstMe.Padding = new System.Windows.Forms.Padding(3); - this.tabPageConstMe.Size = new System.Drawing.Size(636, 290); + this.tabPageConstMe.Size = new System.Drawing.Size(672, 332); this.tabPageConstMe.TabIndex = 1; this.tabPageConstMe.Text = "Const-me"; this.tabPageConstMe.UseVisualStyleBackColor = true; @@ -161,7 +162,7 @@ this.textBoxConstMe.Name = "textBoxConstMe"; this.textBoxConstMe.ReadOnly = true; this.textBoxConstMe.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; - this.textBoxConstMe.Size = new System.Drawing.Size(630, 284); + this.textBoxConstMe.Size = new System.Drawing.Size(666, 326); this.textBoxConstMe.TabIndex = 1; this.textBoxConstMe.Text = resources.GetString("textBoxConstMe.Text"); this.textBoxConstMe.WordWrap = false; @@ -172,7 +173,7 @@ this.tabPageOpenAI.Location = new System.Drawing.Point(4, 22); this.tabPageOpenAI.Name = "tabPageOpenAI"; this.tabPageOpenAI.Padding = new System.Windows.Forms.Padding(3); - this.tabPageOpenAI.Size = new System.Drawing.Size(636, 290); + this.tabPageOpenAI.Size = new System.Drawing.Size(672, 332); this.tabPageOpenAI.TabIndex = 2; this.tabPageOpenAI.Text = "OpenAI"; this.tabPageOpenAI.UseVisualStyleBackColor = true; @@ -186,7 +187,7 @@ this.textBoxOpenAI.Name = "textBoxOpenAI"; this.textBoxOpenAI.ReadOnly = true; this.textBoxOpenAI.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; - this.textBoxOpenAI.Size = new System.Drawing.Size(630, 284); + this.textBoxOpenAI.Size = new System.Drawing.Size(666, 326); this.textBoxOpenAI.TabIndex = 2; this.textBoxOpenAI.Text = resources.GetString("textBoxOpenAI.Text"); this.textBoxOpenAI.WordWrap = false; @@ -198,7 +199,7 @@ this.ClientSize = new System.Drawing.Size(707, 507); this.Controls.Add(this.tabControlCommandLineHelp); this.Controls.Add(this.labelNote); - this.Controls.Add(this.labelMeasureFont); + this.Controls.Add(this.labelWhisperExtraCmdLine); this.Controls.Add(this.comboBoxWhisperExtra); this.Controls.Add(this.buttonCancel); this.Controls.Add(this.buttonOK); @@ -225,7 +226,7 @@ #endregion - private System.Windows.Forms.Label labelMeasureFont; + private System.Windows.Forms.Label labelWhisperExtraCmdLine; private System.Windows.Forms.ComboBox comboBoxWhisperExtra; private System.Windows.Forms.Button buttonCancel; private System.Windows.Forms.Button buttonOK; diff --git a/src/ui/Forms/AudioToText/WhisperAdvanced.cs b/src/ui/Forms/AudioToText/WhisperAdvanced.cs index f0048234b..0c75f18bb 100644 --- a/src/ui/Forms/AudioToText/WhisperAdvanced.cs +++ b/src/ui/Forms/AudioToText/WhisperAdvanced.cs @@ -7,7 +7,7 @@ using Nikse.SubtitleEdit.Core.AudioToText; namespace Nikse.SubtitleEdit.Forms.AudioToText { - public partial class WhisperAdvanced : Form + public sealed partial class WhisperAdvanced : Form { public WhisperAdvanced(string whisperEngine) { @@ -16,14 +16,20 @@ namespace Nikse.SubtitleEdit.Forms.AudioToText UiUtil.FixFonts(this); comboBoxWhisperExtra.Items.Clear(); - comboBoxWhisperExtra.Items.Add("--temperature "); - comboBoxWhisperExtra.Items.Add("--best_of "); - comboBoxWhisperExtra.Items.Add("--beam_size "); - comboBoxWhisperExtra.Items.Add("--patience "); - comboBoxWhisperExtra.Items.Add("--condition_on_previous_text False"); - comboBoxWhisperExtra.Items.Add("--fp16 False"); - comboBoxWhisperExtra.Items.Add("--temperature_increment_on_fallback "); + if (!string.IsNullOrEmpty(Configuration.Settings.Tools.WhisperExtraSettingsHistory)) + { + foreach (var line in Configuration.Settings.Tools.WhisperExtraSettingsHistory.SplitToLines()) + { + if (!string.IsNullOrEmpty(line)) + { + comboBoxWhisperExtra.Items.Add(line); + } + } + } + Text = LanguageSettings.Current.WhisperAdvanced.Title; + labelWhisperExtraCmdLine.Text = LanguageSettings.Current.WhisperAdvanced.CommandLineArguments; + labelNote.Text = LanguageSettings.Current.WhisperAdvanced.Info; buttonOK.Text = LanguageSettings.Current.General.Ok; buttonCancel.Text = LanguageSettings.Current.General.Cancel; comboBoxWhisperExtra.Text = Configuration.Settings.Tools.WhisperExtraSettings; @@ -56,6 +62,13 @@ namespace Nikse.SubtitleEdit.Forms.AudioToText private void buttonOK_Click(object sender, EventArgs e) { + var param = comboBoxWhisperExtra.Text.Trim(); + if (!string.IsNullOrWhiteSpace(param) && !Configuration.Settings.Tools.WhisperExtraSettings.Contains(param)) + { + Configuration.Settings.Tools.WhisperExtraSettingsHistory = param + Environment.NewLine + + Configuration.Settings.Tools.WhisperExtraSettingsHistory; + } + Configuration.Settings.Tools.WhisperExtraSettings = comboBoxWhisperExtra.Text; DialogResult = DialogResult.OK; } @@ -64,5 +77,13 @@ namespace Nikse.SubtitleEdit.Forms.AudioToText { DialogResult = DialogResult.Cancel; } + + private void comboBoxWhisperExtra_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + buttonOK_Click(null, null); + } + } } } diff --git a/src/ui/Logic/Language.cs b/src/ui/Logic/Language.cs index 41c24f7f2..1979241a9 100644 --- a/src/ui/Logic/Language.cs +++ b/src/ui/Logic/Language.cs @@ -126,6 +126,7 @@ namespace Nikse.SubtitleEdit.Logic public LanguageStructure.WaveformGenerateTimeCodes WaveformGenerateTimeCodes; public LanguageStructure.WebVttNewVoice WebVttNewVoice; public LanguageStructure.WebVttStyleManager WebVttStyleManager; + public LanguageStructure.WhisperAdvanced WhisperAdvanced; public Language() { @@ -3623,6 +3624,13 @@ Keep changes?", { Title = "WebVTT styles", }; + + WhisperAdvanced = new LanguageStructure.WhisperAdvanced + { + Title = "Whisper Advanced - extra command line arguments", + CommandLineArguments = "Extra pameters for whisper command line:", + Info = "Note: Different Whisper implementations have different command line parameters!", + }; } //public static Language Load(StreamReader sr) // normal but slow .net way diff --git a/src/ui/Logic/LanguageDeserializer.cs b/src/ui/Logic/LanguageDeserializer.cs index ad0b13089..23f6f8ae5 100644 --- a/src/ui/Logic/LanguageDeserializer.cs +++ b/src/ui/Logic/LanguageDeserializer.cs @@ -8794,6 +8794,15 @@ namespace Nikse.SubtitleEdit.Logic case "WebVttStyleManager/Title": language.WebVttStyleManager.Title = reader.Value; break; + case "WhisperAdvanced/Title": + language.WhisperAdvanced.Title = reader.Value; + break; + case "WhisperAdvanced/CommandLineArguments": + language.WhisperAdvanced.CommandLineArguments = reader.Value; + break; + case "WhisperAdvanced/Info": + language.WhisperAdvanced.Info = reader.Value; + break; } } diff --git a/src/ui/Logic/LanguageStructure.cs b/src/ui/Logic/LanguageStructure.cs index 740068e7f..467bb7537 100644 --- a/src/ui/Logic/LanguageStructure.cs +++ b/src/ui/Logic/LanguageStructure.cs @@ -3468,5 +3468,12 @@ namespace Nikse.SubtitleEdit.Logic { public string Title { get; set; } } + + public class WhisperAdvanced + { + public string Title { get; set; } + public string CommandLineArguments { get; set; } + public string Info { get; set; } + } } }