CfginiItem.cs 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace MeterVision.Config
  9. {
  10. //配置项
  11. public class CfginiItem : INotifyPropertyChanged
  12. {
  13. public const string SECTION_FILE_PATH = "file_path";
  14. public const string SECTION_PAGE_SIZE = "page_size";
  15. public const string SECTION_DIALOG_SIZE = "dialog_size";
  16. public const string SECTION_LOG_VIEWER = "log_viewer";
  17. public const string KEY_FILE_PATH_ONNX = "onnx";
  18. public const string KEY_FILE_PATH_AIDLL = "ai_dll";
  19. public const string KEY_FILE_PATH_OUTPUT = "output";
  20. public const string KEY_PAGE_SIZE_SINGLE_DETAIL = "single_detail";
  21. public const string KEY_PAGE_SIZE_STAND_DETAIL = "stand_detail";
  22. public const string KEY_PAGE_SIZE_PATCH_DETAIL = "patch_detail";
  23. public const string KEY_PAGE_SIZE_STAND_CATALOG = "stand_catalog";
  24. public const string KEY_PAGE_SIZE_PATCH_CATALOG = "patch_catalog";
  25. public const string KEY_DIALOG_SIZE_IMAGE = "dialog_image_size";
  26. public const string KEY_DIALOG_SIZE_STAND = "dialog_stand_size";
  27. //public const string KEY_LOGV_MAXIMIZED = "maximized";
  28. public const string KEY_LOGV_POSITION = "position";
  29. public const string KEY_LOGV_LEFT_WIDTH = "left_width";
  30. public const string KEY_LOGV_SIZE = "size";
  31. private static CfginiItem _cfginiItem;
  32. public event PropertyChangedEventHandler PropertyChanged;
  33. protected void OnPropertyChanged(string propertyName)
  34. {
  35. PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
  36. }
  37. public event Action<int> OnStandPageSizeChanged;
  38. public event Action<int> OnSinglePageSizeChanged;
  39. public event Action<int> OnPatchPageSizeChanged;
  40. public event Action<int> OnStandCatalogPageSizeChanged;
  41. public event Action<int> OnPatchCatalogPageSizeChnaged;
  42. private string _onnxPath;
  43. public string OnnxPath
  44. {
  45. get => _onnxPath;
  46. set
  47. {
  48. if(_onnxPath != value)
  49. {
  50. _onnxPath = value;
  51. OnPropertyChanged(nameof(OnnxPath));
  52. SaveOnnxPath(value);
  53. }
  54. }
  55. }
  56. private string _aiDll;
  57. public string AiDll
  58. {
  59. get => _aiDll;
  60. set
  61. {
  62. if(_aiDll != value)
  63. {
  64. _aiDll = value;
  65. OnPropertyChanged(nameof(AiDll));
  66. SaveAiDll(value);
  67. }
  68. }
  69. }
  70. private string _output;
  71. public string Output
  72. {
  73. get => _output;
  74. set
  75. {
  76. if(_output != value)
  77. {
  78. _output = value;
  79. OnPropertyChanged(nameof(Output));
  80. SaveOutput(value);
  81. }
  82. }
  83. }
  84. public string DstImgPath
  85. {
  86. get
  87. {
  88. return Path.Combine(Output, "dst_img");
  89. }
  90. }
  91. public string TransImgPath
  92. {
  93. get
  94. {
  95. return Path.Combine(Output, "trans_img");
  96. }
  97. }
  98. public string AiLogPath
  99. {
  100. get
  101. {
  102. return Path.Combine(Output, "ai_log");
  103. }
  104. }
  105. private int _singlePageSize;
  106. public int SinglePageSize
  107. {
  108. get => _singlePageSize;
  109. set
  110. {
  111. if (_singlePageSize != value)
  112. {
  113. _singlePageSize = value;
  114. OnPropertyChanged(nameof(SinglePageSize));
  115. OnSinglePageSizeChanged?.Invoke(value);
  116. SaveSinglePageSize(value);
  117. }
  118. }
  119. }
  120. private int _standPageSize;
  121. public int StandPageSize
  122. {
  123. get => _standPageSize;
  124. set
  125. {
  126. if (_standPageSize != value)
  127. {
  128. _standPageSize = value;
  129. OnPropertyChanged(nameof(StandPageSize));
  130. OnStandPageSizeChanged?.Invoke(value);
  131. SaveStandPageSize(value);
  132. }
  133. }
  134. }
  135. private int _patchPageSize;
  136. public int PatchPageSize
  137. {
  138. get => _patchPageSize;
  139. set
  140. {
  141. if (_patchPageSize != value)
  142. {
  143. _patchPageSize = value;
  144. OnPropertyChanged(nameof(PatchPageSize));
  145. OnPatchPageSizeChanged?.Invoke(value);
  146. SavePatchPageSize(value);
  147. }
  148. }
  149. }
  150. private int _standCatalogPageSize;
  151. public int StandCatalogPageSize
  152. {
  153. get => _standCatalogPageSize;
  154. set
  155. {
  156. if (_standCatalogPageSize != value)
  157. {
  158. _standCatalogPageSize = value;
  159. OnPropertyChanged(nameof(StandCatalogPageSize));
  160. OnStandCatalogPageSizeChanged?.Invoke(value);
  161. SaveStandCatlogPageSize(value);
  162. }
  163. }
  164. }
  165. private int _patchCatalogPageSize;
  166. public int PatchCatalogPageSize
  167. {
  168. get => _patchCatalogPageSize;
  169. set
  170. {
  171. if (_patchCatalogPageSize != value)
  172. {
  173. _patchCatalogPageSize = value;
  174. OnPropertyChanged(nameof(PatchCatalogPageSize));
  175. OnPatchCatalogPageSizeChnaged?.Invoke(value);
  176. SavePatchCatalogPageSize(value);
  177. }
  178. }
  179. }
  180. private string _dialogImageSize;
  181. public string DialogImageSize
  182. {
  183. get => _dialogImageSize;
  184. set
  185. {
  186. if(_dialogImageSize != value)
  187. {
  188. _dialogImageSize = value;
  189. OnPropertyChanged(nameof(DialogImageSize));
  190. SaveDialogImageSize(value);
  191. }
  192. }
  193. }
  194. public int DialogImageSize_Width
  195. {
  196. get
  197. {
  198. string[] dlgSizes = DialogImageSize.Split(',');
  199. if(dlgSizes.Length != 2)
  200. {
  201. return 0;
  202. }
  203. return int.TryParse(dlgSizes[0], out int result) ? result : 0;
  204. }
  205. }
  206. public int DialogImageSize_Height
  207. {
  208. get
  209. {
  210. string[] dlgSizes = DialogImageSize.Split(',');
  211. if (dlgSizes.Length != 2)
  212. {
  213. return 0;
  214. }
  215. return int.TryParse(dlgSizes[1], out int result) ? result : 0;
  216. }
  217. }
  218. private string _dialogStandSize;
  219. public string DialogStandSize
  220. {
  221. get => _dialogStandSize;
  222. set
  223. {
  224. if (_dialogStandSize != value)
  225. {
  226. _dialogStandSize = value;
  227. OnPropertyChanged(nameof(DialogStandSize));
  228. SaveDialogStandSize(value);
  229. }
  230. }
  231. }
  232. public int DialogStandSize_Width
  233. {
  234. get
  235. {
  236. string[] dlgSizes = DialogStandSize.Split(',');
  237. if (dlgSizes.Length != 2)
  238. {
  239. return 0;
  240. }
  241. return int.TryParse(dlgSizes[0], out int result) ? result : 0;
  242. }
  243. }
  244. public int DialogStandSize_Height
  245. {
  246. get
  247. {
  248. string[] dlgSizes = DialogStandSize.Split(',');
  249. if (dlgSizes.Length != 2)
  250. {
  251. return 0;
  252. }
  253. return int.TryParse(dlgSizes[1], out int result) ? result : 0;
  254. }
  255. }
  256. private string _logvSize;
  257. public string LogvSize
  258. {
  259. get => _logvSize;
  260. set
  261. {
  262. if(_logvSize != value)
  263. {
  264. _logvSize = value;
  265. OnPropertyChanged(nameof(LogvSize));
  266. SaveLogvSize(value);
  267. }
  268. }
  269. }
  270. public int LogvSize_Width
  271. {
  272. get
  273. {
  274. string[] dlgSizes = LogvSize.Split(',');
  275. if (dlgSizes.Length != 2)
  276. {
  277. return 0;
  278. }
  279. return int.TryParse(dlgSizes[0], out int result) ? result : 0;
  280. }
  281. }
  282. public int LogvSize_Heigth
  283. {
  284. get
  285. {
  286. string[] dlgSizes = LogvSize.Split(',');
  287. if (dlgSizes.Length != 2)
  288. {
  289. return 0;
  290. }
  291. return int.TryParse(dlgSizes[1], out int result) ? result : 0;
  292. }
  293. }
  294. private int _logvLeftWidth;
  295. public int LogvLeftWidth
  296. {
  297. get => _logvLeftWidth;
  298. set
  299. {
  300. if(_logvLeftWidth != value)
  301. {
  302. _logvLeftWidth = value;
  303. OnPropertyChanged(nameof(LogvLeftWidth));
  304. SaveLogvLeftWidth(value);
  305. }
  306. }
  307. }
  308. //配置项
  309. public CfginiItem()
  310. {
  311. }
  312. //初始化各项
  313. public void InitItem()
  314. {
  315. _onnxPath = ConfigIni.ReadIniValue(SECTION_FILE_PATH, "", KEY_FILE_PATH_ONNX);
  316. _aiDll = ConfigIni.ReadIniValue(SECTION_FILE_PATH, "", KEY_FILE_PATH_AIDLL);
  317. _output = ConfigIni.ReadIniValue(SECTION_FILE_PATH, "", KEY_FILE_PATH_OUTPUT);
  318. //_singlePageSize = int.TryParse(ConfigIni.ReadIniValue(SECTION_PAGE_SIZE, KEY_PAGE_SIZE_SINGLE_DETAIL, "20"), out int result1) ? result1 : 20;
  319. //_standPageSize = int.TryParse(ConfigIni.ReadIniValue(SECTION_PAGE_SIZE, KEY_PAGE_SIZE_STAND_DETAIL, "20"), out int result2) ? result2 : 20;
  320. //_patchPageSize = int.TryParse(ConfigIni.ReadIniValue(SECTION_PAGE_SIZE, KEY_PAGE_SIZE_PATCH_DETAIL, "20"), out int result3) ? result3 : 20;
  321. //_standCatalogPageSize = int.TryParse(ConfigIni.ReadIniValue(SECTION_PAGE_SIZE, KEY_PAGE_SIZE_STAND_CATALOG, "20"), out int result4) ? result4 : 10;
  322. //_patchCatalogPageSize = int.TryParse(ConfigIni.ReadIniValue(SECTION_PAGE_SIZE, KEY_PAGE_SIZE_PATCH_CATALOG, "20"), out int result5) ? result5 : 10;
  323. _singlePageSize = int.TryParse(ConfigIni.ReadIniValue(SECTION_PAGE_SIZE, "20",KEY_PAGE_SIZE_SINGLE_DETAIL), out int result1) ? result1 : 20;
  324. _standPageSize = int.TryParse(ConfigIni.ReadIniValue(SECTION_PAGE_SIZE, "20", KEY_PAGE_SIZE_STAND_DETAIL), out int result2) ? result2 : 20;
  325. _patchPageSize = int.TryParse(ConfigIni.ReadIniValue(SECTION_PAGE_SIZE, "20", KEY_PAGE_SIZE_PATCH_DETAIL), out int result3) ? result3 : 20;
  326. _standCatalogPageSize = int.TryParse(ConfigIni.ReadIniValue(SECTION_PAGE_SIZE, "10",KEY_PAGE_SIZE_STAND_CATALOG), out int result4) ? result4 : 10;
  327. _patchCatalogPageSize = int.TryParse(ConfigIni.ReadIniValue(SECTION_PAGE_SIZE, "10",KEY_PAGE_SIZE_PATCH_CATALOG), out int result5) ? result5 : 10;
  328. _dialogImageSize = ConfigIni.ReadIniValue(SECTION_DIALOG_SIZE, "", KEY_DIALOG_SIZE_IMAGE);
  329. _dialogStandSize = ConfigIni.ReadIniValue(SECTION_DIALOG_SIZE, "", KEY_DIALOG_SIZE_STAND);
  330. _logvSize = ConfigIni.ReadIniValue(SECTION_LOG_VIEWER, "", KEY_LOGV_SIZE);
  331. _logvLeftWidth = int.TryParse(ConfigIni.ReadIniValue(SECTION_LOG_VIEWER, "0", KEY_LOGV_LEFT_WIDTH), out int result6) ? result6 : 0;
  332. }
  333. public static CfginiItem GetConfigItem()
  334. {
  335. if(_cfginiItem != null)
  336. {
  337. return _cfginiItem;
  338. }
  339. _cfginiItem = new CfginiItem();
  340. _cfginiItem.InitItem();
  341. return _cfginiItem;
  342. }
  343. // 保存 onnx 路径
  344. public static void SaveOnnxPath(string onnxPath)
  345. {
  346. if (onnxPath == null) return;
  347. ConfigIni.WriteIniValue(SECTION_FILE_PATH, KEY_FILE_PATH_ONNX, onnxPath);
  348. }
  349. // 保存 ai_dll 路径
  350. public static void SaveAiDll(string aiDll)
  351. {
  352. if (aiDll == null) return;
  353. ConfigIni.WriteIniValue(SECTION_FILE_PATH, KEY_FILE_PATH_AIDLL, aiDll);
  354. }
  355. // 保存输出路径
  356. public static void SaveOutput(string outputPath)
  357. {
  358. if (outputPath == null) return;
  359. ConfigIni.WriteIniValue(SECTION_FILE_PATH, KEY_FILE_PATH_OUTPUT, outputPath);
  360. }
  361. // 保存 single 页大小
  362. public static void SaveSinglePageSize(int singlePageSize)
  363. {
  364. if (singlePageSize == 0) return;
  365. ConfigIni.WriteIniValue(SECTION_PAGE_SIZE, KEY_PAGE_SIZE_SINGLE_DETAIL, singlePageSize.ToString());
  366. }
  367. // 保存 stand 页大小
  368. public static void SaveStandPageSize(int standPageSize)
  369. {
  370. if (standPageSize == 0) return;
  371. ConfigIni.WriteIniValue(SECTION_PAGE_SIZE, KEY_PAGE_SIZE_STAND_DETAIL, standPageSize.ToString());
  372. }
  373. // 保存 patch 页大小
  374. public static void SavePatchPageSize(int patchPageSize)
  375. {
  376. if (patchPageSize == 0) return;
  377. ConfigIni.WriteIniValue(SECTION_PAGE_SIZE, KEY_PAGE_SIZE_PATCH_DETAIL, patchPageSize.ToString());
  378. }
  379. // 保存 stand_detail 页大小
  380. public static void SaveStandCatlogPageSize(int standCatalogPageSize)
  381. {
  382. if (standCatalogPageSize == 0) return;
  383. ConfigIni.WriteIniValue(SECTION_PAGE_SIZE, KEY_PAGE_SIZE_STAND_CATALOG, standCatalogPageSize.ToString());
  384. }
  385. // 保存 patch_detail 页大小
  386. public static void SavePatchCatalogPageSize(int patchCatalogPageSize)
  387. {
  388. if (patchCatalogPageSize == 0) return;
  389. ConfigIni.WriteIniValue(SECTION_PAGE_SIZE, KEY_PAGE_SIZE_PATCH_CATALOG, patchCatalogPageSize.ToString());
  390. }
  391. // 保存 show_image 窗口大小
  392. public static void SaveDialogImageSize(string dialogImageSize)
  393. {
  394. if (dialogImageSize == null) return;
  395. ConfigIni.WriteIniValue(SECTION_DIALOG_SIZE, KEY_DIALOG_SIZE_IMAGE, dialogImageSize);
  396. }
  397. // 保存 show_stand 窗口大小
  398. public static void SaveDialogStandSize(string dialogStandSize)
  399. {
  400. if (dialogStandSize == null) return;
  401. ConfigIni.WriteIniValue(SECTION_DIALOG_SIZE, KEY_DIALOG_SIZE_STAND, dialogStandSize);
  402. }
  403. public static void SaveLogvSize(string logvSize)
  404. {
  405. if (logvSize == null) return;
  406. ConfigIni.WriteIniValue(SECTION_LOG_VIEWER, KEY_LOGV_SIZE, logvSize);
  407. }
  408. public static void SaveLogvLeftWidth(int leftWidth)
  409. {
  410. if (leftWidth == 0) return;
  411. ConfigIni.WriteIniValue(SECTION_LOG_VIEWER, KEY_LOGV_LEFT_WIDTH, leftWidth.ToString());
  412. }
  413. //------------------------------------------------------------
  414. }
  415. }