using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Uestc.Auto6.Dso.Core; using Uestc.Auto6.Dso.Core.Tools; namespace Uestc.Auto6.Dso.U2 { public partial class ReferencePage : UserControl, IChnlView { private Boolean _ArgToCtrl; public ReferencePage() { InitializeComponent(); Init(); } protected new Boolean DesignMode { get { Boolean rtnflag = false; #if DEBUG rtnflag = DesignTimeHelper.InDesignMode(this); #endif return rtnflag; } } public ReferencePrsnt Presenter { get => (ReferencePrsnt)(ParentForm as IChnlView).Presenter; set => (ParentForm as IChnlView).Presenter = value; } IBadge IView.Presenter { get => Presenter; set => Presenter = (ReferencePrsnt)value; } private void Init() { //NebVScale NebVScale.AddClicked += (_, _) => Presenter.ScaleIndex++; NebVScale.SubClicked += (_, _) => Presenter.ScaleIndex--; NebVScale.StringFormatFunc = (value) => VScaleToString(); //NebVPos NebVPos.AddClicked += (_, _) => Presenter.PosIndexBymDiv++; NebVPos.SubClicked += (_, _) => Presenter.PosIndexBymDiv--; NebVPos.StringFormatFunc = (value) => VPosToString(); //NebHScale NebHScale.AddClicked += (_, _) => Presenter.Sampling.ScaleIndex++; NebHScale.SubClicked += (_, _) => Presenter.Sampling.ScaleIndex--; NebHScale.StringFormatFunc = (value) => HScaleToString(); //NebHPos NebHPos.AddClicked += (_, _) => Presenter.Sampling.PosIndexBymDiv++; NebHPos.SubClicked += (_, _) => Presenter.Sampling.PosIndexBymDiv--; NebHPos.StringFormatFunc = (value) => HPosToString(); } public void UpdateView(String propertyName) { if (String.IsNullOrEmpty(propertyName)) { UpdateView(); return; } _ArgToCtrl = true; switch (propertyName) { case nameof(Presenter.Active): ChkActive.Checked = Presenter.Active; break; case "ConditioningScale": case "ConditioningScaleUnit": NebVScale.UpdateValueString(); TbxUnit.Text = Presenter.Unit; return; case "ConditioningPosition": NebVPos.UpdateValueString(); return; case "SamplingScale": NebHScale.UpdateValueString(); return; case "SamplingPosition": NebHPos.UpdateValueString(); return; case nameof(Presenter.Label): TbxLabel.Text = Presenter.Label; break; } _ArgToCtrl = false; } protected void UpdateView() { if (!DesignMode) { _ArgToCtrl = true; //ChkActive.Checked = Presenter.Active; NebVScale.UpdateValueString(); NebVPos.UpdateValueString(); NebHScale.UpdateValueString(); NebHPos.UpdateValueString(); TbxLabel.Text = Presenter.Label; TbxUnit.Text = Presenter.Unit; BtnFullFileName.Text = Presenter.FullFileName; _ArgToCtrl = false; } } private String VScaleToString() { return new Quantity(Presenter.Scale, Presenter.Prefix, Presenter.Unit).ToString(); } private String VPosToString() { return new Quantity(Presenter.PosIndexBymDiv, Prefix.Milli, "div").ToString("#0.###", true); } private String HScaleToString() { return new Quantity(Presenter.Sampling.Scale, Presenter.Sampling.Prefix, Presenter.Sampling.Unit) .ToString(); } private String HPosToString() { return new Quantity(Presenter.Sampling.PositionByus, Presenter.Sampling.Prefix, Presenter.Sampling.Unit) .ToString(5, true); } protected override void OnLoad(EventArgs e) { base.OnLoad(e); Uni_Trend.MSO7000X.UserControls.Style.StyleManager.Instance.RegisterControlRecursion(this); UpdateView(); } public override void Refresh() { UpdateView(); base.Refresh(); } private void TbxLabel_KeyPress(object sender, KeyPressEventArgs e) { if (OnEnterKeyPressed(sender, e)) Presenter.Label = TbxLabel.Text; } private void TbxLabel_Leave(object sender, EventArgs e) { Presenter.Label = TbxLabel.Text; } private static Boolean OnEnterKeyPressed(object sender, KeyPressEventArgs e) { if (e.KeyChar == (Char)Keys.Enter) return true; return false; } private void TbxUnit_KeyPress(object sender, KeyPressEventArgs e) { if (OnEnterKeyPressed(sender, e)) Presenter.Unit = TbxUnit.Text; } private void TbxUnit_Leave(object sender, EventArgs e) { Presenter.Unit = TbxUnit.Text; } private void ChkActive_CheckedChangedEvent(object sender, EventArgs e) { if (!_ArgToCtrl) { Presenter.Active = false; if (DsoPrsnt.FocusId == Presenter.Id) Program.Oscilloscope.MoveFocusId(); (Program.Oscilloscope.View as DsoForm).RemoveBadge(Presenter); } } private void BtnFullFileName_Click(object sender, EventArgs e) { FileReadForm rdform = new() { StartPosition = FormStartPosition.CenterScreen, }; rdform.CanClose = false; rdform.IsShowPin = false; rdform.SetFileFilter(Enum.GetValues().Where(x => x == WfmFormat.Binary)); rdform.SetPath(System.IO.Path.GetDirectoryName(Presenter.FullFileName)); if (rdform.ShowDialogByEvent() == DialogResult.Yes) { ReferencePrsnt rprsnt = Presenter; if (ReferencePrsnt.TryRead(Presenter.Id, rdform.FullFileName, ref rprsnt)) { BtnFullFileName.Text = Presenter.FullFileName; return; } WeakTip.Default.Write("Ref", MsgTipId.InvalidData); } } } }