| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 | using DevExpress.Xpo.DB.Exceptions;using DevExpress.Xpo;using DevExpress.XtraEditors;using Ips.Library.DxpLib;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 Ips.Library.Entity;using DevExpress.XtraEditors.Controls;using Ips.Sps.TskResults.Poses;using DevExpress.XtraLayout.Utils;using DevExpress.XtraLayout;using Ips.Library.Basic;using Ips.Sps.Emts;using Ips.Sps.Maps;namespace Ips.Sps.Sigs{    public partial class SigEditForm : DevExpress.XtraEditors.XtraForm    {        public SigEditForm()        {            InitializeComponent();            SigCategoryImageComboBoxEdit.Properties.Items.AddEnum<SignalCategory>();            SigTypeImageComboBoxEdit.Properties.Items.AddEnum<SignalType>();        }        public SigEditForm(int? id) : this()        {            this.Id = id;        }        public int? Id { get; private set; }        protected UnitOfWork UnitOfWork { get; private set; }        public Signal EditModel { get => (Signal)bsSig.DataSource; }        private void SigEditForm_Load(object sender, EventArgs e)        {            UnitOfWork = new UnitOfWork();            if (Id.HasValue)                bsSig.DataSource = UnitOfWork.GetObjectByKey<Signal>(Id.Value);            else                bsSig.DataSource = new Signal(UnitOfWork);        }        private void btnSave_Click(object sender, EventArgs e)        {            try            {                if (EditModel.SigCategory == SignalCategory.SctSig)                {                    EditModel.SigFreq = EditModel.FreqStart;                }                UnitOfWork.CommitChanges();                Id = ((Signal)(bsSig.DataSource)).Oid;                this.DialogResult = DialogResult.OK;                Close();            }            catch (LockingException)            {                MsgHelper.ShowError("对象已被修改,请关闭后重新打开进行编辑!");            }        }        private void btnCancel_Click(object sender, EventArgs e)        {            Close();        }        private void SigRangTextButtonEdit_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)        {            if (e.Button.Kind == ButtonPredefines.Clear)            {                EditModel.HasRange = false;            }            else if (e.Button.Kind == ButtonPredefines.Ellipsis)            {                MapRangeSelectForm selectForm = new MapRangeSelectForm();                if (EditModel.HasRange)                {                    selectForm.SelectRange = new GeoRange(EditModel.SigLon, EditModel.SigLat, EditModel.SigAlt, EditModel.LonRange, EditModel.LatRange);                }                if (selectForm.ShowDialog() != DialogResult.OK) return;                if (selectForm.SelectRange != null)                {                    var range = selectForm.SelectRange;                    SetSigRange(range);                }                else                {                    EditModel.HasRange = false;                }            }            SigRangTextButtonEdit.EditValue = EditModel.SigRangText;        }        private void SetSigRange(GeoRange range)        {            EditModel.SigLon = range.Lon;            EditModel.SigLat = range.Lat;            EditModel.SigAlt = range.Alt;            EditModel.LonRange = range.LonRange;            EditModel.LatRange = range.LatRange;            EditModel.HasRange = true;        }        private void SigTypeImageComboBoxEdit_SelectedIndexChanged(object sender, EventArgs e)        {            var sigType = (SignalType)SigTypeImageComboBoxEdit.EditValue;            new[] { ItemForEmtId, ItemForSigLen }                            .ForEach(m => m.Visibility = LayoutVisibility.Always);            switch (sigType)            {                case SignalType.DAMA:                    ItemForEmtId.Visibility = LayoutVisibility.Never;                    ItemForSigLen.Visibility = LayoutVisibility.Never;                    break;            }        }        private void EmtIdLookUpEdit_ButtonClick(object sender, ButtonPressedEventArgs e)        {            if (e.Button.Kind == ButtonPredefines.Clear)            {                EmtIdLookUpEdit.EditValue = null;            }        }        private void SatIdsCheckedComboBoxEdit_ButtonClick(object sender, ButtonPressedEventArgs e)        {            if (e.Button.Kind == ButtonPredefines.Clear)            {                AdjaSatIdsCheckedComboBoxEdit.EditValue = null;            }        }        private void MainSatIdLookUpEdit_ButtonClick(object sender, ButtonPressedEventArgs e)        {            if (e.Button.Kind == ButtonPredefines.Clear)            {                MainSatIdLookUpEdit.EditValue = null;            }        }        private void SigCategoryImageComboBoxEdit_SelectedIndexChanged(object sender, EventArgs e)        {            var categy = (SignalCategory)SigCategoryImageComboBoxEdit.EditValue;            if (categy == SignalCategory.SctSig)            {                ItemForSigFreq.Visibility = LayoutVisibility.Never;                ItemForFreqStart.Visibility = LayoutVisibility.Always;                ItemForFreqEnd.Visibility = LayoutVisibility.Always;                ItemForFreqStep.Visibility = LayoutVisibility.Always;            }            else            {                ItemForSigFreq.Visibility = LayoutVisibility.Always;                ItemForFreqStart.Visibility = LayoutVisibility.Never;                ItemForFreqEnd.Visibility = LayoutVisibility.Never;                ItemForFreqStep.Visibility = LayoutVisibility.Never;            }        }        private void EmtIdLookUpEdit_EditValueChanging(object sender, ChangingEventArgs e)        {            var arg = e as ChangingEventArgs;            if (arg.IsBoundUpdatingEditValue) return;            if (arg == null || arg.NewValue == null) return;            var emt = EmtIdLookUpEdit.Properties.GetDataSourceRowByKeyValue(arg.NewValue) as Emt;            if (emt != null && emt.EmtType == EmtType.FixSation)            {                SetSigRange(new GeoRange(emt.Lon, emt.Lat, emt.Alt, 1, 1));            }        }    }}
 |