@@ -286,6 +286,12 @@ namespace Shadowsocks.Controller
|
||||
Configuration.Save(_config);
|
||||
}
|
||||
|
||||
public void SaveLogViewerConfig(LogViewerConfig newConfig)
|
||||
{
|
||||
_config.logViewer = newConfig;
|
||||
Configuration.Save(_config);
|
||||
}
|
||||
|
||||
protected void Reload()
|
||||
{
|
||||
// some logic in configuration updated the config when saving, we need to read it again
|
||||
|
||||
@@ -54,10 +54,12 @@ Move D&own=下移(&O)
|
||||
&File=文件(&F)
|
||||
&Open Location=在资源管理器中打开(&O)
|
||||
E&xit=退出(&X)
|
||||
&Clean logs=清空(&C)
|
||||
&Font=字体(&F)
|
||||
&View=视图(&V)
|
||||
&Clean logs=清空日志(&C)
|
||||
Change &font=设置字体(&F)
|
||||
&Wrap text=自动换行(&W)
|
||||
&Top most=置顶(&T)
|
||||
&Show toolbar=显示工具栏(&S)
|
||||
Log Viewer=日志查看器
|
||||
|
||||
# QRCode Form
|
||||
|
||||
@@ -24,6 +24,7 @@ namespace Shadowsocks.Model
|
||||
public bool useOnlinePac;
|
||||
public bool availabilityStatistics;
|
||||
public bool autoCheckUpdate;
|
||||
public LogViewerConfig logViewer;
|
||||
|
||||
private static string CONFIG_FILE = "gui-config.json";
|
||||
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
using System;
|
||||
using System.Drawing;
|
||||
|
||||
namespace Shadowsocks.Model
|
||||
{
|
||||
[Serializable]
|
||||
public class LogViewerConfig
|
||||
{
|
||||
public string fontName;
|
||||
public float fontSize;
|
||||
public string bgColor;
|
||||
public string textColor;
|
||||
public bool topMost;
|
||||
public bool wrapText;
|
||||
public bool toolbarShown;
|
||||
|
||||
public LogViewerConfig()
|
||||
{
|
||||
this.fontName = "Console";
|
||||
this.fontSize = 8;
|
||||
this.bgColor = "black";
|
||||
this.textColor = "white";
|
||||
this.topMost = false;
|
||||
this.wrapText = false;
|
||||
this.toolbarShown = false;
|
||||
}
|
||||
|
||||
public Font GetFont()
|
||||
{
|
||||
try
|
||||
{
|
||||
return new Font(fontName, fontSize);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
return new Font("Console", 8F);
|
||||
}
|
||||
}
|
||||
|
||||
public void SetFont(Font font)
|
||||
{
|
||||
fontName = font.Name;
|
||||
fontSize = font.Size;
|
||||
}
|
||||
|
||||
public Color GetBackgroundColor()
|
||||
{
|
||||
try
|
||||
{
|
||||
return ColorTranslator.FromHtml(bgColor);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
return ColorTranslator.FromHtml("black");
|
||||
}
|
||||
}
|
||||
|
||||
public void SetBackgroundColor(Color color)
|
||||
{
|
||||
bgColor = ColorTranslator.ToHtml(color);
|
||||
}
|
||||
|
||||
public Color GetTextColor()
|
||||
{
|
||||
try
|
||||
{
|
||||
return ColorTranslator.FromHtml(textColor);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
return ColorTranslator.FromHtml("white");
|
||||
}
|
||||
}
|
||||
|
||||
public void SetTextColor(Color color)
|
||||
{
|
||||
textColor = ColorTranslator.ToHtml(color);
|
||||
}
|
||||
}
|
||||
}
|
||||
+110
-49
@@ -30,19 +30,25 @@
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.LogMessageTextBox = new System.Windows.Forms.TextBox();
|
||||
this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.mainMenu1 = new System.Windows.Forms.MainMenu(this.components);
|
||||
this.MainMenu = new System.Windows.Forms.MainMenu(this.components);
|
||||
this.FileMenuItem = new System.Windows.Forms.MenuItem();
|
||||
this.OpenLocationMenuItem = new System.Windows.Forms.MenuItem();
|
||||
this.ExitMenuItem = new System.Windows.Forms.MenuItem();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.ViewMenuItem = new System.Windows.Forms.MenuItem();
|
||||
this.CleanLogsMenuItem = new System.Windows.Forms.MenuItem();
|
||||
this.ChangeFontMenuItem = new System.Windows.Forms.MenuItem();
|
||||
this.WrapTextMenuItem = new System.Windows.Forms.MenuItem();
|
||||
this.TopMostMenuItem = new System.Windows.Forms.MenuItem();
|
||||
this.MenuItemSeparater = new System.Windows.Forms.MenuItem();
|
||||
this.ShowToolbarMenuItem = new System.Windows.Forms.MenuItem();
|
||||
this.TopMostCheckBox = new System.Windows.Forms.CheckBox();
|
||||
this.ChangeFontButton = new System.Windows.Forms.Button();
|
||||
this.CleanLogsButton = new System.Windows.Forms.Button();
|
||||
this.WrapTextCheckBox = new System.Windows.Forms.CheckBox();
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.TopMostCheckBox = new System.Windows.Forms.CheckBox();
|
||||
this.panel1.SuspendLayout();
|
||||
this.ToolbarFlowLayoutPanel = new System.Windows.Forms.FlowLayoutPanel();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
this.ToolbarFlowLayoutPanel.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// LogMessageTextBox
|
||||
@@ -51,25 +57,20 @@
|
||||
this.LogMessageTextBox.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.LogMessageTextBox.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.LogMessageTextBox.ForeColor = System.Drawing.Color.White;
|
||||
this.LogMessageTextBox.Location = new System.Drawing.Point(3, 43);
|
||||
this.LogMessageTextBox.Location = new System.Drawing.Point(3, 38);
|
||||
this.LogMessageTextBox.MaxLength = 2147483647;
|
||||
this.LogMessageTextBox.Multiline = true;
|
||||
this.LogMessageTextBox.Name = "LogMessageTextBox";
|
||||
this.LogMessageTextBox.ReadOnly = true;
|
||||
this.LogMessageTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Both;
|
||||
this.LogMessageTextBox.Size = new System.Drawing.Size(541, 307);
|
||||
this.LogMessageTextBox.Size = new System.Drawing.Size(584, 377);
|
||||
this.LogMessageTextBox.TabIndex = 0;
|
||||
this.LogMessageTextBox.WordWrap = false;
|
||||
//
|
||||
// contextMenuStrip1
|
||||
// MainMenu
|
||||
//
|
||||
this.contextMenuStrip1.Name = "contextMenuStrip1";
|
||||
this.contextMenuStrip1.Size = new System.Drawing.Size(61, 4);
|
||||
//
|
||||
// mainMenu1
|
||||
//
|
||||
this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
|
||||
this.FileMenuItem});
|
||||
this.MainMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
|
||||
this.FileMenuItem,
|
||||
this.ViewMenuItem});
|
||||
//
|
||||
// FileMenuItem
|
||||
//
|
||||
@@ -91,21 +92,70 @@
|
||||
this.ExitMenuItem.Text = "E&xit";
|
||||
this.ExitMenuItem.Click += new System.EventHandler(this.ExitMenuItem_Click);
|
||||
//
|
||||
// panel1
|
||||
// ViewMenuItem
|
||||
//
|
||||
this.panel1.Controls.Add(this.TopMostCheckBox);
|
||||
this.panel1.Controls.Add(this.ChangeFontButton);
|
||||
this.panel1.Controls.Add(this.CleanLogsButton);
|
||||
this.panel1.Controls.Add(this.WrapTextCheckBox);
|
||||
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panel1.Location = new System.Drawing.Point(3, 3);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(541, 34);
|
||||
this.panel1.TabIndex = 1;
|
||||
this.ViewMenuItem.Index = 1;
|
||||
this.ViewMenuItem.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
|
||||
this.CleanLogsMenuItem,
|
||||
this.ChangeFontMenuItem,
|
||||
this.WrapTextMenuItem,
|
||||
this.TopMostMenuItem,
|
||||
this.MenuItemSeparater,
|
||||
this.ShowToolbarMenuItem});
|
||||
this.ViewMenuItem.Text = "&View";
|
||||
//
|
||||
// CleanLogsMenuItem
|
||||
//
|
||||
this.CleanLogsMenuItem.Index = 0;
|
||||
this.CleanLogsMenuItem.Text = "&Clean logs";
|
||||
this.CleanLogsMenuItem.Click += new System.EventHandler(this.CleanLogsMenuItem_Click);
|
||||
//
|
||||
// ChangeFontMenuItem
|
||||
//
|
||||
this.ChangeFontMenuItem.Index = 1;
|
||||
this.ChangeFontMenuItem.Text = "Change &font";
|
||||
this.ChangeFontMenuItem.Click += new System.EventHandler(this.ChangeFontMenuItem_Click);
|
||||
//
|
||||
// WrapTextMenuItem
|
||||
//
|
||||
this.WrapTextMenuItem.Index = 2;
|
||||
this.WrapTextMenuItem.Text = "&Wrap text";
|
||||
this.WrapTextMenuItem.Click += new System.EventHandler(this.WrapTextMenuItem_Click);
|
||||
//
|
||||
// TopMostMenuItem
|
||||
//
|
||||
this.TopMostMenuItem.Index = 3;
|
||||
this.TopMostMenuItem.Text = "&Top most";
|
||||
this.TopMostMenuItem.Click += new System.EventHandler(this.TopMostMenuItem_Click);
|
||||
//
|
||||
// MenuItemSeparater
|
||||
//
|
||||
this.MenuItemSeparater.Index = 4;
|
||||
this.MenuItemSeparater.Text = "-";
|
||||
//
|
||||
// ShowToolbarMenuItem
|
||||
//
|
||||
this.ShowToolbarMenuItem.Index = 5;
|
||||
this.ShowToolbarMenuItem.Text = "&Show toolbar";
|
||||
this.ShowToolbarMenuItem.Click += new System.EventHandler(this.ShowToolbarMenuItem_Click);
|
||||
//
|
||||
// TopMostCheckBox
|
||||
//
|
||||
this.TopMostCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.TopMostCheckBox.AutoSize = true;
|
||||
this.TopMostCheckBox.Location = new System.Drawing.Point(249, 3);
|
||||
this.TopMostCheckBox.Name = "TopMostCheckBox";
|
||||
this.TopMostCheckBox.Size = new System.Drawing.Size(72, 23);
|
||||
this.TopMostCheckBox.TabIndex = 3;
|
||||
this.TopMostCheckBox.Text = "&Top most";
|
||||
this.TopMostCheckBox.UseVisualStyleBackColor = true;
|
||||
this.TopMostCheckBox.CheckedChanged += new System.EventHandler(this.TopMostCheckBox_CheckedChanged);
|
||||
//
|
||||
// ChangeFontButton
|
||||
//
|
||||
this.ChangeFontButton.Location = new System.Drawing.Point(107, 4);
|
||||
this.ChangeFontButton.AutoSize = true;
|
||||
this.ChangeFontButton.Location = new System.Drawing.Point(84, 3);
|
||||
this.ChangeFontButton.Name = "ChangeFontButton";
|
||||
this.ChangeFontButton.Size = new System.Drawing.Size(75, 23);
|
||||
this.ChangeFontButton.TabIndex = 2;
|
||||
@@ -115,7 +165,8 @@
|
||||
//
|
||||
// CleanLogsButton
|
||||
//
|
||||
this.CleanLogsButton.Location = new System.Drawing.Point(9, 4);
|
||||
this.CleanLogsButton.AutoSize = true;
|
||||
this.CleanLogsButton.Location = new System.Drawing.Point(3, 3);
|
||||
this.CleanLogsButton.Name = "CleanLogsButton";
|
||||
this.CleanLogsButton.Size = new System.Drawing.Size(75, 23);
|
||||
this.CleanLogsButton.TabIndex = 1;
|
||||
@@ -125,10 +176,12 @@
|
||||
//
|
||||
// WrapTextCheckBox
|
||||
//
|
||||
this.WrapTextCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.WrapTextCheckBox.AutoSize = true;
|
||||
this.WrapTextCheckBox.Location = new System.Drawing.Point(209, 9);
|
||||
this.WrapTextCheckBox.Location = new System.Drawing.Point(165, 3);
|
||||
this.WrapTextCheckBox.Name = "WrapTextCheckBox";
|
||||
this.WrapTextCheckBox.Size = new System.Drawing.Size(78, 16);
|
||||
this.WrapTextCheckBox.Size = new System.Drawing.Size(78, 23);
|
||||
this.WrapTextCheckBox.TabIndex = 0;
|
||||
this.WrapTextCheckBox.Text = "&Wrap text";
|
||||
this.WrapTextCheckBox.UseVisualStyleBackColor = true;
|
||||
@@ -138,45 +191,47 @@
|
||||
//
|
||||
this.tableLayoutPanel1.ColumnCount = 1;
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.LogMessageTextBox, 0, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.ToolbarFlowLayoutPanel, 0, 0);
|
||||
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
|
||||
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
|
||||
this.tableLayoutPanel1.RowCount = 2;
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 40F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel1.Size = new System.Drawing.Size(547, 353);
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel1.Size = new System.Drawing.Size(590, 418);
|
||||
this.tableLayoutPanel1.TabIndex = 2;
|
||||
//
|
||||
// TopMostCheckBox
|
||||
// ToolbarFlowLayoutPanel
|
||||
//
|
||||
this.TopMostCheckBox.AutoSize = true;
|
||||
this.TopMostCheckBox.Location = new System.Drawing.Point(311, 9);
|
||||
this.TopMostCheckBox.Name = "TopMostCheckBox";
|
||||
this.TopMostCheckBox.Size = new System.Drawing.Size(72, 16);
|
||||
this.TopMostCheckBox.TabIndex = 3;
|
||||
this.TopMostCheckBox.Text = "&Top most";
|
||||
this.TopMostCheckBox.UseVisualStyleBackColor = true;
|
||||
this.TopMostCheckBox.CheckedChanged += new System.EventHandler(this.TopMostCheckBox_CheckedChanged);
|
||||
this.ToolbarFlowLayoutPanel.AutoSize = true;
|
||||
this.ToolbarFlowLayoutPanel.Controls.Add(this.CleanLogsButton);
|
||||
this.ToolbarFlowLayoutPanel.Controls.Add(this.ChangeFontButton);
|
||||
this.ToolbarFlowLayoutPanel.Controls.Add(this.WrapTextCheckBox);
|
||||
this.ToolbarFlowLayoutPanel.Controls.Add(this.TopMostCheckBox);
|
||||
this.ToolbarFlowLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.ToolbarFlowLayoutPanel.Location = new System.Drawing.Point(3, 3);
|
||||
this.ToolbarFlowLayoutPanel.Name = "ToolbarFlowLayoutPanel";
|
||||
this.ToolbarFlowLayoutPanel.Size = new System.Drawing.Size(584, 29);
|
||||
this.ToolbarFlowLayoutPanel.TabIndex = 2;
|
||||
//
|
||||
// LogForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(547, 353);
|
||||
this.ClientSize = new System.Drawing.Size(590, 418);
|
||||
this.Controls.Add(this.tableLayoutPanel1);
|
||||
this.Menu = this.mainMenu1;
|
||||
this.Menu = this.MainMenu;
|
||||
this.Name = "LogForm";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "Log Viewer";
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.LogForm_FormClosing);
|
||||
this.Load += new System.EventHandler(this.LogForm_Load);
|
||||
this.Shown += new System.EventHandler(this.LogForm_Shown);
|
||||
this.panel1.ResumeLayout(false);
|
||||
this.panel1.PerformLayout();
|
||||
this.tableLayoutPanel1.ResumeLayout(false);
|
||||
this.tableLayoutPanel1.PerformLayout();
|
||||
this.ToolbarFlowLayoutPanel.ResumeLayout(false);
|
||||
this.ToolbarFlowLayoutPanel.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
@@ -184,16 +239,22 @@
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.TextBox LogMessageTextBox;
|
||||
private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
|
||||
private System.Windows.Forms.MainMenu mainMenu1;
|
||||
private System.Windows.Forms.MainMenu MainMenu;
|
||||
private System.Windows.Forms.MenuItem FileMenuItem;
|
||||
private System.Windows.Forms.MenuItem OpenLocationMenuItem;
|
||||
private System.Windows.Forms.MenuItem ExitMenuItem;
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private System.Windows.Forms.CheckBox WrapTextCheckBox;
|
||||
private System.Windows.Forms.Button CleanLogsButton;
|
||||
private System.Windows.Forms.Button ChangeFontButton;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
|
||||
private System.Windows.Forms.CheckBox TopMostCheckBox;
|
||||
private System.Windows.Forms.MenuItem ViewMenuItem;
|
||||
private System.Windows.Forms.MenuItem CleanLogsMenuItem;
|
||||
private System.Windows.Forms.MenuItem ChangeFontMenuItem;
|
||||
private System.Windows.Forms.MenuItem WrapTextMenuItem;
|
||||
private System.Windows.Forms.MenuItem TopMostMenuItem;
|
||||
private System.Windows.Forms.FlowLayoutPanel ToolbarFlowLayoutPanel;
|
||||
private System.Windows.Forms.MenuItem MenuItemSeparater;
|
||||
private System.Windows.Forms.MenuItem ShowToolbarMenuItem;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,4 @@
|
||||
using Shadowsocks.Controller;
|
||||
using Shadowsocks.Properties;
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
@@ -10,6 +8,10 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using Shadowsocks.Controller;
|
||||
using Shadowsocks.Properties;
|
||||
using Shadowsocks.Model;
|
||||
|
||||
namespace Shadowsocks.View
|
||||
{
|
||||
public partial class LogForm : Form
|
||||
@@ -18,13 +20,25 @@ namespace Shadowsocks.View
|
||||
string filename;
|
||||
Timer timer;
|
||||
const int BACK_OFFSET = 65536;
|
||||
ShadowsocksController controller;
|
||||
|
||||
public LogForm(string filename)
|
||||
public LogForm(ShadowsocksController controller, string filename)
|
||||
{
|
||||
this.controller = controller;
|
||||
this.filename = filename;
|
||||
InitializeComponent();
|
||||
this.Icon = Icon.FromHandle(Resources.ssw128.GetHicon());
|
||||
|
||||
LogViewerConfig config = controller.GetConfigurationCopy().logViewer;
|
||||
if (config == null)
|
||||
config = new LogViewerConfig();
|
||||
topMostTrigger = config.topMost;
|
||||
wrapTextTrigger = config.wrapText;
|
||||
toolbarTrigger = config.toolbarShown;
|
||||
LogMessageTextBox.BackColor = config.GetBackgroundColor();
|
||||
LogMessageTextBox.ForeColor = config.GetTextColor();
|
||||
LogMessageTextBox.Font = config.GetFont();
|
||||
|
||||
UpdateTexts();
|
||||
}
|
||||
|
||||
@@ -34,9 +48,15 @@ namespace Shadowsocks.View
|
||||
OpenLocationMenuItem.Text = I18N.GetString("&Open Location");
|
||||
ExitMenuItem.Text = I18N.GetString("E&xit");
|
||||
CleanLogsButton.Text = I18N.GetString("&Clean logs");
|
||||
ChangeFontButton.Text = I18N.GetString("&Font");
|
||||
ChangeFontButton.Text = I18N.GetString("Change &font");
|
||||
WrapTextCheckBox.Text = I18N.GetString("&Wrap text");
|
||||
TopMostCheckBox.Text = I18N.GetString("&Top most");
|
||||
ViewMenuItem.Text = I18N.GetString("&View");
|
||||
CleanLogsMenuItem.Text = I18N.GetString("&Clean logs");
|
||||
ChangeFontMenuItem.Text = I18N.GetString("Change &font");
|
||||
WrapTextMenuItem.Text = I18N.GetString("&Wrap text");
|
||||
TopMostMenuItem.Text = I18N.GetString("&Top most");
|
||||
ShowToolbarMenuItem.Text = I18N.GetString("&Show toolbar");
|
||||
this.Text = I18N.GetString("Log Viewer");
|
||||
}
|
||||
|
||||
@@ -97,11 +117,31 @@ namespace Shadowsocks.View
|
||||
timer.Interval = 300;
|
||||
timer.Tick += Timer_Tick;
|
||||
timer.Start();
|
||||
|
||||
topMostTriggerLock = true;
|
||||
this.TopMost = TopMostMenuItem.Checked = TopMostCheckBox.Checked = topMostTrigger;
|
||||
topMostTriggerLock = false;
|
||||
|
||||
wrapTextTriggerLock = true;
|
||||
LogMessageTextBox.WordWrap = WrapTextMenuItem.Checked = WrapTextCheckBox.Checked = wrapTextTrigger;
|
||||
wrapTextTriggerLock = false;
|
||||
|
||||
ToolbarFlowLayoutPanel.Visible = ShowToolbarMenuItem.Checked = toolbarTrigger;
|
||||
}
|
||||
|
||||
private void LogForm_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
timer.Stop();
|
||||
LogViewerConfig config = controller.GetConfigurationCopy().logViewer;
|
||||
if (config == null)
|
||||
config = new LogViewerConfig();
|
||||
config.topMost = topMostTrigger;
|
||||
config.wrapText = wrapTextTrigger;
|
||||
config.toolbarShown = toolbarTrigger;
|
||||
config.SetFont(LogMessageTextBox.Font);
|
||||
config.SetBackgroundColor(LogMessageTextBox.BackColor);
|
||||
config.SetTextColor(LogMessageTextBox.ForeColor);
|
||||
controller.SaveLogViewerConfig(config);
|
||||
}
|
||||
|
||||
private void OpenLocationMenuItem_Click(object sender, EventArgs e)
|
||||
@@ -121,18 +161,25 @@ namespace Shadowsocks.View
|
||||
LogMessageTextBox.ScrollToCaret();
|
||||
}
|
||||
|
||||
private void WrapTextCheckBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
LogMessageTextBox.WordWrap = WrapTextCheckBox.Checked;
|
||||
LogMessageTextBox.ScrollToCaret();
|
||||
}
|
||||
|
||||
private void CleanLogsButton_Click(object sender, EventArgs e)
|
||||
#region Clean up the content in LogMessageTextBox.
|
||||
private void DoCleanLogs()
|
||||
{
|
||||
LogMessageTextBox.Clear();
|
||||
}
|
||||
|
||||
private void ChangeFontButton_Click(object sender, EventArgs e)
|
||||
private void CleanLogsMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
DoCleanLogs();
|
||||
}
|
||||
|
||||
private void CleanLogsButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
DoCleanLogs();
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Change the font settings applied in LogMessageTextBox.
|
||||
private void DoChangeFont()
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -150,9 +197,89 @@ namespace Shadowsocks.View
|
||||
}
|
||||
}
|
||||
|
||||
private void ChangeFontMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
DoChangeFont();
|
||||
}
|
||||
|
||||
private void ChangeFontButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
DoChangeFont();
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Trigger the log messages wrapable, or not.
|
||||
bool wrapTextTrigger = false;
|
||||
bool wrapTextTriggerLock = false;
|
||||
|
||||
private void TriggerWrapText()
|
||||
{
|
||||
wrapTextTriggerLock = true;
|
||||
|
||||
wrapTextTrigger = !wrapTextTrigger;
|
||||
LogMessageTextBox.WordWrap = wrapTextTrigger;
|
||||
LogMessageTextBox.ScrollToCaret();
|
||||
WrapTextMenuItem.Checked = WrapTextCheckBox.Checked = wrapTextTrigger;
|
||||
|
||||
wrapTextTriggerLock = false;
|
||||
}
|
||||
|
||||
private void WrapTextMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!wrapTextTriggerLock)
|
||||
{
|
||||
TriggerWrapText();
|
||||
}
|
||||
}
|
||||
|
||||
private void WrapTextCheckBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (!wrapTextTriggerLock)
|
||||
{
|
||||
TriggerWrapText();
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Trigger this window top most, or not.
|
||||
bool topMostTrigger = false;
|
||||
bool topMostTriggerLock = false;
|
||||
|
||||
private void TriggerTopMost()
|
||||
{
|
||||
topMostTriggerLock = true;
|
||||
|
||||
topMostTrigger = !topMostTrigger;
|
||||
this.TopMost = topMostTrigger;
|
||||
TopMostMenuItem.Checked = TopMostCheckBox.Checked = topMostTrigger;
|
||||
|
||||
topMostTriggerLock = false;
|
||||
}
|
||||
|
||||
private void TopMostCheckBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
this.TopMost = TopMostCheckBox.Checked;
|
||||
if (!topMostTriggerLock)
|
||||
{
|
||||
TriggerTopMost();
|
||||
}
|
||||
}
|
||||
|
||||
private void TopMostMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!topMostTriggerLock)
|
||||
{
|
||||
TriggerTopMost();
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
private bool toolbarTrigger = false;
|
||||
|
||||
private void ShowToolbarMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
toolbarTrigger = !toolbarTrigger;
|
||||
ToolbarFlowLayoutPanel.Visible = toolbarTrigger;
|
||||
ShowToolbarMenuItem.Checked = toolbarTrigger;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -117,10 +117,7 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="contextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<metadata name="MainMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="mainMenu1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>172, 17</value>
|
||||
</metadata>
|
||||
</root>
|
||||
@@ -439,7 +439,7 @@ namespace Shadowsocks.View
|
||||
{
|
||||
string argument = Logging.LogFile;
|
||||
|
||||
new LogForm(argument).Show();
|
||||
new LogForm(controller, argument).Show();
|
||||
}
|
||||
|
||||
private void QRCodeItem_Click(object sender, EventArgs e)
|
||||
|
||||
@@ -145,6 +145,7 @@
|
||||
<Compile Include="Encryption\TableEncryptor.cs" />
|
||||
<Compile Include="Encryption\IEncryptor.cs" />
|
||||
<Compile Include="Controller\Service\PACServer.cs" />
|
||||
<Compile Include="Model\LogViewerConfig.cs" />
|
||||
<Compile Include="Model\Server.cs" />
|
||||
<Compile Include="Model\Configuration.cs" />
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
|
||||
Reference in New Issue
Block a user