|
- using Shadowsocks.Properties;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
-
- namespace Shadowsocks.View
- {
- public partial class LogForm : Form
- {
- long lastOffset;
- string filename;
- Timer timer;
- const int BACK_OFFSET = 65536;
-
- public LogForm(string filename)
- {
- this.filename = filename;
- InitializeComponent();
- this.Icon = Icon.FromHandle(Resources.ssw128.GetHicon());
- }
-
- private void Timer_Tick(object sender, EventArgs e)
- {
- UpdateContent();
- }
-
- private void InitContent()
- {
- using (StreamReader reader = new StreamReader(new FileStream(filename,
- FileMode.Open, FileAccess.Read, FileShare.ReadWrite)))
- {
- if (reader.BaseStream.Length > BACK_OFFSET)
- {
- reader.BaseStream.Seek(-BACK_OFFSET, SeekOrigin.End);
- reader.ReadLine();
- }
-
- string line = "";
- while ((line = reader.ReadLine()) != null)
- textBox1.AppendText(line + "\r\n");
-
- textBox1.ScrollToCaret();
-
- lastOffset = reader.BaseStream.Position;
- }
- }
-
- private void UpdateContent()
- {
- using (StreamReader reader = new StreamReader(new FileStream(filename,
- FileMode.Open, FileAccess.Read, FileShare.ReadWrite)))
- {
- reader.BaseStream.Seek(lastOffset, SeekOrigin.Begin);
-
- string line = "";
- bool changed = false;
- while ((line = reader.ReadLine()) != null)
- {
- changed = true;
- textBox1.AppendText(line + "\r\n");
- }
-
- if (changed)
- {
- textBox1.ScrollToCaret();
- }
-
- lastOffset = reader.BaseStream.Position;
- }
- }
-
- private void LogForm_Load(object sender, EventArgs e)
- {
- InitContent();
- timer = new Timer();
- timer.Interval = 300;
- timer.Tick += Timer_Tick;
- timer.Start();
- }
-
- private void LogForm_FormClosing(object sender, FormClosingEventArgs e)
- {
- timer.Stop();
- }
-
- private void menuItem2_Click(object sender, EventArgs e)
- {
- string argument = "/select, \"" + filename + "\"";
- Console.WriteLine(argument);
- System.Diagnostics.Process.Start("explorer.exe", argument);
- }
-
- private void menuItem3_Click(object sender, EventArgs e)
- {
-
- }
-
- private void menuItem4_Click(object sender, EventArgs e)
- {
- this.Close();
- }
-
- private void LogForm_Shown(object sender, EventArgs e)
- {
- textBox1.ScrollToCaret();
- }
- }
- }
|