OSDN Git Service

LoadAsync()メソッドを追加した
authorkonekoneko <test2214@hotmail.co.jp>
Sat, 8 Feb 2014 16:07:12 +0000 (01:07 +0900)
committerkonekoneko <test2214@hotmail.co.jp>
Sat, 8 Feb 2014 16:07:12 +0000 (01:07 +0900)
Common/WinFileStream.cs
WPF/FooEditEngine/FooTextBox.cs
Windows/FooEditEngine/FooTextBox.cs

index b867261..c6e79c6 100644 (file)
@@ -48,12 +48,16 @@ namespace FooEditEngine
     }
     class WinFileReader : IStreamReader
     {
-        StreamReader sr;
+        TextReader sr;
 #if !METRO
         public WinFileReader(string filepath, Encoding enc)
         {
             this.sr = new StreamReader(filepath, enc);
         }
+        public WinFileReader(TextReader tr)
+        {
+            this.sr = tr;
+        }
 #else
         public WinFileReader(StreamReader sr)
         {
index 697d6c0..afbdf8e 100644 (file)
@@ -347,21 +347,40 @@ namespace FooEditEngine.WPF
         }\r
 \r
         /// <summary>\r
+        /// ストリームからドキュメントを構築する\r
+        /// </summary>\r
+        /// <param name="tr">TextReader</param>\r
+        /// <param name="token">キャンセル用トークン</param>\r
+        /// <returns>Taskオブジェクト</returns>\r
+        public async Task LoadAsync(System.IO.TextReader tr, System.Threading.CancellationTokenSource token)\r
+        {\r
+            WinFileReader fs = new WinFileReader(tr);\r
+            await this.LoadAsyncImpl(fs, token);\r
+        }\r
+\r
+        /// <summary>\r
         /// ファイルからドキュメントを構築する\r
         /// </summary>\r
         /// <param name="filepath">ファイルパス</param>\r
         /// <param name="enc">エンコード</param>\r
+        /// <param name="token">キャンセル用トークン</param>\r
         /// <returns>Taskオブジェクト</returns>\r
         public async Task LoadFileAsync(string filepath, Encoding enc,System.Threading.CancellationTokenSource token)\r
         {\r
-            this.View.LayoutLines.IsFrozneDirtyFlag = true;\r
             WinFileReader fs = new WinFileReader(filepath, enc);\r
+            await this.LoadAsyncImpl(fs, token);\r
+        }\r
+\r
+        async Task LoadAsyncImpl(WinFileReader fs,System.Threading.CancellationTokenSource token)\r
+        {\r
+            this.View.LayoutLines.IsFrozneDirtyFlag = true;\r
             await this.Document.LoadAsync(fs, token);\r
             this.View.LayoutLines.IsFrozneDirtyFlag = false;\r
             TextStoreHelper.NotifyTextChanged(this.textStore, 0, 0, this.Document.Length);\r
             if (this.verticalScrollBar != null)\r
                 this.verticalScrollBar.Maximum = this.View.LayoutLines.Count;\r
             this.View.CalculateLineCountOnScreen();\r
+\r
         }\r
 \r
         /// <summary>\r
index 81b2b29..2f892c4 100644 (file)
@@ -831,20 +831,39 @@ namespace FooEditEngine.Windows
         }\r
 \r
         /// <summary>\r
+        /// ストリームからドキュメントを構築する\r
+        /// </summary>\r
+        /// <param name="tr">TextReader</param>\r
+        /// <param name="token">キャンセル用トークン</param>\r
+        /// <returns>Taskオブジェクト</returns>\r
+        public async Task LoadAsync(System.IO.TextReader tr, System.Threading.CancellationTokenSource token)\r
+        {\r
+            WinFileReader fs = new WinFileReader(tr);\r
+            await this.LoadAsyncImpl(fs, token);\r
+        }\r
+\r
+        /// <summary>\r
         /// ファイルからドキュメントを構築する\r
         /// </summary>\r
         /// <param name="filepath">ファイルパス</param>\r
         /// <param name="enc">エンコード</param>\r
+        /// <param name="token">キャンセル用トークン</param>\r
         /// <returns>Taskオブジェクト</returns>\r
         public async Task LoadFileAsync(string filepath, Encoding enc, System.Threading.CancellationTokenSource token)\r
         {\r
-            this.View.LayoutLines.IsFrozneDirtyFlag = true;\r
             WinFileReader fs = new WinFileReader(filepath, enc);\r
+            await this.LoadAsyncImpl(fs, token);\r
+        }\r
+\r
+        async Task LoadAsyncImpl(WinFileReader fs, System.Threading.CancellationTokenSource token)\r
+        {\r
+            this.View.LayoutLines.IsFrozneDirtyFlag = true;\r
             await this.Document.LoadAsync(fs, token);\r
             this.View.LayoutLines.IsFrozneDirtyFlag = false;\r
             this.initScrollBars();\r
             this.OnMouseMove(new MouseEventArgs(MouseButtons.None, 0, MousePosition.X, MousePosition.Y, 0));\r
             this.View.CalculateLineCountOnScreen();\r
+\r
         }\r
 \r
         /// <summary>\r