using System.Drawing; using System.Collections.Generic; using System.Linq; using Newtonsoft.Json; namespace BizHawk.Client.Common { public class ToolDialogSettings { private int? _wndx = null; private int? _wndy = null; public ToolDialogSettings() { SaveWindowPosition = true; FloatingWindow = true; } public void RestoreDefaults() { _wndx = null; _wndy = null; SaveWindowPosition = true; FloatingWindow = true; TopMost = false; AutoLoad = false; Width = null; Height = null; } [JsonIgnore] public int? Wndx { get { return _wndx; } set { if (value != -32000) { _wndx = value; } } } [JsonIgnore] public int? Wndy { get { return _wndy; } set { if (value != -32000) { _wndy = value; } } } public int? Width { get; set; } public int? Height { get; set; } public bool SaveWindowPosition { get; set; } public bool TopMost { get; set; } public bool FloatingWindow { get; set; } public bool AutoLoad { get; set; } [JsonIgnore] public bool UseWindowPosition { get { return SaveWindowPosition && Wndx.HasValue && Wndy.HasValue && Wndx != -32000 && Wndy != -32000; // Windows OS annoyance, this is saved if the tool was minimized when closing } } [JsonIgnore] public bool UseWindowSize { get { return SaveWindowPosition && Width.HasValue && Height.HasValue; } } [JsonIgnore] public Point WindowPosition { get { return new Point(Wndx ?? 0, Wndy ?? 0); } } [JsonIgnore] public Size WindowSize { get { return new Size(Width ?? 0, Height ?? 0); } } public class ColumnList : List { public Column this[string name] { get { return this.FirstOrDefault(c => c.Name == name); } } } public class Column { public string Name { get; set; } public int Width { get; set; } public bool Visible { get; set; } public int Index { get; set; } } } }