mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-11-25 12:44:46 +01:00
Allow sort/move for "Add end time of prev" in "Join subtitles" - thx Leon :)
Work on #8257
This commit is contained in:
parent
2122a8dc30
commit
443d88d195
58
src/ui/Forms/JoinSubtitles.Designer.cs
generated
58
src/ui/Forms/JoinSubtitles.Designer.cs
generated
@ -28,6 +28,7 @@
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
|
this.components = new System.ComponentModel.Container();
|
||||||
this.buttonCancel = new System.Windows.Forms.Button();
|
this.buttonCancel = new System.Windows.Forms.Button();
|
||||||
this.buttonJoin = new System.Windows.Forms.Button();
|
this.buttonJoin = new System.Windows.Forms.Button();
|
||||||
this.listViewParts = new System.Windows.Forms.ListView();
|
this.listViewParts = new System.Windows.Forms.ListView();
|
||||||
@ -45,7 +46,13 @@
|
|||||||
this.numericUpDownAddMs = new Nikse.SubtitleEdit.Controls.NikseUpDown();
|
this.numericUpDownAddMs = new Nikse.SubtitleEdit.Controls.NikseUpDown();
|
||||||
this.radioButtonJoinAddTime = new System.Windows.Forms.RadioButton();
|
this.radioButtonJoinAddTime = new System.Windows.Forms.RadioButton();
|
||||||
this.labelAddTime = new Nikse.SubtitleEdit.Controls.NikseLabel();
|
this.labelAddTime = new Nikse.SubtitleEdit.Controls.NikseLabel();
|
||||||
|
this.contextMenuStripParts = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||||
|
this.moveUpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.moveDownToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.moveTopToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.moveBottomToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.groupBoxPreview.SuspendLayout();
|
this.groupBoxPreview.SuspendLayout();
|
||||||
|
this.contextMenuStripParts.SuspendLayout();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// buttonCancel
|
// buttonCancel
|
||||||
@ -83,6 +90,7 @@
|
|||||||
this.columnHeaderStartTime,
|
this.columnHeaderStartTime,
|
||||||
this.columnHeaderEndTime,
|
this.columnHeaderEndTime,
|
||||||
this.columnHeaderFileName});
|
this.columnHeaderFileName});
|
||||||
|
this.listViewParts.ContextMenuStrip = this.contextMenuStripParts;
|
||||||
this.listViewParts.FullRowSelect = true;
|
this.listViewParts.FullRowSelect = true;
|
||||||
this.listViewParts.HideSelection = false;
|
this.listViewParts.HideSelection = false;
|
||||||
this.listViewParts.Location = new System.Drawing.Point(6, 19);
|
this.listViewParts.Location = new System.Drawing.Point(6, 19);
|
||||||
@ -91,6 +99,7 @@
|
|||||||
this.listViewParts.TabIndex = 101;
|
this.listViewParts.TabIndex = 101;
|
||||||
this.listViewParts.UseCompatibleStateImageBehavior = false;
|
this.listViewParts.UseCompatibleStateImageBehavior = false;
|
||||||
this.listViewParts.View = System.Windows.Forms.View.Details;
|
this.listViewParts.View = System.Windows.Forms.View.Details;
|
||||||
|
this.listViewParts.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.listViewParts_ColumnClick);
|
||||||
this.listViewParts.DragDrop += new System.Windows.Forms.DragEventHandler(this.listViewParts_DragDrop);
|
this.listViewParts.DragDrop += new System.Windows.Forms.DragEventHandler(this.listViewParts_DragDrop);
|
||||||
this.listViewParts.DragEnter += new System.Windows.Forms.DragEventHandler(this.listViewParts_DragEnter);
|
this.listViewParts.DragEnter += new System.Windows.Forms.DragEventHandler(this.listViewParts_DragEnter);
|
||||||
//
|
//
|
||||||
@ -252,6 +261,49 @@
|
|||||||
this.labelAddTime.TabIndex = 34;
|
this.labelAddTime.TabIndex = 34;
|
||||||
this.labelAddTime.Text = "Add milliseconds after each file";
|
this.labelAddTime.Text = "Add milliseconds after each file";
|
||||||
//
|
//
|
||||||
|
// contextMenuStripParts
|
||||||
|
//
|
||||||
|
this.contextMenuStripParts.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.moveUpToolStripMenuItem,
|
||||||
|
this.moveDownToolStripMenuItem,
|
||||||
|
this.moveTopToolStripMenuItem,
|
||||||
|
this.moveBottomToolStripMenuItem});
|
||||||
|
this.contextMenuStripParts.Name = "contextMenuStrip1";
|
||||||
|
this.contextMenuStripParts.Size = new System.Drawing.Size(216, 92);
|
||||||
|
this.contextMenuStripParts.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStripParts_Opening);
|
||||||
|
//
|
||||||
|
// 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);
|
||||||
|
//
|
||||||
// JoinSubtitles
|
// JoinSubtitles
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
@ -279,6 +331,7 @@
|
|||||||
this.Resize += new System.EventHandler(this.JoinSubtitles_Resize);
|
this.Resize += new System.EventHandler(this.JoinSubtitles_Resize);
|
||||||
this.groupBoxPreview.ResumeLayout(false);
|
this.groupBoxPreview.ResumeLayout(false);
|
||||||
this.groupBoxPreview.PerformLayout();
|
this.groupBoxPreview.PerformLayout();
|
||||||
|
this.contextMenuStripParts.ResumeLayout(false);
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
this.PerformLayout();
|
this.PerformLayout();
|
||||||
|
|
||||||
@ -303,5 +356,10 @@
|
|||||||
private Nikse.SubtitleEdit.Controls.NikseUpDown numericUpDownAddMs;
|
private Nikse.SubtitleEdit.Controls.NikseUpDown numericUpDownAddMs;
|
||||||
private System.Windows.Forms.RadioButton radioButtonJoinAddTime;
|
private System.Windows.Forms.RadioButton radioButtonJoinAddTime;
|
||||||
private Nikse.SubtitleEdit.Controls.NikseLabel labelAddTime;
|
private Nikse.SubtitleEdit.Controls.NikseLabel labelAddTime;
|
||||||
|
private System.Windows.Forms.ContextMenuStrip contextMenuStripParts;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem moveUpToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem moveDownToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem moveTopToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem moveBottomToolStripMenuItem;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -30,6 +30,11 @@ namespace Nikse.SubtitleEdit.Forms
|
|||||||
listViewParts.Columns[2].Text = LanguageSettings.Current.JoinSubtitles.EndTime;
|
listViewParts.Columns[2].Text = LanguageSettings.Current.JoinSubtitles.EndTime;
|
||||||
listViewParts.Columns[3].Text = LanguageSettings.Current.JoinSubtitles.FileName;
|
listViewParts.Columns[3].Text = LanguageSettings.Current.JoinSubtitles.FileName;
|
||||||
|
|
||||||
|
moveUpToolStripMenuItem.Text = LanguageSettings.Current.DvdSubRip.MoveUp;
|
||||||
|
moveDownToolStripMenuItem.Text = LanguageSettings.Current.DvdSubRip.MoveDown;
|
||||||
|
moveTopToolStripMenuItem.Text = LanguageSettings.Current.MultipleReplace.MoveToTop;
|
||||||
|
moveBottomToolStripMenuItem.Text = LanguageSettings.Current.MultipleReplace.MoveToBottom;
|
||||||
|
|
||||||
buttonAddFile.Text = LanguageSettings.Current.DvdSubRip.Add;
|
buttonAddFile.Text = LanguageSettings.Current.DvdSubRip.Add;
|
||||||
buttonRemoveFile.Text = LanguageSettings.Current.DvdSubRip.Remove;
|
buttonRemoveFile.Text = LanguageSettings.Current.DvdSubRip.Remove;
|
||||||
buttonClear.Text = LanguageSettings.Current.DvdSubRip.Clear;
|
buttonClear.Text = LanguageSettings.Current.DvdSubRip.Clear;
|
||||||
@ -388,6 +393,7 @@ namespace Nikse.SubtitleEdit.Forms
|
|||||||
{
|
{
|
||||||
MessageBox.Show(sb.ToString());
|
MessageBox.Show(sb.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
JoinSubtitles_Resize(sender, e);
|
JoinSubtitles_Resize(sender, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -438,5 +444,203 @@ namespace Nikse.SubtitleEdit.Forms
|
|||||||
labelAddTime.Enabled = radioButtonJoinAddTime.Checked;
|
labelAddTime.Enabled = radioButtonJoinAddTime.Checked;
|
||||||
SortAndLoad();
|
SortAndLoad();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void contextMenuStripParts_Opening(object sender, System.ComponentModel.CancelEventArgs e)
|
||||||
|
{
|
||||||
|
if (radioButtonJoinPlain.Checked)
|
||||||
|
{
|
||||||
|
e.Cancel = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void MoveUp(ListView listView)
|
||||||
|
{
|
||||||
|
if (listView.SelectedItems.Count != 1)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var idx = listView.SelectedItems[0].Index;
|
||||||
|
if (idx == 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var item = listView.SelectedItems[0];
|
||||||
|
listView.Items.RemoveAt(idx);
|
||||||
|
var style = _fileNamesToJoin[idx];
|
||||||
|
_fileNamesToJoin.RemoveAt(idx);
|
||||||
|
_fileNamesToJoin.Insert(idx - 1, style);
|
||||||
|
|
||||||
|
idx--;
|
||||||
|
listView.Items.Insert(idx, item);
|
||||||
|
UpdateSelectedIndices(listView, idx);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void MoveDown(ListView listView)
|
||||||
|
{
|
||||||
|
if (listView.SelectedItems.Count != 1)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var idx = listView.SelectedItems[0].Index;
|
||||||
|
if (idx >= listView.Items.Count - 1)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var item = listView.SelectedItems[0];
|
||||||
|
listView.Items.RemoveAt(idx);
|
||||||
|
var style = _fileNamesToJoin[idx];
|
||||||
|
_fileNamesToJoin.RemoveAt(idx);
|
||||||
|
_fileNamesToJoin.Insert(idx + 1, style);
|
||||||
|
|
||||||
|
idx++;
|
||||||
|
listView.Items.Insert(idx, item);
|
||||||
|
UpdateSelectedIndices(listView, idx);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void MoveToTop(ListView listView)
|
||||||
|
{
|
||||||
|
if (listView.SelectedItems.Count != 1)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var idx = listView.SelectedItems[0].Index;
|
||||||
|
if (idx == 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var item = listView.SelectedItems[0];
|
||||||
|
listView.Items.RemoveAt(idx);
|
||||||
|
var style = _fileNamesToJoin[idx];
|
||||||
|
_fileNamesToJoin.RemoveAt(idx);
|
||||||
|
_fileNamesToJoin.Insert(0, style);
|
||||||
|
|
||||||
|
idx = 0;
|
||||||
|
listView.Items.Insert(idx, item);
|
||||||
|
UpdateSelectedIndices(listView, idx);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void MoveToBottom(ListView listView)
|
||||||
|
{
|
||||||
|
if (listView.SelectedItems.Count != 1)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var idx = listView.SelectedItems[0].Index;
|
||||||
|
if (idx == listView.Items.Count - 1)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var item = listView.SelectedItems[0];
|
||||||
|
listView.Items.RemoveAt(idx);
|
||||||
|
var style = _fileNamesToJoin[idx];
|
||||||
|
_fileNamesToJoin.RemoveAt(idx);
|
||||||
|
_fileNamesToJoin.Add(style);
|
||||||
|
|
||||||
|
listView.Items.Add(item);
|
||||||
|
UpdateSelectedIndices(listView);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void UpdateSelectedIndices(ListView listView, int startingIndex = -1, int numberOfSelectedItems = 1)
|
||||||
|
{
|
||||||
|
if (numberOfSelectedItems == 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (startingIndex == -1 || startingIndex >= listView.Items.Count)
|
||||||
|
{
|
||||||
|
startingIndex = listView.Items.Count - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (startingIndex - numberOfSelectedItems < -1)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
listView.SelectedItems.Clear();
|
||||||
|
for (var i = 0; i < numberOfSelectedItems; i++)
|
||||||
|
{
|
||||||
|
listView.Items[startingIndex - i].Selected = true;
|
||||||
|
listView.Items[startingIndex - i].EnsureVisible();
|
||||||
|
listView.Items[startingIndex - i].Focused = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void moveUpToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (radioButtonJoinPlain.Checked)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
MoveUp(listViewParts);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void moveDownToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (radioButtonJoinPlain.Checked)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
MoveDown(listViewParts);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void moveTopToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (radioButtonJoinPlain.Checked)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
MoveToTop(listViewParts);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void moveBottomToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (radioButtonJoinPlain.Checked)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
MoveToBottom(listViewParts);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void listViewParts_ColumnClick(object sender, ColumnClickEventArgs e)
|
||||||
|
{
|
||||||
|
if (radioButtonJoinPlain.Checked || e.Column != 3)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var lv = (ListView)sender;
|
||||||
|
if (!(lv.ListViewItemSorter is ListViewSorter sorter))
|
||||||
|
{
|
||||||
|
sorter = new ListViewSorter
|
||||||
|
{
|
||||||
|
ColumnNumber = e.Column,
|
||||||
|
};
|
||||||
|
lv.ListViewItemSorter = sorter;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (e.Column == sorter.ColumnNumber)
|
||||||
|
{
|
||||||
|
sorter.Descending = !sorter.Descending; // inverse sort direction
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sorter.ColumnNumber = e.Column;
|
||||||
|
}
|
||||||
|
|
||||||
|
lv.Sort();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -117,6 +117,9 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<metadata name="contextMenuStripParts.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>159, 22</value>
|
||||||
|
</metadata>
|
||||||
<metadata name="openFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
<metadata name="openFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<value>17, 17</value>
|
<value>17, 17</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
@ -13,7 +13,7 @@ namespace Nikse.SubtitleEdit.Logic
|
|||||||
public bool IsDisplayFileSize { get; set; }
|
public bool IsDisplayFileSize { get; set; }
|
||||||
public bool Descending { get; set; }
|
public bool Descending { get; set; }
|
||||||
|
|
||||||
private Regex _invariantNumber = new Regex(@"\d+\.{1,2}", RegexOptions.Compiled);
|
private readonly Regex _invariantNumber = new Regex(@"\d+\.{1,2}", RegexOptions.Compiled);
|
||||||
|
|
||||||
public int Compare(object o1, object o2)
|
public int Compare(object o1, object o2)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user