SampleStageModel.cs 4.4 KB

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