Added progress indicator when importing subtitles from mkv files

git-svn-id: https://subtitleedit.googlecode.com/svn/trunk@655 99eadd0c-20b8-1223-b5c4-2a2b2df33de2
This commit is contained in:
niksedk 2011-09-19 06:19:02 +00:00
parent 8072b5dce5
commit 45afd1a1f0
3 changed files with 17 additions and 6 deletions

View File

@ -16,6 +16,7 @@ using Nikse.SubtitleEdit.Logic.VobSub;
namespace Nikse.SubtitleEdit.Forms namespace Nikse.SubtitleEdit.Forms
{ {
public sealed partial class Main : Form public sealed partial class Main : Form
{ {
@ -5454,6 +5455,13 @@ namespace Nikse.SubtitleEdit.Forms
} }
} }
private void MatroskaProgress(long position, long total)
{
ShowStatus(string.Format("{0}, {1:0}%", _language.ParsingMatroskaFile, position * 100 / total));
System.Threading.Thread.Sleep(100);
statusStrip1.Refresh();
}
private void LoadMatroskaSubtitle(MatroskaSubtitleInfo matroskaSubtitleInfo, string fileName) private void LoadMatroskaSubtitle(MatroskaSubtitleInfo matroskaSubtitleInfo, string fileName)
{ {
bool isValid; bool isValid;
@ -5489,7 +5497,7 @@ namespace Nikse.SubtitleEdit.Forms
ShowStatus(_language.ParsingMatroskaFile); ShowStatus(_language.ParsingMatroskaFile);
Refresh(); Refresh();
Cursor.Current = Cursors.WaitCursor; Cursor.Current = Cursors.WaitCursor;
List<SubtitleSequence> sub = matroska.GetMatroskaSubtitle(fileName, (int)matroskaSubtitleInfo.TrackNumber, out isValid); List<SubtitleSequence> sub = matroska.GetMatroskaSubtitle(fileName, (int)matroskaSubtitleInfo.TrackNumber, out isValid, MatroskaProgress);
Cursor.Current = Cursors.Default; Cursor.Current = Cursors.Default;
if (isValid) if (isValid)
{ {
@ -5587,7 +5595,7 @@ namespace Nikse.SubtitleEdit.Forms
ShowStatus(_language.ParsingMatroskaFile); ShowStatus(_language.ParsingMatroskaFile);
Refresh(); Refresh();
Cursor.Current = Cursors.WaitCursor; Cursor.Current = Cursors.WaitCursor;
List<SubtitleSequence> sub = matroska.GetMatroskaSubtitle(fileName, (int)matroskaSubtitleInfo.TrackNumber, out isValid); List<SubtitleSequence> sub = matroska.GetMatroskaSubtitle(fileName, (int)matroskaSubtitleInfo.TrackNumber, out isValid, MatroskaProgress);
Cursor.Current = Cursors.Default; Cursor.Current = Cursors.Default;
if (isValid) if (isValid)
@ -5671,7 +5679,7 @@ namespace Nikse.SubtitleEdit.Forms
ShowStatus(_language.ParsingMatroskaFile); ShowStatus(_language.ParsingMatroskaFile);
Refresh(); Refresh();
Cursor.Current = Cursors.WaitCursor; Cursor.Current = Cursors.WaitCursor;
List<SubtitleSequence> sub = matroska.GetMatroskaSubtitle(fileName, (int)matroskaSubtitleInfo.TrackNumber, out isValid); List<SubtitleSequence> sub = matroska.GetMatroskaSubtitle(fileName, (int)matroskaSubtitleInfo.TrackNumber, out isValid, MatroskaProgress);
Cursor.Current = Cursors.Default; Cursor.Current = Cursors.Default;
int noOfErrors = 0; int noOfErrors = 0;
string lastError = string.Empty; string lastError = string.Empty;

View File

@ -681,7 +681,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD2 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD2
CAAAAk1TRnQBSQFMAgEBAgEAASgBCwEoAQsBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo CAAAAk1TRnQBSQFMAgEBAgEAATABCwEwAQsBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA

View File

@ -42,6 +42,8 @@ namespace Nikse.SubtitleEdit.Logic
public class Matroska public class Matroska
{ {
public delegate void LoadMatroskaCallback(long position, long total);
[System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Explicit, Pack = 2)] [System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Explicit, Pack = 2)]
private struct ByteLayout16 private struct ByteLayout16
{ {
@ -1208,7 +1210,7 @@ namespace Nikse.SubtitleEdit.Logic
return _subtitleList; return _subtitleList;
} }
public List<SubtitleSequence> GetMatroskaSubtitle(string fileName, int trackNumber, out bool isValid) public List<SubtitleSequence> GetMatroskaSubtitle(string fileName, int trackNumber, out bool isValid, Matroska.LoadMatroskaCallback callback)
{ {
byte b; byte b;
bool done; bool done;
@ -1273,7 +1275,8 @@ namespace Nikse.SubtitleEdit.Logic
f.Seek(dataSize, SeekOrigin.Current); f.Seek(dataSize, SeekOrigin.Current);
} }
} }
if (callback != null)
callback.Invoke(f.Position, f.Length);
endOfFile = f.Position >= f.Length; endOfFile = f.Position >= f.Length;
} }
} }