Browse Source

add feature: save LogForm's config into json file.

tags/3.0
kimw 9 years ago
parent
commit
79e9a23d94
4 changed files with 99 additions and 2 deletions
  1. +1
    -0
      shadowsocks-csharp/Model/Configuration.cs
  2. +63
    -0
      shadowsocks-csharp/Model/LogViewerConfig.cs
  3. +34
    -2
      shadowsocks-csharp/View/LogForm.cs
  4. +1
    -0
      shadowsocks-csharp/shadowsocks-csharp.csproj

+ 1
- 0
shadowsocks-csharp/Model/Configuration.cs View File

@@ -23,6 +23,7 @@ namespace Shadowsocks.Model
public string pacUrl;
public bool useOnlinePac;
public bool availabilityStatistics;
public LogViewerConfig logViewer;
private static string CONFIG_FILE = "gui-config.json";


+ 63
- 0
shadowsocks-csharp/Model/LogViewerConfig.cs View File

@@ -0,0 +1,63 @@
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 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");
throw;
}
}
public void SetTextColor(Color color)
{
textColor = ColorTranslator.ToHtml(color);
}
}
}

+ 34
- 2
shadowsocks-csharp/View/LogForm.cs View File

@@ -18,6 +18,7 @@ namespace Shadowsocks.View
string filename;
Timer timer;
const int BACK_OFFSET = 65536;
Model.Configuration config;
public LogForm(string filename)
{
@@ -25,6 +26,21 @@ namespace Shadowsocks.View
InitializeComponent();
this.Icon = Icon.FromHandle(Resources.ssw128.GetHicon());
config = Model.Configuration.Load();
if (config.logViewer == null)
{
config.logViewer = new Model.LogViewerConfig();
}
else
{
topMostTrigger = config.logViewer.topMost;
wrapTextTrigger = config.logViewer.wrapText;
toolbarTrigger = config.logViewer.toolbarShown;
LogMessageTextBox.Font = new Font(config.logViewer.fontName, config.logViewer.fontSize);
LogMessageTextBox.BackColor = config.logViewer.GetBackgroundColor();
LogMessageTextBox.ForeColor = config.logViewer.GetTextColor();
}
UpdateTexts();
}
@@ -103,14 +119,29 @@ namespace Shadowsocks.View
timer.Interval = 300;
timer.Tick += Timer_Tick;
timer.Start();
topMostTriggerLock = true;
this.TopMost = TopMostMenuItem.Checked = TopMostCheckBox.Checked = topMostTrigger;
LogMessageTextBox.WordWrap = WrapTextCheckBox.Checked = WrapTextMenuItem.Checked = wrapTextTrigger;
ToolbarFlowLayoutPanel.Visible = toolbarTrigger;
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();
config.logViewer.topMost = topMostTrigger;
config.logViewer.wrapText = wrapTextTrigger;
config.logViewer.toolbarShown = toolbarTrigger;
config.logViewer.fontName = LogMessageTextBox.Font.Name;
config.logViewer.fontSize = LogMessageTextBox.Font.Size;
config.logViewer.SetBackgroundColor(LogMessageTextBox.BackColor);
config.logViewer.SetTextColor(LogMessageTextBox.ForeColor);
Model.Configuration.Save(config);
}
private void OpenLocationMenuItem_Click(object sender, EventArgs e)
@@ -235,6 +266,7 @@ namespace Shadowsocks.View
#endregion
private bool toolbarTrigger = false;
private void ShowToolbarMenuItem_Click(object sender, EventArgs e)
{
toolbarTrigger = !toolbarTrigger;


+ 1
- 0
shadowsocks-csharp/shadowsocks-csharp.csproj View File

@@ -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">


Loading…
Cancel
Save