ReferencePage.cs 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using Uestc.Auto6.Dso.Core;
  11. using Uestc.Auto6.Dso.Core.Tools;
  12. namespace Uestc.Auto6.Dso.U2
  13. {
  14. public partial class ReferencePage : UserControl, IChnlView
  15. {
  16. private Boolean _ArgToCtrl;
  17. public ReferencePage()
  18. {
  19. InitializeComponent();
  20. Init();
  21. }
  22. protected new Boolean DesignMode
  23. {
  24. get
  25. {
  26. Boolean rtnflag = false;
  27. #if DEBUG
  28. rtnflag = DesignTimeHelper.InDesignMode(this);
  29. #endif
  30. return rtnflag;
  31. }
  32. }
  33. public ReferencePrsnt Presenter
  34. {
  35. get => (ReferencePrsnt)(ParentForm as IChnlView).Presenter;
  36. set => (ParentForm as IChnlView).Presenter = value;
  37. }
  38. IBadge IView<IBadge>.Presenter
  39. {
  40. get => Presenter;
  41. set => Presenter = (ReferencePrsnt)value;
  42. }
  43. private void Init()
  44. {
  45. //NebVScale
  46. NebVScale.AddClicked += (_, _) => Presenter.ScaleIndex++;
  47. NebVScale.SubClicked += (_, _) => Presenter.ScaleIndex--;
  48. NebVScale.StringFormatFunc = (value) => VScaleToString();
  49. //NebVPos
  50. NebVPos.AddClicked += (_, _) => Presenter.PosIndexBymDiv++;
  51. NebVPos.SubClicked += (_, _) => Presenter.PosIndexBymDiv--;
  52. NebVPos.StringFormatFunc = (value) => VPosToString();
  53. //NebHScale
  54. NebHScale.AddClicked += (_, _) => Presenter.Sampling.ScaleIndex++;
  55. NebHScale.SubClicked += (_, _) => Presenter.Sampling.ScaleIndex--;
  56. NebHScale.StringFormatFunc = (value) => HScaleToString();
  57. //NebHPos
  58. NebHPos.AddClicked += (_, _) => Presenter.Sampling.PosIndexBymDiv++;
  59. NebHPos.SubClicked += (_, _) => Presenter.Sampling.PosIndexBymDiv--;
  60. NebHPos.StringFormatFunc = (value) => HPosToString();
  61. }
  62. public void UpdateView(String propertyName)
  63. {
  64. if (String.IsNullOrEmpty(propertyName))
  65. {
  66. UpdateView();
  67. return;
  68. }
  69. _ArgToCtrl = true;
  70. switch (propertyName)
  71. {
  72. case nameof(Presenter.Active):
  73. ChkActive.Checked = Presenter.Active;
  74. break;
  75. case "ConditioningScale":
  76. case "ConditioningScaleUnit":
  77. NebVScale.UpdateValueString();
  78. TbxUnit.Text = Presenter.Unit;
  79. return;
  80. case "ConditioningPosition":
  81. NebVPos.UpdateValueString();
  82. return;
  83. case "SamplingScale":
  84. NebHScale.UpdateValueString();
  85. return;
  86. case "SamplingPosition":
  87. NebHPos.UpdateValueString();
  88. return;
  89. case nameof(Presenter.Label):
  90. TbxLabel.Text = Presenter.Label;
  91. break;
  92. }
  93. _ArgToCtrl = false;
  94. }
  95. protected void UpdateView()
  96. {
  97. if (!DesignMode)
  98. {
  99. _ArgToCtrl = true;
  100. //ChkActive.Checked = Presenter.Active;
  101. NebVScale.UpdateValueString();
  102. NebVPos.UpdateValueString();
  103. NebHScale.UpdateValueString();
  104. NebHPos.UpdateValueString();
  105. TbxLabel.Text = Presenter.Label;
  106. TbxUnit.Text = Presenter.Unit;
  107. BtnFullFileName.Text = Presenter.FullFileName;
  108. _ArgToCtrl = false;
  109. }
  110. }
  111. private String VScaleToString()
  112. {
  113. return new Quantity(Presenter.Scale, Presenter.Prefix, Presenter.Unit).ToString();
  114. }
  115. private String VPosToString()
  116. {
  117. return new Quantity(Presenter.PosIndexBymDiv, Prefix.Milli, "div").ToString("#0.###", true);
  118. }
  119. private String HScaleToString()
  120. {
  121. return new Quantity(Presenter.Sampling.Scale, Presenter.Sampling.Prefix, Presenter.Sampling.Unit)
  122. .ToString();
  123. }
  124. private String HPosToString()
  125. {
  126. return new Quantity(Presenter.Sampling.PositionByus, Presenter.Sampling.Prefix, Presenter.Sampling.Unit)
  127. .ToString(5, true);
  128. }
  129. protected override void OnLoad(EventArgs e)
  130. {
  131. base.OnLoad(e);
  132. Uni_Trend.MSO7000X.UserControls.Style.StyleManager.Instance.RegisterControlRecursion(this);
  133. UpdateView();
  134. }
  135. public override void Refresh()
  136. {
  137. UpdateView();
  138. base.Refresh();
  139. }
  140. private void TbxLabel_KeyPress(object sender, KeyPressEventArgs e)
  141. {
  142. if (OnEnterKeyPressed(sender, e))
  143. Presenter.Label = TbxLabel.Text;
  144. }
  145. private void TbxLabel_Leave(object sender, EventArgs e)
  146. {
  147. Presenter.Label = TbxLabel.Text;
  148. }
  149. private static Boolean OnEnterKeyPressed(object sender, KeyPressEventArgs e)
  150. {
  151. if (e.KeyChar == (Char)Keys.Enter)
  152. return true;
  153. return false;
  154. }
  155. private void TbxUnit_KeyPress(object sender, KeyPressEventArgs e)
  156. {
  157. if (OnEnterKeyPressed(sender, e))
  158. Presenter.Unit = TbxUnit.Text;
  159. }
  160. private void TbxUnit_Leave(object sender, EventArgs e)
  161. {
  162. Presenter.Unit = TbxUnit.Text;
  163. }
  164. private void ChkActive_CheckedChangedEvent(object sender, EventArgs e)
  165. {
  166. if (!_ArgToCtrl)
  167. {
  168. Presenter.Active = false;
  169. if (DsoPrsnt.FocusId == Presenter.Id)
  170. Program.Oscilloscope.MoveFocusId();
  171. (Program.Oscilloscope.View as DsoForm).RemoveBadge(Presenter);
  172. }
  173. }
  174. private void BtnFullFileName_Click(object sender, EventArgs e)
  175. {
  176. FileReadForm rdform = new()
  177. {
  178. StartPosition = FormStartPosition.CenterScreen,
  179. };
  180. rdform.CanClose = false;
  181. rdform.IsShowPin = false;
  182. rdform.SetFileFilter(Enum.GetValues<WfmFormat>().Where(x => x == WfmFormat.Binary));
  183. rdform.SetPath(System.IO.Path.GetDirectoryName(Presenter.FullFileName));
  184. if (rdform.ShowDialogByEvent() == DialogResult.Yes)
  185. {
  186. ReferencePrsnt rprsnt = Presenter;
  187. if (ReferencePrsnt.TryRead(Presenter.Id, rdform.FullFileName, ref rprsnt))
  188. {
  189. BtnFullFileName.Text = Presenter.FullFileName;
  190. return;
  191. }
  192. WeakTip.Default.Write("Ref", MsgTipId.InvalidData);
  193. }
  194. }
  195. }
  196. }