mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-10-26 23:12:38 +02:00
Allow selecting via shortcuts in more list view - thx tormento :)
Windows: ocr, batch convert, export to images, fix common errors, multiple replace Shortcuts: ctrl+a (select all), ctrl + d (de-select), ctrl+shift+i (inverse selection)
This commit is contained in:
parent
2e2597a607
commit
7e37058bad
@ -1,5 +1,17 @@
|
||||
Subtitle Edit Changelog
|
||||
|
||||
3.5.7 (xth May 2018)
|
||||
* NEW:
|
||||
*
|
||||
* IMPROVED:
|
||||
* Update Brazilian translation - thx Igor
|
||||
* Update Czech translation - thx Trottel
|
||||
* Update Hungarian translation - thx ZityiSoft Team
|
||||
* Update Turkish translation - thx Falcon006
|
||||
* Ctrl+a/ctrl+d/ctrl+shift+i works in more lists - thx tormento
|
||||
* FIXED:
|
||||
*
|
||||
|
||||
|
||||
3.5.6 (27th February 2018)
|
||||
* NEW:
|
||||
|
@ -181,6 +181,9 @@ namespace Nikse.SubtitleEdit.Core
|
||||
|
||||
public static void SetSecurityProtocol()
|
||||
{
|
||||
if (Environment.OSVersion.Version.Major < 6)
|
||||
return; // don't try TLS 1.2 on WinXP as it does not exist and will crash
|
||||
|
||||
// Github requires TLS 1.2
|
||||
var tls12Protocol = (SslProtocols)0x00000C00; //TODO: Remove this when it's standard in .net framework - 4.5?
|
||||
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | (SecurityProtocolType)tls12Protocol;
|
||||
|
@ -1433,7 +1433,24 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
private void ListViewInputFilesKeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.KeyCode == Keys.Delete)
|
||||
{
|
||||
RemoveSelectedFiles();
|
||||
}
|
||||
else if (e.KeyCode == Keys.A && e.Modifiers == Keys.Control)
|
||||
{
|
||||
listViewInputFiles.SelectAll();
|
||||
e.SuppressKeyPress = true;
|
||||
}
|
||||
else if (e.KeyCode == Keys.D && e.Modifiers == Keys.Control)
|
||||
{
|
||||
listViewInputFiles.SelectFirstSelectedItemOnly();
|
||||
e.SuppressKeyPress = true;
|
||||
}
|
||||
else if (e.KeyCode == Keys.I && e.Modifiers == (Keys.Control | Keys.Shift)) //InverseSelection
|
||||
{
|
||||
listViewInputFiles.InverseSelection();
|
||||
e.SuppressKeyPress = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void buttonFixCommonErrorSettings_Click(object sender, EventArgs e)
|
||||
|
@ -2606,7 +2606,7 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine +
|
||||
}
|
||||
}
|
||||
|
||||
if (parameter.JustifyLeft)
|
||||
if (parameter.JustifyLeft)
|
||||
{
|
||||
// left justify centered lines
|
||||
var minX = lefts.Min(p => p);
|
||||
@ -4588,35 +4588,19 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine +
|
||||
ListViewToggleTag("i");
|
||||
subtitleListView1_SelectedIndexChanged(null, null);
|
||||
}
|
||||
else if (e.KeyCode == Keys.A && e.Modifiers == Keys.Control) //SelectAll
|
||||
else if (e.KeyCode == Keys.A && e.Modifiers == Keys.Control)
|
||||
{
|
||||
subtitleListView1.BeginUpdate();
|
||||
foreach (ListViewItem item in subtitleListView1.Items)
|
||||
item.Selected = true;
|
||||
subtitleListView1.EndUpdate();
|
||||
subtitleListView1.SelectAll();
|
||||
e.SuppressKeyPress = true;
|
||||
}
|
||||
else if (e.KeyCode == Keys.D && e.Modifiers == Keys.Control) //SelectFirstSelectedItemOnly
|
||||
else if (e.KeyCode == Keys.D && e.Modifiers == Keys.Control)
|
||||
{
|
||||
if (subtitleListView1.SelectedItems.Count > 0)
|
||||
{
|
||||
bool skipFirst = true;
|
||||
foreach (ListViewItem item in subtitleListView1.SelectedItems)
|
||||
{
|
||||
if (skipFirst)
|
||||
skipFirst = false;
|
||||
else
|
||||
item.Selected = false;
|
||||
}
|
||||
e.SuppressKeyPress = true;
|
||||
}
|
||||
subtitleListView1.SelectFirstSelectedItemOnly();
|
||||
e.SuppressKeyPress = true;
|
||||
}
|
||||
else if (e.KeyCode == Keys.I && e.Modifiers == (Keys.Control | Keys.Shift)) //InverseSelection
|
||||
else if (e.KeyCode == Keys.I && e.Modifiers == (Keys.Control | Keys.Shift))
|
||||
{
|
||||
subtitleListView1.BeginUpdate();
|
||||
foreach (ListViewItem item in subtitleListView1.Items)
|
||||
item.Selected = !item.Selected;
|
||||
subtitleListView1.EndUpdate();
|
||||
subtitleListView1.InverseSelection();
|
||||
e.SuppressKeyPress = true;
|
||||
}
|
||||
}
|
||||
|
20
src/Forms/FixCommonErrors.Designer.cs
generated
20
src/Forms/FixCommonErrors.Designer.cs
generated
@ -31,6 +31,7 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
Nikse.SubtitleEdit.Core.TimeCode timeCode1 = new Nikse.SubtitleEdit.Core.TimeCode();
|
||||
this.buttonCancel = new System.Windows.Forms.Button();
|
||||
this.buttonNextFinish = new System.Windows.Forms.Button();
|
||||
this.labelStatus = new System.Windows.Forms.Label();
|
||||
@ -85,6 +86,7 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
this.groupBox2.SuspendLayout();
|
||||
this.tabControl1.SuspendLayout();
|
||||
this.tabPageFixes.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainerStep2)).BeginInit();
|
||||
this.splitContainerStep2.Panel1.SuspendLayout();
|
||||
this.splitContainerStep2.Panel2.SuspendLayout();
|
||||
this.splitContainerStep2.SuspendLayout();
|
||||
@ -227,8 +229,8 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
this.columnHeader1,
|
||||
this.columnHeader2,
|
||||
this.columnHeader3});
|
||||
this.listView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
|
||||
this.listView1.FullRowSelect = true;
|
||||
this.listView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
|
||||
this.listView1.Location = new System.Drawing.Point(6, 48);
|
||||
this.listView1.Name = "listView1";
|
||||
this.listView1.Size = new System.Drawing.Size(810, 461);
|
||||
@ -410,6 +412,7 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
//
|
||||
// subtitleListView1
|
||||
//
|
||||
this.subtitleListView1.AllowColumnReorder = true;
|
||||
this.subtitleListView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
@ -418,6 +421,7 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
this.subtitleListView1.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.subtitleListView1.FullRowSelect = true;
|
||||
this.subtitleListView1.GridLines = true;
|
||||
this.subtitleListView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
|
||||
this.subtitleListView1.HideSelection = false;
|
||||
this.subtitleListView1.Location = new System.Drawing.Point(3, 5);
|
||||
this.subtitleListView1.Name = "subtitleListView1";
|
||||
@ -431,6 +435,7 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
this.subtitleListView1.UseSyntaxColoring = true;
|
||||
this.subtitleListView1.View = System.Windows.Forms.View.Details;
|
||||
this.subtitleListView1.SelectedIndexChanged += new System.EventHandler(this.SubtitleListView1SelectedIndexChanged);
|
||||
this.subtitleListView1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.subtitleListView1_KeyDown);
|
||||
//
|
||||
// contextMenuStripListview
|
||||
//
|
||||
@ -551,11 +556,21 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
//
|
||||
this.timeUpDownStartTime.AutoSize = true;
|
||||
this.timeUpDownStartTime.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
|
||||
this.timeUpDownStartTime.Font = new System.Drawing.Font("Segoe UI", 9F);
|
||||
this.timeUpDownStartTime.Location = new System.Drawing.Point(8, 27);
|
||||
this.timeUpDownStartTime.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.timeUpDownStartTime.Name = "timeUpDownStartTime";
|
||||
this.timeUpDownStartTime.Size = new System.Drawing.Size(96, 25);
|
||||
this.timeUpDownStartTime.Size = new System.Drawing.Size(96, 27);
|
||||
this.timeUpDownStartTime.TabIndex = 112;
|
||||
timeCode1.Hours = 0;
|
||||
timeCode1.Milliseconds = 0;
|
||||
timeCode1.Minutes = 0;
|
||||
timeCode1.Seconds = 0;
|
||||
timeCode1.TimeSpan = System.TimeSpan.Parse("00:00:00");
|
||||
timeCode1.TotalMilliseconds = 0D;
|
||||
timeCode1.TotalSeconds = 0D;
|
||||
this.timeUpDownStartTime.TimeCode = timeCode1;
|
||||
this.timeUpDownStartTime.UseVideoOffset = false;
|
||||
//
|
||||
// numericUpDownDuration
|
||||
//
|
||||
@ -700,6 +715,7 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
this.tabPageFixes.ResumeLayout(false);
|
||||
this.splitContainerStep2.Panel1.ResumeLayout(false);
|
||||
this.splitContainerStep2.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainerStep2)).EndInit();
|
||||
this.splitContainerStep2.ResumeLayout(false);
|
||||
this.contextMenuStripListview.ResumeLayout(false);
|
||||
this.groupBoxEditPanel.ResumeLayout(false);
|
||||
|
@ -1634,5 +1634,24 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
Configuration.Settings.CommonErrors.SetDefaultFixes();
|
||||
AddFixActions(CultureInfo.GetCultureInfo(_autoDetectGoogleLanguage).ThreeLetterISOLanguageName);
|
||||
}
|
||||
|
||||
private void subtitleListView1_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.KeyCode == Keys.A && e.Modifiers == Keys.Control)
|
||||
{
|
||||
subtitleListView1.SelectAll();
|
||||
e.SuppressKeyPress = true;
|
||||
}
|
||||
else if (e.KeyCode == Keys.D && e.Modifiers == Keys.Control)
|
||||
{
|
||||
subtitleListView1.SelectFirstSelectedItemOnly();
|
||||
e.SuppressKeyPress = true;
|
||||
}
|
||||
else if (e.KeyCode == Keys.I && e.Modifiers == (Keys.Control | Keys.Shift)) //InverseSelection
|
||||
{
|
||||
subtitleListView1.InverseSelection();
|
||||
e.SuppressKeyPress = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -13396,24 +13396,15 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
_cutText = tmp.ToText(new SubRip());
|
||||
ToolStripMenuItemDeleteClick(null, null);
|
||||
}
|
||||
else if (e.KeyCode == Keys.A && e.Modifiers == Keys.Control) //SelectAll
|
||||
else if (e.KeyCode == Keys.A && e.Modifiers == Keys.Control)
|
||||
{
|
||||
foreach (ListViewItem item in SubtitleListview1.Items)
|
||||
item.Selected = true;
|
||||
SubtitleListview1.SelectAll();
|
||||
e.SuppressKeyPress = true;
|
||||
}
|
||||
else if (e.KeyCode == Keys.D && e.Modifiers == Keys.Control) //SelectFirstSelectedItemOnly
|
||||
else if (e.KeyCode == Keys.D && e.Modifiers == Keys.Control)
|
||||
{
|
||||
int itemsCount = SubtitleListview1.SelectedItems.Count - 1;
|
||||
if (itemsCount > 0)
|
||||
{
|
||||
do
|
||||
{
|
||||
SubtitleListview1.SelectedItems[itemsCount--].Selected = false;
|
||||
}
|
||||
while (itemsCount > 0);
|
||||
e.SuppressKeyPress = true;
|
||||
}
|
||||
SubtitleListview1.SelectFirstSelectedItemOnly();
|
||||
e.SuppressKeyPress = true;
|
||||
}
|
||||
else if (e.KeyCode == Keys.Delete && SubtitleListview1.SelectedItems.Count > 0) //Delete
|
||||
{
|
||||
@ -16719,7 +16710,7 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
{
|
||||
if (parent.DropDownItems.Count - relativeOffset.Value >= 0 &&
|
||||
relativeOffset.Value < parent.DropDownItems.Count &&
|
||||
parent.DropDownItems.Count > 0 &&
|
||||
parent.DropDownItems.Count > 0 &&
|
||||
parent.DropDownItems[parent.DropDownItems.Count - relativeOffset.Value].GetType() == typeof(ToolStripSeparator))
|
||||
return; // don't app separator after separator
|
||||
|
||||
|
3
src/Forms/MultipleReplace.Designer.cs
generated
3
src/Forms/MultipleReplace.Designer.cs
generated
@ -161,6 +161,7 @@
|
||||
this.listViewFixes.TabIndex = 10;
|
||||
this.listViewFixes.UseCompatibleStateImageBehavior = false;
|
||||
this.listViewFixes.View = System.Windows.Forms.View.Details;
|
||||
this.listViewFixes.KeyDown += new System.Windows.Forms.KeyEventHandler(this.listViewFixes_KeyDown);
|
||||
//
|
||||
// columnHeader4
|
||||
//
|
||||
@ -330,7 +331,7 @@
|
||||
this.listViewRules.UseCompatibleStateImageBehavior = false;
|
||||
this.listViewRules.View = System.Windows.Forms.View.Details;
|
||||
this.listViewRules.SelectedIndexChanged += new System.EventHandler(this.ListViewReplaceListSelectedIndexChanged);
|
||||
this.listViewRules.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ListViewReplaceListKeyDown);
|
||||
this.listViewRules.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ListViewRulesKeyDown);
|
||||
//
|
||||
// columnHeader1
|
||||
//
|
||||
|
@ -403,11 +403,29 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
GeneratePreview();
|
||||
}
|
||||
|
||||
private void ListViewReplaceListKeyDown(object sender, KeyEventArgs e)
|
||||
private void ListViewRulesKeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.KeyCode == Keys.Delete)
|
||||
{
|
||||
DeleteToolStripMenuItemClick(null, null);
|
||||
if (listViewRules.SelectedItems.Count == 1)
|
||||
e.SuppressKeyPress = true;
|
||||
}
|
||||
else if (e.KeyCode == Keys.A && e.Modifiers == Keys.Control)
|
||||
{
|
||||
listViewRules.SelectAll();
|
||||
e.SuppressKeyPress = true;
|
||||
}
|
||||
else if (e.KeyCode == Keys.D && e.Modifiers == Keys.Control)
|
||||
{
|
||||
listViewRules.SelectFirstSelectedItemOnly();
|
||||
e.SuppressKeyPress = true;
|
||||
}
|
||||
else if (e.KeyCode == Keys.I && e.Modifiers == (Keys.Control | Keys.Shift)) //InverseSelection
|
||||
{
|
||||
listViewRules.InverseSelection();
|
||||
e.SuppressKeyPress = true;
|
||||
}
|
||||
else if (listViewRules.SelectedItems.Count == 1)
|
||||
{
|
||||
if (e.KeyCode == Keys.Up && e.Control && !e.Alt && !e.Shift)
|
||||
moveUpToolStripMenuItem_Click(sender, e);
|
||||
@ -1126,5 +1144,24 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
exportToolStripMenuItem_Click(sender, e);
|
||||
}
|
||||
|
||||
private void listViewFixes_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.KeyCode == Keys.A && e.Modifiers == Keys.Control)
|
||||
{
|
||||
listViewFixes.SelectAll();
|
||||
e.SuppressKeyPress = true;
|
||||
}
|
||||
else if (e.KeyCode == Keys.D && e.Modifiers == Keys.Control)
|
||||
{
|
||||
listViewFixes.SelectFirstSelectedItemOnly();
|
||||
e.SuppressKeyPress = true;
|
||||
}
|
||||
else if (e.KeyCode == Keys.I && e.Modifiers == (Keys.Control | Keys.Shift)) //InverseSelection
|
||||
{
|
||||
listViewFixes.InverseSelection();
|
||||
e.SuppressKeyPress = true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -8417,10 +8417,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
if (e.Modifiers == Keys.Control && e.KeyCode == Keys.A)
|
||||
{
|
||||
subtitleListView1.SelectedIndexChanged -= SubtitleListView1SelectedIndexChanged;
|
||||
subtitleListView1.BeginUpdate();
|
||||
for (int i = 0; i < subtitleListView1.Items.Count; i++)
|
||||
subtitleListView1.Items[i].Selected = true;
|
||||
subtitleListView1.EndUpdate();
|
||||
subtitleListView1.SelectAll();
|
||||
subtitleListView1.SelectedIndexChanged += SubtitleListView1SelectedIndexChanged;
|
||||
e.Handled = true;
|
||||
e.SuppressKeyPress = true;
|
||||
@ -8428,10 +8425,15 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
if (e.Modifiers == Keys.Control && e.KeyCode == Keys.D)
|
||||
{
|
||||
subtitleListView1.SelectedIndexChanged -= SubtitleListView1SelectedIndexChanged;
|
||||
subtitleListView1.BeginUpdate();
|
||||
for (int i = 0; i < subtitleListView1.Items.Count; i++)
|
||||
subtitleListView1.Items[i].Selected = false;
|
||||
subtitleListView1.EndUpdate();
|
||||
subtitleListView1.SelectFirstSelectedItemOnly();
|
||||
subtitleListView1.SelectedIndexChanged += SubtitleListView1SelectedIndexChanged;
|
||||
e.Handled = true;
|
||||
e.SuppressKeyPress = true;
|
||||
}
|
||||
else if (e.KeyCode == Keys.I && e.Modifiers == (Keys.Control | Keys.Shift)) //InverseSelection
|
||||
{
|
||||
subtitleListView1.SelectedIndexChanged -= SubtitleListView1SelectedIndexChanged;
|
||||
subtitleListView1.InverseSelection();
|
||||
subtitleListView1.SelectedIndexChanged += SubtitleListView1SelectedIndexChanged;
|
||||
e.Handled = true;
|
||||
e.SuppressKeyPress = true;
|
||||
|
@ -736,5 +736,47 @@ namespace Nikse.SubtitleEdit.Logic
|
||||
public static string GetListViewTextFromString(string s) => s.Replace(Environment.NewLine, Configuration.Settings.General.ListViewLineSeparatorString);
|
||||
|
||||
public static string GetStringFromListViewText(string lviText) => lviText.Replace(Configuration.Settings.General.ListViewLineSeparatorString, Environment.NewLine);
|
||||
|
||||
public static void SelectAll(this ListView lv)
|
||||
{
|
||||
lv.BeginUpdate();
|
||||
foreach (ListViewItem item in lv.Items)
|
||||
item.Selected = true;
|
||||
lv.EndUpdate();
|
||||
}
|
||||
|
||||
public static void SelectFirstSelectedItemOnly(this ListView lv)
|
||||
{
|
||||
int itemsCount = lv.SelectedItems.Count - 1;
|
||||
if (itemsCount > 0)
|
||||
{
|
||||
lv.BeginUpdate();
|
||||
do
|
||||
{
|
||||
lv.SelectedItems[itemsCount--].Selected = false;
|
||||
}
|
||||
while (itemsCount > 0);
|
||||
if (lv.SelectedItems.Count > 0)
|
||||
{
|
||||
lv.EnsureVisible(lv.SelectedItems[0].Index);
|
||||
lv.FocusedItem = lv.SelectedItems[0];
|
||||
}
|
||||
else if (lv.Items.Count > 0)
|
||||
{
|
||||
lv.EnsureVisible(0);
|
||||
lv.FocusedItem = lv.Items[0];
|
||||
}
|
||||
lv.EndUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
public static void InverseSelection(this ListView lv)
|
||||
{
|
||||
lv.BeginUpdate();
|
||||
foreach (ListViewItem item in lv.Items)
|
||||
item.Selected = !item.Selected;
|
||||
lv.EndUpdate();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user