From 7bbcfefe410f720ee964efe7e8835b4fb37ebb0a Mon Sep 17 00:00:00 2001 From: niksedk Date: Tue, 8 Feb 2011 17:07:51 +0000 Subject: [PATCH] Fixed spelling error in code + updated change log git-svn-id: https://subtitleedit.googlecode.com/svn/trunk@323 99eadd0c-20b8-1223-b5c4-2a2b2df33de2 --- src/ChangeLog.txt | 2 + src/Controls/VideoPlayerContainer.cs | 34 +- src/Forms/FixCommonErrors.Designer.cs | 64 +- src/Forms/Main.Designer.cs | 60 +- src/Forms/Main.cs | 271 +-- src/Forms/Main.resx | 9 +- ...umDisplayTimeBetweenParagraphs.Designer.cs | 11 +- .../SetMinimumDisplayTimeBetweenParagraphs.cs | 16 +- src/Forms/VideoPlayerUnDocked.cs | 2 +- src/Forms/VisualSync.Designer.cs | 6 + src/Forms/VisualSync.cs | 24 +- src/Forms/VisualSync.resx | 3 + src/Forms/WaveFormUnDocked.cs | 2 +- src/Logic/Settings.cs | 6 + src/Resources/fa-IR.xml | 1852 +++++++++++++++++ src/Resources/fa-IR.xml.zip | Bin 0 -> 15893 bytes src/SubtitleEdit.csproj | 2 + 17 files changed, 2145 insertions(+), 219 deletions(-) create mode 100644 src/Resources/fa-IR.xml create mode 100644 src/Resources/fa-IR.xml.zip diff --git a/src/ChangeLog.txt b/src/ChangeLog.txt index 2f3749980..6931758dd 100644 --- a/src/ChangeLog.txt +++ b/src/ChangeLog.txt @@ -32,6 +32,7 @@ Subtitle Edit Changelog * Start/display time changes are now undo-able (thx Luis) * Subtitle preview on video player now more precise (thx hawk) + uses font from Settings + bold (thx Leszek) * "Point sync" can now also sync using only one sync point (thx tttoan) + * VLC media player - mouse click now toggles play/pause * FIXED: * Wave form: Fixed unprecise (out of sync) wave form data for some sample rates * Fixed crash with wave form track bar (thx Christian) @@ -44,6 +45,7 @@ Subtitle Edit Changelog * OCR Fix Engine: Lines after "..." will no longer be changed to start with uppercase * Fixed bug in reading of SSA files (',' was removed) - thx Pter * Fixed line breaking bug in mpl format - thx Przemek + * Fixed shortcuts for adjust commands Ctrl+Space/Shift+Space/F9/F10 3.0 (18th November 2010) * NEW: diff --git a/src/Controls/VideoPlayerContainer.cs b/src/Controls/VideoPlayerContainer.cs index 6edfe3104..66729a2a6 100644 --- a/src/Controls/VideoPlayerContainer.cs +++ b/src/Controls/VideoPlayerContainer.cs @@ -178,7 +178,7 @@ namespace Nikse.SubtitleEdit.Controls void SubtitleTextBox_MouseClick(object sender, MouseEventArgs e) { - TooglePlayPause(); + TogglePlayPause(); } private static string RemoveSubStationAlphaFormatting(string s) @@ -272,7 +272,7 @@ namespace Nikse.SubtitleEdit.Controls void PanelPlayer_MouseDown(object sender, MouseEventArgs e) { - TooglePlayPause(); + TogglePlayPause(); } public void InitializeVolume(double defaultVolume) @@ -565,6 +565,32 @@ namespace Nikse.SubtitleEdit.Controls } #region PlayPauseButtons + + public void RefreshPlayPauseButtons() + { + if (VideoPlayer != null) + { + if (VideoPlayer.IsPlaying) + { + if (!_pictureBoxPause.Visible && !_pictureBoxPauseDown.Visible && !_pictureBoxPauseOver.Visible) + { + HideAllPauseImages(); + HideAllPlayImages(); + _pictureBoxPause.Visible = true; + } + } + else + { + if (!_pictureBoxPlay.Visible && !_pictureBoxPlayOver.Visible && !_pictureBoxPlayDown.Visible) + { + HideAllPauseImages(); + HideAllPlayImages(); + _pictureBoxPlay.Visible = true; + } + } + } + } + private void HideAllPlayImages() { _pictureBoxPlayOver.Visible = false; @@ -888,6 +914,8 @@ namespace Nikse.SubtitleEdit.Controls TimeSpan span = TimeSpan.FromSeconds(pos); string displayTime = string.Format("{0:00}:{1:00}:{2:00},{3:000}", span.Hours, span.Minutes, span.Seconds, span.Milliseconds); _labelTimeCode.Text = displayTime + _totalPositionString; + + RefreshPlayPauseButtons(); } } @@ -972,7 +1000,7 @@ namespace Nikse.SubtitleEdit.Controls } } - public void TooglePlayPause() + public void TogglePlayPause() { if (VideoPlayer != null) { diff --git a/src/Forms/FixCommonErrors.Designer.cs b/src/Forms/FixCommonErrors.Designer.cs index 8dc46bde6..3ae9a79c3 100644 --- a/src/Forms/FixCommonErrors.Designer.cs +++ b/src/Forms/FixCommonErrors.Designer.cs @@ -56,6 +56,7 @@ namespace Nikse.SubtitleEdit.Forms this.buttonRefreshFixes = new System.Windows.Forms.Button(); this.buttonFixesSelectAll = new System.Windows.Forms.Button(); this.buttonFixesInverse = new System.Windows.Forms.Button(); + this.subtitleListView1 = new Nikse.SubtitleEdit.Controls.SubtitleListView(); this.contextMenuStripListview = new System.Windows.Forms.ContextMenuStrip(this.components); this.toolStripMenuItemDelete = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); @@ -67,6 +68,7 @@ namespace Nikse.SubtitleEdit.Forms this.buttonAutoBreak = new System.Windows.Forms.Button(); this.labelStartTimeWarning = new System.Windows.Forms.Label(); this.labelDurationWarning = new System.Windows.Forms.Label(); + this.timeUpDownStartTime = new Nikse.SubtitleEdit.Controls.TimeUpDown(); this.numericUpDownDuration = new System.Windows.Forms.NumericUpDown(); this.labelDuration = new System.Windows.Forms.Label(); this.labelStartTime = new System.Windows.Forms.Label(); @@ -76,8 +78,6 @@ namespace Nikse.SubtitleEdit.Forms this.tabPageLog = new System.Windows.Forms.TabPage(); this.textBoxFixedIssues = new System.Windows.Forms.TextBox(); this.labelNumberOfImportantLogMessages = new System.Windows.Forms.Label(); - this.subtitleListView1 = new Nikse.SubtitleEdit.Controls.SubtitleListView(); - this.timeUpDownStartTime = new Nikse.SubtitleEdit.Controls.TimeUpDown(); this.groupBoxStep1.SuspendLayout(); this.groupBox2.SuspendLayout(); this.tabControl1.SuspendLayout(); @@ -368,6 +368,25 @@ namespace Nikse.SubtitleEdit.Forms this.buttonFixesInverse.UseVisualStyleBackColor = true; this.buttonFixesInverse.Click += new System.EventHandler(this.ButtonFixesInverseClick); // + // subtitleListView1 + // + this.subtitleListView1.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.subtitleListView1.ContextMenuStrip = this.contextMenuStripListview; + 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.HideSelection = false; + this.subtitleListView1.Location = new System.Drawing.Point(3, 5); + this.subtitleListView1.Name = "subtitleListView1"; + this.subtitleListView1.Size = new System.Drawing.Size(785, 145); + this.subtitleListView1.TabIndex = 110; + this.subtitleListView1.UseCompatibleStateImageBehavior = false; + this.subtitleListView1.View = System.Windows.Forms.View.Details; + this.subtitleListView1.SelectedIndexChanged += new System.EventHandler(this.SubtitleListView1SelectedIndexChanged); + // // contextMenuStripListview // this.contextMenuStripListview.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -483,6 +502,16 @@ namespace Nikse.SubtitleEdit.Forms this.labelDurationWarning.TabIndex = 31; this.labelDurationWarning.Text = "labelDurationWarning"; // + // timeUpDownStartTime + // + this.timeUpDownStartTime.AutoSize = true; + this.timeUpDownStartTime.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.timeUpDownStartTime.Location = new System.Drawing.Point(8, 27); + this.timeUpDownStartTime.Margin = new System.Windows.Forms.Padding(4); + this.timeUpDownStartTime.Name = "timeUpDownStartTime"; + this.timeUpDownStartTime.Size = new System.Drawing.Size(92, 25); + this.timeUpDownStartTime.TabIndex = 112; + // // numericUpDownDuration // this.numericUpDownDuration.DecimalPlaces = 3; @@ -503,7 +532,7 @@ namespace Nikse.SubtitleEdit.Forms 0, -2147483648}); this.numericUpDownDuration.Name = "numericUpDownDuration"; - this.numericUpDownDuration.Size = new System.Drawing.Size(54, 21); + this.numericUpDownDuration.Size = new System.Drawing.Size(56, 21); this.numericUpDownDuration.TabIndex = 114; this.numericUpDownDuration.ValueChanged += new System.EventHandler(this.NumericUpDownDurationValueChanged); // @@ -593,35 +622,6 @@ namespace Nikse.SubtitleEdit.Forms this.labelNumberOfImportantLogMessages.TabIndex = 11; this.labelNumberOfImportantLogMessages.Text = "labelNumberOfImportantLogMessages"; // - // subtitleListView1 - // - this.subtitleListView1.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.subtitleListView1.ContextMenuStrip = this.contextMenuStripListview; - 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.HideSelection = false; - this.subtitleListView1.Location = new System.Drawing.Point(3, 5); - this.subtitleListView1.Name = "subtitleListView1"; - this.subtitleListView1.Size = new System.Drawing.Size(785, 145); - this.subtitleListView1.TabIndex = 110; - this.subtitleListView1.UseCompatibleStateImageBehavior = false; - this.subtitleListView1.View = System.Windows.Forms.View.Details; - this.subtitleListView1.SelectedIndexChanged += new System.EventHandler(this.SubtitleListView1SelectedIndexChanged); - // - // timeUpDownStartTime - // - this.timeUpDownStartTime.AutoSize = true; - this.timeUpDownStartTime.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.timeUpDownStartTime.Location = new System.Drawing.Point(8, 27); - this.timeUpDownStartTime.Margin = new System.Windows.Forms.Padding(4); - this.timeUpDownStartTime.Name = "timeUpDownStartTime"; - this.timeUpDownStartTime.Size = new System.Drawing.Size(92, 25); - this.timeUpDownStartTime.TabIndex = 112; - // // FixCommonErrors // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); diff --git a/src/Forms/Main.Designer.cs b/src/Forms/Main.Designer.cs index b9666c551..142fa9914 100644 --- a/src/Forms/Main.Designer.cs +++ b/src/Forms/Main.Designer.cs @@ -49,8 +49,8 @@ this.toolStripSeparatorHelp = new System.Windows.Forms.ToolStripSeparator(); this.toolStripButtonHelp = new System.Windows.Forms.ToolStripButton(); this.toolStripSeparator13 = new System.Windows.Forms.ToolStripSeparator(); - this.toolStripButtonToogleWaveForm = new System.Windows.Forms.ToolStripButton(); - this.toolStripButtonToogleVideo = new System.Windows.Forms.ToolStripButton(); + this.toolStripButtonToggleWaveForm = new System.Windows.Forms.ToolStripButton(); + this.toolStripButtonToggleVideo = new System.Windows.Forms.ToolStripButton(); this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); this.toolStripLabelSubtitleFormat = new System.Windows.Forms.ToolStripLabel(); this.comboBoxSubtitleFormats = new System.Windows.Forms.ToolStripComboBox(); @@ -434,8 +434,8 @@ this.toolStripSeparatorHelp, this.toolStripButtonHelp, this.toolStripSeparator13, - this.toolStripButtonToogleWaveForm, - this.toolStripButtonToogleVideo, + this.toolStripButtonToggleWaveForm, + this.toolStripButtonToggleVideo, this.toolStripSeparator6, this.toolStripLabelSubtitleFormat, this.comboBoxSubtitleFormats, @@ -597,31 +597,31 @@ this.toolStripSeparator13.Name = "toolStripSeparator13"; this.toolStripSeparator13.Size = new System.Drawing.Size(6, 40); // - // toolStripButtonToogleWaveForm + // toolStripButtonToggleWaveForm // - this.toolStripButtonToogleWaveForm.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.toolStripButtonToogleWaveForm.Font = new System.Drawing.Font("Tahoma", 8.25F); - this.toolStripButtonToogleWaveForm.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonToogleWaveForm.Image"))); - this.toolStripButtonToogleWaveForm.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; - this.toolStripButtonToogleWaveForm.ImageTransparentColor = System.Drawing.Color.Magenta; - this.toolStripButtonToogleWaveForm.Name = "toolStripButtonToogleWaveForm"; - this.toolStripButtonToogleWaveForm.Size = new System.Drawing.Size(36, 37); - this.toolStripButtonToogleWaveForm.Text = "Show/hide wave form"; - this.toolStripButtonToogleWaveForm.Click += new System.EventHandler(this.toolStripButtonToogleWaveForm_Click); + this.toolStripButtonToggleWaveForm.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolStripButtonToggleWaveForm.Font = new System.Drawing.Font("Tahoma", 8.25F); + this.toolStripButtonToggleWaveForm.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonToggleWaveForm.Image"))); + this.toolStripButtonToggleWaveForm.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; + this.toolStripButtonToggleWaveForm.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButtonToggleWaveForm.Name = "toolStripButtonToggleWaveForm"; + this.toolStripButtonToggleWaveForm.Size = new System.Drawing.Size(36, 37); + this.toolStripButtonToggleWaveForm.Text = "Show/hide wave form"; + this.toolStripButtonToggleWaveForm.Click += new System.EventHandler(this.toolStripButtonToggleWaveForm_Click); // - // toolStripButtonToogleVideo + // toolStripButtonToggleVideo // - this.toolStripButtonToogleVideo.Checked = true; - this.toolStripButtonToogleVideo.CheckState = System.Windows.Forms.CheckState.Checked; - this.toolStripButtonToogleVideo.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.toolStripButtonToogleVideo.Font = new System.Drawing.Font("Tahoma", 8.25F); - this.toolStripButtonToogleVideo.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonToogleVideo.Image"))); - this.toolStripButtonToogleVideo.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; - this.toolStripButtonToogleVideo.ImageTransparentColor = System.Drawing.Color.Magenta; - this.toolStripButtonToogleVideo.Name = "toolStripButtonToogleVideo"; - this.toolStripButtonToogleVideo.Size = new System.Drawing.Size(36, 37); - this.toolStripButtonToogleVideo.Text = "Show/hide video"; - this.toolStripButtonToogleVideo.Click += new System.EventHandler(this.toolStripButtonToogleVideo_Click); + this.toolStripButtonToggleVideo.Checked = true; + this.toolStripButtonToggleVideo.CheckState = System.Windows.Forms.CheckState.Checked; + this.toolStripButtonToggleVideo.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolStripButtonToggleVideo.Font = new System.Drawing.Font("Tahoma", 8.25F); + this.toolStripButtonToggleVideo.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonToggleVideo.Image"))); + this.toolStripButtonToggleVideo.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; + this.toolStripButtonToggleVideo.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButtonToggleVideo.Name = "toolStripButtonToggleVideo"; + this.toolStripButtonToggleVideo.Size = new System.Drawing.Size(36, 37); + this.toolStripButtonToggleVideo.Text = "Show/hide video"; + this.toolStripButtonToggleVideo.Click += new System.EventHandler(this.toolStripButtonToggleVideo_Click); // // toolStripSeparator6 // @@ -1246,7 +1246,7 @@ this.showhideVideoToolStripMenuItem.Name = "showhideVideoToolStripMenuItem"; this.showhideVideoToolStripMenuItem.Size = new System.Drawing.Size(199, 22); this.showhideVideoToolStripMenuItem.Text = "Show/hide video"; - this.showhideVideoToolStripMenuItem.Click += new System.EventHandler(this.toolStripButtonToogleVideo_Click); + this.showhideVideoToolStripMenuItem.Click += new System.EventHandler(this.toolStripButtonToggleVideo_Click); // // toolStripSeparator19 // @@ -3179,7 +3179,7 @@ 0, -2147483648}); this.numericUpDownDuration.Name = "numericUpDownDuration"; - this.numericUpDownDuration.Size = new System.Drawing.Size(57, 21); + this.numericUpDownDuration.Size = new System.Drawing.Size(56, 21); this.numericUpDownDuration.TabIndex = 1; this.numericUpDownDuration.ValueChanged += new System.EventHandler(this.NumericUpDownDurationValueChanged); // @@ -3581,7 +3581,7 @@ private System.Windows.Forms.ToolStripLabel toolStripLabelSubtitleFormat; private System.Windows.Forms.ToolStripLabel toolStripLabelEncoding; private System.Windows.Forms.ToolStripComboBox comboBoxEncoding; - private System.Windows.Forms.ToolStripButton toolStripButtonToogleVideo; + private System.Windows.Forms.ToolStripButton toolStripButtonToggleVideo; private System.Windows.Forms.ToolStripSeparator toolStripSeparator15; private System.Windows.Forms.ToolStripSeparator toolStripSeparatorFrameRate; private System.Windows.Forms.ToolStripLabel toolStripLabelFrameRate; @@ -3661,7 +3661,7 @@ private System.Windows.Forms.Label labelCreateF9; private System.Windows.Forms.Label labelAdjustTip; private System.Windows.Forms.ToolStripMenuItem translatepoweredByMicrosoftToolStripMenuItem; - private System.Windows.Forms.ToolStripButton toolStripButtonToogleWaveForm; + private System.Windows.Forms.ToolStripButton toolStripButtonToggleWaveForm; private Controls.VideoPlayerContainer mediaPlayer; private System.Windows.Forms.Panel panelVideoPlayer; private Controls.WaveForm AudioWaveForm; diff --git a/src/Forms/Main.cs b/src/Forms/Main.cs index 69613986d..c119e52a0 100644 --- a/src/Forms/Main.cs +++ b/src/Forms/Main.cs @@ -210,8 +210,8 @@ namespace Nikse.SubtitleEdit.Forms AudioWaveForm.Visible = Configuration.Settings.General.ShowWaveForm; panelWaveFormControls.Visible = Configuration.Settings.General.ShowWaveForm; trackBarWaveFormPosition.Visible = Configuration.Settings.General.ShowWaveForm; - toolStripButtonToogleWaveForm.Checked = Configuration.Settings.General.ShowWaveForm; - toolStripButtonToogleVideo.Checked = Configuration.Settings.General.ShowVideoPlayer; + toolStripButtonToggleWaveForm.Checked = Configuration.Settings.General.ShowWaveForm; + toolStripButtonToggleVideo.Checked = Configuration.Settings.General.ShowVideoPlayer; string fileName = string.Empty; string[] args = Environment.GetCommandLineArgs(); @@ -306,7 +306,7 @@ namespace Nikse.SubtitleEdit.Forms { if (paragraph == null) { - mediaPlayer.TooglePlayPause(); + mediaPlayer.TogglePlayPause(); } else { @@ -615,8 +615,8 @@ namespace Nikse.SubtitleEdit.Forms toolStripButtonSpellCheck.ToolTipText = _language.Menu.ToolBar.SpellCheck; toolStripButtonSettings.ToolTipText = _language.Menu.ToolBar.Settings; toolStripButtonHelp.ToolTipText = _language.Menu.ToolBar.Help; - toolStripButtonToogleWaveForm.ToolTipText = _language.Menu.ToolBar.ShowHideWaveForm; - toolStripButtonToogleVideo.ToolTipText = _language.Menu.ToolBar.ShowHideVideo; + toolStripButtonToggleWaveForm.ToolTipText = _language.Menu.ToolBar.ShowHideWaveForm; + toolStripButtonToggleVideo.ToolTipText = _language.Menu.ToolBar.ShowHideVideo; toolStripMenuItemDelete.Text = _language.Menu.ContextMenu.Delete; insertLineToolStripMenuItem.Text = _language.Menu.ContextMenu.InsertFirstLine; @@ -1081,7 +1081,7 @@ namespace Nikse.SubtitleEdit.Forms { OpenVideo(videoFileName); } - else if (!string.IsNullOrEmpty(fileName) && (toolStripButtonToogleVideo.Checked || toolStripButtonToogleWaveForm.Checked)) + else if (!string.IsNullOrEmpty(fileName) && (toolStripButtonToggleVideo.Checked || toolStripButtonToggleWaveForm.Checked)) { TryToFindAndOpenVideoFile(Path.Combine(Path.GetDirectoryName(fileName), Path.GetFileNameWithoutExtension(fileName))); } @@ -1722,8 +1722,8 @@ namespace Nikse.SubtitleEdit.Forms TryLoadIcon(toolStripButtonSpellCheck, "SpellCheck"); TryLoadIcon(toolStripButtonHelp, "Help"); - TryLoadIcon(toolStripButtonToogleVideo, "VideoToogle"); - TryLoadIcon(toolStripButtonToogleWaveForm, "WaveFormToogle"); + TryLoadIcon(toolStripButtonToggleVideo, "VideoToggle"); + TryLoadIcon(toolStripButtonToggleWaveForm, "WaveFormToggle"); toolStripButtonFileNew.Visible = gs.ShowToolbarNew; toolStripButtonFileOpen.Visible = gs.ShowToolbarOpen; @@ -3221,20 +3221,20 @@ namespace Nikse.SubtitleEdit.Forms private void BoldToolStripMenuItemClick(object sender, EventArgs e) { - ListViewToogleTag("b"); + ListViewToggleTag("b"); } private void ItalicToolStripMenuItemClick(object sender, EventArgs e) { - ListViewToogleTag("i"); + ListViewToggleTag("i"); } private void UnderlineToolStripMenuItemClick(object sender, EventArgs e) { - ListViewToogleTag("u"); + ListViewToggleTag("u"); } - private void ListViewToogleTag(string tag) + private void ListViewToggleTag(string tag) { if (_subtitle.Paragraphs.Count > 0 && SubtitleListview1.SelectedItems.Count > 0) { @@ -3362,9 +3362,7 @@ namespace Nikse.SubtitleEdit.Forms private void ToolStripMenuItemInsertBeforeClick(object sender, EventArgs e) { if (_subtitle.Paragraphs.Count > 0) - { InsertBefore(); - } } private void InsertBefore() @@ -3378,12 +3376,25 @@ namespace Nikse.SubtitleEdit.Forms if (SubtitleListview1.SelectedItems.Count > 0) firstSelectedIndex = SubtitleListview1.SelectedItems[0].Index; + int addMilliseconds = Configuration.Settings.General.MininumMillisecondsBetweenLines +1; + if (addMilliseconds < 1) + addMilliseconds = 1; + var newParagraph = new Paragraph(); Paragraph prev = _subtitle.GetParagraphOrDefault(firstSelectedIndex - 1); Paragraph next = _subtitle.GetParagraphOrDefault(firstSelectedIndex); - if (prev != null) + if (prev != null && next != null) { - newParagraph.StartTime.TotalMilliseconds = prev.EndTime.TotalMilliseconds + 200; + newParagraph.EndTime.TotalMilliseconds = next.StartTime.TotalMilliseconds - addMilliseconds; + newParagraph.StartTime.TotalMilliseconds = newParagraph.EndTime.TotalMilliseconds - 2000; + if (newParagraph.StartTime.TotalMilliseconds <= prev.EndTime.TotalMilliseconds) + newParagraph.StartTime.TotalMilliseconds = prev.EndTime.TotalMilliseconds + 1; + if (newParagraph.Duration.TotalMilliseconds < 100) + newParagraph.EndTime.TotalMilliseconds += 100; + } + else if (prev != null) + { + newParagraph.StartTime.TotalMilliseconds = prev.EndTime.TotalMilliseconds + addMilliseconds; newParagraph.EndTime.TotalMilliseconds = newParagraph.StartTime.TotalMilliseconds + 1200; if (next != null && newParagraph.EndTime.TotalMilliseconds > next.StartTime.TotalMilliseconds) newParagraph.EndTime.TotalMilliseconds = next.StartTime.TotalMilliseconds - 1; @@ -3449,7 +3460,11 @@ namespace Nikse.SubtitleEdit.Forms Paragraph next = _subtitle.GetParagraphOrDefault(firstSelectedIndex); if (prev != null) { - newParagraph.StartTime.TotalMilliseconds = prev.EndTime.TotalMilliseconds + 200; + int addMilliseconds = Configuration.Settings.General.MininumMillisecondsBetweenLines; + if (addMilliseconds < 1) + addMilliseconds = 1; + + newParagraph.StartTime.TotalMilliseconds = prev.EndTime.TotalMilliseconds + addMilliseconds; newParagraph.EndTime.TotalMilliseconds = newParagraph.StartTime.TotalMilliseconds + 1200; if (next != null && newParagraph.EndTime.TotalMilliseconds > next.StartTime.TotalMilliseconds) newParagraph.EndTime.TotalMilliseconds = next.StartTime.TotalMilliseconds - 1; @@ -3780,7 +3795,7 @@ namespace Nikse.SubtitleEdit.Forms } else { - TextBoxListViewToogleTag("i"); + TextBoxListViewToggleTag("i"); } } if (e.Modifiers == Keys.Control && e.KeyCode == Keys.D) @@ -5211,7 +5226,17 @@ namespace Nikse.SubtitleEdit.Forms internal void Main_KeyDown(object sender, KeyEventArgs e) { - if (e.Modifiers == Keys.Control && e.KeyCode == Keys.Z) + if (e.Modifiers == Keys.Alt && e.KeyCode == Keys.Insert) + { + InsertAfter(); + e.SuppressKeyPress = true; + } + else if (e.Shift && e.KeyCode == Keys.Insert) + { + InsertBefore(); + e.SuppressKeyPress = true; + } + else if (e.Modifiers == Keys.Control && e.KeyCode == Keys.Z) { ShowHistoryforUndoToolStripMenuItemClick(null, null); e.SuppressKeyPress = true; @@ -5296,7 +5321,7 @@ namespace Nikse.SubtitleEdit.Forms } } else if (e.Modifiers == Keys.Control && e.KeyCode == Keys.U) - { // toogle translator mode + { // toggle translator mode EditToolStripMenuItemDropDownOpening(null, null); toolStripMenuItemTranslationMode_Click(null, null); } @@ -5305,7 +5330,7 @@ namespace Nikse.SubtitleEdit.Forms if (mediaPlayer.VideoPlayer != null) { _endSeconds = -1; - mediaPlayer.TooglePlayPause(); + mediaPlayer.TogglePlayPause(); e.SuppressKeyPress = true; } } @@ -5329,7 +5354,7 @@ namespace Nikse.SubtitleEdit.Forms { if (!textBoxListViewText.Focused && !textBoxListViewTextAlternate.Focused && !textBoxSource.Focused && mediaPlayer.VideoPlayer != null) { - mediaPlayer.TooglePlayPause(); + mediaPlayer.TogglePlayPause(); e.SuppressKeyPress = true; } } @@ -5435,23 +5460,72 @@ namespace Nikse.SubtitleEdit.Forms { if (mediaPlayer.VideoPlayer != null) { - mediaPlayer.TooglePlayPause(); + mediaPlayer.TogglePlayPause(); e.SuppressKeyPress = true; } } + else if (e.Modifiers == (Keys.Control | Keys.Alt | Keys.Shift) && e.KeyCode == Keys.W) // watermak + { + if (comboBoxEncoding.Text.StartsWith("ANSI - ")) + { + MessageBox.Show("Watermark only works with unicode file encoding"); + } + else + { + Watermark watermarkForm = new Watermark(); + watermarkForm.Initialize(_subtitle, FirstSelectedIndex); + if (watermarkForm.ShowDialog(this) == DialogResult.OK) + { + watermarkForm.AddOrRemove(_subtitle); + RefreshSelectedParagraph(); + } + } + } + else if (e.KeyCode == Keys.Escape) + { + _cancelWordSpellCheck = true; + } + else if (e.Modifiers == (Keys.Control | Keys.Shift) && e.KeyCode == Keys.U) // Ctrl+Shift+U = switch original/current + { + if (_subtitleAlternate != null && _subtitleAlternate.Paragraphs.Count > 0 && _networkSession == null) + { + Subtitle temp = _subtitle; + _subtitle = _subtitleAlternate; + _subtitleAlternate = temp; + + string tempName = _fileName; + _fileName = _subtitleAlternateFileName; + _subtitleAlternateFileName = tempName; + + bool tempChange = _change; + _change = _changeAlternate; + _changeAlternate = tempChange; + + SubtitleListview1.Fill(_subtitle, _subtitleAlternate); + RefreshSelectedParagraph(); + + SetTitle(); + + _fileDateTime = new DateTime(); + } + } + + // TABS - MUST BE LAST else if (tabControlButtons.SelectedTab == tabPageAdjust && mediaPlayer.VideoPlayer != null) { if ((e.Modifiers == Keys.Control && e.KeyCode == Keys.Space)) { - buttonSetStartAndOffsetRest_Click(null, null); + ButtonSetStartAndOffsetRestClick(null, null); + e.SuppressKeyPress = true; } else if (e.Modifiers == Keys.Shift && e.KeyCode == Keys.Space) { buttonSetEndAndGoToNext_Click(null, null); + e.SuppressKeyPress = true; } else if (e.Modifiers == Keys.None && e.KeyCode == Keys.F9) { - buttonSetStartAndOffsetRest_Click(null, null); + ButtonSetStartAndOffsetRestClick(null, null); e.SuppressKeyPress = true; } else if (e.Modifiers == Keys.None && e.KeyCode == Keys.F10) @@ -5495,61 +5569,7 @@ namespace Nikse.SubtitleEdit.Forms e.SuppressKeyPress = true; } } - else if (e.Modifiers == (Keys.Control | Keys.Alt | Keys.Shift) && e.KeyCode == Keys.W) // watermak - { - if (comboBoxEncoding.Text.StartsWith("ANSI - ")) - { - MessageBox.Show("Watermark only works with unicode file encoding"); - } - else - { - Watermark watermarkForm = new Watermark(); - watermarkForm.Initialize(_subtitle, FirstSelectedIndex); - if (watermarkForm.ShowDialog(this) == DialogResult.OK) - { - watermarkForm.AddOrRemove(_subtitle); - RefreshSelectedParagraph(); - } - } - } - else if (e.Modifiers == Keys.Shift && e.KeyCode == Keys.Insert) - { - InsertBefore(); - e.SuppressKeyPress = true; - } - else if (e.Modifiers == Keys.Alt && e.KeyCode == Keys.Insert) - { - InsertAfter(); - e.SuppressKeyPress = true; - } - else if (e.KeyCode == Keys.Escape) - { - _cancelWordSpellCheck = true; - } - else if (e.Modifiers == (Keys.Control | Keys.Shift) && e.KeyCode == Keys.U) // Ctrl+Shift+U = switch original/current - { - if (_subtitleAlternate != null && _subtitleAlternate.Paragraphs.Count > 0 && _networkSession == null) - { - Subtitle temp = _subtitle; - _subtitle = _subtitleAlternate; - _subtitleAlternate = temp; - - string tempName = _fileName; - _fileName = _subtitleAlternateFileName; - _subtitleAlternateFileName = tempName; - - bool tempChange = _change; - _change = _changeAlternate; - _changeAlternate = tempChange; - - SubtitleListview1.Fill(_subtitle, _subtitleAlternate); - RefreshSelectedParagraph(); - - SetTitle(); - - _fileDateTime = new DateTime(); - } - } + // put new entries above tabs } private void SetTitle() @@ -6500,7 +6520,7 @@ namespace Nikse.SubtitleEdit.Forms } else { - if (toolStripButtonToogleVideo.Checked && toolStripButtonToogleWaveForm.Checked) + if (toolStripButtonToggleVideo.Checked && toolStripButtonToggleWaveForm.Checked) { splitContainer1.Panel2Collapsed = false; MoveVideoUp(); @@ -6512,7 +6532,7 @@ namespace Nikse.SubtitleEdit.Forms } splitContainerMain.Panel2Collapsed = false; - if (toolStripButtonToogleVideo.Checked) + if (toolStripButtonToggleVideo.Checked) { if (AudioWaveForm.Visible) { @@ -6545,7 +6565,7 @@ namespace Nikse.SubtitleEdit.Forms if (_videoPlayerUnDocked == null || _videoPlayerUnDocked.IsDisposed) UnDockVideoPlayer(); _videoPlayerUnDocked.Visible = false; - if (toolStripButtonToogleVideo.Checked) + if (toolStripButtonToggleVideo.Checked) { _videoPlayerUnDocked.Show(this); if (_videoPlayerUnDocked.WindowState == FormWindowState.Minimized) @@ -6555,14 +6575,14 @@ namespace Nikse.SubtitleEdit.Forms if (_waveFormUnDocked == null || _waveFormUnDocked.IsDisposed) UnDockWaveForm(); _waveFormUnDocked.Visible = false; - if (toolStripButtonToogleWaveForm.Checked) + if (toolStripButtonToggleWaveForm.Checked) { _waveFormUnDocked.Show(this); if (_waveFormUnDocked.WindowState == FormWindowState.Minimized) _waveFormUnDocked.WindowState = FormWindowState.Normal; } - if (toolStripButtonToogleVideo.Checked || toolStripButtonToogleWaveForm.Checked) + if (toolStripButtonToggleVideo.Checked || toolStripButtonToggleWaveForm.Checked) { if (_videoControlsUnDocked == null || _videoControlsUnDocked.IsDisposed) UnDockVideoButtons(); @@ -6820,23 +6840,6 @@ namespace Nikse.SubtitleEdit.Forms } } - private void buttonSetStartAndOffsetRest_Click(object sender, EventArgs e) - { - if (SubtitleListview1.SelectedItems.Count == 1) - { - int index = SubtitleListview1.SelectedItems[0].Index; - double videoPosition = mediaPlayer.CurrentPosition; - var tc = new TimeCode(TimeSpan.FromSeconds(videoPosition)); - double offset = _subtitle.Paragraphs[index].StartTime.TotalMilliseconds - tc.TotalMilliseconds; - for (int i = index; i < SubtitleListview1.Items.Count; i++) - { - _subtitle.Paragraphs[i].StartTime = new TimeCode(TimeSpan.FromMilliseconds(_subtitle.Paragraphs[i].StartTime.TotalMilliseconds - offset)); - _subtitle.Paragraphs[i].EndTime = new TimeCode(TimeSpan.FromMilliseconds(_subtitle.Paragraphs[i].EndTime.TotalMilliseconds - offset)); - SubtitleListview1.SetStartTime(i, _subtitle.Paragraphs[i]); - } - } - } - private void buttonSetEnd_Click(object sender, EventArgs e) { if (SubtitleListview1.SelectedItems.Count == 1) @@ -6961,13 +6964,13 @@ namespace Nikse.SubtitleEdit.Forms } } - private void toolStripButtonToogleVideo_Click(object sender, EventArgs e) + private void toolStripButtonToggleVideo_Click(object sender, EventArgs e) { - toolStripButtonToogleVideo.Checked = !toolStripButtonToogleVideo.Checked; - panelVideoPlayer.Visible = toolStripButtonToogleVideo.Checked; + toolStripButtonToggleVideo.Checked = !toolStripButtonToggleVideo.Checked; + panelVideoPlayer.Visible = toolStripButtonToggleVideo.Checked; mediaPlayer.BringToFront(); // labelSubtitle.BringToFront(); - if (!toolStripButtonToogleVideo.Checked && !toolStripButtonToogleWaveForm.Checked) + if (!toolStripButtonToggleVideo.Checked && !toolStripButtonToggleWaveForm.Checked) { if (_isVideoControlsUnDocked) ShowHideUnDockedVideoControls(); @@ -6978,17 +6981,17 @@ namespace Nikse.SubtitleEdit.Forms { ShowVideoPlayer(); } - Configuration.Settings.General.ShowVideoPlayer = toolStripButtonToogleVideo.Checked; + Configuration.Settings.General.ShowVideoPlayer = toolStripButtonToggleVideo.Checked; Refresh(); } - private void toolStripButtonToogleWaveForm_Click(object sender, EventArgs e) + private void toolStripButtonToggleWaveForm_Click(object sender, EventArgs e) { - toolStripButtonToogleWaveForm.Checked = !toolStripButtonToogleWaveForm.Checked; - AudioWaveForm.Visible = toolStripButtonToogleWaveForm.Checked; - trackBarWaveFormPosition.Visible = toolStripButtonToogleWaveForm.Checked; - panelWaveFormControls.Visible = toolStripButtonToogleWaveForm.Checked; - if (!toolStripButtonToogleWaveForm.Checked && !toolStripButtonToogleVideo.Checked) + toolStripButtonToggleWaveForm.Checked = !toolStripButtonToggleWaveForm.Checked; + AudioWaveForm.Visible = toolStripButtonToggleWaveForm.Checked; + trackBarWaveFormPosition.Visible = toolStripButtonToggleWaveForm.Checked; + panelWaveFormControls.Visible = toolStripButtonToggleWaveForm.Checked; + if (!toolStripButtonToggleWaveForm.Checked && !toolStripButtonToggleVideo.Checked) { if (_isVideoControlsUnDocked) ShowHideUnDockedVideoControls(); @@ -6999,7 +7002,7 @@ namespace Nikse.SubtitleEdit.Forms { ShowVideoPlayer(); } - Configuration.Settings.General.ShowWaveForm = toolStripButtonToogleWaveForm.Checked; + Configuration.Settings.General.ShowWaveForm = toolStripButtonToggleWaveForm.Checked; Refresh(); } @@ -7297,9 +7300,9 @@ namespace Nikse.SubtitleEdit.Forms if (!_isVideoControlsUnDocked) { - if (toolStripButtonToogleWaveForm.Checked) + if (toolStripButtonToggleWaveForm.Checked) AudioWaveForm.Left = tabControlButtons.Left + tabControlButtons.Width + 5; - if (!toolStripButtonToogleWaveForm.Checked && toolStripButtonToogleVideo.Checked) + if (!toolStripButtonToggleWaveForm.Checked && toolStripButtonToggleVideo.Checked) { panelVideoPlayer.Left = tabControlButtons.Left + tabControlButtons.Width + 5; panelVideoPlayer.Width = groupBoxVideo.Width - (panelVideoPlayer.Left + 10); @@ -7407,8 +7410,8 @@ namespace Nikse.SubtitleEdit.Forms private void Main_Shown(object sender, EventArgs e) { - toolStripButtonToogleVideo.Checked = !Configuration.Settings.General.ShowVideoPlayer; - toolStripButtonToogleVideo_Click(null, null); + toolStripButtonToggleVideo.Checked = !Configuration.Settings.General.ShowVideoPlayer; + toolStripButtonToggleVideo_Click(null, null); _timerAutoSave.Tick += TimerAutoSaveTick; if (Configuration.Settings.General.AutoBackupSeconds > 0) @@ -7791,7 +7794,7 @@ namespace Nikse.SubtitleEdit.Forms private void showhideWaveFormToolStripMenuItem_Click(object sender, EventArgs e) { - toolStripButtonToogleWaveForm_Click(null, null); + toolStripButtonToggleWaveForm_Click(null, null); } private void AudioWaveForm_DragEnter(object sender, DragEventArgs e) @@ -7947,7 +7950,7 @@ namespace Nikse.SubtitleEdit.Forms tb.SelectionLength = text.Length; } - private void TextBoxListViewToogleTag(string tag) + private void TextBoxListViewToggleTag(string tag) { TextBox tb; if (textBoxListViewTextAlternate.Focused) @@ -7975,17 +7978,17 @@ namespace Nikse.SubtitleEdit.Forms private void boldToolStripMenuItem1_Click(object sender, EventArgs e) { - TextBoxListViewToogleTag("b"); + TextBoxListViewToggleTag("b"); } private void italicToolStripMenuItem1_Click(object sender, EventArgs e) { - TextBoxListViewToogleTag("i"); + TextBoxListViewToggleTag("i"); } private void underlineToolStripMenuItem1_Click(object sender, EventArgs e) { - TextBoxListViewToogleTag("u"); + TextBoxListViewToggleTag("u"); } private void colorToolStripMenuItem1_Click(object sender, EventArgs e) @@ -8632,11 +8635,11 @@ namespace Nikse.SubtitleEdit.Forms private void undockVideoControlsToolStripMenuItem_Click(object sender, EventArgs e) { UnDockVideoPlayer(); - if (toolStripButtonToogleVideo.Checked) + if (toolStripButtonToggleVideo.Checked) _videoPlayerUnDocked.Show(this); UnDockWaveForm(); - if (toolStripButtonToogleWaveForm.Checked) + if (toolStripButtonToggleWaveForm.Checked) _waveFormUnDocked.Show(this); UnDockVideoButtons(); @@ -8689,10 +8692,10 @@ namespace Nikse.SubtitleEdit.Forms _videoControlsUnDocked = null; ShowVideoPlayer(); - AudioWaveForm.Visible = toolStripButtonToogleWaveForm.Checked; - trackBarWaveFormPosition.Visible = toolStripButtonToogleWaveForm.Checked; - panelWaveFormControls.Visible = toolStripButtonToogleWaveForm.Checked; - if (!toolStripButtonToogleVideo.Checked) + AudioWaveForm.Visible = toolStripButtonToggleWaveForm.Checked; + trackBarWaveFormPosition.Visible = toolStripButtonToggleWaveForm.Checked; + panelWaveFormControls.Visible = toolStripButtonToggleWaveForm.Checked; + if (!toolStripButtonToggleVideo.Checked) HideVideoPlayer(); mediaPlayer.Invalidate(); @@ -8702,14 +8705,14 @@ namespace Nikse.SubtitleEdit.Forms redockVideoControlsToolStripMenuItem.Visible = false; } - internal void SetWaveFormToogleOff() + internal void SetWaveFormToggleOff() { - toolStripButtonToogleWaveForm.Checked = false; + toolStripButtonToggleWaveForm.Checked = false; } - internal void SetVideoPlayerToogleOff() + internal void SetVideoPlayerToggleOff() { - toolStripButtonToogleVideo.Checked = false; + toolStripButtonToggleVideo.Checked = false; } private void toolStripMenuItemInsertSubtitle_Click(object sender, EventArgs e) @@ -8906,7 +8909,7 @@ namespace Nikse.SubtitleEdit.Forms } else { - TextBoxListViewToogleTag("i"); + TextBoxListViewToggleTag("i"); } } if (e.Modifiers == Keys.Control && e.KeyCode == Keys.D) diff --git a/src/Forms/Main.resx b/src/Forms/Main.resx index f6aaeb3cc..e7da99331 100644 --- a/src/Forms/Main.resx +++ b/src/Forms/Main.resx @@ -465,7 +465,7 @@ AABJRU5ErkJggg== - + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAf2SURBVFhH7Zd5TNTpHcaHpNkeAko8uQRUBBZnuAfm4JiB @@ -505,7 +505,7 @@ mMlsSRzpJ6QxpAmkZFLKWxJ7M4NZzIz7J9IxAuVcwHzYAAAAAElFTkSuQmCC - + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAWRSURBVFhH7ZZLSFZbFMcDkS5paeaj8pGa7zQr7W1p+X6/ @@ -580,9 +580,6 @@ 208, 56 - - 208, 56 - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 @@ -687,7 +684,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD2 - CAAAAk1TRnQBSQFMAgEBAgEAAWABAgFgAQIBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CAAAAk1TRnQBSQFMAgEBAgEAAYABAgGAAQIBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA diff --git a/src/Forms/SetMinimumDisplayTimeBetweenParagraphs.Designer.cs b/src/Forms/SetMinimumDisplayTimeBetweenParagraphs.Designer.cs index 9f727cb4a..83d1b1eac 100644 --- a/src/Forms/SetMinimumDisplayTimeBetweenParagraphs.Designer.cs +++ b/src/Forms/SetMinimumDisplayTimeBetweenParagraphs.Designer.cs @@ -84,7 +84,7 @@ 0, 0}); this.numericUpDownMinMillisecondsBetweenLines.Name = "numericUpDownMinMillisecondsBetweenLines"; - this.numericUpDownMinMillisecondsBetweenLines.Size = new System.Drawing.Size(64, 24); + this.numericUpDownMinMillisecondsBetweenLines.Size = new System.Drawing.Size(64, 21); this.numericUpDownMinMillisecondsBetweenLines.TabIndex = 34; this.numericUpDownMinMillisecondsBetweenLines.Value = new decimal(new int[] { 50, @@ -92,13 +92,14 @@ 0, 0}); this.numericUpDownMinMillisecondsBetweenLines.ValueChanged += new System.EventHandler(this.numericUpDownMinMillisecondsBetweenLines_ValueChanged); + this.numericUpDownMinMillisecondsBetweenLines.KeyUp += new System.Windows.Forms.KeyEventHandler(this.numericUpDownMinMillisecondsBetweenLines_KeyUp); // // labelMaxMillisecondsBetweenLines // this.labelMaxMillisecondsBetweenLines.AutoSize = true; this.labelMaxMillisecondsBetweenLines.Location = new System.Drawing.Point(15, 18); this.labelMaxMillisecondsBetweenLines.Name = "labelMaxMillisecondsBetweenLines"; - this.labelMaxMillisecondsBetweenLines.Size = new System.Drawing.Size(217, 17); + this.labelMaxMillisecondsBetweenLines.Size = new System.Drawing.Size(172, 13); this.labelMaxMillisecondsBetweenLines.TabIndex = 35; this.labelMaxMillisecondsBetweenLines.Text = "Mininum milliseconds between lines"; // @@ -129,9 +130,9 @@ // this.checkBoxShowOnlyChangedLines.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.checkBoxShowOnlyChangedLines.AutoSize = true; - this.checkBoxShowOnlyChangedLines.Location = new System.Drawing.Point(18, 444); + this.checkBoxShowOnlyChangedLines.Location = new System.Drawing.Point(18, 448); this.checkBoxShowOnlyChangedLines.Name = "checkBoxShowOnlyChangedLines"; - this.checkBoxShowOnlyChangedLines.Size = new System.Drawing.Size(178, 21); + this.checkBoxShowOnlyChangedLines.Size = new System.Drawing.Size(142, 17); this.checkBoxShowOnlyChangedLines.TabIndex = 38; this.checkBoxShowOnlyChangedLines.Text = "Show only modified lines"; this.checkBoxShowOnlyChangedLines.UseVisualStyleBackColor = true; @@ -139,7 +140,7 @@ // // SetMinimumDisplayTimeBetweenParagraphs // - this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 17F); + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(754, 480); this.Controls.Add(this.checkBoxShowOnlyChangedLines); diff --git a/src/Forms/SetMinimumDisplayTimeBetweenParagraphs.cs b/src/Forms/SetMinimumDisplayTimeBetweenParagraphs.cs index f650cab7a..804b9da25 100644 --- a/src/Forms/SetMinimumDisplayTimeBetweenParagraphs.cs +++ b/src/Forms/SetMinimumDisplayTimeBetweenParagraphs.cs @@ -47,8 +47,8 @@ namespace Nikse.SubtitleEdit.Forms public void Initialize(Subtitle subtitle) { _subtitle = subtitle; - - GeneratePreview(); + numericUpDownMinMillisecondsBetweenLines.Value = Configuration.Settings.General.MininumMillisecondsBetweenLines; +// GeneratePreview(); } private void GeneratePreview() @@ -87,6 +87,8 @@ namespace Nikse.SubtitleEdit.Forms } SubtitleListview1.EndUpdate(); FixCount = fixes.Count; + + groupBoxLinesFound.Text = minumumMillisecondsBetweenLines.ToString(); } private void buttonOK_Click(object sender, EventArgs e) @@ -111,12 +113,22 @@ namespace Nikse.SubtitleEdit.Forms private void numericUpDownMinMillisecondsBetweenLines_ValueChanged(object sender, EventArgs e) { GeneratePreview(); + Configuration.Settings.General.MininumMillisecondsBetweenLines = (int)numericUpDownMinMillisecondsBetweenLines.Value; } private void checkBoxShowOnlyChangedLines_CheckedChanged(object sender, EventArgs e) { GeneratePreview(); } + + private void numericUpDownMinMillisecondsBetweenLines_KeyUp(object sender, KeyEventArgs e) + { + numericUpDownMinMillisecondsBetweenLines.ValueChanged -= numericUpDownMinMillisecondsBetweenLines_ValueChanged; + GeneratePreview(); + numericUpDownMinMillisecondsBetweenLines.ValueChanged += numericUpDownMinMillisecondsBetweenLines_ValueChanged; + Configuration.Settings.General.MininumMillisecondsBetweenLines = (int)numericUpDownMinMillisecondsBetweenLines.Value; + } + } } diff --git a/src/Forms/VideoPlayerUnDocked.cs b/src/Forms/VideoPlayerUnDocked.cs index f67731ee9..d6e86939b 100644 --- a/src/Forms/VideoPlayerUnDocked.cs +++ b/src/Forms/VideoPlayerUnDocked.cs @@ -33,7 +33,7 @@ namespace Nikse.SubtitleEdit.Forms var control = panelContainer.Controls[0]; panelContainer.Controls.Clear(); _mainForm.ReDockVideoPlayer(control); - _mainForm.SetVideoPlayerToogleOff(); + _mainForm.SetVideoPlayerToggleOff(); } _positionsAndSizes.SavePositionAndSize(this); } diff --git a/src/Forms/VisualSync.Designer.cs b/src/Forms/VisualSync.Designer.cs index 4ec55d5f5..fd8566d85 100644 --- a/src/Forms/VisualSync.Designer.cs +++ b/src/Forms/VisualSync.Designer.cs @@ -58,6 +58,7 @@ namespace Nikse.SubtitleEdit.Forms this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); this.timer2 = new System.Windows.Forms.Timer(this.components); this.labelTip = new System.Windows.Forms.Label(); + this.timerProgressBarRefresh = new System.Windows.Forms.Timer(this.components); this.groupBoxStartScene.SuspendLayout(); this.panelControlsStart.SuspendLayout(); this.groupBoxEndScene.SuspendLayout(); @@ -352,6 +353,10 @@ namespace Nikse.SubtitleEdit.Forms this.labelTip.TabIndex = 15; this.labelTip.Text = "Tip: Use keys to move 100 ms back/forward"; // + // timerProgressBarRefresh + // + this.timerProgressBarRefresh.Tick += new System.EventHandler(this.timerProgressBarRefresh_Tick); + // // VisualSync // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -417,5 +422,6 @@ namespace Nikse.SubtitleEdit.Forms private Nikse.SubtitleEdit.Controls.VideoPlayerContainer MediaPlayerEnd; private System.Windows.Forms.Timer timer2; private System.Windows.Forms.Label labelTip; + private System.Windows.Forms.Timer timerProgressBarRefresh; } } \ No newline at end of file diff --git a/src/Forms/VisualSync.cs b/src/Forms/VisualSync.cs index 024dd3d4f..24e8039b9 100644 --- a/src/Forms/VisualSync.cs +++ b/src/Forms/VisualSync.cs @@ -180,6 +180,7 @@ namespace Nikse.SubtitleEdit.Forms Utilities.InitializeVideoPlayerAndContainer(MediaPlayerStart.VideoPlayer.VideoFileName, null, MediaPlayerEnd, VideoEndLoaded, VideoEndEnded); } timer1.Start(); + timerProgressBarRefresh.Start(); if (AudioTrackNumber > -1 && MediaPlayerStart.VideoPlayer is Nikse.SubtitleEdit.Logic.VideoPlayers.LibVlc11xDynamic) { @@ -262,7 +263,7 @@ namespace Nikse.SubtitleEdit.Forms private void FormVisualSync_FormClosing(object sender, FormClosingEventArgs e) { timer1.Stop(); - + timerProgressBarRefresh.Stop(); if (MediaPlayerStart != null) MediaPlayerStart.Pause(); if (MediaPlayerEnd != null) @@ -295,6 +296,7 @@ namespace Nikse.SubtitleEdit.Forms { e.Cancel = true; timer1.Start(); + timerProgressBarRefresh.Start(); } else if (dr == DialogResult.Yes) { @@ -591,12 +593,12 @@ namespace Nikse.SubtitleEdit.Forms if (_isStartSceneActive) { _startStopPosition = -1; - MediaPlayerStart.TooglePlayPause(); + MediaPlayerStart.TogglePlayPause(); } else { _endStopPosition = -1; - MediaPlayerStart.TooglePlayPause(); + MediaPlayerStart.TogglePlayPause(); } } else if (e.Modifiers == Keys.Alt && e.KeyCode == Keys.Left) @@ -650,9 +652,9 @@ namespace Nikse.SubtitleEdit.Forms else if (e.Modifiers == Keys.None && e.KeyCode == Keys.Space) { if (_isStartSceneActive) - MediaPlayerStart.TooglePlayPause(); + MediaPlayerStart.TogglePlayPause(); else - MediaPlayerEnd.TooglePlayPause(); + MediaPlayerEnd.TogglePlayPause(); e.SuppressKeyPress = true; } } @@ -724,5 +726,17 @@ namespace Nikse.SubtitleEdit.Forms OKPressed = true; } + private void timerProgressBarRefresh_Tick(object sender, EventArgs e) + { + if (MediaPlayerStart.VideoPlayer != null) // && MediaPlayerStart.VideoPlayer.GetType() == typeof(Nikse.SubtitleEdit.Logic.VideoPlayers.QuartsPlayer)) + { + MediaPlayerStart.RefreshProgressBar(); + } + if (MediaPlayerEnd.VideoPlayer != null) // && MediaPlayerEnd.VideoPlayer.GetType() == typeof(Nikse.SubtitleEdit.Logic.VideoPlayers.QuartsPlayer)) + { + MediaPlayerEnd.RefreshProgressBar(); + } + } + } } diff --git a/src/Forms/VisualSync.resx b/src/Forms/VisualSync.resx index c868a2e06..04976f31e 100644 --- a/src/Forms/VisualSync.resx +++ b/src/Forms/VisualSync.resx @@ -126,4 +126,7 @@ 240, 17 + + 327, 17 + \ No newline at end of file diff --git a/src/Forms/WaveFormUnDocked.cs b/src/Forms/WaveFormUnDocked.cs index 70876b386..e94e5d819 100644 --- a/src/Forms/WaveFormUnDocked.cs +++ b/src/Forms/WaveFormUnDocked.cs @@ -39,7 +39,7 @@ namespace Nikse.SubtitleEdit.Forms var controlTrackBar = panelContainer.Controls[2]; panelContainer.Controls.Clear(); _mainForm.ReDockWaveForm(controlWaveForm, controlButtons, controlTrackBar); - _mainForm.SetWaveFormToogleOff(); + _mainForm.SetWaveFormToggleOff(); } _positionsAndSizes.SavePositionAndSize(this); } diff --git a/src/Logic/Settings.cs b/src/Logic/Settings.cs index 665d10d38..3fb44ef65 100644 --- a/src/Logic/Settings.cs +++ b/src/Logic/Settings.cs @@ -230,6 +230,7 @@ namespace Nikse.SubtitleEdit.Logic public bool StartInSourceView { get; set; } public bool RemoveBlankLinesWhenOpening { get; set; } public int SubtitleLineMaximumLength { get; set; } + public int MininumMillisecondsBetweenLines { get; set; } public bool AutoWrapLineWhileTyping { get; set; } public int SubtitleMaximumCharactersPerSeconds { get; set; } public string SpellCheckLanguage { get; set; } @@ -280,6 +281,7 @@ namespace Nikse.SubtitleEdit.Logic StartLoadLastFile = true; StartRememberPositionAndSize = true; SubtitleLineMaximumLength = 43; + MininumMillisecondsBetweenLines = 25; AutoWrapLineWhileTyping = true; SubtitleMaximumCharactersPerSeconds = 25; SpellCheckLanguage = null; @@ -606,6 +608,9 @@ namespace Nikse.SubtitleEdit.Logic subNode = node.SelectSingleNode("SubtitleLineMaximumLength"); if (subNode != null) settings.General.SubtitleLineMaximumLength = Convert.ToInt32(subNode.InnerText); + subNode = node.SelectSingleNode("SubtitleLineMaximumLength"); + if (subNode != null) + settings.General.SubtitleLineMaximumLength = Convert.ToInt32(subNode.InnerText); subNode = node.SelectSingleNode("AutoWrapLineWhileTyping"); if (subNode != null) settings.General.AutoWrapLineWhileTyping = Convert.ToBoolean(subNode.InnerText); @@ -957,6 +962,7 @@ namespace Nikse.SubtitleEdit.Logic textWriter.WriteElementString("StartInSourceView", settings.General.StartInSourceView.ToString()); textWriter.WriteElementString("RemoveBlankLinesWhenOpening", settings.General.RemoveBlankLinesWhenOpening.ToString()); textWriter.WriteElementString("SubtitleLineMaximumLength", settings.General.SubtitleLineMaximumLength.ToString()); + textWriter.WriteElementString("SubtitleLineMaximumLength", settings.General.MininumMillisecondsBetweenLines.ToString()); textWriter.WriteElementString("AutoWrapLineWhileTyping", settings.General.AutoWrapLineWhileTyping.ToString()); textWriter.WriteElementString("SubtitleMaximumCharactersPerSeconds", settings.General.SubtitleMaximumCharactersPerSeconds.ToString()); textWriter.WriteElementString("SpellCheckLanguage", settings.General.SpellCheckLanguage); diff --git a/src/Resources/fa-IR.xml b/src/Resources/fa-IR.xml new file mode 100644 index 000000000..8c0132a21 --- /dev/null +++ b/src/Resources/fa-IR.xml @@ -0,0 +1,1852 @@ + + + + ویرایشگر زیرنویس + 3.1 + + + fa-IR + تائید + لغو + اعمال + هیچ کدام + پیشنمایش + فایلهای زیرنویس + همه فایل ها + فایلهای ویدئویی + باز کردن زیرنویس + باز کردن فایل های ویدئویی... + هیچ فایل ویدئویی لود نشد + اطلاعات ویدئو + موقعیت / مدت زمان : {0} + زمان شروع + زمان پایان + مدت زمان + شماره + متن + ساعت : دقیقه : ثانیه : میلی ثانیه + توپر + کج + قابل رویت + تعداد فریم در ثانیه + نام + نام فایل : {0} ({1}) + وضوح تصویر : {0} + تعداد فریم در ثانیه: {0:0.0###} + تعداد کل فریم: {0:#,##0.##} + نوع رمزگذاری ویدئو : {0} + طول یک خط : + طول کل : {0} + طول کل : {0} (خط تقسیم!) + غیر قابل دسترس + همپوشانی خط قبلی({0:#,##0.###}) + همپوشانی ({0:#,##0.###}) + همپوشانی بعدی ({0:#,##0.###}) + منفی + عبارت منظم معتبر نیست! + زیرنویس ذخیره شد + زیرنویس کنونی + متن اصلی + باز کردن فایل زیرنویس اصلی... + لطفا صبر کنید... + کلید جلسه + نام کاربری + آدرس سرویس وب + آی پی + + + درباره برنامه + این برنامه، نرم افزار رایگان تحت مجوز عمومی GNU. + شما می توانید به رایگان آنرا توزیع ، اصلاح و استفاده نمایند. + +سورس کد سی شارپ آن در آدرس زیر در دسترس است: +http://code.google.com/p/subtitleedit + +برای دریافت آخرین نسخه به www.nikse.dk سر بزنید. + +پیشنهادات شما را پذیرا هستم. + + پست الکترونیکی : mailto:nikse.dk@gmail.com + + + اضافه کردن به لیست نام/غیره + اضافه کردن به لیست نام/صدا + + + ایجاد کردن موج از اطلاعات + منبع فایل تصویری : + ایجاد کردن موج از اطلاعات + این کار ممکن است چند دقیقه وقت بگیرد - لطفا صبر کنید + وی ال سی مدیا پلیر پیدا نشد + برنامه به وی ال سی مدیا پلیر (1.1) برای استخراج داده های صوتی احتیاج دارد. + آیا می خواهید برای رفتن به صفحه دستگاه پخش رسانه ای وی ال خانه؟ + تولید فایل اوج... + استخراج صدا: {0:0.0} ثانیه + استخراج صدا: {0}.{1:00} دقیقخ + + + تنظیم مدت زمان + تنظیم وسیله (via) + ثانیه + درصد + اضافه کردن ثانیه + تنظیم به عنوان درصد مدت زمان + توجه : زمان نمایش با زمان شروع متن بعدی نمی تواند تداخل داشته باشد. + لطفا یک مقدار از لیست را انتخاب کنید + -- لطفا انتخاب کنید -- + + + متعادل کردن اوتوماتیک خطوط انتخاب شده + گزارش پرش به خط از خطوط انتخاب شده + خط # + قبل از + پس از + خطوط یافت شده: {0} + بشکن فقط خطوط بزرگتر از + نشکن فقط خطوط کوچکتر از + + + تغییر پوشش + تغییر پوشش به + پوشش معمولی. جملات لاتین با حروف بزرگ آغاز خواهد شد. + پوشش اسامی را ثابت کن (از طریق \Dictionaries\NamesEtc.xml) + تنها پوشش اسامی را ثابت کن (از طریق \Dictionaries\NamesEtc.xml) + فقط تمام خطوط با حروف بزرگ را تغییر دهید. + همه با حروف بزرگ + حروف با حروف کوچک + + + تغییر کوچک و بزرگی - اسامی + اسامی موجود در زیرنویس : {0} + توانا + نام + خط # + قبل از + پس از + خطوط یافت شده : {0} + + + تغییر نرخ فریم + تبدیل نرخ فریم زیرنویس + از فریم + به فریم + فریم وارد شده صحیح نیست + فریم ها با هم برابرند - دقت کن عزیز + + + نوع رمزگذاری فایل را انتخاب کنید + صفحه کد + نام نمایشی + لطفا یک نوع رمزگذاری را انتخاب کنید + + + یک زبان را انتخاب کنید + زبان + + + مقایسه زیرنویسها + تفاوت قبلی + تفاوت بعدی + زیرنویسها هیچ شباهت + تعداد تفاوت : {0} + فقط تفاوت ها را نمایش بده + فقط برای تفاوت های موجود در متن نگاه کن + + + تبدیل زیرنویسها از ifo/vobs (دی وی دی) + فایلها/اطلاعات دی وی دی + فایل IFO + فایل های IFO + فایل های VOB + اضافه کن... + حذف کن + حذف کن + حرکت به بالا + حرکت به پایین + زبان ها + PAL/NTSC + PAL (25fps) + NTSC (30fps) + شروع کردن تبدیل + انصراف + انصراف توسط کاربر + در حال خواندن اطلاعات... + تبدیل فایلهای وی او بی {1} of {2}: {0} + نوعIFO '{0}' است و نه'DVDVIDEO-VTS'.{1}فایل دیگری را امتحان کنید {2} + + + زبان را انتخاب کنید + زبان را انتخاب کنید (stream-id) + زبان ناشناخته است + تصویر زیرنویس {0}/{1} - {2}x{3} + تصویر زیرنویس + + + اثر کارائوکه + انتخاب رنگ: + تعداد میلی ثانیه: + پایان تأخیر در میلی ثانیه: + + + اثر ماشین تحریر + تعداد میلی ثانیه: + پایان تأخیر در میلی ثانیه: + + + جستجو + جستجو + عادی + حساس به بزرگی کوچکی حروف + عبارت معمولی + + + یافتن خط زیرنویس + جستجو کن + یافتن بعدی + + + تعمیر خطاهای رایج + مرحله اول -- اخطاری را انتخاب کنید تا رفع شوید. + چه چیزی را باید تعمیر کرد + مثال + انتخاب همه + انتخاب معکوس + قبلی + بعدی + گام دوم -- تائید تغییرات + اصلاح شده ها + Log + خط # + تابع + قبل از + پس از + خط خالی حذف شده + خط خالی حذف شده از بالا + خط خالی حذف شده از پایین + خطهای خالی را حذف کن + خطوط خالی حذف شده : {0} + زمانهای هم پوشانی را اصلاح کن + اصلاح زمانهای کوتاه نمایش + اصلاح زمانهای طولانی نمایش + اصلاح علائم کج کننده (Italic) + حذف فاصله های غیر ضروری + حذف دوره های غیر ضروری + گذاشتن فاصله های لازم + شکستن خطوط طولانی + حذف پرش به خط بعد در متون کوتاه با تنها یک جمله + گزارش پرش به خط بعد در متون کوتاه (همه به جز گفت وگو ها) + Fix uppercase 'i' inside lowercase words (ocr error) + جایگزین کردن دو علامت (') با یک علامت نقل قول (") + اضافه کردن مدت زمان اگر شروع خط بعدی با حرف بزرگ باشد + شروع با حرف بزرگ پس از یک پاراگراف + شروع با حرف بزرگ پس از دوره در داخل پاراگراف + Fix alone lowercase 'i' to 'I' (English) + تعمیر خطاهای او سی آر (با استفاده از لیست جایگزین او سی آر) + اشتباهات او سی آر معمول رفع شد (پرونده OcrReplaceList استفاده می شود) : {0} + Fix Danish letter 'i' + اصلاح علامت سوال و تعجب وارونه اسپانیایی + اضافه کردن نقل قول فراموش شده (") + اضافه کردن نقل قول های فراموش شده (") + اصلاح خطوطی که با خط تیره شروع می شوند (-) + اصلاح خطی که با خط تیره شروع می شوند (-) + خط تیره اصلاح شده : {0} + "How are you? -> "How are you?" + نقل قول های فراموش شده افزوده شد: {0} + اصلاح زیرنویسهایی با بیش از دو خط + اصلاح زیرنویسی با بیش از دو خط + زیرنویسهایی با بیش از دو خط اصلاح شد : {0} + در حال تجزیه و تحلیل... + هیچ چیز برای اصلاح یافت نشد :) + برای تصحیح پیدا شد : {0} + تصحیح ها انجام شد : {0} + چیزی برای تصحیح پیدا نشد اما چند چیز می تواند بهبود یابد - نوشته (log) را برای جزییات ببینید. + + + ادامه + در هر صورت ادامه میدهید؟ + + + + + + + ادغام خطوط کوتاه (عبارات تکی) + ادغام خطوط کوتاه (عبارات تکی دیالوگها) + {0} خط شکسته شد (بدلیل طولانی بودن) + خطوط طولانی را بشکن + تصحیح زمانهای نمایش طولانی + تصحیح برچسبهای کج (ایتالیک) نامعتبر + تصحیح زمانهای نمایش کوتاه + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + اصلاح '--' به '...' + حذف << + حذف '...' + گذاشتن [ فراموش شده + جابجایی علائم موسیقی (مثل ª) با نمادهای دیگر + اصلاح '--'ها به '...'ها + حذف << از ابتدا + حذف... از آغاز + گذاشتن [های فراموش شده + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + بعدی> + قسمت کردن خودکار + قسمت نکن + + + ترجمه کن + ایجاد کن + تنظیم کن + انتخاب زیرنویس جاری در حال اجرا + تکرار خودکار + تکرار خودکار در + تعداد تکرار (بار) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + شماره خط: {0:#,##0.##} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + قبل از وارد کردن زیرنویس از دی وی دی + باز کردن فایل Matroska... + فایل‌های Matroska + زیرنویسی پیدا نشد + این فایل matroska معتبر نمی باشد. : {0} + تجزیه فایل Matroska. لطفا صبر کنید... + قبل از وارد کردن زیرنویس از فایل Matroska + زیرنویس های وارد شده از فایل Matroska + اضافه کردن فایل '{0}' پذیرفته نیست -- فایل بسیار بزرگ است + شما فقط می توانید یک فایل انتخاب کنید + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + کاراکتر/ثانیه: {0:0.00} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + حداکثر طول یک خط + بسته بندی خودکار در حال تایپ + نوع قلم + اندازه قلم + رنگ قلم + رنگ پس زمینه + کنترل کننده املا (برای کلمات انگلیسی) + به یاد داشتن فایل های اخیر (برای بازگشایی دوباره) + شروع با آخرین فایل لود شده + به یاد داشتن خط انتخاب شده + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + همگام سازی + ½ ثانیه> + 3 ثانیه> + اجرا {0} ثانیه و قبل + یافتن بعدی + برو به مکان زیرنویس + ذخیره‌ی تغییرات؟ + تغییرات ایجاد شده بر روی زیرنویس در 'Visual sync'. + همگام سازی انجام شد! + صحنه شروع باید قبل از پایان صحنه بیاید! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + راست به چپ + فقط نمایش زیرنویسهای اجباری + استفاده از زمان‌‌‌های فایل idx + + + VobSub -- تبدیل تصویر به متن بطور دستی + انتخاب کوچک (Shrink) + انتخاب باز (Expand) + + + + + + + + + لغو + + + پوشه جدید + نام پوشه پایگاه داده جدید + + + برای اضافه کردن شکل موج (waveform) کلیک کنید + ثانیه + بزرگ کردن + کوچک کردن + متن را در اینجا اضافه کنید + حذف متن + اسپلیت (Split) + اسپلیت در مکان نما + ادغام با قبلی + ادغام با بعدی + اجرای انتخاب شده ها + +
\ No newline at end of file diff --git a/src/Resources/fa-IR.xml.zip b/src/Resources/fa-IR.xml.zip new file mode 100644 index 0000000000000000000000000000000000000000..3d7fa2e9f68b262a598ddad686302bfaa9207822 GIT binary patch literal 15893 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 ba$n#t+po*5%t7x1BF{^`DkGx + Designer @@ -853,6 +854,7 @@ +