using PaintDotNet.Base.CommTool; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Xml.Serialization; namespace Metis.AutoAnalysis { public class SampleStageModel { public SampleStageModel() { WorkPoits = new List(); } public float Width { get; set; } public float Height { get; set; } public float Diameter { get; set; } public int PaddingX { get; set; } public int PaddingY { get; set; } public List WorkPoits { get; set; } public void Save(string path) { XmlSerializeHelper.Save(this, path); } public static SampleStageModel Load(string path) { XmlSerializer xml = new XmlSerializer(typeof(SampleStageModel)); var reader = new FileStream(path, FileMode.Open); var obj = xml.Deserialize(reader); reader.Close(); return obj as SampleStageModel; } } public class WorkPoint { public WorkPoint() { } public WorkPoint(float x, float y) { X = x; Y = y; } public float X { get; set; } public float Y { get; set; } } public class SampleStageManager { static Dictionary _stageSettingList = new Dictionary(); static string _dirName = Application.StartupPath + "\\Automation"; static string _userPath = Application.StartupPath + @"\Automation\User\data"; /// /// 获取全部 /// public static Dictionary GetAll() { _stageSettingList.Clear(); if (!Directory.Exists(_dirName)) return _stageSettingList; var files = Directory.GetFiles(_dirName); foreach (var path in files) { if (!path.EndsWith("xml")) continue; try { var model = SampleStageModel.Load(path); _stageSettingList.Add(path.Replace(".xml", "").Replace(_dirName + "\\", ""), model); } catch { } } return _stageSettingList; } public static bool Validation(SampleStageModel model) { try { if (model.Height == 0 || model.Width == 0 || model.WorkPoits.Count == 0) { return false; } return true; } catch { return false; } } /// /// 保存全部 /// /// public static void SaveAll(Dictionary _list) { if (Directory.Exists(_dirName)) { var files = Directory.GetFiles(_dirName); foreach (var path in files) { File.Delete(path); } } else { Directory.CreateDirectory(_dirName); } foreach (var m in _list) { m.Value.Save(_dirName + "\\" + m.Key + ".xml"); } } public static void Save(string name, string newname, SampleStageModel value) { if (File.Exists(_dirName + "\\" + name + ".xml")) { File.Delete(_dirName + "\\" + name + ".xml"); } value.Save(_dirName + "\\" + newname + ".xml"); } public static List GetUsers() { if (!File.Exists(_userPath)) return new List(); var data = File.ReadAllBytes(_userPath); for (int i = 0; i < data.Length; i++) { data[i] ^= 1; } var str = Encoding.Unicode.GetString(data); return str.Split(',').Where((s) => !string.IsNullOrEmpty(s)).ToList(); } public static void SaveUsers(List users) { if (!File.Exists(_userPath)) File.Create(_userPath).Close(); StringBuilder sb = new StringBuilder(); foreach (var s in users) { sb.Append(s + ","); } var data = Encoding.Unicode.GetBytes(sb.ToString()); for (int i = 0; i < data.Length; i++) { data[i] ^= 1; } File.WriteAllBytes(_userPath, data); } internal static void Delete(string name) { if (File.Exists(_dirName + "\\" + name + ".xml")) { File.Delete(_dirName + "\\" + name + ".xml"); } } } }