CfginiItem.cs 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571
  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. //改成三种翻页的配置,1,2,3(1.最左侧,2中间,3右侧数据)
  26. public const string KEY_PAGE_SIZE_1 = "page_size_1";
  27. public const string KEY_PAGE_SIZE_2 = "page_size_2";
  28. public const string KEY_PAGE_SIZE_3 = "page_size_3";
  29. public const string KEY_DIALOG_SIZE_IMAGE = "dialog_image_size";
  30. public const string KEY_DIALOG_SIZE_STAND = "dialog_stand_size";
  31. //public const string KEY_LOGV_MAXIMIZED = "maximized";
  32. public const string KEY_LOGV_POSITION = "position";
  33. public const string KEY_LOGV_LEFT_WIDTH = "left_width";
  34. public const string KEY_LOGV_SIZE = "size";
  35. private static CfginiItem _cfginiItem;
  36. public event PropertyChangedEventHandler PropertyChanged;
  37. protected void OnPropertyChanged(string propertyName)
  38. {
  39. PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
  40. }
  41. public event Action<int> OnStandPageSizeChanged;
  42. public event Action<int> OnSinglePageSizeChanged;
  43. public event Action<int> OnPatchPageSizeChanged;
  44. public event Action<int> OnStandCatalogPageSizeChanged;
  45. public event Action<int> OnPatchCatalogPageSizeChnaged;
  46. public event Action<int> OnPageSize1Changed;
  47. public event Action<int> OnPageSize2Changed;
  48. public event Action<int> OnPageSize3Changed;
  49. private string _onnxPath;
  50. public string OnnxPath
  51. {
  52. get => _onnxPath;
  53. set
  54. {
  55. if(_onnxPath != value)
  56. {
  57. _onnxPath = value;
  58. OnPropertyChanged(nameof(OnnxPath));
  59. SaveOnnxPath(value);
  60. }
  61. }
  62. }
  63. private string _aiDll;
  64. public string AiDll
  65. {
  66. get => _aiDll;
  67. set
  68. {
  69. if(_aiDll != value)
  70. {
  71. _aiDll = value;
  72. OnPropertyChanged(nameof(AiDll));
  73. SaveAiDll(value);
  74. }
  75. }
  76. }
  77. private string _output;
  78. public string Output
  79. {
  80. get => _output;
  81. set
  82. {
  83. if(_output != value)
  84. {
  85. _output = value;
  86. OnPropertyChanged(nameof(Output));
  87. SaveOutput(value);
  88. }
  89. }
  90. }
  91. public string DstImgPath
  92. {
  93. get
  94. {
  95. return Path.Combine(Output, "dst_img");
  96. }
  97. }
  98. public string TransImgPath
  99. {
  100. get
  101. {
  102. return Path.Combine(Output, "trans_img");
  103. }
  104. }
  105. public string AiLogPath
  106. {
  107. get
  108. {
  109. return Path.Combine(Output, "ai_log");
  110. }
  111. }
  112. public string RealLogPath => Path.Combine(Output, "real_log");
  113. private int _singlePageSize;
  114. public int SinglePageSize
  115. {
  116. get => _singlePageSize;
  117. set
  118. {
  119. if (_singlePageSize != value)
  120. {
  121. _singlePageSize = value;
  122. OnPropertyChanged(nameof(SinglePageSize));
  123. OnSinglePageSizeChanged?.Invoke(value);
  124. SaveSinglePageSize(value);
  125. }
  126. }
  127. }
  128. private int _standPageSize;
  129. public int StandPageSize
  130. {
  131. get => _standPageSize;
  132. set
  133. {
  134. if (_standPageSize != value)
  135. {
  136. _standPageSize = value;
  137. OnPropertyChanged(nameof(StandPageSize));
  138. OnStandPageSizeChanged?.Invoke(value);
  139. SaveStandPageSize(value);
  140. }
  141. }
  142. }
  143. private int _patchPageSize;
  144. public int PatchPageSize
  145. {
  146. get => _patchPageSize;
  147. set
  148. {
  149. if (_patchPageSize != value)
  150. {
  151. _patchPageSize = value;
  152. OnPropertyChanged(nameof(PatchPageSize));
  153. OnPatchPageSizeChanged?.Invoke(value);
  154. SavePatchPageSize(value);
  155. }
  156. }
  157. }
  158. private int _standCatalogPageSize;
  159. public int StandCatalogPageSize
  160. {
  161. get => _standCatalogPageSize;
  162. set
  163. {
  164. if (_standCatalogPageSize != value)
  165. {
  166. _standCatalogPageSize = value;
  167. OnPropertyChanged(nameof(StandCatalogPageSize));
  168. OnStandCatalogPageSizeChanged?.Invoke(value);
  169. SaveStandCatlogPageSize(value);
  170. }
  171. }
  172. }
  173. private int _patchCatalogPageSize;
  174. public int PatchCatalogPageSize
  175. {
  176. get => _patchCatalogPageSize;
  177. set
  178. {
  179. if (_patchCatalogPageSize != value)
  180. {
  181. _patchCatalogPageSize = value;
  182. OnPropertyChanged(nameof(PatchCatalogPageSize));
  183. OnPatchCatalogPageSizeChnaged?.Invoke(value);
  184. SavePatchCatalogPageSize(value);
  185. }
  186. }
  187. }
  188. private int _pageSize1;
  189. public int PageSize1
  190. {
  191. get => _pageSize1;
  192. set
  193. {
  194. if (_pageSize1 != value)
  195. {
  196. _pageSize1 = value;
  197. OnPropertyChanged(nameof(PageSize1));
  198. OnPageSize1Changed?.Invoke(value);
  199. SavePageSize1(value);
  200. }
  201. }
  202. }
  203. private int _pageSize2;
  204. public int PageSize2
  205. {
  206. get => _pageSize2;
  207. set
  208. {
  209. if (_pageSize2 != value)
  210. {
  211. _pageSize2 = value;
  212. OnPropertyChanged(nameof(PageSize2));
  213. OnPageSize2Changed?.Invoke(value);
  214. SavePageSize2(value);
  215. }
  216. }
  217. }
  218. private int _pageSize3;
  219. public int PageSize3
  220. {
  221. get => _pageSize3;
  222. set
  223. {
  224. if (_pageSize3 != value)
  225. {
  226. _pageSize3 = value;
  227. OnPropertyChanged(nameof(PageSize3));
  228. OnPageSize3Changed?.Invoke(value);
  229. SavePageSize3(value);
  230. }
  231. }
  232. }
  233. private string _dialogImageSize;
  234. public string DialogImageSize
  235. {
  236. get => _dialogImageSize;
  237. set
  238. {
  239. if(_dialogImageSize != value)
  240. {
  241. _dialogImageSize = value;
  242. OnPropertyChanged(nameof(DialogImageSize));
  243. SaveDialogImageSize(value);
  244. }
  245. }
  246. }
  247. public int DialogImageSize_Width
  248. {
  249. get
  250. {
  251. string[] dlgSizes = DialogImageSize.Split(',');
  252. if(dlgSizes.Length != 2)
  253. {
  254. return 0;
  255. }
  256. return int.TryParse(dlgSizes[0], out int result) ? result : 0;
  257. }
  258. }
  259. public int DialogImageSize_Height
  260. {
  261. get
  262. {
  263. string[] dlgSizes = DialogImageSize.Split(',');
  264. if (dlgSizes.Length != 2)
  265. {
  266. return 0;
  267. }
  268. return int.TryParse(dlgSizes[1], out int result) ? result : 0;
  269. }
  270. }
  271. private string _dialogStandSize;
  272. public string DialogStandSize
  273. {
  274. get => _dialogStandSize;
  275. set
  276. {
  277. if (_dialogStandSize != value)
  278. {
  279. _dialogStandSize = value;
  280. OnPropertyChanged(nameof(DialogStandSize));
  281. SaveDialogStandSize(value);
  282. }
  283. }
  284. }
  285. public int DialogStandSize_Width
  286. {
  287. get
  288. {
  289. string[] dlgSizes = DialogStandSize.Split(',');
  290. if (dlgSizes.Length != 2)
  291. {
  292. return 0;
  293. }
  294. return int.TryParse(dlgSizes[0], out int result) ? result : 0;
  295. }
  296. }
  297. public int DialogStandSize_Height
  298. {
  299. get
  300. {
  301. string[] dlgSizes = DialogStandSize.Split(',');
  302. if (dlgSizes.Length != 2)
  303. {
  304. return 0;
  305. }
  306. return int.TryParse(dlgSizes[1], out int result) ? result : 0;
  307. }
  308. }
  309. private string _logvSize;
  310. public string LogvSize
  311. {
  312. get => _logvSize;
  313. set
  314. {
  315. if(_logvSize != value)
  316. {
  317. _logvSize = value;
  318. OnPropertyChanged(nameof(LogvSize));
  319. SaveLogvSize(value);
  320. }
  321. }
  322. }
  323. public int LogvSize_Width
  324. {
  325. get
  326. {
  327. string[] dlgSizes = LogvSize.Split(',');
  328. if (dlgSizes.Length != 2)
  329. {
  330. return 0;
  331. }
  332. return int.TryParse(dlgSizes[0], out int result) ? result : 0;
  333. }
  334. }
  335. public int LogvSize_Heigth
  336. {
  337. get
  338. {
  339. string[] dlgSizes = LogvSize.Split(',');
  340. if (dlgSizes.Length != 2)
  341. {
  342. return 0;
  343. }
  344. return int.TryParse(dlgSizes[1], out int result) ? result : 0;
  345. }
  346. }
  347. private int _logvLeftWidth;
  348. public int LogvLeftWidth
  349. {
  350. get => _logvLeftWidth;
  351. set
  352. {
  353. if(_logvLeftWidth != value)
  354. {
  355. _logvLeftWidth = value;
  356. OnPropertyChanged(nameof(LogvLeftWidth));
  357. SaveLogvLeftWidth(value);
  358. }
  359. }
  360. }
  361. //配置项
  362. public CfginiItem()
  363. {
  364. }
  365. //初始化各项
  366. public void InitItem()
  367. {
  368. _onnxPath = ConfigIni.ReadIniValue(SECTION_FILE_PATH, "", KEY_FILE_PATH_ONNX);
  369. _aiDll = ConfigIni.ReadIniValue(SECTION_FILE_PATH, "", KEY_FILE_PATH_AIDLL);
  370. _output = ConfigIni.ReadIniValue(SECTION_FILE_PATH, "", KEY_FILE_PATH_OUTPUT);
  371. //_singlePageSize = int.TryParse(ConfigIni.ReadIniValue(SECTION_PAGE_SIZE, KEY_PAGE_SIZE_SINGLE_DETAIL, "20"), out int result1) ? result1 : 20;
  372. //_standPageSize = int.TryParse(ConfigIni.ReadIniValue(SECTION_PAGE_SIZE, KEY_PAGE_SIZE_STAND_DETAIL, "20"), out int result2) ? result2 : 20;
  373. //_patchPageSize = int.TryParse(ConfigIni.ReadIniValue(SECTION_PAGE_SIZE, KEY_PAGE_SIZE_PATCH_DETAIL, "20"), out int result3) ? result3 : 20;
  374. //_standCatalogPageSize = int.TryParse(ConfigIni.ReadIniValue(SECTION_PAGE_SIZE, KEY_PAGE_SIZE_STAND_CATALOG, "20"), out int result4) ? result4 : 10;
  375. //_patchCatalogPageSize = int.TryParse(ConfigIni.ReadIniValue(SECTION_PAGE_SIZE, KEY_PAGE_SIZE_PATCH_CATALOG, "20"), out int result5) ? result5 : 10;
  376. _singlePageSize = int.TryParse(ConfigIni.ReadIniValue(SECTION_PAGE_SIZE, "20",KEY_PAGE_SIZE_SINGLE_DETAIL), out int result1) ? result1 : 20;
  377. _standPageSize = int.TryParse(ConfigIni.ReadIniValue(SECTION_PAGE_SIZE, "20", KEY_PAGE_SIZE_STAND_DETAIL), out int result2) ? result2 : 20;
  378. _patchPageSize = int.TryParse(ConfigIni.ReadIniValue(SECTION_PAGE_SIZE, "20", KEY_PAGE_SIZE_PATCH_DETAIL), out int result3) ? result3 : 20;
  379. _standCatalogPageSize = int.TryParse(ConfigIni.ReadIniValue(SECTION_PAGE_SIZE, "10",KEY_PAGE_SIZE_STAND_CATALOG), out int result4) ? result4 : 10;
  380. _patchCatalogPageSize = int.TryParse(ConfigIni.ReadIniValue(SECTION_PAGE_SIZE, "10",KEY_PAGE_SIZE_PATCH_CATALOG), out int result5) ? result5 : 10;
  381. //获取数据
  382. _pageSize1 = int.TryParse(ConfigIni.ReadIniValue(SECTION_PAGE_SIZE, "10", KEY_PAGE_SIZE_1), out int pageSize1) ? pageSize1 : 10;
  383. _pageSize2 = int.TryParse(ConfigIni.ReadIniValue(SECTION_PAGE_SIZE, "20", KEY_PAGE_SIZE_2), out int pageSize2) ? pageSize2 : 20;
  384. _pageSize3 = int.TryParse(ConfigIni.ReadIniValue(SECTION_PAGE_SIZE, "50", KEY_PAGE_SIZE_3), out int pageSize3) ? pageSize3 : 50;
  385. _dialogImageSize = ConfigIni.ReadIniValue(SECTION_DIALOG_SIZE, "", KEY_DIALOG_SIZE_IMAGE);
  386. _dialogStandSize = ConfigIni.ReadIniValue(SECTION_DIALOG_SIZE, "", KEY_DIALOG_SIZE_STAND);
  387. _logvSize = ConfigIni.ReadIniValue(SECTION_LOG_VIEWER, "", KEY_LOGV_SIZE);
  388. _logvLeftWidth = int.TryParse(ConfigIni.ReadIniValue(SECTION_LOG_VIEWER, "0", KEY_LOGV_LEFT_WIDTH), out int result6) ? result6 : 0;
  389. }
  390. public static CfginiItem GetConfigItem()
  391. {
  392. if(_cfginiItem != null)
  393. {
  394. return _cfginiItem;
  395. }
  396. _cfginiItem = new CfginiItem();
  397. _cfginiItem.InitItem();
  398. return _cfginiItem;
  399. }
  400. // 保存 onnx 路径
  401. public static void SaveOnnxPath(string onnxPath)
  402. {
  403. if (onnxPath == null) return;
  404. ConfigIni.WriteIniValue(SECTION_FILE_PATH, KEY_FILE_PATH_ONNX, onnxPath);
  405. }
  406. // 保存 ai_dll 路径
  407. public static void SaveAiDll(string aiDll)
  408. {
  409. if (aiDll == null) return;
  410. ConfigIni.WriteIniValue(SECTION_FILE_PATH, KEY_FILE_PATH_AIDLL, aiDll);
  411. }
  412. // 保存输出路径
  413. public static void SaveOutput(string outputPath)
  414. {
  415. if (outputPath == null) return;
  416. ConfigIni.WriteIniValue(SECTION_FILE_PATH, KEY_FILE_PATH_OUTPUT, outputPath);
  417. }
  418. // 保存 single 页大小
  419. public static void SaveSinglePageSize(int singlePageSize)
  420. {
  421. if (singlePageSize == 0) return;
  422. ConfigIni.WriteIniValue(SECTION_PAGE_SIZE, KEY_PAGE_SIZE_SINGLE_DETAIL, singlePageSize.ToString());
  423. }
  424. // 保存 stand 页大小
  425. public static void SaveStandPageSize(int standPageSize)
  426. {
  427. if (standPageSize == 0) return;
  428. ConfigIni.WriteIniValue(SECTION_PAGE_SIZE, KEY_PAGE_SIZE_STAND_DETAIL, standPageSize.ToString());
  429. }
  430. // 保存 patch 页大小
  431. public static void SavePatchPageSize(int patchPageSize)
  432. {
  433. if (patchPageSize == 0) return;
  434. ConfigIni.WriteIniValue(SECTION_PAGE_SIZE, KEY_PAGE_SIZE_PATCH_DETAIL, patchPageSize.ToString());
  435. }
  436. // 保存 stand_detail 页大小
  437. public static void SaveStandCatlogPageSize(int standCatalogPageSize)
  438. {
  439. if (standCatalogPageSize == 0) return;
  440. ConfigIni.WriteIniValue(SECTION_PAGE_SIZE, KEY_PAGE_SIZE_STAND_CATALOG, standCatalogPageSize.ToString());
  441. }
  442. // 保存 patch_detail 页大小
  443. public static void SavePatchCatalogPageSize(int patchCatalogPageSize)
  444. {
  445. if (patchCatalogPageSize == 0) return;
  446. ConfigIni.WriteIniValue(SECTION_PAGE_SIZE, KEY_PAGE_SIZE_PATCH_CATALOG, patchCatalogPageSize.ToString());
  447. }
  448. public static void SavePageSize1(int pageSize1)
  449. {
  450. if (pageSize1 == 0) return;
  451. ConfigIni.WriteIniValue(SECTION_PAGE_SIZE, KEY_PAGE_SIZE_1, pageSize1.ToString());
  452. }
  453. public static void SavePageSize2(int pageSize2)
  454. {
  455. if (pageSize2 == 0) return;
  456. ConfigIni.WriteIniValue(SECTION_PAGE_SIZE, KEY_PAGE_SIZE_2, pageSize2.ToString());
  457. }
  458. public static void SavePageSize3(int pageSize3)
  459. {
  460. if (pageSize3 == 0) return;
  461. ConfigIni.WriteIniValue(SECTION_PAGE_SIZE, KEY_PAGE_SIZE_3, pageSize3.ToString());
  462. }
  463. // 保存 show_image 窗口大小
  464. public static void SaveDialogImageSize(string dialogImageSize)
  465. {
  466. if (dialogImageSize == null) return;
  467. ConfigIni.WriteIniValue(SECTION_DIALOG_SIZE, KEY_DIALOG_SIZE_IMAGE, dialogImageSize);
  468. }
  469. // 保存 show_stand 窗口大小
  470. public static void SaveDialogStandSize(string dialogStandSize)
  471. {
  472. if (dialogStandSize == null) return;
  473. ConfigIni.WriteIniValue(SECTION_DIALOG_SIZE, KEY_DIALOG_SIZE_STAND, dialogStandSize);
  474. }
  475. public static void SaveLogvSize(string logvSize)
  476. {
  477. if (logvSize == null) return;
  478. ConfigIni.WriteIniValue(SECTION_LOG_VIEWER, KEY_LOGV_SIZE, logvSize);
  479. }
  480. public static void SaveLogvLeftWidth(int leftWidth)
  481. {
  482. if (leftWidth == 0) return;
  483. ConfigIni.WriteIniValue(SECTION_LOG_VIEWER, KEY_LOGV_LEFT_WIDTH, leftWidth.ToString());
  484. }
  485. //------------------------------------------------------------
  486. }
  487. }