Work on "override tags on selection"

This commit is contained in:
niksedk 2021-06-20 07:46:00 +02:00
parent 629e39980c
commit b5b3bc539a
21 changed files with 1809 additions and 206 deletions

View File

@ -506,6 +506,7 @@ namespace Nikse.SubtitleEdit.Core.Common
public class SubtitleSettings
{
public List<AssaStorageCategory> AssaStyleStorageCategories { get; set; }
public List<string> 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<AssaStorageCategory>();
AssaOverrideTagHistory = new List<string>();
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);

View File

@ -0,0 +1,193 @@

namespace Nikse.SubtitleEdit.Forms.Assa
{
partial class AdvancedSelectionHelper
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
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;
}
}

View File

@ -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<ListViewItem>();
listViewFixes.BeginUpdate();
listViewFixes.Items.Clear();
var styles = new List<string>();
var actors = new List<string>();
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<int>();
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<string>();
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;
}
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,239 @@

namespace Nikse.SubtitleEdit.Forms.Assa
{
partial class ApplyCustomStyles
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
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;
}
}

View File

@ -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;
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -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);
}

127
src/ui/Forms/Assa/TagHistory.Designer.cs generated Normal file
View File

@ -0,0 +1,127 @@

namespace Nikse.SubtitleEdit.Forms.Assa
{
partial class TagHistory
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
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;
}
}

View File

@ -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);
}
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -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)

View File

@ -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;
}
}

View File

@ -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();
}
}
}
}

View File

@ -464,75 +464,75 @@
<data name="toolStripButtonAssStyleManager.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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==
</value>
</data>
<data name="toolStripButtonAssProperties.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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==
</value>
</data>
<data name="toolStripButtonAssAttachments.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAUnSURBVFhH1VddbFRFFN5iA2gESbHiurt3Znera5YQiNFE
TLRWFFMT/AlWY3ioLW13753d7nYbMAbt+kDiH8ZolAdSJSrW0m0QkUSi0RrF/2jANNbWbe/MbddSo/wo
WrCl13PmDvtAxHTh8uCXnGzvnJk53zlnzpmp5/+MMpIwr6VM3K0l+G2VxsSlavzCgyZGlmuMfwnG7aLE
88c1g2/2ZPvK1bQLA2KYK3xN4hhlg4c1w3qM6GYNyL0as3YjkYDB3/R47DI13WXU2ReRuPm9FuO/+GL5
q9VoEcQQTyOJoC7WqCF3QZh5nwy3wZt9yVE/1flGCPuGUGtBQ31VcmYeaRr+FebtlAvchsx7S74Q1K0b
aEwcoaxrxhFIR4xHcQ6k6BNIyTdygZugxsgtyvsNRBf7KXhKYyPL8UyAx39A+N/AefA9RBl/Ty5yE7ip
r4kfo7pYjUQIE48qlYfGxbdA4lMZGSTJ+CNK5Q4ChlhKDQw1fxIM7SFQcv71VgXqZC+o7jsVYGIL5p6y
H/+8io0tlgvdAni7o9LgJ4k+WiON6XyLUqFuW6UhTlLDghT1T0OKXlYqd4Cn3cv431B+2yAC2/HvUOuw
PPVaM/dWrBMngMTrlFlbSb05RWImlQvdAhyqF9FrKLdVFev4CfDwVaXCun8KUwOhv5Wu7/8LCHYplTvw
t1kVkNvfwcMcGHsWiQSZtQx1VcmhhV4mjsL4XuiIm7EciTG2Qi50C+BRhzzxhnkX1j38vqNUHmxCzom3
7qTGT79pOt+nVO7A21K4BAyMg3yEZYXGgnFxM+qi2f652JCAxOcQnQzqMEVyoVsgumXIjRlfi8aw+SgV
dsQmZfR+PxMczsDXrl5A1Vm7nOgj+YAuDoCRZjRGDXGPVGazc+D7BxRiWI1Sp4sHUbX/jpoPCpm03ZNJ
z1htbfKsnBNwQ9wYDtjDWpwPojGP7XgIpNZIo0AMInEQ9fgGeDsYXJatCs4Mx5ptJDGaSXXKzUqHXYat
Fe51oSVEnUPEbFRKT7Sufy54/tBpHZBgON4boq/0hqn9WTQ6jQQKqdTkeHv7FXJRKdB0cbs0ykQawv8V
5h8PnVIXAbqPfTo/BM1nflcwuASMTyKBPUsjm4DAESQx1pbqUNNnD+dlM3gYOl+t473VrlRFQMndJNOQ
sB7Hb/C+A433hr1Hd0ciCwrp9HOSQCo1PpRMzpOLZgu8ZKhuVWNd4+0Xahm+TKmKgPLbJRtUyly0nZD5
ubDvEBLIhQLyjhhPpahZXz/lRKG1QS4qBdDlKrHrQRqeUUNFkERB3n5A4nn87gmRBjQORKZ6KSVyEgCM
9yCBQiZ1wIYXtBqeHbTkz1EZYiZa1FARUBmdeCH5kkN+3Lg3rB1EAt1h/wSk4qXT8uHKG993CEAUMq2l
NSk86X7GJ6DUvos0DixQwx58+8lrmZmv4XcupK1ycv/vMthQLwlY6dS7coNS4PSC/ml4jAhIxRNYFTA2
AFGZDLLha3BOLkz2oqFcmJogb50pX9Su3ocE+qqrT8GBjMiNSwFeNPjAdF5D8s0v4AVUi7qdlEayYTqj
CDwgF5wBO5stF5m0UGfh3B8qcDFdLp/eWXuOGgLv6VYn1AEBHp71vyEwvhEJ5OPx49Ce5TPufFH2QlXF
wu4QHegmZLST+vABim9A7HpXgnjVL34v3lSzkoykW/M8mbSsdLIJxs770kJvLwZZBIKGsPQwv3j5XAdy
vfrFbxxH/RIQnI/rcL3r/7rhhmeT/4DH8w/MdcV9amg/1AAAAABJRU5ErkJggg==
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAUnSURBVFhH1VddbFRFFN5iA2gEyWLFdXfvzO5W1ywhEKOJ
mGitKKYm+BOtxvBQW9ru3ju73e02YAza9YHEP4zRKA+kShSEwjaKSCLRaI3ifzRgGmvrtnfmtmupUX4U
LdjS6zlzh30gYrpwefBLTrZ3zsyc75wz58zU839GBUma11Im7taS/LYqY/xSNX7hQZPDSzXGvwTjdkkS
heOawTd4cr2VatqFATHMZf5mcYyygcOaYT1OdLMW5F6NWbuRSNDgb3o8doWa7jLq7YtIwvxei/Nf/PHC
1Wq0BGKIZ5BESBer1JC7IMy8T4bb4C3+1EiA6nwdhH1tuK2oob46NT2HNA/9CvN2ygVuQ+a9tVAM6dYN
NC6OULZ12hFIR5zHcA6k6BNIyTdygZugxvAtyvu1RBf7KXhK48NL8UyAx39A+LfiPPgepIy/Jxe5CdzU
38yPUV2sRCKEiceUykMT4lsg8amMDJJk/FGlcgdBQyymBoaaPwWG9hAoucAay4s62Qtqek8FmdiIuafs
xz+vYqML5UK3AN5uqzL4SaKP1EpjOt+oVKjbXGWIk9SwIEV9U5CiV5TKHeBp9zH+N5TfZojAFvw73DYk
T73Wwn3e1eIEkHiDMmsTaTAnSdykcqFbgEP1EnoN5bbCu5qfAA9fUyqs+6cxNRD6W+mavr+A4HalcgeB
dssLuf0dPMyDseeQSIhZS1BXnRqc72PiKIzvhY64AcuRGKPL5EK3AB51yhNvmHdh3cPvO0rlwSbknHjr
Tmr89Jum831K5Q58rcVLwMAYyEdYVmgslBA3oy6W65uNDQlIfA7RyaIOUyQXugWiW4bcmPH70Rg2H6XC
jtisjD4QYILDGfja1QuoJmdXEn24ENTFATDSgsaoIe6RylxuFnz/gEIMq0nqdPEQqvbfUftBMZuxd2Qz
01Z7uzwr5wTcEDeGA/aIluADaMxjOx4CqVXSKBCDSBxEPb4B3g6FluSqQ9ND8RYbSYxk011ys/JhV2Br
hXtdaElR7xAxm5TSE6vvmw2eP3xaByQYjveE6as9EWp/FotNIYFiOj0x1tFxhVxUDjRd3C6NMpGB8H+F
+cdDp9QlgO5jv84PQfOZuz0UWgTGJ5DAnsXR9UDgCJIYbU93qukzh/OyGTgMna/O8d7qUKoSoORukmlI
Wk/gN3jficZ7Ir6ju6PRecVM5nlJIJ0eG0yl5shFMwVeMlS3arCu8fYLtw5dplQlQPm9JRtU2lywhZC5
+Yj/EBLIh4PyjhhLp6nZ0DDpRKGtUS4qB9DlqrDrQRqeVUMlkGRR3n5A4gX83hUmjWgciEz2UErkJAAY
34UEitn0ARte0Gp4ZtBSP8dkiJloVUMlQGV04YXkTw0GcOOeiHYQCXRHAuOQipdPy4fLb3zfIQBRyLaV
16TwpAcYH4dS+y7a1D9PDXvw7SevZWa+jt/5sLbCyf2/y0BjgyRgZdLvyg3KgdML+qbgMSIgFU9iVcBY
P0RlIsSGrsE5+QjZi4byEWqC7DhTvqhbuQ8J9NbUnIIDGZUblwO8aPCB6byG5JtfwAuoDnU7KY3mInRa
EXhQLjgDdi5XKbIZoc7CuT9U4GK6XD69c/YsNQTe001OqIMCPDzrf0NgfB0SKCQSx6E9y2fc+aLixWrv
/O4w7e8mZKSL+vEBim9A7HpXgvjUL34vXF+7nAxn2go8lbKsTKoZxs770kJvLwZZAIKGsPQwv3j5XAdy
vfrFbxxH/SIQnI/rcL3r/7rhhmeT/4DH8w8HCMVoidsSIwAAAABJRU5ErkJggg==
</value>
</data>
<data name="toolStripButtonNetflixQualityCheck.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
@ -775,7 +775,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD2
CAAAAk1TRnQBSQFMAgEBAgEAASQBKgEkASoBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
CAAAAk1TRnQBSQFMAgEBAgEAATwBKgE8ASoBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
@ -823,6 +823,6 @@
<value>17, 17</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>25</value>
<value>97</value>
</metadata>
</root>

View File

@ -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;
}
}

View File

@ -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;

View File

@ -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);

View File

@ -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",

View File

@ -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; }

View File

@ -115,12 +115,30 @@
<Compile Include="Forms\AlignmentPickerJapanese.Designer.cs">
<DependentUpon>AlignmentPickerJapanese.cs</DependentUpon>
</Compile>
<Compile Include="Forms\Assa\AdvancedSelectionHelper.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\Assa\AdvancedSelectionHelper.Designer.cs">
<DependentUpon>AdvancedSelectionHelper.cs</DependentUpon>
</Compile>
<Compile Include="Forms\Assa\ApplyCustomStyles.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\Assa\ApplyCustomStyles.Designer.cs">
<DependentUpon>ApplyCustomStyles.cs</DependentUpon>
</Compile>
<Compile Include="Forms\Assa\AssaTagTemplate.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\Assa\AssaTagTemplate.Designer.cs">
<DependentUpon>AssaTagTemplate.cs</DependentUpon>
</Compile>
<Compile Include="Forms\Assa\TagHistory.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\Assa\TagHistory.Designer.cs">
<DependentUpon>TagHistory.cs</DependentUpon>
</Compile>
<Compile Include="Forms\BatchConvertMkvEnding.cs">
<SubType>Form</SubType>
</Compile>
@ -1240,9 +1258,18 @@
<EmbeddedResource Include="Forms\AlignmentPickerJapanese.resx">
<DependentUpon>AlignmentPickerJapanese.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\Assa\AdvancedSelectionHelper.resx">
<DependentUpon>AdvancedSelectionHelper.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\Assa\ApplyCustomStyles.resx">
<DependentUpon>ApplyCustomStyles.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\Assa\AssaTagTemplate.resx">
<DependentUpon>AssaTagTemplate.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\Assa\TagHistory.resx">
<DependentUpon>TagHistory.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\BatchConvertMkvEnding.resx">
<DependentUpon>BatchConvertMkvEnding.cs</DependentUpon>
</EmbeddedResource>