diff --git a/src/libse/Common/Settings.cs b/src/libse/Common/Settings.cs index a094b2427..33f5ed204 100644 --- a/src/libse/Common/Settings.cs +++ b/src/libse/Common/Settings.cs @@ -506,6 +506,7 @@ namespace Nikse.SubtitleEdit.Core.Common public class SubtitleSettings { public List AssaStyleStorageCategories { get; set; } + public List AssaOverrideTagHistory { get; set; } public string DCinemaFontFile { get; set; } public string DCinemaLoadFontResource { get; set; } @@ -579,6 +580,7 @@ namespace Nikse.SubtitleEdit.Core.Common public SubtitleSettings() { AssaStyleStorageCategories = new List(); + AssaOverrideTagHistory = new List(); DCinemaFontFile = "Arial.ttf"; DCinemaLoadFontResource = "urn:uuid:3dec6dc0-39d0-498d-97d0-928d2eb78391"; @@ -2039,6 +2041,7 @@ $HorzAlign = Center public string MainListViewColumnTextDown { get; set; } public string MainListViewGoToNextError { get; set; } public string MainListViewRemoveBlankLines { get; set; } + public string ApplyAssaOverrideTags { get; set; } public string MainListViewRemoveTimeCodes { get; set; } public string MainTextBoxSplitAtCursor { get; set; } public string MainTextBoxSplitAtCursorAndVideoPos { get; set; } @@ -5258,6 +5261,15 @@ $HorzAlign = Center } } + foreach (XmlNode tagNode in node.SelectNodes("AssaApplyOverrideTags/Tag")) + { + var tag = tagNode.InnerText; + if (!string.IsNullOrWhiteSpace(tag)) + { + settings.SubtitleSettings.AssaOverrideTagHistory.Add(tag); + } + } + subNode = node.SelectSingleNode("DCinemaFontFile"); if (subNode != null) { @@ -7538,6 +7550,12 @@ $HorzAlign = Center shortcuts.MainListViewRemoveBlankLines = subNode.InnerText; } + subNode = node.SelectSingleNode("ApplyAssaOverrideTags"); + if (subNode != null) + { + shortcuts.ApplyAssaOverrideTags = subNode.InnerText; + } + subNode = node.SelectSingleNode("MainListViewRemoveTimeCodes"); if (subNode != null) { @@ -8741,6 +8759,13 @@ $HorzAlign = Center } textWriter.WriteEndElement(); + textWriter.WriteStartElement("AssaApplyOverrideTags", string.Empty); + foreach (var tag in settings.SubtitleSettings.AssaOverrideTagHistory) + { + textWriter.WriteElementString("Tag", tag); + } + textWriter.WriteEndElement(); + textWriter.WriteElementString("DCinemaFontFile", settings.SubtitleSettings.DCinemaFontFile); textWriter.WriteElementString("DCinemaFontSize", settings.SubtitleSettings.DCinemaFontSize.ToString(CultureInfo.InvariantCulture)); textWriter.WriteElementString("DCinemaBottomMargin", settings.SubtitleSettings.DCinemaBottomMargin.ToString(CultureInfo.InvariantCulture)); @@ -9172,6 +9197,7 @@ $HorzAlign = Center textWriter.WriteElementString("MainListViewColumnTextDown", shortcuts.MainListViewColumnTextDown); textWriter.WriteElementString("MainListViewGoToNextError", shortcuts.MainListViewGoToNextError); textWriter.WriteElementString("MainListViewRemoveBlankLines", shortcuts.MainListViewRemoveBlankLines); + textWriter.WriteElementString("ApplyAssaOverrideTags", shortcuts.ApplyAssaOverrideTags); textWriter.WriteElementString("MainListViewRemoveTimeCodes", shortcuts.MainListViewRemoveTimeCodes); textWriter.WriteElementString("MainEditFixRTLViaUnicodeChars", shortcuts.MainEditFixRTLViaUnicodeChars); textWriter.WriteElementString("MainEditRemoveRTLUnicodeChars", shortcuts.MainEditRemoveRTLUnicodeChars); diff --git a/src/ui/Forms/Assa/AdvancedSelectionHelper.Designer.cs b/src/ui/Forms/Assa/AdvancedSelectionHelper.Designer.cs new file mode 100644 index 000000000..413d47b53 --- /dev/null +++ b/src/ui/Forms/Assa/AdvancedSelectionHelper.Designer.cs @@ -0,0 +1,193 @@ + +namespace Nikse.SubtitleEdit.Forms.Assa +{ + partial class AdvancedSelectionHelper + { + /// + /// 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.comboBoxRule = new System.Windows.Forms.ComboBox(); + this.listViewStyles = new System.Windows.Forms.ListView(); + this.columnHeaderStyleName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.groupBoxPreview = new System.Windows.Forms.GroupBox(); + this.listViewFixes = new System.Windows.Forms.ListView(); + this.columnHeaderApply = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeaderLine = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeaderText = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeaderStyle = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.buttonCancel = new System.Windows.Forms.Button(); + this.buttonOK = new System.Windows.Forms.Button(); + this.groupBoxPreview.SuspendLayout(); + this.SuspendLayout(); + // + // comboBoxRule + // + this.comboBoxRule.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBoxRule.FormattingEnabled = true; + this.comboBoxRule.Items.AddRange(new object[] { + "Contains", + "Starts with", + "Ends with", + "Not contains", + "RegEx"}); + this.comboBoxRule.Location = new System.Drawing.Point(12, 32); + this.comboBoxRule.Name = "comboBoxRule"; + this.comboBoxRule.Size = new System.Drawing.Size(308, 21); + this.comboBoxRule.TabIndex = 4; + this.comboBoxRule.SelectedIndexChanged += new System.EventHandler(this.comboBoxRule_SelectedIndexChanged); + // + // listViewStyles + // + this.listViewStyles.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.listViewStyles.CheckBoxes = true; + this.listViewStyles.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeaderStyleName}); + this.listViewStyles.FullRowSelect = true; + this.listViewStyles.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; + this.listViewStyles.HideSelection = false; + this.listViewStyles.Location = new System.Drawing.Point(12, 59); + this.listViewStyles.Name = "listViewStyles"; + this.listViewStyles.Size = new System.Drawing.Size(308, 425); + this.listViewStyles.TabIndex = 5; + this.listViewStyles.UseCompatibleStateImageBehavior = false; + this.listViewStyles.View = System.Windows.Forms.View.Details; + this.listViewStyles.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.listViewStyles_ItemChecked); + // + // 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.listViewFixes); + this.groupBoxPreview.Location = new System.Drawing.Point(326, 32); + this.groupBoxPreview.Name = "groupBoxPreview"; + this.groupBoxPreview.Size = new System.Drawing.Size(681, 455); + this.groupBoxPreview.TabIndex = 7; + this.groupBoxPreview.TabStop = false; + this.groupBoxPreview.Text = "Matching lines"; + // + // 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.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeaderApply, + this.columnHeaderLine, + this.columnHeaderText, + this.columnHeaderStyle}); + this.listViewFixes.FullRowSelect = true; + this.listViewFixes.HideSelection = false; + this.listViewFixes.Location = new System.Drawing.Point(3, 16); + this.listViewFixes.Name = "listViewFixes"; + this.listViewFixes.Size = new System.Drawing.Size(675, 436); + this.listViewFixes.TabIndex = 1; + this.listViewFixes.UseCompatibleStateImageBehavior = false; + this.listViewFixes.View = System.Windows.Forms.View.Details; + // + // columnHeaderApply + // + this.columnHeaderApply.Text = "Apply"; + this.columnHeaderApply.Width = 50; + // + // columnHeaderLine + // + this.columnHeaderLine.Text = "Line#"; + this.columnHeaderLine.Width = 80; + // + // columnHeaderText + // + this.columnHeaderText.Text = "Text"; + this.columnHeaderText.Width = 450; + // + // columnHeaderStyle + // + this.columnHeaderStyle.Text = "Style"; + // + // buttonCancel + // + this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.buttonCancel.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.buttonCancel.Location = new System.Drawing.Point(932, 493); + this.buttonCancel.Name = "buttonCancel"; + this.buttonCancel.Size = new System.Drawing.Size(75, 23); + this.buttonCancel.TabIndex = 9; + 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(847, 493); + this.buttonOK.Name = "buttonOK"; + this.buttonOK.Size = new System.Drawing.Size(75, 23); + this.buttonOK.TabIndex = 8; + this.buttonOK.Text = "&OK"; + this.buttonOK.UseVisualStyleBackColor = true; + this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click); + // + // AdvancedSelectionHelper + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1019, 528); + this.Controls.Add(this.groupBoxPreview); + this.Controls.Add(this.buttonCancel); + this.Controls.Add(this.buttonOK); + this.Controls.Add(this.comboBoxRule); + this.Controls.Add(this.listViewStyles); + this.KeyPreview = true; + this.MinimumSize = new System.Drawing.Size(1000, 567); + this.Name = "AdvancedSelectionHelper"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "AdvancedSelectionHelper"; + this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.AdvancedSelectionHelper_KeyDown); + this.groupBoxPreview.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.ComboBox comboBoxRule; + private System.Windows.Forms.ListView listViewStyles; + private System.Windows.Forms.ColumnHeader columnHeaderStyleName; + private System.Windows.Forms.GroupBox groupBoxPreview; + private System.Windows.Forms.ListView listViewFixes; + private System.Windows.Forms.ColumnHeader columnHeaderApply; + private System.Windows.Forms.ColumnHeader columnHeaderLine; + private System.Windows.Forms.ColumnHeader columnHeaderText; + private System.Windows.Forms.ColumnHeader columnHeaderStyle; + private System.Windows.Forms.Button buttonCancel; + private System.Windows.Forms.Button buttonOK; + } +} \ No newline at end of file diff --git a/src/ui/Forms/Assa/AdvancedSelectionHelper.cs b/src/ui/Forms/Assa/AdvancedSelectionHelper.cs new file mode 100644 index 000000000..a92281ad9 --- /dev/null +++ b/src/ui/Forms/Assa/AdvancedSelectionHelper.cs @@ -0,0 +1,191 @@ +using Nikse.SubtitleEdit.Core.Common; +using Nikse.SubtitleEdit.Core.SubtitleFormats; +using Nikse.SubtitleEdit.Logic; +using System.Collections.Generic; +using System.Linq; +using System.Windows.Forms; + +namespace Nikse.SubtitleEdit.Forms.Assa +{ + public partial class AdvancedSelectionHelper : Form + { + public int[] Indices { get; private set; } + private readonly Subtitle _subtitle; + private bool _loading; + private const int FunctionStyle = 0; + private const int FunctionActor = 1; + + public AdvancedSelectionHelper(Subtitle subtitle) + { + UiUtil.PreInitialize(this); + InitializeComponent(); + UiUtil.FixFonts(this); + + _loading = true; + _subtitle = subtitle; + Indices = new int[0]; + buttonOK.Text = LanguageSettings.Current.General.Ok; + buttonCancel.Text = LanguageSettings.Current.General.Cancel; + columnHeaderApply.Text = LanguageSettings.Current.General.Apply; + columnHeaderLine.Text = LanguageSettings.Current.General.LineNumber; + columnHeaderText.Text = LanguageSettings.Current.General.Text; + UiUtil.FixLargeFonts(this, buttonOK); + + comboBoxRule.Items.Clear(); + comboBoxRule.Items.Add(LanguageSettings.Current.General.Style); + comboBoxRule.Items.Add(LanguageSettings.Current.General.Actor); + comboBoxRule.SelectedIndex = 0; + + _loading = false; + Preview(); + } + + private void Preview() + { + if (_loading) + { + return; + } + + var listViewItems = new List(); + listViewFixes.BeginUpdate(); + listViewFixes.Items.Clear(); + var styles = new List(); + var actors = new List(); + if (comboBoxRule.SelectedIndex == FunctionStyle) // Select styles + { + foreach (ListViewItem item in listViewStyles.Items) + { + if (item != null && item.Checked) + { + styles.Add(item.Text); + } + } + } + else if (comboBoxRule.SelectedIndex == FunctionActor) // Select actors + { + foreach (ListViewItem item in listViewStyles.Items) + { + if (item != null && item.Checked) + { + actors.Add(item.Text); + } + } + } + + var indices = new List(); + for (int i = 0; i < _subtitle.Paragraphs.Count; i++) + { + var p = _subtitle.Paragraphs[i]; + + if (comboBoxRule.SelectedIndex == FunctionStyle) // Select styles + { + if (styles.Contains(string.IsNullOrEmpty(p.Style) ? p.Extra : p.Style)) + { + listViewItems.Add(MakeListViewItem(p, i)); + indices.Add(i); + } + } + else if (comboBoxRule.SelectedIndex == FunctionActor) // Select actors + { + if (actors.Contains(p.Actor)) + { + listViewItems.Add(MakeListViewItem(p, i)); + indices.Add(i); + } + } + } + + Indices = indices.ToArray(); + listViewFixes.Items.AddRange(listViewItems.ToArray()); + listViewFixes.EndUpdate(); + groupBoxPreview.Text = string.Format(LanguageSettings.Current.ModifySelection.MatchingLinesX, listViewFixes.Items.Count); + listViewFixes.AutoSizeLastColumn(); + } + + private ListViewItem MakeListViewItem(Paragraph p, int index) + { + var item = new ListViewItem(string.Empty) { Tag = index, Checked = true }; + item.SubItems.Add(p.Number.ToString()); + item.SubItems.Add(UiUtil.GetListViewTextFromString(p.Text)); + item.SubItems.Add(string.IsNullOrEmpty(p.Style) ? p.Extra : p.Style); + return item; + } + + private void comboBoxRule_SelectedIndexChanged(object sender, System.EventArgs e) + { + if (comboBoxRule.SelectedIndex == FunctionStyle) + { + listViewStyles.Visible = true; + listViewStyles.BringToFront(); + FillStyles(); + } + else if (comboBoxRule.SelectedIndex == FunctionActor) + { + listViewStyles.Visible = true; + listViewStyles.BringToFront(); + FillActors(); + } + + Preview(); + } + + private void FillStyles() + { + listViewStyles.AutoSizeLastColumn(); + var styles = AdvancedSubStationAlpha.GetStylesFromHeader(_subtitle.Header); + var oldLoading = _loading; + _loading = true; + listViewStyles.Items.Clear(); + listViewStyles.Items.AddRange(styles.OrderBy(p => p).Select(p => new ListViewItem { Text = p }).ToArray()); + _loading = oldLoading; + } + + private void FillActors() + { + listViewStyles.AutoSizeLastColumn(); + var actors = new List(); + foreach (var paragraph in _subtitle.Paragraphs) + { + if (!string.IsNullOrEmpty(paragraph.Actor) && !actors.Contains(paragraph.Actor)) + { + actors.Add(paragraph.Actor); + } + } + + var oldLoading = _loading; + _loading = true; + listViewStyles.Items.Clear(); + listViewStyles.Items.AddRange(actors.OrderBy(p => p).Select(p => new ListViewItem { Text = p }).ToArray()); + _loading = oldLoading; + } + + private void listViewStyles_ItemChecked(object sender, ItemCheckedEventArgs e) + { + Preview(); + } + + private void buttonCancel_Click(object sender, System.EventArgs e) + { + DialogResult = DialogResult.Cancel; + } + + private void buttonOK_Click(object sender, System.EventArgs e) + { + DialogResult = DialogResult.OK; + } + + private void AdvancedSelectionHelper_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Escape) + { + DialogResult = DialogResult.Cancel; + } + else if (e.KeyData == UiUtil.HelpKeys) + { + UiUtil.ShowHelp(string.Empty); + e.SuppressKeyPress = true; + } + } + } +} diff --git a/src/ui/Forms/Assa/AdvancedSelectionHelper.resx b/src/ui/Forms/Assa/AdvancedSelectionHelper.resx new file mode 100644 index 000000000..1af7de150 --- /dev/null +++ b/src/ui/Forms/Assa/AdvancedSelectionHelper.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/Assa/ApplyCustomStyles.Designer.cs b/src/ui/Forms/Assa/ApplyCustomStyles.Designer.cs new file mode 100644 index 000000000..8488bd95e --- /dev/null +++ b/src/ui/Forms/Assa/ApplyCustomStyles.Designer.cs @@ -0,0 +1,239 @@ + +namespace Nikse.SubtitleEdit.Forms.Assa +{ + partial class ApplyCustomStyles + { + /// + /// 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.groupBox1 = new System.Windows.Forms.GroupBox(); + this.labelAdvancedSelection = new System.Windows.Forms.Label(); + this.buttonAdvancedSelection = new System.Windows.Forms.Button(); + this.radioButtonAdvancedSelection = new System.Windows.Forms.RadioButton(); + this.radioButtonAllLines = new System.Windows.Forms.RadioButton(); + this.radioButtonSelectedLines = new System.Windows.Forms.RadioButton(); + this.groupBoxPreview = new System.Windows.Forms.GroupBox(); + this.labelOverrideTags = new System.Windows.Forms.Label(); + this.buttonOK = new System.Windows.Forms.Button(); + this.buttonCancel = new System.Windows.Forms.Button(); + this.buttonHistory = new System.Windows.Forms.Button(); + this.seTextBox1 = new Nikse.SubtitleEdit.Controls.SETextBox(); + this.groupBox1.SuspendLayout(); + this.SuspendLayout(); + // + // groupBox1 + // + this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox1.Controls.Add(this.labelAdvancedSelection); + this.groupBox1.Controls.Add(this.buttonAdvancedSelection); + this.groupBox1.Controls.Add(this.radioButtonAdvancedSelection); + this.groupBox1.Controls.Add(this.radioButtonAllLines); + this.groupBox1.Controls.Add(this.radioButtonSelectedLines); + this.groupBox1.Location = new System.Drawing.Point(540, 40); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(246, 156); + this.groupBox1.TabIndex = 1; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Apply to"; + // + // labelAdvancedSelection + // + this.labelAdvancedSelection.AutoSize = true; + this.labelAdvancedSelection.Location = new System.Drawing.Point(24, 87); + this.labelAdvancedSelection.Name = "labelAdvancedSelection"; + this.labelAdvancedSelection.Size = new System.Drawing.Size(122, 13); + this.labelAdvancedSelection.TabIndex = 7; + this.labelAdvancedSelection.Text = "labelAdvancedSelection"; + // + // buttonAdvancedSelection + // + this.buttonAdvancedSelection.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonAdvancedSelection.Location = new System.Drawing.Point(132, 64); + this.buttonAdvancedSelection.Name = "buttonAdvancedSelection"; + this.buttonAdvancedSelection.Size = new System.Drawing.Size(29, 23); + this.buttonAdvancedSelection.TabIndex = 7; + this.buttonAdvancedSelection.Text = "..."; + this.buttonAdvancedSelection.UseVisualStyleBackColor = true; + this.buttonAdvancedSelection.Click += new System.EventHandler(this.buttonAdvancedSelection_Click); + // + // radioButtonAdvancedSelection + // + this.radioButtonAdvancedSelection.AutoSize = true; + this.radioButtonAdvancedSelection.Location = new System.Drawing.Point(7, 67); + this.radioButtonAdvancedSelection.Name = "radioButtonAdvancedSelection"; + this.radioButtonAdvancedSelection.Size = new System.Drawing.Size(119, 17); + this.radioButtonAdvancedSelection.TabIndex = 2; + this.radioButtonAdvancedSelection.TabStop = true; + this.radioButtonAdvancedSelection.Text = "Advanced selection"; + this.radioButtonAdvancedSelection.UseVisualStyleBackColor = true; + this.radioButtonAdvancedSelection.CheckedChanged += new System.EventHandler(this.radioButtonAdvancedSelection_CheckedChanged); + // + // radioButtonAllLines + // + this.radioButtonAllLines.AutoSize = true; + this.radioButtonAllLines.Location = new System.Drawing.Point(7, 44); + this.radioButtonAllLines.Name = "radioButtonAllLines"; + this.radioButtonAllLines.Size = new System.Drawing.Size(60, 17); + this.radioButtonAllLines.TabIndex = 1; + this.radioButtonAllLines.TabStop = true; + this.radioButtonAllLines.Text = "All lines"; + this.radioButtonAllLines.UseVisualStyleBackColor = true; + // + // radioButtonSelectedLines + // + this.radioButtonSelectedLines.AutoSize = true; + this.radioButtonSelectedLines.Location = new System.Drawing.Point(7, 20); + this.radioButtonSelectedLines.Name = "radioButtonSelectedLines"; + this.radioButtonSelectedLines.Size = new System.Drawing.Size(102, 17); + this.radioButtonSelectedLines.TabIndex = 0; + this.radioButtonSelectedLines.TabStop = true; + this.radioButtonSelectedLines.Text = "Selected lines: x"; + this.radioButtonSelectedLines.UseVisualStyleBackColor = true; + // + // 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.Location = new System.Drawing.Point(12, 211); + this.groupBoxPreview.Name = "groupBoxPreview"; + this.groupBoxPreview.Size = new System.Drawing.Size(774, 394); + this.groupBoxPreview.TabIndex = 2; + this.groupBoxPreview.TabStop = false; + this.groupBoxPreview.Text = "Preview"; + // + // labelOverrideTags + // + this.labelOverrideTags.AutoSize = true; + this.labelOverrideTags.Location = new System.Drawing.Point(13, 21); + this.labelOverrideTags.Name = "labelOverrideTags"; + this.labelOverrideTags.Size = new System.Drawing.Size(71, 13); + this.labelOverrideTags.TabIndex = 3; + this.labelOverrideTags.Text = "Tags to apply"; + // + // 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(630, 611); + 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(711, 611); + 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; + this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click); + // + // buttonHistory + // + this.buttonHistory.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonHistory.Location = new System.Drawing.Point(415, 11); + this.buttonHistory.Name = "buttonHistory"; + this.buttonHistory.Size = new System.Drawing.Size(119, 23); + this.buttonHistory.TabIndex = 6; + this.buttonHistory.Text = "History"; + this.buttonHistory.UseVisualStyleBackColor = true; + this.buttonHistory.Click += new System.EventHandler(this.buttonHistory_Click); + // + // seTextBox1 + // + this.seTextBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.seTextBox1.BackColor = System.Drawing.SystemColors.WindowFrame; + this.seTextBox1.CurrentLanguage = ""; + this.seTextBox1.CurrentLineIndex = 0; + this.seTextBox1.HideSelection = true; + this.seTextBox1.IsDictionaryDownloaded = true; + this.seTextBox1.IsSpellCheckerInitialized = false; + this.seTextBox1.IsSpellCheckRequested = false; + this.seTextBox1.IsWrongWord = false; + this.seTextBox1.LanguageChanged = false; + this.seTextBox1.Location = new System.Drawing.Point(12, 40); + this.seTextBox1.Multiline = true; + this.seTextBox1.Name = "seTextBox1"; + this.seTextBox1.Padding = new System.Windows.Forms.Padding(1); + this.seTextBox1.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.None; + this.seTextBox1.SelectedText = ""; + this.seTextBox1.SelectionLength = 0; + this.seTextBox1.SelectionStart = 0; + this.seTextBox1.Size = new System.Drawing.Size(522, 156); + this.seTextBox1.TabIndex = 0; + // + // ApplyCustomStyles + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(798, 646); + this.Controls.Add(this.buttonHistory); + this.Controls.Add(this.buttonOK); + this.Controls.Add(this.buttonCancel); + this.Controls.Add(this.labelOverrideTags); + this.Controls.Add(this.groupBoxPreview); + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.seTextBox1); + this.KeyPreview = true; + this.MinimumSize = new System.Drawing.Size(800, 600); + this.Name = "ApplyCustomStyles"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "ApplyCustomStyles"; + this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ApplyCustomStyles_KeyDown); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private Controls.SETextBox seTextBox1; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.GroupBox groupBoxPreview; + private System.Windows.Forms.Label labelOverrideTags; + private System.Windows.Forms.Button buttonOK; + private System.Windows.Forms.Button buttonCancel; + private System.Windows.Forms.Button buttonHistory; + private System.Windows.Forms.Label labelAdvancedSelection; + private System.Windows.Forms.Button buttonAdvancedSelection; + private System.Windows.Forms.RadioButton radioButtonAdvancedSelection; + private System.Windows.Forms.RadioButton radioButtonAllLines; + private System.Windows.Forms.RadioButton radioButtonSelectedLines; + } +} \ No newline at end of file diff --git a/src/ui/Forms/Assa/ApplyCustomStyles.cs b/src/ui/Forms/Assa/ApplyCustomStyles.cs new file mode 100644 index 000000000..980d65e02 --- /dev/null +++ b/src/ui/Forms/Assa/ApplyCustomStyles.cs @@ -0,0 +1,290 @@ +using Nikse.SubtitleEdit.Controls; +using Nikse.SubtitleEdit.Core.Common; +using Nikse.SubtitleEdit.Logic; +using System; +using System.Drawing; +using System.Linq; +using System.Windows.Forms; + +namespace Nikse.SubtitleEdit.Forms.Assa +{ + public partial class ApplyCustomStyles : Form + { + public Subtitle UpdatedSubtitle { get; private set; } + private Subtitle _subtitle; + private ListBox _intellisenceList; + private int[] _selectedIndices; + private int[] _advancedIndices; + private Keys MainTextBoxAssaIntellisense { get; set; } + private Keys MainTextBoxAssaRemoveTag { get; set; } + + + public ApplyCustomStyles(Subtitle subtitle, int[] selectedIndices) + { + UiUtil.PreInitialize(this); + InitializeComponent(); + UiUtil.FixFonts(this); + + _subtitle = subtitle; + _selectedIndices = selectedIndices; + _advancedIndices = new int[0]; + + radioButtonSelectedLines.Checked = true; + labelAdvancedSelection.Text = string.Empty; + MainTextBoxAssaIntellisense = UiUtil.GetKeys(Configuration.Settings.Shortcuts.MainTextBoxAssaIntellisense); + MainTextBoxAssaRemoveTag = UiUtil.GetKeys(Configuration.Settings.Shortcuts.MainTextBoxAssaRemoveTag); + + buttonOK.Text = LanguageSettings.Current.General.Ok; + buttonCancel.Text = LanguageSettings.Current.General.Cancel; + UiUtil.FixLargeFonts(this, buttonOK); + + buttonHistory.Enabled = Configuration.Settings.SubtitleSettings.AssaOverrideTagHistory.Count > 0; + if (Configuration.Settings.SubtitleSettings.AssaOverrideTagHistory.Count > 0) + { + seTextBox1.Text = Configuration.Settings.SubtitleSettings.AssaOverrideTagHistory[0]; + } + + radioButtonAdvancedSelection_CheckedChanged(null, null); + radioButtonSelectedLines.Text = string.Format("Selected lines: {0}", _selectedIndices.Length); + } + + private void ApplyCustomStyles_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Escape) + { + if (_intellisenceList != null && _intellisenceList.Focused) + { + return; + } + + DialogResult = DialogResult.Cancel; + } + else if (e.KeyData == UiUtil.HelpKeys) + { + if (_intellisenceList != null && _intellisenceList.Focused) + { + return; + } + + UiUtil.OpenUrl("https://www.nikse.dk/SubtitleEdit/AssaOverrideTags"); + e.SuppressKeyPress = true; + } + else if (MainTextBoxAssaIntellisense == e.KeyData) + { + if (_intellisenceList != null && _intellisenceList.Focused) + { + _intellisenceList.Hide(); + } + else + { + _intellisenceList = DoIntellisense(seTextBox1, _intellisenceList); + } + + e.SuppressKeyPress = true; + } + else if (MainTextBoxAssaRemoveTag == e.KeyData) + { + AssaTagHelper.RemoveTagAtCursor(seTextBox1); + e.SuppressKeyPress = true; + } + } + + private ListBox DoIntellisense(SETextBox tb, ListBox intellisenseListBox) + { + if (intellisenseListBox == null) + { + intellisenseListBox = new ListBox(); + Controls.Add(intellisenseListBox); + intellisenseListBox.PreviewKeyDown += (o, args) => + { + if (args.KeyCode == Keys.Tab && intellisenseListBox.SelectedIndex >= 0) + { + var item = intellisenseListBox.Items[intellisenseListBox.SelectedIndex] as AssaTagHelper.IntellisenseItem; + if (item != null) + { + AssaTagHelper.CompleteItem(tb, item); + } + + intellisenseListBox.Hide(); + System.Threading.SynchronizationContext.Current.Post(TimeSpan.FromMilliseconds(10), () => tb.Focus()); + } + }; + intellisenseListBox.KeyDown += (o, args) => + { + if (args.KeyCode == Keys.Enter && intellisenseListBox.SelectedIndex >= 0) + { + var item = intellisenseListBox.Items[intellisenseListBox.SelectedIndex] as AssaTagHelper.IntellisenseItem; + if (item != null) + { + AssaTagHelper.CompleteItem(tb, item); + } + + args.SuppressKeyPress = true; + args.Handled = true; + intellisenseListBox.Hide(); + tb.Focus(); + } + else if (args.KeyCode == Keys.Escape || MainTextBoxAssaIntellisense == args.KeyData) + { + args.SuppressKeyPress = true; + args.Handled = true; + intellisenseListBox.Hide(); + tb.Focus(); + } + }; + intellisenseListBox.Click += (o, args) => + { + int index = intellisenseListBox.IndexFromPoint((args as MouseEventArgs).Location); + if (index != ListBox.NoMatches) + { + var item = intellisenseListBox.Items[index] as AssaTagHelper.IntellisenseItem; + if (item != null) + { + AssaTagHelper.CompleteItem(tb, item); + } + + intellisenseListBox.Hide(); + tb.Focus(); + } + }; + intellisenseListBox.KeyPress += (o, args) => + { + var x = args.KeyChar.ToString(); + if (!string.IsNullOrEmpty(x) && x != "\r" && x != "\n" && x != "\u001b" && x != " ") + { + if (x == "{") + { + x = "{{}"; + } + else if (x == "}") + { + x = "{}}"; + } + + tb.Focus(); + SendKeys.SendWait(x); + args.Handled = true; + AssaTagHelper.AutoCompleteTextBox(tb, intellisenseListBox); + intellisenseListBox.Focus(); + } + }; + intellisenseListBox.LostFocus += (o, args) => intellisenseListBox.Hide(); + } + + if (AssaTagHelper.AutoCompleteTextBox(tb, intellisenseListBox)) + { + var p = GetPositionInForm(tb); + intellisenseListBox.Location = new Point(p.X + 10, p.Y + 40); //TODO: improve position + intellisenseListBox.Show(); + intellisenseListBox.BringToFront(); + intellisenseListBox.Focus(); + } + + return intellisenseListBox; + } + + public Point GetPositionInForm(Control ctrl) + { + Point p = ctrl.Location; + Control parent = ctrl.Parent; + while (!(parent is Form)) + { + p.Offset(parent.Location.X, parent.Location.Y); + parent = parent.Parent; + } + return p; + } + + private void buttonOK_Click(object sender, EventArgs e) + { + ApplyOverrideTags(_subtitle, _selectedIndices); + DialogResult = DialogResult.OK; + } + + private void ApplyOverrideTags(Subtitle subtitle, int[] selectedIndices) + { + var styleToApply = seTextBox1.Text; + if (string.IsNullOrWhiteSpace(styleToApply)) + { + return; + } + + Configuration.Settings.SubtitleSettings.AssaOverrideTagHistory = Configuration.Settings.SubtitleSettings.AssaOverrideTagHistory + .Where(p => p != styleToApply) + .ToList(); + Configuration.Settings.SubtitleSettings.AssaOverrideTagHistory.Insert(0, styleToApply); + if (Configuration.Settings.SubtitleSettings.AssaOverrideTagHistory.Count > 25) + { + Configuration.Settings.SubtitleSettings.AssaOverrideTagHistory.RemoveAt(Configuration.Settings.SubtitleSettings.AssaOverrideTagHistory.Count - 1); + } + + UpdatedSubtitle = new Subtitle(subtitle, false); + var indices = _selectedIndices; + if (radioButtonAllLines.Checked) + { + indices = Enumerable.Range(0, subtitle.Paragraphs.Count).ToArray(); + } + else if (radioButtonAdvancedSelection.Checked) + { + indices = _advancedIndices; + } + + for (int i = 0; i < UpdatedSubtitle.Paragraphs.Count; i++) + { + if (!indices.Contains(i)) + { + continue; + } + + Paragraph p = UpdatedSubtitle.Paragraphs[i]; + if (p.Text.StartsWith("{\\", StringComparison.Ordinal) && styleToApply.EndsWith('}')) + { + p.Text = styleToApply.TrimEnd('}') + p.Text.Remove(0, 1); + } + else + { + p.Text = styleToApply + p.Text; + } + } + } + + private void buttonCancel_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.Cancel; + } + + private void buttonHistory_Click(object sender, EventArgs e) + { + using (var form = new TagHistory()) + { + if (form.ShowDialog(this) != DialogResult.OK) + { + return; + } + + seTextBox1.Text = form.HistoryStyle; + seTextBox1.Focus(); + } + } + + private void buttonAdvancedSelection_Click(object sender, EventArgs e) + { + using (var form = new AdvancedSelectionHelper(_subtitle)) + { + if (form.ShowDialog(this) != DialogResult.OK) + { + return; + } + + _advancedIndices = form.Indices; + labelAdvancedSelection.Text = string.Format("Lines selected: {0}", _advancedIndices.Length); + } + } + + private void radioButtonAdvancedSelection_CheckedChanged(object sender, EventArgs e) + { + buttonAdvancedSelection.Enabled = radioButtonAdvancedSelection.Checked; + labelAdvancedSelection.Enabled = radioButtonAdvancedSelection.Checked; + } + } +} diff --git a/src/ui/Forms/Assa/ApplyCustomStyles.resx b/src/ui/Forms/Assa/ApplyCustomStyles.resx new file mode 100644 index 000000000..1af7de150 --- /dev/null +++ b/src/ui/Forms/Assa/ApplyCustomStyles.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/Assa/AssaTagTemplate.Designer.cs b/src/ui/Forms/Assa/AssaTagTemplate.Designer.cs index a25f78f2f..7cd4e98c5 100644 --- a/src/ui/Forms/Assa/AssaTagTemplate.Designer.cs +++ b/src/ui/Forms/Assa/AssaTagTemplate.Designer.cs @@ -35,15 +35,7 @@ namespace Nikse.SubtitleEdit.Forms.Assa this.columnHeaderTag = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnHeaderHint = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.listViewTemplates = new System.Windows.Forms.ListView(); - this.buttonRemove = new System.Windows.Forms.Button(); - this.buttonAdd = new System.Windows.Forms.Button(); - this.buttonRemoveAll = new System.Windows.Forms.Button(); - this.buttonCopy = new System.Windows.Forms.Button(); - this.textBoxTag = new System.Windows.Forms.TextBox(); - this.labelTag = new System.Windows.Forms.Label(); - this.groupBoxTemplateItem = new System.Windows.Forms.GroupBox(); - this.textBoxHint = new System.Windows.Forms.TextBox(); - this.labelHint = new System.Windows.Forms.Label(); + this.contextMenuStripFile = new System.Windows.Forms.ContextMenuStrip(this.components); this.deleteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItemRemoveAll = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator(); @@ -54,9 +46,17 @@ namespace Nikse.SubtitleEdit.Forms.Assa this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); this.newToolStripMenuItemNew = new System.Windows.Forms.ToolStripMenuItem(); this.copyToolStripMenuItemCopy = new System.Windows.Forms.ToolStripMenuItem(); - this.contextMenuStripFile = new System.Windows.Forms.ContextMenuStrip(this.components); - this.groupBoxTemplateItem.SuspendLayout(); + this.buttonRemove = new System.Windows.Forms.Button(); + this.buttonAdd = new System.Windows.Forms.Button(); + this.buttonRemoveAll = new System.Windows.Forms.Button(); + this.buttonCopy = new System.Windows.Forms.Button(); + this.textBoxTag = new System.Windows.Forms.TextBox(); + this.labelTag = new System.Windows.Forms.Label(); + this.groupBoxTemplateItem = new System.Windows.Forms.GroupBox(); + this.textBoxHint = new System.Windows.Forms.TextBox(); + this.labelHint = new System.Windows.Forms.Label(); this.contextMenuStripFile.SuspendLayout(); + this.groupBoxTemplateItem.SuspendLayout(); this.SuspendLayout(); // // buttonOK @@ -115,6 +115,95 @@ namespace Nikse.SubtitleEdit.Forms.Assa this.listViewTemplates.View = System.Windows.Forms.View.Details; this.listViewTemplates.SelectedIndexChanged += new System.EventHandler(this.listViewTemplates_SelectedIndexChanged); // + // contextMenuStripFile + // + this.contextMenuStripFile.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.deleteToolStripMenuItem, + this.toolStripMenuItemRemoveAll, + this.toolStripSeparator8, + this.moveUpToolStripMenuItem, + this.moveDownToolStripMenuItem, + this.moveTopToolStripMenuItem, + this.moveBottomToolStripMenuItem, + this.toolStripSeparator3, + this.newToolStripMenuItemNew, + this.copyToolStripMenuItemCopy}); + this.contextMenuStripFile.Name = "contextMenuStrip1"; + this.contextMenuStripFile.Size = new System.Drawing.Size(216, 192); + // + // 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); + // + // toolStripSeparator8 + // + this.toolStripSeparator8.Name = "toolStripSeparator8"; + this.toolStripSeparator8.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); + // // buttonRemove // this.buttonRemove.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); @@ -215,95 +304,6 @@ namespace Nikse.SubtitleEdit.Forms.Assa this.labelHint.TabIndex = 213; this.labelHint.Text = "Hint"; // - // 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); - // - // toolStripSeparator8 - // - this.toolStripSeparator8.Name = "toolStripSeparator8"; - this.toolStripSeparator8.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); - // - // contextMenuStripFile - // - this.contextMenuStripFile.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.deleteToolStripMenuItem, - this.toolStripMenuItemRemoveAll, - this.toolStripSeparator8, - this.moveUpToolStripMenuItem, - this.moveDownToolStripMenuItem, - this.moveTopToolStripMenuItem, - this.moveBottomToolStripMenuItem, - this.toolStripSeparator3, - this.newToolStripMenuItemNew, - this.copyToolStripMenuItemCopy}); - this.contextMenuStripFile.Name = "contextMenuStrip1"; - this.contextMenuStripFile.Size = new System.Drawing.Size(216, 192); - // // AssaTagTemplate // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -320,15 +320,16 @@ namespace Nikse.SubtitleEdit.Forms.Assa this.KeyPreview = true; this.MaximizeBox = false; this.MinimizeBox = false; + this.MinimumSize = new System.Drawing.Size(900, 500); this.Name = "AssaTagTemplate"; this.ShowIcon = false; this.ShowInTaskbar = false; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.Text = "AssaTagTemplate"; this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.AssaTagTemplate_KeyDown); + this.contextMenuStripFile.ResumeLayout(false); this.groupBoxTemplateItem.ResumeLayout(false); this.groupBoxTemplateItem.PerformLayout(); - this.contextMenuStripFile.ResumeLayout(false); this.ResumeLayout(false); } diff --git a/src/ui/Forms/Assa/TagHistory.Designer.cs b/src/ui/Forms/Assa/TagHistory.Designer.cs new file mode 100644 index 000000000..1b16d1d38 --- /dev/null +++ b/src/ui/Forms/Assa/TagHistory.Designer.cs @@ -0,0 +1,127 @@ + +namespace Nikse.SubtitleEdit.Forms.Assa +{ + partial class TagHistory + { + /// + /// 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.seTextBoxOverrideStyle = new Nikse.SubtitleEdit.Controls.SETextBox(); + this.listBoxHistory = new System.Windows.Forms.ListBox(); + this.buttonCancel = new System.Windows.Forms.Button(); + this.buttonOK = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // seTextBoxOverrideStyle + // + this.seTextBoxOverrideStyle.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.seTextBoxOverrideStyle.BackColor = System.Drawing.SystemColors.WindowFrame; + this.seTextBoxOverrideStyle.CurrentLanguage = ""; + this.seTextBoxOverrideStyle.CurrentLineIndex = 0; + this.seTextBoxOverrideStyle.HideSelection = true; + this.seTextBoxOverrideStyle.IsDictionaryDownloaded = true; + this.seTextBoxOverrideStyle.IsSpellCheckerInitialized = false; + this.seTextBoxOverrideStyle.IsSpellCheckRequested = false; + this.seTextBoxOverrideStyle.IsWrongWord = false; + this.seTextBoxOverrideStyle.LanguageChanged = false; + this.seTextBoxOverrideStyle.Location = new System.Drawing.Point(12, 254); + this.seTextBoxOverrideStyle.Multiline = true; + this.seTextBoxOverrideStyle.Name = "seTextBoxOverrideStyle"; + this.seTextBoxOverrideStyle.Padding = new System.Windows.Forms.Padding(1); + this.seTextBoxOverrideStyle.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.None; + this.seTextBoxOverrideStyle.SelectedText = ""; + this.seTextBoxOverrideStyle.SelectionLength = 0; + this.seTextBoxOverrideStyle.SelectionStart = 0; + this.seTextBoxOverrideStyle.Size = new System.Drawing.Size(776, 152); + this.seTextBoxOverrideStyle.TabIndex = 0; + // + // listBoxHistory + // + this.listBoxHistory.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.listBoxHistory.FormattingEnabled = true; + this.listBoxHistory.Location = new System.Drawing.Point(12, 36); + this.listBoxHistory.Name = "listBoxHistory"; + this.listBoxHistory.Size = new System.Drawing.Size(776, 212); + this.listBoxHistory.TabIndex = 1; + this.listBoxHistory.SelectedIndexChanged += new System.EventHandler(this.listBoxHistory_SelectedIndexChanged); + this.listBoxHistory.DoubleClick += new System.EventHandler(this.listBoxHistory_DoubleClick); + // + // 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(713, 415); + this.buttonCancel.Name = "buttonCancel"; + this.buttonCancel.Size = new System.Drawing.Size(75, 23); + this.buttonCancel.TabIndex = 217; + 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(632, 415); + this.buttonOK.Name = "buttonOK"; + this.buttonOK.Size = new System.Drawing.Size(75, 23); + this.buttonOK.TabIndex = 216; + this.buttonOK.Text = "&OK"; + this.buttonOK.UseVisualStyleBackColor = true; + this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click); + // + // TagHistory + // + 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.buttonCancel); + this.Controls.Add(this.buttonOK); + this.Controls.Add(this.listBoxHistory); + this.Controls.Add(this.seTextBoxOverrideStyle); + this.KeyPreview = true; + this.MinimumSize = new System.Drawing.Size(816, 489); + this.Name = "TagHistory"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "TagHistory"; + this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TagHistory_KeyDown); + this.ResumeLayout(false); + + } + + #endregion + + private Controls.SETextBox seTextBoxOverrideStyle; + private System.Windows.Forms.ListBox listBoxHistory; + private System.Windows.Forms.Button buttonCancel; + private System.Windows.Forms.Button buttonOK; + } +} \ No newline at end of file diff --git a/src/ui/Forms/Assa/TagHistory.cs b/src/ui/Forms/Assa/TagHistory.cs new file mode 100644 index 000000000..84d7bc9af --- /dev/null +++ b/src/ui/Forms/Assa/TagHistory.cs @@ -0,0 +1,92 @@ +using Nikse.SubtitleEdit.Core.Common; +using Nikse.SubtitleEdit.Logic; +using System.Windows.Forms; + +namespace Nikse.SubtitleEdit.Forms.Assa +{ + public partial class TagHistory : Form + { + public string HistoryStyle { get; private set; } + + public TagHistory() + { + UiUtil.PreInitialize(this); + InitializeComponent(); + UiUtil.FixFonts(this); + + buttonOK.Text = LanguageSettings.Current.General.Ok; + buttonCancel.Text = LanguageSettings.Current.General.Cancel; + UiUtil.FixLargeFonts(this, buttonOK); + + listBoxHistory.BeginUpdate(); + foreach (var tag in Configuration.Settings.SubtitleSettings.AssaOverrideTagHistory) + { + listBoxHistory.Items.Add(tag); + } + listBoxHistory.EndUpdate(); + + if (Configuration.Settings.SubtitleSettings.AssaOverrideTagHistory.Count > 0) + { + listBoxHistory.SelectedIndex = 0; + } + + seTextBoxOverrideStyle.KeyDown += SeTextBoxOverrideStyle_KeyDown; + } + + private void SeTextBoxOverrideStyle_KeyDown(object sender, KeyEventArgs e) + { + e.SuppressKeyPress = true; + } + + private void listBoxHistory_SelectedIndexChanged(object sender, System.EventArgs e) + { + var idx = listBoxHistory.SelectedIndex; + if (idx < 0) + { + seTextBoxOverrideStyle.Text = string.Empty; + return; + } + + seTextBoxOverrideStyle.Text = Configuration.Settings.SubtitleSettings.AssaOverrideTagHistory[idx]; + } + + private void buttonOK_Click(object sender, System.EventArgs e) + { + var idx = listBoxHistory.SelectedIndex; + if (idx < 0) + { + seTextBoxOverrideStyle.Text = string.Empty; + return; + } + + HistoryStyle = Configuration.Settings.SubtitleSettings.AssaOverrideTagHistory[idx]; + DialogResult = DialogResult.OK; + } + + private void TagHistory_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Escape) + { + DialogResult = DialogResult.Cancel; + } + else if (e.KeyData == UiUtil.HelpKeys) + { + UiUtil.OpenUrl("https://www.nikse.dk/SubtitleEdit/AssaOverrideTags"); + e.SuppressKeyPress = true; + } + else if (e.KeyData == Keys.Enter) + { + buttonOK_Click(null, null); + e.SuppressKeyPress = true; + } + } + + private void listBoxHistory_DoubleClick(object sender, System.EventArgs e) + { + if (listBoxHistory.SelectedIndex != ListBox.NoMatches) + { + buttonOK_Click(null, null); + } + } + } +} diff --git a/src/ui/Forms/Assa/TagHistory.resx b/src/ui/Forms/Assa/TagHistory.resx new file mode 100644 index 000000000..1af7de150 --- /dev/null +++ b/src/ui/Forms/Assa/TagHistory.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/BatchConvert.cs b/src/ui/Forms/BatchConvert.cs index d4e690646..86e7aa8d1 100644 --- a/src/ui/Forms/BatchConvert.cs +++ b/src/ui/Forms/BatchConvert.cs @@ -2387,6 +2387,11 @@ namespace Nikse.SubtitleEdit.Forms listViewInputFiles.InverseSelection(); e.SuppressKeyPress = true; } + else if (e.KeyData == UiUtil.HelpKeys) + { + UiUtil.ShowHelp("#batchconvert"); + e.SuppressKeyPress = true; + } } private void BatchConvert_FormClosing(object sender, FormClosingEventArgs e) diff --git a/src/ui/Forms/Main.Designer.cs b/src/ui/Forms/Main.Designer.cs index a126da92e..d13fb0761 100644 --- a/src/ui/Forms/Main.Designer.cs +++ b/src/ui/Forms/Main.Designer.cs @@ -272,6 +272,9 @@ namespace Nikse.SubtitleEdit.Forms this.setStylesForSelectedLinesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.setActorForSelectedLinesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItemAssaOverrideTags = new System.Windows.Forms.ToolStripMenuItem(); + this.applyCustomStylesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.fadeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.setPositionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItemAssStyles = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparatorAssa = new System.Windows.Forms.ToolStripSeparator(); this.toolStripMenuItemSetRegion = new System.Windows.Forms.ToolStripMenuItem(); @@ -2571,20 +2574,43 @@ namespace Nikse.SubtitleEdit.Forms // this.setStylesForSelectedLinesToolStripMenuItem.Name = "setStylesForSelectedLinesToolStripMenuItem"; this.setStylesForSelectedLinesToolStripMenuItem.Size = new System.Drawing.Size(284, 22); - this.setStylesForSelectedLinesToolStripMenuItem.Text = "ASS: Set styles for selected lines..."; + this.setStylesForSelectedLinesToolStripMenuItem.Text = "Set style"; // // setActorForSelectedLinesToolStripMenuItem // this.setActorForSelectedLinesToolStripMenuItem.Name = "setActorForSelectedLinesToolStripMenuItem"; this.setActorForSelectedLinesToolStripMenuItem.Size = new System.Drawing.Size(284, 22); - this.setActorForSelectedLinesToolStripMenuItem.Text = "ASS: Set styles for selected lines..."; + this.setActorForSelectedLinesToolStripMenuItem.Text = "Set actor"; // // toolStripMenuItemAssaOverrideTags // + this.toolStripMenuItemAssaOverrideTags.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.applyCustomStylesToolStripMenuItem, + this.fadeToolStripMenuItem, + this.setPositionToolStripMenuItem}); this.toolStripMenuItemAssaOverrideTags.Name = "toolStripMenuItemAssaOverrideTags"; this.toolStripMenuItemAssaOverrideTags.Size = new System.Drawing.Size(284, 22); this.toolStripMenuItemAssaOverrideTags.Text = "Set override tags"; // + // applyCustomStylesToolStripMenuItem + // + this.applyCustomStylesToolStripMenuItem.Name = "applyCustomStylesToolStripMenuItem"; + this.applyCustomStylesToolStripMenuItem.Size = new System.Drawing.Size(182, 22); + this.applyCustomStylesToolStripMenuItem.Text = "Apply custom tags..."; + this.applyCustomStylesToolStripMenuItem.Click += new System.EventHandler(this.applyCustomStylesToolStripMenuItem_Click); + // + // fadeToolStripMenuItem + // + this.fadeToolStripMenuItem.Name = "fadeToolStripMenuItem"; + this.fadeToolStripMenuItem.Size = new System.Drawing.Size(182, 22); + this.fadeToolStripMenuItem.Text = "Fade..."; + // + // setPositionToolStripMenuItem + // + this.setPositionToolStripMenuItem.Name = "setPositionToolStripMenuItem"; + this.setPositionToolStripMenuItem.Size = new System.Drawing.Size(182, 22); + this.setPositionToolStripMenuItem.Text = "Set position..."; + // // toolStripMenuItemAssStyles // this.toolStripMenuItemAssStyles.Name = "toolStripMenuItemAssStyles"; @@ -5987,5 +6013,8 @@ namespace Nikse.SubtitleEdit.Forms private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemInsertAfter; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemInsertBefore; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemInsertSubtitle; + private System.Windows.Forms.ToolStripMenuItem applyCustomStylesToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem fadeToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem setPositionToolStripMenuItem; } } \ No newline at end of file diff --git a/src/ui/Forms/Main.cs b/src/ui/Forms/Main.cs index d8794cc94..4b7146b26 100644 --- a/src/ui/Forms/Main.cs +++ b/src/ui/Forms/Main.cs @@ -13,6 +13,7 @@ using Nikse.SubtitleEdit.Core.NetflixQualityCheck; using Nikse.SubtitleEdit.Core.SpellCheck; using Nikse.SubtitleEdit.Core.SubtitleFormats; using Nikse.SubtitleEdit.Core.VobSub; +using Nikse.SubtitleEdit.Forms.Assa; using Nikse.SubtitleEdit.Forms.Networking; using Nikse.SubtitleEdit.Forms.Ocr; using Nikse.SubtitleEdit.Forms.Styles; @@ -22580,7 +22581,6 @@ namespace Nikse.SubtitleEdit.Forms findDoubleWordsToolStripMenuItem.ShortcutKeys = UiUtil.GetKeys(Configuration.Settings.Shortcuts.MainSpellCheckFindDoubleWords); addWordToNameListToolStripMenuItem.ShortcutKeys = UiUtil.GetKeys(Configuration.Settings.Shortcuts.MainSpellCheckAddWordToNames); - toolStripMenuItemAdjustAllTimes.ShortcutKeys = UiUtil.GetKeys(Configuration.Settings.Shortcuts.MainSynchronizationAdjustTimes); visualSyncToolStripMenuItem.ShortcutKeys = UiUtil.GetKeys(Configuration.Settings.Shortcuts.MainSynchronizationVisualSync); toolStripMenuItemPointSync.ShortcutKeys = UiUtil.GetKeys(Configuration.Settings.Shortcuts.MainSynchronizationPointSync); @@ -22609,6 +22609,7 @@ namespace Nikse.SubtitleEdit.Forms moveTextDownToolStripMenuItem.ShortcutKeys = UiUtil.GetKeys(Configuration.Settings.Shortcuts.MainListViewColumnTextDown); toolStripMenuItemReverseRightToLeftStartEnd.ShortcutKeys = UiUtil.GetKeys(Configuration.Settings.Shortcuts.MainEditReverseStartAndEndingForRTL); translateToolStripMenuItem.ShortcutKeys = UiUtil.GetKeys(Configuration.Settings.Shortcuts.MainAutoTranslate); + applyCustomStylesToolStripMenuItem.ShortcutKeys = UiUtil.GetKeys(Configuration.Settings.Shortcuts.ApplyAssaOverrideTags); audioVisualizer.InsertAtVideoPositionShortcut = UiUtil.GetKeys(Configuration.Settings.Shortcuts.MainWaveformInsertAtCurrentPosition); audioVisualizer.Move100MsLeft = UiUtil.GetKeys(Configuration.Settings.Shortcuts.Waveform100MsLeft); @@ -31080,5 +31081,23 @@ namespace Nikse.SubtitleEdit.Forms { _textHeightResizeIgnoreUpdate = DateTime.UtcNow.Ticks; } + + private void applyCustomStylesToolStripMenuItem_Click(object sender, EventArgs e) + { + using (var form = new ApplyCustomStyles(_subtitle, SubtitleListview1.GetSelectedIndices())) + { + if (form.ShowDialog(this) != DialogResult.OK) + { + return; + } + + MakeHistoryForUndo(string.Format(_language.BeforeX, "Apply custom override tag")); //TODO: fix + SaveSubtitleListviewIndices(); + _subtitle.Paragraphs.Clear(); + _subtitle.Paragraphs.AddRange(form.UpdatedSubtitle.Paragraphs); + SubtitleListview1.Fill(_subtitle, _subtitleOriginal); + RestoreSubtitleListviewIndices(); + } + } } } diff --git a/src/ui/Forms/Main.resx b/src/ui/Forms/Main.resx index 8751792f7..4edc836b5 100644 --- a/src/ui/Forms/Main.resx +++ b/src/ui/Forms/Main.resx @@ -464,75 +464,75 @@ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAOgSURBVFhH7VddSBVBFN5+7BcqDCtD78zulpoUFREEQSFE - JAlBLxWCFIEU3uvOrhRCxO0poocegqCC6MnKu4uWIEE9qL0ZYUQiEkU/u/dGSfSQFhG5nVPHWmf8udef - tz74uOyeb+Z8nJk9M1f7j6ngcdX+C74tWqNM2+JGqGlzSDJ78BgrS24oGfatRJh2xGgKsZdkswfXjF31 - TB72HDygGAgc6z7JZgctZWtXNpl8CA20b96oGGhyxHCmoaGc5DMPz2RnMPkIe6uPKCYyjrhO8plFqrx8 - wR2TZ6IGHu7YrhhIO8e/ZhKJAho2c0iZvCaaHHnHLPoQ2NZz2QRU4SwNmzl4Ou+RDbgmOwcb76hsILCs - 9y8SiYU0dPqAta+QkwO/3dL11ZgIEyom7PpjNHz6SBmsbQwDNyisBVBy2QA0pmcUnh5u63oJJPsZTZ40 - +XCzrm8iiYabDjefbCIQYg9Jpg7X4FeiyZGw9g8o/BdQheuKAcdqp/DU0FxUlO8ZfFAxYLBKkvwFNiBs - RFEDTbYFz04ZSXKHZ7BGNTnvG+/QwVYcNYCEylylcG64tm1bnqvzQDYArCWJAjyMZAP9jhgKGutWkiR7 - pPRYtZzcZWwAlmUxSRRgZQJbKI0JKnOGJNnDNfkT2cBNxn7cNvnnidixe/d31UBdpjeZXEBTTw6P811y - 8mzZst4M39SdHGUA6dtWDU0/OVI6bx1r8mzZvX+fYiBtWT00/cRoWVdsQvlHNZ5cea+8NPRFvWLCtxMV - lGZ8uDq7rEwai32EfvA0Fz4/ciiQDaTt+jZKMzZaGVsBd74vsgFX16tIkjXe2fYmuTHBBv0ZOE4JSVSA - 81Nycs8s7k9q2lyS5ARfiAdRA0jfsq5QeDTA3XxI9lYxoLOTJMkZmQarUjbw8sSJQahOPkn+AY7cw0py - g39qKyxcQpKcEYbhHN8RfbIJeNdIkn+A63a3bAD6/nkKTxmZBlErGwiceBDW1uaRBNc+tlNO7hUUfL9b - WryWJFHgQTQeFUC5F7+OxwdkE+8cUU2S35vvNNz5Olwj1pkyYl3NBnt0S2cXIbQUuAyIa7YKWAgsAsaA - DMjpF5/xPcZRh/rlQBy/6FV93PbteBecCZ1wU+pAwmX2EsQU4G7H0uCBM5J4NRAn14H4CeEfD7wNbQFu - pV98xvcYN4DFwDVAPAVxHtxHeBbk9DWNlBUHzQOiMZwEiTfeRRHiMxJjqJsPxHHIMZfmDzTtFzcpTU1f - Ll65AAAAAElFTkSuQmCC + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAOhSURBVFhH7VddSBVBFN5+7BcqEitD78zulpkUFREEQSJE + JApBLxVCFIEU3uvOrhRCxO0poocegqCCCIL8ubtoCRLYg9ZbEUYUIVH0s3tvlEQPZSGR2zl1rHXGn3v9 + eeuDj8vu+WbOx5nZM3O1/5gMHlZXnfNt0R5l2hbXQk2bRZKZg8dYaXJ9yZBvJcK0I0ZSiN0kmzm4Zuyy + Z/Kwd99exUDgWHdINjNoK12df9PkA2igc9MGxcANRwxlGhrKSD798Ex2CpMP81nNQcVExhFXST69SJWV + zWsxeSZq4O72bYqBtHP0WyaRKKBh04eUyQ9FkyNbzKIPgW09lU1AFU7TsOmDp/Ne2YBrsjOw8Q7LBgLL + ev8ikZhPQ6cOWPsKOTnwe5Our8REmFAxYdcfoeFTR8pgHaMYuEZhLYCSywagMT2h8NTQrOslkOxnNHnS + 5EOtur6RJBpuOtx8solAiF0kmTxcg1+KJkfC2ndR+C+gClcVA47VSeHJobWoaLln8K+KAYNVkuQvsAFh + I4oauGFb8OyUkiR3eAZrVJPz52MdOtiKowaQUJnLFM4NV7ZuzXN1HsgGgLUkUYCHkWygzxEDQWNdPkmy + R0qP1cjJXcb6YVkWkkQBViawhdKYoDKnSJI9XJM/kg1cZ+xHs8k/j8fu8vJB1UBd5lkyOY+mnhge5zvl + 5Nmyba0Zvqk7PsIA0retQzT9xEjpvH20ybPlg6o9ioG0ZfXS9OOjbU2xCeUf0Xhy5e2ydaEv6hUTvp2o + oDRjw9XZRWXSWOwj9IPHufDpwf2BbCBt13dQmtHRztgyuPN9kQ24ul5NkqzxzrY3yo0JNujPwHFKSKIC + nJ+Qk3tmcV9S02aTJCf4QnRFDSB9y7pE4ZEAd3Mh2VvFgM6OkyRnZBqsStnAy2PHvkJ1lpPkH+DIPaAk + N/injsLCRSTJGWEYzvId8Vw2Ae8aSfIPcN1+IBuAvn+WwpNGpkHUygYCJx6EtbV5JMG1j+2Qk3sFBYO3 + 1hWvJkkUeBCNRQVQ7oWv4/F+2cQ7R9SQ5PfmOwl3vm7XiPWkjNi9VoPdb9LZeQgtBi4B4pqtABYCi4Ax + IANy+sVnfI9x1KF+KRDHL3hVH7d9O34PzoQeuCl1I+EyewFiCnC3Y2nwwBlOvBKIk+tA/ITwjwfehjYD + t9AvPuN7jBvAYuAqIJ6COA/uIzwLcvqahsuKg+YA0RhOgsQb74II8RmJMdTNBeI45KhL8wea9gvOPk1B + b8E9jQAAAABJRU5ErkJggg== iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAQaSURBVFhH1VdbaBNZGI5avKwIouAFq5kkQtFFEHHF7q60 - KgouLPrkgwi1oKwIcaYRtw/VBheW7YMXRK1Uq1V3rbWJbbFVS20rra1V7EVjrG2apE0mk7TNgz4s+KD2 - +H+TaSlxcmPy4gcfZ/7/nPP/37knuu8SjLEZUihU+Lyv3/3i9ZthSQqdIt8spVobQqEQ5/X5q98Oep7E - pMv7sqK+jV2+18yu1LWystoW1j/k7lNtq9AzItaEw+EsJU1siJJ03VpexwpLbXF57k4jI7HniH+V2ptV - 20znySs1DCKUNLFBjWrVAkSz5N8GJopinRgMVp4lMWptoomZUNLERrICwL9v1LN/bjWo1qkxJQG2x13s - UUdPWohYKQsooZGdvv0wLUSslAVgl1c1PUsLEStlAT1O18DY2Nj6dBCxUhbQ/dbVp7g0A7G+XwF01jNH - R0fLiRVgMBg8OfmdiNT2N8TQJIAC7cF1C1/x1VpGtlzCTkSIQAxNAmgUP/U6XOH2Luf7DiIF7UYJOxGp - 7wnE0CQgHdAkAM8sHaVf6dHJVchN+86lup+tVutMuXMMaBKAjfSos5fdfNDOKhs7mNPp/IwSNtj8/BWD - CLTt2LH1sWQR2G2LMOEvKFgHH6BJAI3y95rWF+yCrYmV1bTImxAlbLC+/SUbHx/fUmswrLOuNkx4/jjE - IEK0COVyQIImAZIk/UBJ95OQAzTSPLK3oIQNUt0+WqbZdhN3jcg61679DAESz38MHTu2BDE0CUgGlQbD - Ukr+EQLu/7imiAS8h4hAAV+MeueA51lR2T3m8vgeyh3iIVoAjXb9oMfbAvUg7YlrKAfcI61U9wva2I1c - MZLbTcs/1GVlLZAE4YwsgOdDLrN5DvXJEQOB/2jGNqF9XKjsgQNYa/imX0R4ZulbqNDr59pMK0YhwGbk - Tst9eJ4bzsv7FJmFo/nwJQ0VAZveDHh6YHf3D/WRbUfpeOfupe9t1UZ9PpKTkE92jtPLQQiUvFoWYOFf - MZ1uhuJOjFT2AALbTateQ0CVKXOMluLiJFuyNzdBQESEZbvSJTFSEWAzrtoeWXt1DubnyQL8Al+vdEmM - lASYuAYkonKYeCeaXbt2NkLAk5ycL4HjfOL/BMCUAOeQlzbZnijupnXn0O4ux2VZTdyEImCv3DkKzGrN - 8FkEX2Qp+EuKOz4mBVyknY9nOJpPHc4PJGI+JS2NTPVKH40wQ+n+DSj5nxDgPnz4f7qeFynu2PAHAucr - Gzun7vpodjoc4eojR5ZVGbl3VXq9WM6tLKRui4m49ZYRlysl7MVFW7P1XuGoe8Rs9o8I5oPki38i6FrN - oKnOplFOvXiTpF9HuW1tbUgwj7iQiEQ4elhfPD4biBuVEjb8qF9KRHv0w2wlfyyTBALGYhzodF8BSdL4 - pNur15QAAAAASUVORK5CYII= + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAQZSURBVFhH1VdbaBNZGI5uUddlQRRWZauZJEJREURUrBda + lV1QEH3yQYRaUBQhzjSifag2rCD2wV1Z1q1U69ZrrU1si61aaltpt7WKvWiMtU2TtMlkkrZ50AfBB7XH + /5tMS4mTG5MXP/g48//nnP//zj3RfZdgjM2QQqHCZ3397uevXg9LUugP8v2gVGtDKBTivD5/9ZtBz5OY + dHlfVNS3sUv3mtnlulZWVtvC+ofcfaptFXpGxJpwOJylpIkNUZL+s5bXscJSW1xeuNPISOwF4plSe7Nq + m+k8fbmGQYSSJjaoUa1agGiW3GxgoijWicFg5V8kRq1NNDETSprYSFYAePZaPTt3o0G1To0pCbA97mKP + OnrSQsRKWUAJjez87YdpIWKlLAC7vKrpaVqIWCkL6HG6BsbGxlang4iVsoDuN64+xaUZiPX9CqCznjk6 + OlpOrACDweDpye9EpLY7EUOTAAq0B9ctfMVXahnZcgk7ESECMTQJoFGs63W4wu1dzncdRArajRJ2IlLf + U4ihSUA6oEkAnlk6Spvp0clVyE37zqW6jVardabcOQY0CcBGetTZy64/aGeVjR3M6XR+RgkbbH72kkEE + 2nb8tvWxZBHYDYsw4S8oWAUfoEkAjXJXTetz9o+tiZXVtMibECVssL79BRsfH99SazCssi4zTHgOH2IQ + IVqEcjkgQZMASZLmUtL9JOQAjTSP7C0oYYNUt4+WaZbdxF0lss4VKz5DgMTzH0PHj/+CGJoEJINKg2Eh + Jf8IAfdXLi8iAe8gIlDAF6PeOeB5WlR2j7k8vodyh3iIFkCjXT3o8bZAPUh74irKAfdIK9VtQhu7kStG + crtp8fu6rKyfJUH4UxbA8yGX2Tyb+uSIgcAtmrH1aB8XKnvgANYavukXEZ5Z+hYq9Po5NtOvoxBgM3Ln + 5T48zw3n5X2KzMKxfPiShoqA9a8HPD2wu/uH+si2o3S8dffS97Zqoz4fyUnIJzvH6eUgBEpeLQuw8C+Z + TjdDcSdGKnsAge2mpa8goMqUOUZLcXGSLdkbmiAgIsKyXemSGKkIsBmXbo+svToH8/NkAX6Br1e6JEZK + AkxcAxJROUy8E82uHb83QsCTnJwvgRN84v8EwJQA55CXNtmeKO6mdefQ7i7HZVlN3IQiYK/cOQrMas3w + WQRfZCn4fxV3fEwKuEg7H89wNP93ON+TiJ8oaWlkqpf4aIQZSvdvQMlPQoD7yJEPdD3PV9yx4Q8E/q5s + 7Jy666PZ6XCEq48eXVRl5N5W6fViObekkLotIOLWW0RcrJSwFxRtzdZ7hWPuEbPZPyKYD5Iv/omgazWD + pjqbRjn14k2Sfh3ltrW1IcGPxHlEJMLRw/ri8VlDXKuUsOFH/UIi2qMfZiv5Y5kkEDAW40Cn+wo0JPih + EXaSWgAAAABJRU5ErkJggg== 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 @@ -775,7 +775,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD2 - CAAAAk1TRnQBSQFMAgEBAgEAASQBKgEkASoBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CAAAAk1TRnQBSQFMAgEBAgEAATwBKgE8ASoBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA @@ -823,6 +823,6 @@ 17, 17 - 25 + 97 \ No newline at end of file diff --git a/src/ui/Forms/ModifySelection.Designer.cs b/src/ui/Forms/ModifySelection.Designer.cs index 073638a2e..0855f8fb4 100644 --- a/src/ui/Forms/ModifySelection.Designer.cs +++ b/src/ui/Forms/ModifySelection.Designer.cs @@ -37,10 +37,7 @@ this.groupBoxRule = new System.Windows.Forms.GroupBox(); this.numericUpDownDuration = new System.Windows.Forms.NumericUpDown(); this.checkBoxCaseSensitive = new System.Windows.Forms.CheckBox(); - this.comboBoxRule = new System.Windows.Forms.ComboBox(); this.textBoxText = new System.Windows.Forms.TextBox(); - this.listViewStyles = new System.Windows.Forms.ListView(); - this.columnHeaderStyleName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.buttonCancel = new System.Windows.Forms.Button(); this.buttonOK = new System.Windows.Forms.Button(); this.buttonApply = new System.Windows.Forms.Button(); @@ -54,6 +51,9 @@ this.toolStripMenuItemSelectAll = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItemInverseSelection = new System.Windows.Forms.ToolStripMenuItem(); this.labelInfo = new System.Windows.Forms.Label(); + this.columnHeaderStyleName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.listViewStyles = new System.Windows.Forms.ListView(); + this.comboBoxRule = new System.Windows.Forms.ComboBox(); this.groupBoxWhatToDo.SuspendLayout(); this.groupBoxRule.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownDuration)).BeginInit(); @@ -161,22 +161,6 @@ this.checkBoxCaseSensitive.UseVisualStyleBackColor = true; this.checkBoxCaseSensitive.CheckedChanged += new System.EventHandler(this.checkBoxCaseSensitive_CheckedChanged); // - // comboBoxRule - // - this.comboBoxRule.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.comboBoxRule.FormattingEnabled = true; - this.comboBoxRule.Items.AddRange(new object[] { - "Contains", - "Starts with", - "Ends with", - "Not contains", - "RegEx"}); - this.comboBoxRule.Location = new System.Drawing.Point(6, 20); - this.comboBoxRule.Name = "comboBoxRule"; - this.comboBoxRule.Size = new System.Drawing.Size(185, 21); - this.comboBoxRule.TabIndex = 0; - this.comboBoxRule.SelectedIndexChanged += new System.EventHandler(this.comboBoxRule_SelectedIndexChanged); - // // textBoxText // this.textBoxText.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) @@ -187,24 +171,6 @@ this.textBoxText.TabIndex = 1; this.textBoxText.TextChanged += new System.EventHandler(this.textBox1_TextChanged); // - // listViewStyles - // - this.listViewStyles.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.listViewStyles.CheckBoxes = true; - this.listViewStyles.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { - this.columnHeaderStyleName}); - this.listViewStyles.FullRowSelect = true; - this.listViewStyles.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; - this.listViewStyles.HideSelection = false; - this.listViewStyles.Location = new System.Drawing.Point(198, 21); - this.listViewStyles.Name = "listViewStyles"; - this.listViewStyles.Size = new System.Drawing.Size(199, 108); - this.listViewStyles.TabIndex = 3; - this.listViewStyles.UseCompatibleStateImageBehavior = false; - this.listViewStyles.View = System.Windows.Forms.View.Details; - this.listViewStyles.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.listViewStyles_ItemChecked); - // // buttonCancel // this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); @@ -324,6 +290,40 @@ this.labelInfo.TabIndex = 3; this.labelInfo.Text = "labelInfo"; // + // listViewStyles + // + this.listViewStyles.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.listViewStyles.CheckBoxes = true; + this.listViewStyles.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeaderStyleName}); + this.listViewStyles.FullRowSelect = true; + this.listViewStyles.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; + this.listViewStyles.HideSelection = false; + this.listViewStyles.Location = new System.Drawing.Point(198, 21); + this.listViewStyles.Name = "listViewStyles"; + this.listViewStyles.Size = new System.Drawing.Size(199, 108); + this.listViewStyles.TabIndex = 3; + this.listViewStyles.UseCompatibleStateImageBehavior = false; + this.listViewStyles.View = System.Windows.Forms.View.Details; + this.listViewStyles.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.listViewStyles_ItemChecked); + // + // comboBoxRule + // + this.comboBoxRule.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBoxRule.FormattingEnabled = true; + this.comboBoxRule.Items.AddRange(new object[] { + "Contains", + "Starts with", + "Ends with", + "Not contains", + "RegEx"}); + this.comboBoxRule.Location = new System.Drawing.Point(6, 20); + this.comboBoxRule.Name = "comboBoxRule"; + this.comboBoxRule.Size = new System.Drawing.Size(185, 21); + this.comboBoxRule.TabIndex = 0; + this.comboBoxRule.SelectedIndexChanged += new System.EventHandler(this.comboBoxRule_SelectedIndexChanged); + // // ModifySelection // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -369,7 +369,6 @@ private System.Windows.Forms.RadioButton radioButtonNewSelection; private System.Windows.Forms.GroupBox groupBoxRule; private System.Windows.Forms.TextBox textBoxText; - private System.Windows.Forms.ComboBox comboBoxRule; private System.Windows.Forms.Button buttonCancel; private System.Windows.Forms.Button buttonOK; private System.Windows.Forms.Button buttonApply; @@ -382,11 +381,12 @@ private System.Windows.Forms.CheckBox checkBoxCaseSensitive; private System.Windows.Forms.RadioButton radioButtonIntersect; private System.Windows.Forms.ColumnHeader columnHeaderStyle; - private System.Windows.Forms.ListView listViewStyles; - private System.Windows.Forms.ColumnHeader columnHeaderStyleName; private System.Windows.Forms.NumericUpDown numericUpDownDuration; private System.Windows.Forms.ContextMenuStrip contextMenuStrip1; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemSelectAll; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemInverseSelection; + private System.Windows.Forms.ComboBox comboBoxRule; + private System.Windows.Forms.ListView listViewStyles; + private System.Windows.Forms.ColumnHeader columnHeaderStyleName; } } \ No newline at end of file diff --git a/src/ui/Forms/ModifySelection.cs b/src/ui/Forms/ModifySelection.cs index 3c285b38e..fe0233e1e 100644 --- a/src/ui/Forms/ModifySelection.cs +++ b/src/ui/Forms/ModifySelection.cs @@ -1,5 +1,4 @@ using Nikse.SubtitleEdit.Controls; -using Nikse.SubtitleEdit.Core; using Nikse.SubtitleEdit.Core.Common; using Nikse.SubtitleEdit.Core.SubtitleFormats; using Nikse.SubtitleEdit.Logic; diff --git a/src/ui/Forms/Options/Settings.cs b/src/ui/Forms/Options/Settings.cs index 83ce5deae..e7eb46259 100644 --- a/src/ui/Forms/Options/Settings.cs +++ b/src/ui/Forms/Options/Settings.cs @@ -1260,6 +1260,7 @@ namespace Nikse.SubtitleEdit.Forms.Options AddNode(generalNode, language.ToggleMode, nameof(Configuration.Settings.Shortcuts.GeneralToggleMode)); AddNode(generalNode, language.TogglePreviewOnVideo, nameof(Configuration.Settings.Shortcuts.GeneralTogglePreviewOnVideo)); AddNode(generalNode, language.RemoveBlankLines, nameof(Configuration.Settings.Shortcuts.MainListViewRemoveBlankLines)); + AddNode(generalNode, language.ApplyAssaOverrideTags, nameof(Configuration.Settings.Shortcuts.ApplyAssaOverrideTags)); AddNode(generalNode, language.Help, nameof(Configuration.Settings.Shortcuts.GeneralHelp), true); _shortcuts.Nodes.Add(generalNode); diff --git a/src/ui/Logic/Language.cs b/src/ui/Logic/Language.cs index 696af34a8..0b090714e 100644 --- a/src/ui/Logic/Language.cs +++ b/src/ui/Logic/Language.cs @@ -1803,6 +1803,7 @@ namespace Nikse.SubtitleEdit.Logic TranslateSelectedLines = "Translate selected lines...", AdjustDisplayDurationForSelectedLines = "Adjust durations for selected lines...", ApplyDurationLimitsForSelectedLines = "Apply duration limits for selected lines...", + ApplyCustomOverrideTag = "Apply custom override tag...", FixCommonErrorsInSelectedLines = "Fix common errors in selected lines...", ChangeCasingForSelectedLines = "Change casing for selected lines...", SaveSelectedLines = "Save selected lines as...", @@ -2327,6 +2328,7 @@ can edit in same subtitle file (collaboration)", StartInSourceView = "Start in source view", RemoveBlankLinesWhenOpening = "Remove blank lines when opening a subtitle", RemoveBlankLines = "Remove blank lines", + ApplyAssaOverrideTags = "Apply ASSA override tags to selection", ShowLineBreaksAs = "Show line breaks in list view as", SaveAsFileNameFrom = "\"Save as...\" uses file name from", MainListViewDoubleClickAction = "Double-clicking line in main window list view will", diff --git a/src/ui/Logic/LanguageStructure.cs b/src/ui/Logic/LanguageStructure.cs index c039a026c..828d5a15c 100644 --- a/src/ui/Logic/LanguageStructure.cs +++ b/src/ui/Logic/LanguageStructure.cs @@ -1656,6 +1656,7 @@ public string TranslateSelectedLines { get; set; } public string AdjustDisplayDurationForSelectedLines { get; set; } public string ApplyDurationLimitsForSelectedLines { get; set; } + public string ApplyCustomOverrideTag { get; set; } public string FixCommonErrorsInSelectedLines { get; set; } public string ChangeCasingForSelectedLines { get; set; } public string SaveSelectedLines { get; set; } @@ -2183,6 +2184,7 @@ public string StartInSourceView { get; set; } public string RemoveBlankLinesWhenOpening { get; set; } public string RemoveBlankLines { get; set; } + public string ApplyAssaOverrideTags { get; set; } public string ShowLineBreaksAs { get; set; } public string SaveAsFileNameFrom { get; set; } public string MainListViewDoubleClickAction { get; set; } diff --git a/src/ui/SubtitleEdit.csproj b/src/ui/SubtitleEdit.csproj index bf95c6f18..b89e8b627 100644 --- a/src/ui/SubtitleEdit.csproj +++ b/src/ui/SubtitleEdit.csproj @@ -115,12 +115,30 @@ AlignmentPickerJapanese.cs + + Form + + + AdvancedSelectionHelper.cs + + + Form + + + ApplyCustomStyles.cs + Form AssaTagTemplate.cs + + Form + + + TagHistory.cs + Form @@ -1240,9 +1258,18 @@ AlignmentPickerJapanese.cs + + AdvancedSelectionHelper.cs + + + ApplyCustomStyles.cs + AssaTagTemplate.cs + + TagHistory.cs + BatchConvertMkvEnding.cs