SampleStageModel.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. using PaintDotNet.Base.CommTool;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using System.Windows.Forms;
  9. using System.Xml.Serialization;
  10. namespace Metis.AutoAnalysis
  11. {
  12. public class SampleStageModel
  13. {
  14. public SampleStageModel() { WorkPoits = new List<WorkPoint>(); }
  15. public float Width { get; set; }
  16. public float Height { get; set; }
  17. public float Diameter { get; set; }
  18. public int PaddingX { get; set; }
  19. public int PaddingY { get; set; }
  20. public List<WorkPoint> WorkPoits { get; set; }
  21. public void Save(string path)
  22. {
  23. XmlSerializeHelper.Save(this, path);
  24. }
  25. public static SampleStageModel Load(string path)
  26. {
  27. XmlSerializer xml = new XmlSerializer(typeof(SampleStageModel));
  28. var reader = new FileStream(path, FileMode.Open);
  29. var obj = xml.Deserialize(reader);
  30. reader.Close();
  31. return obj as SampleStageModel;
  32. }
  33. }
  34. public class WorkPoint
  35. {
  36. public WorkPoint() { }
  37. public WorkPoint(float x, float y)
  38. {
  39. X = x;
  40. Y = y;
  41. }
  42. public float X { get; set; }
  43. public float Y { get; set; }
  44. }
  45. public class SampleStageManager
  46. {
  47. static Dictionary<string, SampleStageModel> _stageSettingList = new Dictionary<string, SampleStageModel>();
  48. static string _dirName = Application.StartupPath + "\\Automation";
  49. static string _userPath = Application.StartupPath + @"\Automation\User\data";
  50. /// <summary>
  51. /// 获取全部
  52. /// </summary>
  53. public static Dictionary<string, SampleStageModel> GetAll()
  54. {
  55. _stageSettingList.Clear();
  56. if (!Directory.Exists(_dirName)) return _stageSettingList;
  57. var files = Directory.GetFiles(_dirName);
  58. foreach (var path in files)
  59. {
  60. if (!path.EndsWith("xml")) continue;
  61. try
  62. {
  63. var model = SampleStageModel.Load(path);
  64. _stageSettingList.Add(path.Replace(".xml", "").Replace(_dirName + "\\", ""), model);
  65. }
  66. catch { }
  67. }
  68. return _stageSettingList;
  69. }
  70. public static bool Validation(SampleStageModel model)
  71. {
  72. try
  73. {
  74. if (model.Height == 0 || model.Width == 0 || model.WorkPoits.Count == 0)
  75. {
  76. return false;
  77. }
  78. return true;
  79. }
  80. catch
  81. {
  82. return false;
  83. }
  84. }
  85. /// <summary>
  86. /// 保存全部
  87. /// </summary>
  88. /// <param name="_list"></param>
  89. public static void SaveAll(Dictionary<string, SampleStageModel> _list)
  90. {
  91. if (Directory.Exists(_dirName))
  92. {
  93. var files = Directory.GetFiles(_dirName);
  94. foreach (var path in files)
  95. {
  96. File.Delete(path);
  97. }
  98. }
  99. else
  100. {
  101. Directory.CreateDirectory(_dirName);
  102. }
  103. foreach (var m in _list)
  104. {
  105. m.Value.Save(_dirName + "\\" + m.Key + ".xml");
  106. }
  107. }
  108. public static void Save(string name, string newname, SampleStageModel value)
  109. {
  110. if (File.Exists(_dirName + "\\" + name + ".xml"))
  111. {
  112. File.Delete(_dirName + "\\" + name + ".xml");
  113. }
  114. value.Save(_dirName + "\\" + newname + ".xml");
  115. }
  116. public static List<string> GetUsers()
  117. {
  118. if (!File.Exists(_userPath))
  119. return new List<string>();
  120. var data = File.ReadAllBytes(_userPath);
  121. for (int i = 0; i < data.Length; i++)
  122. {
  123. data[i] ^= 1;
  124. }
  125. var str = Encoding.Unicode.GetString(data);
  126. return str.Split(',').Where((s) => !string.IsNullOrEmpty(s)).ToList();
  127. }
  128. public static void SaveUsers(List<string> users)
  129. {
  130. if (!File.Exists(_userPath))
  131. File.Create(_userPath).Close();
  132. StringBuilder sb = new StringBuilder();
  133. foreach (var s in users)
  134. { sb.Append(s + ","); }
  135. var data = Encoding.Unicode.GetBytes(sb.ToString());
  136. for (int i = 0; i < data.Length; i++)
  137. {
  138. data[i] ^= 1;
  139. }
  140. File.WriteAllBytes(_userPath, data);
  141. }
  142. internal static void Delete(string name)
  143. {
  144. if (File.Exists(_dirName + "\\" + name + ".xml"))
  145. {
  146. File.Delete(_dirName + "\\" + name + ".xml");
  147. }
  148. }
  149. }
  150. }