mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-10-26 23:12:38 +02:00
Work on waveform translate issue - thx Leon :)
This commit is contained in:
parent
257defff89
commit
b70934646f
@ -18,9 +18,9 @@
|
||||
* Improve SSA styling/preview - thxfiolek2000
|
||||
* Allow .ismt files up to 50 mb - thx Essam3152
|
||||
* Allow some malformed WebVTT - thx manuelrn/larsk2
|
||||
* Make BD Sup configurable regarding open action - ocr/edit - thx peter-qgd
|
||||
* Make BD Sup open action configurable (OCR or edit) - thx peter-qgd
|
||||
* Do not use ILRepack - to avoid anti-virus warnings
|
||||
* Add "Clear" key to list of shortcut keys - thx OmrSi
|
||||
* Add "Clear" key to list of available shortcut keys - thx OmrSi
|
||||
* Refresh text in mpv when changing RTL mode
|
||||
* Improve detect of video info - thx Janjens
|
||||
* Improve read of PNS format - thx Milenko
|
||||
@ -39,6 +39,7 @@
|
||||
* Rollback max #lines enforce (now hidden setting) - thx pandalamp
|
||||
* Include favourite formats in "reset"
|
||||
* Take first audio track when loading wave form - thx Tuan-P
|
||||
* Fix issue with waveform original out of sync - thx Leon
|
||||
|
||||
|
||||
3.6.2 (24th August 2021)
|
||||
|
@ -19,7 +19,8 @@ namespace Nikse.SubtitleEdit.Controls
|
||||
None,
|
||||
Start,
|
||||
Whole,
|
||||
End
|
||||
End,
|
||||
StartOrEnd,
|
||||
}
|
||||
|
||||
public class MinMax
|
||||
@ -81,6 +82,7 @@ namespace Nikse.SubtitleEdit.Controls
|
||||
private bool _mouseDown;
|
||||
private Paragraph _oldParagraph;
|
||||
private Paragraph _mouseDownParagraph;
|
||||
private Paragraph[] _mouseDownParagraphs;
|
||||
private MouseDownParagraphType _mouseDownParagraphType = MouseDownParagraphType.Start;
|
||||
private readonly List<Paragraph> _displayableParagraphs;
|
||||
private readonly List<Paragraph> _allSelectedParagraphs;
|
||||
@ -1224,23 +1226,6 @@ namespace Nikse.SubtitleEdit.Controls
|
||||
OnTimeChanged?.Invoke(this, new ParagraphEventArgs(seconds, _mouseDownParagraph, _oldParagraph, _mouseDownParagraphType, AllowMovePrevOrNext));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (curIdx < _subtitle.Paragraphs.Count - 1)
|
||||
{
|
||||
var next = _subtitle.Paragraphs[curIdx + 1];
|
||||
if (milliseconds + Configuration.Settings.General.MinimumMillisecondsBetweenLines < next.StartTime.TotalMilliseconds)
|
||||
{
|
||||
_mouseDownParagraph.EndTime.TotalMilliseconds = milliseconds;
|
||||
OnTimeChanged?.Invoke(this, new ParagraphEventArgs(seconds, _mouseDownParagraph, _oldParagraph, _mouseDownParagraphType, AllowMovePrevOrNext));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_mouseDownParagraph.EndTime.TotalMilliseconds = milliseconds;
|
||||
OnTimeChanged?.Invoke(this, new ParagraphEventArgs(seconds, _mouseDownParagraph, _oldParagraph, _mouseDownParagraphType, AllowMovePrevOrNext));
|
||||
}
|
||||
}
|
||||
}
|
||||
SetMinAndMax();
|
||||
}
|
||||
@ -1466,15 +1451,43 @@ namespace Nikse.SubtitleEdit.Controls
|
||||
|
||||
if (IsParagraphBorderStartHit(milliseconds, paragraph.StartTime.TotalMilliseconds))
|
||||
{
|
||||
var idx = _displayableParagraphs.IndexOf(paragraph);
|
||||
if (idx > 0)
|
||||
{
|
||||
var prev = _displayableParagraphs[idx - 1];
|
||||
if (IsParagraphBorderStartHit(milliseconds, prev.EndTime.TotalMilliseconds) && ModifierKeys != Keys.Alt)
|
||||
{
|
||||
_mouseDownParagraph = null;
|
||||
_mouseDownParagraphs = new List<Paragraph> { prev, paragraph }.ToArray();
|
||||
_mouseDownParagraphType = MouseDownParagraphType.StartOrEnd;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
_oldParagraph = new Paragraph(paragraph);
|
||||
_mouseDownParagraph = paragraph;
|
||||
_mouseDownParagraphs = null;
|
||||
_mouseDownParagraphType = MouseDownParagraphType.Start;
|
||||
return true;
|
||||
}
|
||||
if (IsParagraphBorderEndHit(milliseconds, paragraph.EndTime.TotalMilliseconds))
|
||||
{
|
||||
var idx = _displayableParagraphs.IndexOf(paragraph);
|
||||
if (idx < _displayableParagraphs.Count - 2 && ModifierKeys != Keys.Alt)
|
||||
{
|
||||
var next = _displayableParagraphs[idx + 1];
|
||||
if (IsParagraphBorderStartHit(milliseconds, next.StartTime.TotalMilliseconds))
|
||||
{
|
||||
_mouseDownParagraph = null;
|
||||
_mouseDownParagraphs = new List<Paragraph> { paragraph, next }.ToArray();
|
||||
_mouseDownParagraphType = MouseDownParagraphType.StartOrEnd;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
_oldParagraph = new Paragraph(paragraph);
|
||||
_mouseDownParagraph = paragraph;
|
||||
_mouseDownParagraphs = null;
|
||||
_mouseDownParagraphType = MouseDownParagraphType.End;
|
||||
return true;
|
||||
}
|
||||
@ -1509,7 +1522,7 @@ namespace Nikse.SubtitleEdit.Controls
|
||||
if (e.X < _mouseMoveLastX)
|
||||
{
|
||||
StartPositionSeconds -= 0.1;
|
||||
if (_mouseDownParagraph == null)
|
||||
if (_mouseDownParagraph == null && _mouseDownParagraphs == null)
|
||||
{
|
||||
_mouseMoveEndX = 0;
|
||||
_mouseMoveStartX += (int)(_wavePeaks.SampleRate * 0.1);
|
||||
@ -1523,7 +1536,7 @@ namespace Nikse.SubtitleEdit.Controls
|
||||
if (e.X > Width && _startPositionSeconds + 0.1 < _wavePeaks.LengthInSeconds && _mouseDown)
|
||||
{
|
||||
StartPositionSeconds += 0.1;
|
||||
if (_mouseDownParagraph == null)
|
||||
if (_mouseDownParagraph == null && _mouseDownParagraphs == null)
|
||||
{
|
||||
_mouseMoveEndX = Width;
|
||||
_mouseMoveStartX -= (int)(_wavePeaks.SampleRate * 0.1);
|
||||
@ -1568,6 +1581,53 @@ namespace Nikse.SubtitleEdit.Controls
|
||||
|
||||
if (_mouseDown)
|
||||
{
|
||||
if (_mouseDownParagraphType == MouseDownParagraphType.StartOrEnd && _firstMove && ModifierKeys != Keys.Alt)
|
||||
{
|
||||
double seconds = RelativeXPositionToSeconds(e.X);
|
||||
var milliseconds = (int)(seconds * TimeCode.BaseUnit);
|
||||
|
||||
if (_firstMove && Math.Abs(oldMouseMoveLastX - e.X) < Configuration.Settings.General.MinimumMillisecondsBetweenLines && GetParagraphAtMilliseconds(milliseconds) == null)
|
||||
{
|
||||
if (_mouseDownParagraphType == MouseDownParagraphType.StartOrEnd && _mouseDownParagraphs?.Length == 2 && Math.Abs(_mouseDownParagraphs[0].StartTime.TotalMilliseconds - _mouseDownParagraphs[0].EndTime.TotalMilliseconds) <= ClosenessForBorderSelection + 15)
|
||||
{
|
||||
return; // do not decide which paragraph to move yet
|
||||
}
|
||||
|
||||
if (_mouseDownParagraphType == MouseDownParagraphType.StartOrEnd && _mouseDownParagraphs?.Length == 2 && Math.Abs(_mouseDownParagraphs[1].EndTime.TotalMilliseconds - _mouseDownParagraphs[1].StartTime.TotalMilliseconds) <= ClosenessForBorderSelection + 15)
|
||||
{
|
||||
return; // do not decide which paragraph to move yet
|
||||
}
|
||||
}
|
||||
|
||||
if (_mouseDownParagraphs?.Length == 2)
|
||||
{
|
||||
// decide which paragraph to move
|
||||
if (_firstMove && e.X > oldMouseMoveLastX)
|
||||
{
|
||||
if (milliseconds >= _mouseDownParagraphs[1].StartTime.TotalMilliseconds && milliseconds < _mouseDownParagraphs[1].EndTime.TotalMilliseconds)
|
||||
{
|
||||
_mouseDownParagraph = _mouseDownParagraphs[1];
|
||||
_mouseDownParagraphType = MouseDownParagraphType.Start;
|
||||
_mouseDownParagraphs = null;
|
||||
_oldParagraph = new Paragraph(_mouseDownParagraph);
|
||||
_firstMove = false;
|
||||
}
|
||||
}
|
||||
else if (_firstMove && e.X < oldMouseMoveLastX)
|
||||
{
|
||||
if (milliseconds <= _mouseDownParagraphs[0].EndTime.TotalMilliseconds && milliseconds > _mouseDownParagraphs[0].StartTime.TotalMilliseconds)
|
||||
{
|
||||
_mouseDownParagraph = _mouseDownParagraphs[0];
|
||||
_mouseDownParagraphType = MouseDownParagraphType.End;
|
||||
_mouseDownParagraphs = null;
|
||||
_oldParagraph = new Paragraph(_mouseDownParagraph);
|
||||
_firstMove = false;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (_mouseDownParagraph != null)
|
||||
{
|
||||
double seconds = RelativeXPositionToSeconds(e.X);
|
||||
@ -1578,18 +1638,18 @@ namespace Nikse.SubtitleEdit.Controls
|
||||
|
||||
if (_firstMove && Math.Abs(oldMouseMoveLastX - e.X) < Configuration.Settings.General.MinimumMillisecondsBetweenLines && GetParagraphAtMilliseconds(milliseconds) == null)
|
||||
{
|
||||
if (_mouseDownParagraphType == MouseDownParagraphType.Start && _prevParagraph != null && Math.Abs(_mouseDownParagraph.StartTime.TotalMilliseconds - _prevParagraph.EndTime.TotalMilliseconds) <= ClosenessForBorderSelection + 15)
|
||||
if (_mouseDownParagraphType == MouseDownParagraphType.StartOrEnd && _prevParagraph != null && Math.Abs(_mouseDownParagraph.StartTime.TotalMilliseconds - _prevParagraph.EndTime.TotalMilliseconds) <= ClosenessForBorderSelection + 15)
|
||||
{
|
||||
return; // do not decide which paragraph to move yet
|
||||
}
|
||||
|
||||
if (_mouseDownParagraphType == MouseDownParagraphType.End && _nextParagraph != null && Math.Abs(_mouseDownParagraph.EndTime.TotalMilliseconds - _nextParagraph.StartTime.TotalMilliseconds) <= ClosenessForBorderSelection + 15)
|
||||
if (_mouseDownParagraphType == MouseDownParagraphType.StartOrEnd && _nextParagraph != null && Math.Abs(_mouseDownParagraph.EndTime.TotalMilliseconds - _nextParagraph.StartTime.TotalMilliseconds) <= ClosenessForBorderSelection + 15)
|
||||
{
|
||||
return; // do not decide which paragraph to move yet
|
||||
}
|
||||
}
|
||||
|
||||
if (ModifierKeys != Keys.Alt)
|
||||
if (_firstMove && ModifierKeys != Keys.Alt)
|
||||
{
|
||||
// decide which paragraph to move
|
||||
if (_firstMove && e.X > oldMouseMoveLastX && _nextParagraph != null && _mouseDownParagraphType == MouseDownParagraphType.End)
|
||||
@ -1881,6 +1941,8 @@ namespace Nikse.SubtitleEdit.Controls
|
||||
}
|
||||
}
|
||||
Cursor = Cursors.Default;
|
||||
_mouseDownParagraph = null;
|
||||
_mouseDownParagraphs = null;
|
||||
}
|
||||
|
||||
private void WaveformMouseLeave(object sender, EventArgs e)
|
||||
|
Loading…
Reference in New Issue
Block a user