ScreenSavePage.cs 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Linq;
  6. using System.Windows.Forms;
  7. using Uestc.Auto6.Dso.Core;
  8. using Uestc.Auto6.Dso.Core.Tools;
  9. using Uni_Trend.MSO7000X.Common.Default;
  10. using Uni_Trend.MSO7000X.Common.Helper;
  11. using Uni_Trend.MSO7000X.UserControls;
  12. using Uni_Trend.MSO7000X.UserControls.Style;
  13. namespace Uestc.Auto6.Dso.U2
  14. {
  15. public partial class ScreenSavePage : UserControl, IFileView, IStylize
  16. {
  17. private Boolean _ArgToCtrl;
  18. public ScreenSavePage()
  19. {
  20. InitializeComponent();
  21. }
  22. private void LoadPicFormatList(IEnumerable<PicFormat> formats)
  23. {
  24. CbxFileType.DataSource = formats.Select(x => new KeyValuePair<String, PicFormat>(x.ToString() + $"({FilePrsnt.GetPicFileExtName(x)})", x)).ToList();
  25. CbxFileType.DisplayMember = "Key";
  26. CbxFileType.ValueMember = "Value";
  27. CbxFileType.SelectedIndexChanged += (_, _) =>
  28. {
  29. if (!_ArgToCtrl)
  30. {
  31. Presenter.PicFormat = (PicFormat)CbxFileType.SelectedIndex;
  32. }
  33. };
  34. }
  35. [Browsable(false)]
  36. public StyleFlag StyleFlags { get; set; } = StyleFlag.None;
  37. [Description("是否风格化"), Browsable(true), DefaultValue(typeof(Boolean)), Category(Const.Category)]
  38. public Boolean StylizeFlag { get; set; } = false;
  39. protected new Boolean DesignMode
  40. {
  41. get
  42. {
  43. Boolean rtnflag = false;
  44. #if DEBUG
  45. rtnflag = DesignTimeHelper.InDesignMode(this);
  46. #endif
  47. return rtnflag;
  48. }
  49. }
  50. public FilePrsnt Presenter
  51. {
  52. get => (FilePrsnt)(ParentForm as IFileView).Presenter;
  53. set => (ParentForm as IFileView).Presenter = value;
  54. }
  55. IFilePrsnt IView<IFilePrsnt>.Presenter
  56. {
  57. get => Presenter;
  58. set => Presenter = (FilePrsnt)value;
  59. }
  60. /// <summary>
  61. /// 生成文件名
  62. /// </summary>
  63. /// <returns></returns>
  64. //private String MakeDefaultFileName()
  65. //{
  66. // if (Presenter.IfAppendDatetime)
  67. // return Presenter.DefaultPrefixName + DateTime.Now.ToString("yyyyMMddHHmmss");
  68. // else
  69. // {
  70. // var ext = Presenter.PicFormat.GetFileTypeDescription().Extension[0];
  71. // var result = new System.IO.DirectoryInfo(Presenter.PicPath)
  72. // .GetFiles($"*.{ext}", System.IO.SearchOption.TopDirectoryOnly)
  73. // .Where(x => Regex.IsMatch(x.Name, $"^{Presenter.DefaultPrefixName}[0-9]{"{3}"}.{ext}$", RegexOptions.IgnoreCase));
  74. // return Presenter.DefaultPrefixName + String.Format("{0:D3}", result.Count());
  75. // }
  76. //}
  77. public override void Refresh()
  78. {
  79. base.Refresh();
  80. UpdateView();
  81. }
  82. public void UpdateView(Object presenter, String propertyName)
  83. {
  84. if (String.IsNullOrEmpty(propertyName))
  85. {
  86. UpdateView();
  87. return;
  88. }
  89. _ArgToCtrl = true;
  90. switch (propertyName)
  91. {
  92. case nameof(Presenter.PicPath):
  93. CbxPath.Text = Presenter.PicPath;
  94. break;
  95. case nameof(Presenter.PicRegion):
  96. RdoRegion.ChoosedButtonIndex = Presenter.PicRegion == PicArea.Application ? 0 : 1;
  97. break;
  98. case nameof(Presenter.IfAppendDatetime):
  99. ChkSuffix.Checked = Presenter.IfAppendDatetime;
  100. TbxFileName.Text = Presenter.FileName;
  101. break;
  102. case nameof(Presenter.FileName):
  103. TbxFileName.Text = Presenter.FileName;
  104. break;
  105. case nameof(Presenter.PicFormat):
  106. CbxFileType.SelectedIndex = (Int32)Presenter.PicFormat;
  107. break;
  108. case nameof(Presenter.PicColor):
  109. RdoColor.ChoosedButtonIndex = (Int32)Presenter.PicColor;
  110. break;
  111. }
  112. _ArgToCtrl = false;
  113. }
  114. protected void UpdateView()
  115. {
  116. if (!DesignMode)
  117. {
  118. _ArgToCtrl = true;
  119. RdoRegion.ChoosedButtonIndex = Presenter.PicRegion == PicArea.Application ? 0 : 1;
  120. CbxPath.Text = Presenter.PicPath;
  121. ChkSuffix.Checked = Presenter.IfAppendDatetime;
  122. TbxFileName.Text = Presenter.FileName;
  123. CbxFileType.SelectedIndex = (Int32)Presenter.PicFormat;
  124. RdoColor.ChoosedButtonIndex = (Int32)Presenter.PicColor;
  125. _ArgToCtrl = false;
  126. }
  127. }
  128. protected override void OnLoad(EventArgs e)
  129. {
  130. base.OnLoad(e);
  131. Presenter.FileName = Presenter.MakeDefaultFileName(Presenter.PicPath, FilePrsnt.GetPicFileExtName(Presenter.PicFormat));
  132. LoadPicFormatList(Enum.GetValues<PicFormat>());
  133. UpdateView();
  134. }
  135. private void RdoRegion_IndexChanged(Object sender, EventArgs e)
  136. {
  137. if (!_ArgToCtrl)
  138. {
  139. Presenter.PicRegion = RdoRegion.ChoosedButtonIndex == 0 ? PicArea.Application : PicArea.Window;
  140. }
  141. }
  142. private void RdoColor_IndexChanged(Object sender, EventArgs e)
  143. {
  144. if (!_ArgToCtrl)
  145. {
  146. Presenter.PicColor = (PicColor)RdoColor.ChoosedButtonIndex;
  147. }
  148. }
  149. private void BtnSelectPath_Click(Object sender, EventArgs e)
  150. {
  151. if (!_ArgToCtrl)
  152. {
  153. using var fbd = new DirectoryBrowserForm(Presenter.PicPath);
  154. fbd.StartPositionEx = fbd.CalculateWindowPosition();
  155. if (fbd.ShowDialogByEvent() == DialogResult.Yes)
  156. {
  157. Presenter.PicPath = fbd.ChoosedDirPath;
  158. }
  159. }
  160. }
  161. private void BtnSave_Click(Object sender, EventArgs e)
  162. {
  163. var picpath = Presenter.PicPath;
  164. var filename = Presenter.FileName;
  165. var picformat = Presenter.PicFormat;
  166. var picregion = Presenter.PicRegion;
  167. var appenddatetime = Presenter.IfAppendDatetime;
  168. var piccolor = Presenter.PicColor;
  169. ParentForm.Visible = false;
  170. if (FilePrsnt.SaveImage(picpath, filename, picformat, picregion, appenddatetime, piccolor))
  171. {
  172. WeakTip.Default.Write("File", MsgTipId.SavingSuccess, false, picpath);
  173. }
  174. else
  175. {
  176. WeakTip.Default.Write("File", MsgTipId.SavingFailed);
  177. }
  178. }
  179. private void ChkSuffix_CheckedChangedEvent(Object sender, EventArgs e)
  180. {
  181. if (!_ArgToCtrl)
  182. {
  183. Presenter.IfAppendDatetime = ChkSuffix.Checked;
  184. }
  185. }
  186. private void TbxFileName_TextChanged(Object sender, EventArgs e)
  187. {
  188. if (!_ArgToCtrl)
  189. {
  190. Presenter.FileName = TbxFileName.Text;
  191. }
  192. }
  193. private void BtnOpen_Click(Object sender, EventArgs e)
  194. {
  195. var filename = ExplorerExtension.GetLatestFile(Presenter.PicPath, FilePrsnt.GetPicFileExtName(Presenter.PicFormat));
  196. if (String.IsNullOrEmpty(filename))
  197. {
  198. ExplorerExtension.ExplorerDic(Presenter.PicPath);
  199. }
  200. else
  201. {
  202. ExplorerExtension.ExplorerFile(filename);
  203. }
  204. }
  205. private void BtnSaveAndOpen_Click(Object sender, EventArgs e)
  206. {
  207. var picpath = Presenter.PicPath;
  208. var filename = Presenter.FileName;
  209. var picformat = Presenter.PicFormat;
  210. var picregion = Presenter.PicRegion;
  211. var appenddatetime = Presenter.IfAppendDatetime;
  212. var piccolor = Presenter.PicColor;
  213. ParentForm.Visible = false;
  214. if (FilePrsnt.SaveImage(picpath, filename, picformat, picregion, appenddatetime, piccolor))
  215. {
  216. var latestfilename = ExplorerExtension.GetLatestFile(picpath, FilePrsnt.GetPicFileExtName(picformat));
  217. if (String.IsNullOrEmpty(latestfilename))
  218. {
  219. ExplorerExtension.ExplorerDic(picpath);
  220. }
  221. else
  222. {
  223. ExplorerExtension.ExplorerFile(latestfilename);
  224. }
  225. }
  226. else
  227. {
  228. WeakTip.Default.Write("File", MsgTipId.SavingFailed);
  229. }
  230. }
  231. }
  232. }