ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/RomCheater/trunk/RomCheater.Logging/LogWriter.cs
(Generate patch)

Comparing trunk/RomCheater.Logging/LogWriter.cs (file contents):
Revision 300 by william, Tue Jun 5 11:35:37 2012 UTC vs.
Revision 301 by william, Tue Jun 5 13:27:07 2012 UTC

# Line 9 | Line 9 | using System.Text;
9   using System.Windows.Forms;
10   using System.IO;
11   using System.Reflection;
12 + using System.Security;
13  
14   namespace RomCheater.Logging
15   {
# Line 20 | Line 21 | namespace RomCheater.Logging
21          private delegate void OnSetLogText(string value);
22          private delegate void GenericVoidDelegate();
23  
24 <        private OnGetLogText HandleGetLogText = null;
24 >        //private OnGetLogText HandleGetLogText = null;
25          private OnSetLogText HandleSetLogText = null;
26          private GenericVoidDelegate delegate_EndLogUpdate = null;
27  
# Line 29 | Line 30 | namespace RomCheater.Logging
30          {
31              InitializeComponent();
32              this.Log = new LogStream(this);
33 <            HandleGetLogText += new OnGetLogText(GetLogText);
33 >            //HandleGetLogText += new OnGetLogText(GetLogText);
34              HandleSetLogText += new OnSetLogText(SetLogText);
35  
36 <            delegate_EndLogUpdate += new GenericVoidDelegate(EndLogUpdate);
36 >            //delegate_EndLogUpdate += new GenericVoidDelegate(EndLogUpdate);
37  
38              this.RedirectConsoleOutput = redirectConsole;
39              toolTip1.SetToolTip(btnClearLog, "Clears the Log");
40              toolTip1.SetToolTip(btnCopyLogToClipboard, "Copies the Log to the Clipboard");
41  
42 <            ms = new MemoryStream();
43 <            sw = new StreamWriter(ms);
44 <            sw.AutoFlush = true;
45 <            sr = new StreamReader(ms);
42 >            //ms = new MemoryStream();
43 >            //sw = new StreamWriter(ms);
44 >            //sw.AutoFlush = true;
45 >            //sr = new StreamReader(ms);
46          }
47          private LogStream _Log;
48          public LogStream Log { get { return _Log; } private set { _Log = value; } }
49  
50  
51 <        private MemoryStream ms;
52 <        private StreamWriter sw;
53 <        private StreamReader sr;
51 >        //private MemoryStream ms;
52 >        //private StreamWriter sw;
53 >        //private StreamReader sr;
54          private bool _AutoScroll;
55          new public bool AutoScroll { get { return _AutoScroll; } set { _AutoScroll = value; autoscroll_timer.Enabled = value; } }
56  
# Line 77 | Line 78 | namespace RomCheater.Logging
78          }
79  
80          private void btnClearLog_Click(object sender, EventArgs e) { this.Clear(true); }
81 <        private void btnCopyLogToClipboard_Click(object sender, EventArgs e) { Clipboard.SetText(GetLogText()); }
81 >        private void btnCopyLogToClipboard_Click(object sender, EventArgs e) { Clipboard.SetText(txtLog.Text); }
82  
83  
84          private string PreserveLineEndings(string text) { return text.Replace("\n", System.Environment.NewLine); }
85  
86  
87 <        private bool BeginUpdate;
88 <        public void BeginLogUpdate()
89 <        {
90 <            BeginUpdate = true;
91 <        }
92 <        public void EndLogUpdate()
93 <        {
94 <            if (txtLog.InvokeRequired)
95 <            {
96 <                this.Invoke(delegate_EndLogUpdate);
97 <            }
98 <            else
99 <            {
100 <                StringReader _sr = new StringReader(GetLogText());
101 <                List<string> lines = new List<string>();
102 <                string line = "";
103 <                while ((line = _sr.ReadLine()) != null)
104 <                {
105 <                    lines.Add(line);
106 <                }
107 <                txtLog.Lines = lines.ToArray();
108 <                BeginUpdate = false;
109 <            }
110 <        }
111 <        private string StreamToString()
112 <        {
113 <            try
114 <            {
115 <                string value = "";
116 <                sr = new StreamReader(ms);
117 <                sr.BaseStream.Seek(0, SeekOrigin.Begin);
118 <                value = sr.ReadToEnd();
119 <                return value;
120 <            }
121 <            catch (Exception ex)
122 <            {
123 <                return "";
124 <            }
125 <        }
126 <        public string GetLogText()
127 <        {
128 <            //if (txtLog.InvokeRequired)
129 <            //{
130 <            //    return (string)this.Invoke(HandleGetLogText, new object[] { });
131 <            //}
132 <            //else
133 <            //{
134 <            return PreserveLineEndings(StreamToString());
135 <            //}
136 <
137 <        }
87 >        //private bool BeginUpdate;
88 >        //public void BeginLogUpdate()
89 >        //{
90 >        //    BeginUpdate = true;
91 >        //}
92 >        //public void EndLogUpdate()
93 >        //{
94 >        //    if (txtLog.InvokeRequired)
95 >        //    {
96 >        //        this.Invoke(delegate_EndLogUpdate);
97 >        //    }
98 >        //    else
99 >        //    {
100 >        //        StringReader _sr = new StringReader(GetLogText());
101 >        //        List<string> lines = new List<string>();
102 >        //        string line = "";
103 >        //        while ((line = _sr.ReadLine()) != null)
104 >        //        {
105 >        //            lines.Add(line);
106 >        //        }
107 >        //        txtLog.Lines = lines.ToArray();
108 >        //        BeginUpdate = false;
109 >        //    }
110 >        //}
111 >        //private string StreamToString()
112 >        //{
113 >        //    try
114 >        //    {
115 >        //        string value = "";
116 >        //        sr = new StreamReader(ms);
117 >        //        sr.BaseStream.Seek(0, SeekOrigin.Begin);
118 >        //        value = sr.ReadToEnd();
119 >        //        return value;
120 >        //    }
121 >        //    catch (Exception ex)
122 >        //    {
123 >        //        return "";
124 >        //    }
125 >        //}
126 >        //public string GetLogText()
127 >        //{
128 >        //    if (txtLog.InvokeRequired)
129 >        //    {
130 >        //        return (string)this.Invoke(HandleGetLogText, new object[] { });
131 >        //    }
132 >        //    else
133 >        //    {
134 >        //        string text = PreserveLineEndings(StreamToString());
135 >        //        StringReader _sr = new StringReader(GetLogText());
136 >        //        List<string> lines = new List<string>();
137 >        //        string line = "";
138 >        //        while ((line = _sr.ReadLine()) != null)
139 >        //        {
140 >        //            lines.Add(line);
141 >        //        }
142 >        //        txtLog.Lines = lines.ToArray();
143 >        //        return text;
144 >        //    }
145 >        //}
146          public void SetLogText(string value)
147          {
148              FileStream fs = new FileStream(LOG_PATH, FileMode.Append, FileAccess.Write, FileShare.ReadWrite);
# Line 143 | Line 152 | namespace RomCheater.Logging
152              else { writer.Write(value); }
153              writer.Close();
154              //string text = value.Replace(System.Environment.NewLine,"");
155 <            string text = value.Replace(System.Environment.NewLine, Log.NewLine);
156 <            //if (text.StartsWith(Log.NewLine))
157 <            //{
158 <            //    text = text.Remove(0, Log.NewLine.Length);
159 <            //}
160 <            sw.Write(text);
161 <            Application.DoEvents();
155 >            //string text = value.Replace(System.Environment.NewLine, Log.NewLine);
156 >            ////if (text.StartsWith(Log.NewLine))
157 >            ////{
158 >            ////    text = text.Remove(0, Log.NewLine.Length);
159 >            ////}
160 >            //sw.Write(text);
161 >            //Application.DoEvents();
162 >            txtLog.AppendText(value);
163          }
164  
165          new public string Text
# Line 187 | Line 197 | namespace RomCheater.Logging
197              {
198  
199                  txtLog.Clear();
200 <                ms = new MemoryStream();
201 <                sw = new StreamWriter(ms);
202 <                sw.AutoFlush = true;
203 <                sr = new StreamReader(ms);
200 >                //ms = new MemoryStream();
201 >                //sw = new StreamWriter(ms);
202 >                //sw.AutoFlush = true;
203 >                //sr = new StreamReader(ms);
204              }
205          }
206          #region sub-classes
# Line 200 | Line 210 | namespace RomCheater.Logging
210              public LogStream() : this(null) { }
211              public LogStream(LogWriter text) : base() { _text_writer = text; this.NewLine = "\n"; }
212              private LogWriter _text_writer;
213 <            private void _write(string message)
214 <            {
215 <                if (_text_writer == null) return;
213 >            //private void _write(string message)
214 >            //{
215 >            //    if (_text_writer == null) return;
216  
217 <                if (message.EndsWith("\n"))
218 <                {
219 <                    //_text_writer.SetLogText(string.Format("{0}", strMessage.ToString()));
220 <                    while (_text_writer.logupdater.IsBusy)
221 <                    {
222 <                        Application.DoEvents();
223 <                    }
224 <                    _text_writer.logupdater.RunWorkerAsync((string.Format("{0}", strMessage.ToString())));
225 <                    strMessage = new StringBuilder();
226 <                }
227 <                strMessage.Append(message);
228 <            }
217 >            //    if (message.EndsWith("\n"))
218 >            //    {
219 >            //        //_text_writer.SetLogText(string.Format("{0}", strMessage.ToString()));
220 >            //        while (_text_writer.logupdater.IsBusy)
221 >            //        {
222 >            //            Application.DoEvents();
223 >            //        }
224 >            //        _text_writer.logupdater.RunWorkerAsync((string.Format("{0}", strMessage.ToString())));
225 >            //        strMessage = new StringBuilder();
226 >            //    }
227 >            //    strMessage.Append(message);
228 >            //}
229              #region Overriden Methods
230              public override Encoding Encoding { get { return Encoding.UTF8; } }
231 <            public override void Write(char value) { base.Write(value); _write(value.ToString()); if (!_text_writer.BeginUpdate) _text_writer.EndLogUpdate(); }
231 >
232 >            public override void Write(bool value) { _text_writer.SetLogText(value.ToString()); }
233 >            public override void Write(char value) { _text_writer.SetLogText(value.ToString()); }
234 >            public override void Write(char[] buffer) { _text_writer.SetLogText(new string(buffer)); }
235 >            public override void Write(decimal value) { _text_writer.SetLogText(value.ToString()); }
236 >            public override void Write(double value) { _text_writer.SetLogText(value.ToString()); }
237 >            public override void Write(float value) { _text_writer.SetLogText(value.ToString()); }
238 >            public override void Write(int value) { _text_writer.SetLogText(value.ToString()); }
239 >            public override void Write(long value) { _text_writer.SetLogText(value.ToString()); }
240 >            public override void Write(object value) { _text_writer.SetLogText(value.ToString()); }
241 >            public override void Write(string value) { _text_writer.SetLogText(value.ToString()); }
242 >            public override void Write(uint value) { _text_writer.SetLogText(value.ToString()); }
243 >            public override void Write(ulong value) { _text_writer.SetLogText(value.ToString()); }
244 >            public override void Write(string format, object arg0) { _text_writer.SetLogText(string.Format(format, arg0)); }
245 >            public override void Write(string format, params object[] arg) { _text_writer.SetLogText(string.Format(format, arg)); }
246 >            public override void Write(char[] buffer, int index, int count)
247 >            {
248 >                byte[] t = new byte[count];
249 >                MemoryStream ms = new MemoryStream();
250 >                StreamWriter sw = new StreamWriter(ms);
251 >                sw.AutoFlush = true;
252 >                sw.Write(buffer, index, count);
253 >                sw.Close();
254 >                _text_writer.SetLogText(Encoding.GetString(ms.ToArray()));
255 >            }
256 >            public override void Write(string format, object arg0, object arg1) { _text_writer.SetLogText(string.Format(format, arg0, arg1)); }
257 >            public override void Write(string format, object arg0, object arg1, object arg2) { _text_writer.SetLogText(string.Format(format, arg0, arg1, arg2)); }
258 >            public override void WriteLine() { _text_writer.SetLogText(System.Environment.NewLine); }
259 >            public override void WriteLine(bool value) { _text_writer.SetLogText(string.Format("{0}{1}", value.ToString(), System.Environment.NewLine)); }
260 >            public override void WriteLine(char value) { _text_writer.SetLogText(string.Format("{0}{1}", value.ToString(), System.Environment.NewLine)); }
261 >            public override void WriteLine(char[] buffer) { _text_writer.SetLogText(string.Format("{0}{1}", new string(buffer), System.Environment.NewLine)); }
262 >            public override void WriteLine(decimal value) { _text_writer.SetLogText(string.Format("{0}{1}", value.ToString(), System.Environment.NewLine)); }
263 >            public override void WriteLine(double value) { _text_writer.SetLogText(string.Format("{0}{1}", value.ToString(), System.Environment.NewLine)); }
264 >            public override void WriteLine(float value) { _text_writer.SetLogText(string.Format("{0}{1}", value.ToString(), System.Environment.NewLine)); }
265 >            public override void WriteLine(int value) { _text_writer.SetLogText(string.Format("{0}{1}", value.ToString(), System.Environment.NewLine)); }
266 >            public override void WriteLine(long value) { _text_writer.SetLogText(string.Format("{0}{1}", value.ToString(), System.Environment.NewLine)); }
267 >            public override void WriteLine(object value) { _text_writer.SetLogText(string.Format("{0}{1}", value.ToString(), System.Environment.NewLine)); }
268 >            [SecuritySafeCritical]
269 >            public override void WriteLine(string value) { _text_writer.SetLogText(string.Format("{0}{1}", value, System.Environment.NewLine)); }
270 >            public override void WriteLine(uint value) { _text_writer.SetLogText(string.Format("{0}{1}", value.ToString(), System.Environment.NewLine)); }
271 >            public override void WriteLine(ulong value) { _text_writer.SetLogText(string.Format("{0}{1}", value.ToString(), System.Environment.NewLine)); }
272 >            public override void WriteLine(string format, object arg0) { _text_writer.SetLogText(string.Format("{0}{1}", string.Format(format, arg0), System.Environment.NewLine)); }
273 >            public override void WriteLine(string format, params object[] arg) { _text_writer.SetLogText(string.Format("{0}{1}", string.Format(format, arg), System.Environment.NewLine)); }
274 >            public override void WriteLine(char[] buffer, int index, int count)
275 >            {
276 >                byte[] t = new byte[count];
277 >                MemoryStream ms = new MemoryStream();
278 >                StreamWriter sw = new StreamWriter(ms);
279 >                sw.AutoFlush = true;
280 >                sw.Write(buffer, index, count);
281 >                sw.Close();
282 >                _text_writer.SetLogText(string.Format("{0}{1}",Encoding.GetString(ms.ToArray()),System.Environment.NewLine));
283 >            }
284 >            public override void WriteLine(string format, object arg0, object arg1) { _text_writer.SetLogText(string.Format("{0}{1}", string.Format(format, arg0, arg1), System.Environment.NewLine)); }
285 >            public override void WriteLine(string format, object arg0, object arg1, object arg2) { _text_writer.SetLogText(string.Format("{0}{1}", string.Format(format, arg0, arg1, arg2), System.Environment.NewLine)); }
286              #endregion
287          }
288          #endregion

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines