Files
Archive/shadowsocks-windows/shadowsocks-csharp/Model/LogViewerConfig.cs
2024-12-31 19:31:59 +01:00

95 lines
2.5 KiB
C#

using System;
using System.Drawing;
using System.Windows.Forms;
using Newtonsoft.Json;
namespace Shadowsocks.Model
{
[Serializable]
public class LogViewerConfig
{
public bool topMost;
public bool wrapText;
public bool toolbarShown;
public Font Font { get; set; } = new Font("Consolas", 8F);
public Color BackgroundColor { get; set; } = Color.Black;
public Color TextColor { get; set; } = Color.White;
public LogViewerConfig()
{
topMost = false;
wrapText = false;
toolbarShown = false;
}
#region Size
public void SaveSize()
{
Properties.Settings.Default.Save();
}
[JsonIgnore]
public int Width
{
get { return Properties.Settings.Default.LogViewerWidth; }
set { Properties.Settings.Default.LogViewerWidth = value; }
}
[JsonIgnore]
public int Height
{
get { return Properties.Settings.Default.LogViewerHeight; }
set { Properties.Settings.Default.LogViewerHeight = value; }
}
[JsonIgnore]
public int Top
{
get { return Properties.Settings.Default.LogViewerTop; }
set { Properties.Settings.Default.LogViewerTop = value; }
}
[JsonIgnore]
public int Left
{
get { return Properties.Settings.Default.LogViewerLeft; }
set { Properties.Settings.Default.LogViewerLeft = value; }
}
[JsonIgnore]
public bool Maximized
{
get { return Properties.Settings.Default.LogViewerMaximized; }
set { Properties.Settings.Default.LogViewerMaximized = value; }
}
[JsonIgnore]
// Use GetBestTop() and GetBestLeft() to ensure the log viwer form can be always display IN screen.
public int BestLeft
{
get
{
int width = Width;
width = (width >= 400) ? width : 400; // set up the minimum size
return Screen.PrimaryScreen.WorkingArea.Width - width;
}
}
[JsonIgnore]
public int BestTop
{
get
{
int height = Height;
height = (height >= 200) ? height : 200; // set up the minimum size
return Screen.PrimaryScreen.WorkingArea.Height - height;
}
}
#endregion
}
}