using Shadowsocks.View; using System; using System.Drawing; using System.Windows.Forms; 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 int width; public int height; public int top; public int left; public bool maximized; public LogViewerConfig() { fontName = "Consolas"; fontSize = 8; bgColor = "black"; textColor = "white"; topMost = false; wrapText = false; toolbarShown = false; width = 600; height = 400; left = GetBestLeft(); top = GetBestTop(); maximized = true; } // Use GetBestTop() and GetBestLeft() to ensure the log viwer form can be always display IN screen. public int GetBestLeft() { width = (width >= 400) ? width : 400; // set up the minimum size return Screen.PrimaryScreen.WorkingArea.Width - width; } public int GetBestTop() { height = (height >= 200) ? height : 200; // set up the minimum size return Screen.PrimaryScreen.WorkingArea.Height - height; } public Font GetFont() { try { return new Font(fontName, fontSize, FontStyle.Regular); } 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); } } }