using DevExpress.Data; using DevExpress.Mvvm; using DevExpress.Xpo; using DevExpress.XtraBars; using DevExpress.XtraEditors; using DevExpress.XtraGrid.Views.Base; using Ips.Library.Basic; using Ips.Library.DxpLib; using Ips.Library.Entity; using Ips.LocAlgorithm; using Ips.Sps.TskResults.Commands; 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; namespace Ips.Sps.TskResults.Peses { public partial class PesGridListCtrl : DevExpress.XtraEditors.XtraUserControl { public PesGridListCtrl() { InitializeComponent(); } public void SetResourceList(XPCollection satList, XPCollection emtList) { bsSatList.DataSource = satList; bsEmtList.DataSource = emtList; } public void SetDataSource(object obj) { if (obj is System.Collections.IList) { bsPesList.DataSource = obj; } else { grdPesList.DataSource = obj; } grdPesList.RefreshDataSource(); gvPesList.BestFitColumns(); } private void gvPesList_CustomColumnDisplayText(object sender, CustomColumnDisplayTextEventArgs e) { if (e.Value == null || e.Value == NotLoadedObject.Instance) return; if (e.Column == colSigFreq) { e.DisplayText = ((long)e.Value).E6m().ToString("F3"); } else if (e.Column == colBandWidth) { e.DisplayText = ((int)e.Value).E3m().ToString(); } else if (e.Column == colEmtId) { if (Convert.ToInt32(e.Value) == 0) { e.DisplayText = "未知"; } } else if (e.Column == colMainSatId) { if (Convert.ToInt32(e.Value) == 0) { e.DisplayText = "无"; } } } private void gvPesList_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e) { if (e.Button == MouseButtons.Right) { var category = (SignalCategory)gvPesList.GetFocusedRowCellValue(colCategory); btnDrawDtoLine.Visibility = category == SignalCategory.RefSig ? BarItemVisibility.Never : BarItemVisibility.Always; btnDfLine.Visibility = category == SignalCategory.RefSig ? BarItemVisibility.Never : BarItemVisibility.Always; popMenu.ShowPopup(grdPesList.PointToScreen(e.Location)); } } private void btnDrawDtoLine_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { DrawLine(e.Item == btnDrawDtoLine, false); } private void btnDfLine_ItemClick(object sender, ItemClickEventArgs e) { DrawLine(e.Item == btnDfLine, true); } private void DrawLine(bool hasRef, bool dfoLine) { try { MsgHelper.ShowOverlay(this); var pesId = (long)gvPesList.GetFocusedRowCellValue(colId); var cmd = DrawLineMessage.CreateByPes(pesId, hasRef, dfoLine); Messenger.Default.Send(cmd); MsgHelper.CloseOverlay(); } catch (Exception ex) { MsgHelper.CloseOverlay(); MsgHelper.ShowError("绘制时差线异常,错误消息:" + ex.Message); } } private async void btnPosManual_ItemClick(object sender, ItemClickEventArgs e) { var pesIds = gvPesList.GetSelectRowCellValue(colId); var pesList = Session.DefaultSession.Query().Where(m => pesIds.Contains(m.Id)).ToList(); var pes1 = pesList[0]; var pes2 = pesList[1]; var posRes = await LocUtil.X3( pes1.Dt, pes2.Dt, pes1.GetMainAntLLA(), pes1.GetAdjaAntLLA(), pes2.GetMainAntLLA(), pes2.GetAdjaAntLLA(), pes1.GetMainEphXYZ(), pes1.GetAdjaEphXYZ(), pes2.GetMainEphXYZ(), pes2.GetAdjaEphXYZ() ); var ss = posRes.Result; //LocUtil.X3() } private void gvPesList_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e) { } private void gvPesList_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e) { if (e.Column != colSnr || e.RowHandle < 0 || e.CellValue == NotLoadedObject.Instance) return; bool isValid = (bool)gvPesList.GetRowCellValue(e.RowHandle, colIsValid); if (!isValid) { e.Appearance.BackColor = Color.LightGray; } } private void btnExportCsv_ItemClick(object sender, ItemClickEventArgs e) { string filename = ToolDialog.SaveFile($"参估列表{DateTime.Now:yyyyMMddHHmmss}.csv", "导出参估列表", null, "csv文件(*.csv)|*.csv"); if (filename.IsNotNullOrWhitespace()) { gvPesList.ExportToCsv(filename); } } } }