X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=Core%2FDocument.cs;h=0db90096040d53ec99fe12fc21651676ea7beffc;hb=eb426998af26b5b7e58a2d2e42444561037db20c;hp=cef3067b973010bb42dc5e41e92311287cf296fd;hpb=9d75b2642503100705b013db684e604920f5676c;p=fooeditengine%2FFooEditEngine.git diff --git a/Core/Document.cs b/Core/Document.cs index cef3067..0db9009 100644 --- a/Core/Document.cs +++ b/Core/Document.cs @@ -224,6 +224,8 @@ namespace FooEditEngine set; } + public event ProgressEventHandler LoadProgress; + /// /// ルーラーやキャレット・行番号などの表示すべきものが変化した場合に呼び出される。ドキュメントの内容が変化した通知を受け取り場合はUpdateを使用してください /// @@ -980,11 +982,14 @@ namespace FooEditEngine /// 読み取り操作は別スレッドで行われます。 /// また、非同期操作中はこのメソッドを実行することはできません。 /// - internal async Task LoadAsync(IStreamReader fs, CancellationTokenSource tokenSource = null) + public async Task LoadAsync(TextReader fs, CancellationTokenSource tokenSource = null) { - if (fs.IsEnd()) + if (fs.Peek() == -1) return; + if (this.LoadProgress != null) + this.LoadProgress(this, new ProgressEventArgs(ProgressState.Start)); + try { this.Clear(); @@ -997,6 +1002,8 @@ namespace FooEditEngine this.FireUpdateEvent = true; //これ以降の操作にだけダーティフラグを適用しないとおかしなことになる this.LayoutLines.IsFrozneDirtyFlag = false; + if (this.LoadProgress != null) + this.LoadProgress(this, new ProgressEventArgs(ProgressState.Complete)); } } @@ -1007,7 +1014,7 @@ namespace FooEditEngine /// キャンセルトークン /// Taskオブジェクト /// 非同期操作中はこのメソッドを実行することはできません - internal async Task SaveAsync(IStreamWriter fs, CancellationTokenSource tokenSource = null) + public async Task SaveAsync(TextWriter fs, CancellationTokenSource tokenSource = null) { try { @@ -1205,50 +1212,6 @@ namespace FooEditEngine } /// - /// IStreamReaderインターフェイス - /// - public interface IStreamReader - { - /// - /// ストリームが空かどうかを返す - /// - bool IsEnd(); - - /// - /// ストリームから行を読み取った物を返す。LoadAsyncを呼び出す場合は必ず実装してください - /// - Task ReadLineAsync(); - /// - /// ストリームから指定した文字数だけ読み取る - /// - /// 書き込み先バッファー - /// 書き込み先バッファーのインデックス - /// 読み取る文字数 - /// 読み取った文字数 - Task ReadAsync(char[] buffer, int index, int count); - } - - /// - /// IStreamWriter - /// - public interface IStreamWriter - { - /// - /// ストリームに書き込む。SaveAsyncを呼び出す場合は必ず実装してください - /// - Task WriteAsync(string str); - - /// - /// 書き込む際に使用する改行コード - /// - string NewLine - { - get; - set; - } - } - - /// /// 検索結果を表す /// public class SearchResult