duheng
2024-06-06 ccc0d2319b71cc41f4d9d2f86dff28da918987da
WinfrmUI/Hydro.WinfrmUI.Viewer/frmMain.cs
@@ -23,33 +23,35 @@
using System.Drawing.Printing;
using DevExpress;
using DevExpress.XtraBars;
using DevExpress.XtraBars.Ribbon;
using Hydro.MapView;
using DevExpress.XtraBars.Ribbon;
using Hydro.MapView;
using System.Linq;
namespace Hydro.WinfrmUI.Viewer
{
    public partial class frmMain : DevExpress.XtraBars.Ribbon.RibbonForm
    {
    {
        public frmMain()
        {
            InitializeComponent();
            UserLookAndFeel.Default.SetSkinStyle("Office 2019 Colorful");
        }
        private ViewBrowser _viewBrowser;
        private void frmMain_Load(object sender, System.EventArgs e)
        {
        {
            ribbonControl1.ForceInitialize();
            //GalleryDropDown skins = new GalleryDropDown();
            //skins.Ribbon = ribbonControl1;
            //DevExpress.XtraBars.Helpers.SkinHelper.InitSkinGalleryDropDown(skins);
            //iPaintStyle.DropDownControl = skins;
            CreateNewDocument(@"D:\WorkData\YiWei\Hydro\Hydro.V1.1\out\xiaofang.inp");
            CreateNewDocument(@"D:\WorkData\ISupply\Hydro.V1.1\out\xiaofang.inp");
            _viewBrowser = CurrentForm.GetBrowser(); ;
            RefreshFloor();
        }
        protected override void OnLoad(EventArgs e)
@@ -63,19 +65,15 @@
            base.OnShown(e);
        }
        private int documentIndex = 0;
        int documentIndex = 0;
        private GalleryItem fCurrentFontItem, fCurrentColorItem;
        GalleryItem fCurrentFontItem, fCurrentColorItem;
        void CreateNewDocument()
        private void CreateNewDocument()
        {
            CreateNewDocument(null);
        }
        public void ShowHideFormatCategory()
        {
            RibbonPageCategory selectionCategory = Ribbon.PageCategories[0] as RibbonPageCategory;
@@ -83,7 +81,8 @@
            if (selectionCategory.Visible) Ribbon.SelectedPage = selectionCategory.Pages[0];
        }
        void CreateNewDocument(string fileName)
        private void CreateNewDocument(string fileName)
        {
            if (string.IsNullOrEmpty(fileName))
            {
@@ -93,8 +92,8 @@
            documentIndex++;
            frmDoc pad = new frmDoc();
            var viewer = pad.LoadDocument(fileName);
            if (viewer == null)
            {
                return;
@@ -128,54 +127,56 @@
                label_rotation.Caption = $"Rotation:({r1.ToString("0")},{r2.ToString("0")})";
            };
            pad.MdiParent = this;
            pad.Closed += new EventHandler(Pad_Closed);
            pad.Show();
        }
        void pad_ShowMiniToolbar(object sender, EventArgs e)
        private void pad_ShowMiniToolbar(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(((RichTextBox)sender).SelectedText))
                return;
            ShowSelectionMiniToolbar();
        }
        void Pad_Closed(object sender, EventArgs e)
        private void Pad_Closed(object sender, EventArgs e)
        {
            CloseFind();
        }
        void Pad_ShowPopupMenu(object sender, EventArgs e)
        private void Pad_ShowPopupMenu(object sender, EventArgs e)
        {
            pmMain.RibbonToolbar = selectionMiniToolbar;
            pmMain.ShowPopup(Control.MousePosition);
        }
        void CloseFind()
        {
        private void CloseFind()
        {
        }
        #region Init
        private void frmMain_Activated(object sender, System.EventArgs e)
        {
            InitDocument();
        }
        void ChangeActiveForm()
        private void ChangeActiveForm()
        {
            CloseFind();
        }
        private void xtraTabbedMdiManager1_FloatMDIChildActivated(object sender, EventArgs e)
        {
            ChangeActiveForm();
        }
        private void xtraTabbedMdiManager1_FloatMDIChildDeactivated(object sender, EventArgs e)
        {
            BeginInvoke(new MethodInvoker(ChangeActiveForm));
        }
        private void frmMain_MdiChildActivate(object sender, System.EventArgs e)
        {
            ChangeActiveForm();
@@ -183,7 +184,6 @@
        private void InitDocument()
        {
        }
        protected virtual void ShowSelectionMiniToolbar()
@@ -195,28 +195,21 @@
            selectionMiniToolbar.Show(pt);
        }
        void InitCurrentDocument(RichTextBox rtbControl)
        private void InitCurrentDocument(RichTextBox rtbControl)
        {
            bool _enabled = rtbControl != null;
            iSaveAs.Enabled = _enabled;
            iOpenByEpa.Enabled = _enabled;
            sbiSave.Enabled = _enabled;
            iFind.Enabled = _enabled;
            sbiSave.Enabled = _enabled;
            iFind.Enabled = _enabled;
        }
        #endregion Init
        #endregion
        #region Properties
        frmDoc CurrentForm
        private frmDoc CurrentForm
        {
            get
            {
@@ -227,33 +220,31 @@
            }
        }
        #endregion Properties
        #endregion
        #region File
        void idNew_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        private void idNew_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            CreateNewDocument();
        }
        void iOpenByEpa_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        private void iOpenByEpa_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            // Process.Start(@"epanetH\Epanet2wH.exe", _filePath);
        }
        private void iClear_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (CurrentForm != null) CurrentForm.Close();
        }
        public void OpenFile(string name)
        {
            CreateNewDocument(name);
            CreateNewDocument(name);
        }
        bool CheckForOverlap(RecentPinItem pinItem, RecentItemCollection recentItemCollection)
        private bool CheckForOverlap(RecentPinItem pinItem, RecentItemCollection recentItemCollection)
        {
            foreach (RecentItemBase item in recentItemCollection)
            {
@@ -263,35 +254,35 @@
            }
            return false;
        }
        void iOpen_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        private void iOpen_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "INP Files (*.inp)|*.inp|All Files (*.*)|*.*";
            if (this.CurrentForm == null)
                return;
            this.CurrentForm.GetBrowser().OpenFile(openFileDialog.FileName);
            this._viewBrowser.OpenFile(openFileDialog.FileName);
            RefreshFloor();
        }
        void iSave_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        private void iSave_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Save();
        }
        void iSaveAs_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        private void iSaveAs_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            SaveAs();
        }
        void Save()
        private void Save()
        {
            if (CurrentForm == null)
                return;
            CurrentForm.GetBrowser().Save ( );
            _viewBrowser.Save();
        }
        void SaveAs()
        private void SaveAs()
        {
            if (CurrentForm == null)
                return;
@@ -303,10 +294,10 @@
            if (saveFileDialog.ShowDialog() == DialogResult.OK)
            {
                string filePath = saveFileDialog.FileName;
                CurrentForm.GetBrowser().SaveAs(filePath);
                _viewBrowser.SaveAs(filePath);
            }
        }
        private void bbi以当前视角另存_ItemClick(object sender, ItemClickEventArgs e)
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog();
@@ -315,7 +306,7 @@
            if (saveFileDialog.ShowDialog() == DialogResult.OK)
            {
                string filePath = saveFileDialog.FileName;
                CurrentForm.GetBrowser().SaveAsByView(filePath);
                _viewBrowser.SaveAsByView(filePath);
            }
        }
@@ -323,77 +314,66 @@
        {
            Close();
        }
        private void frmMain_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
        }
        private void ribbonPageGroup1_CaptionButtonClick(object sender, DevExpress.XtraBars.Ribbon.RibbonPageGroupEventArgs e)
        {
        }
        private void ribbonPageGroup9_CaptionButtonClick(object sender, DevExpress.XtraBars.Ribbon.RibbonPageGroupEventArgs e)
        {
            SaveAs();
        }
        #endregion
        #endregion File
        #region 刷新, 上一步, 下一步
        private void iUndo_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            CurrentForm.GetBrowser().Undo();
            _viewBrowser.Undo();
        }
        private void iRedo_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            CurrentForm.GetBrowser().Redo();
            _viewBrowser.Redo();
        }
        private void bbi刷新_ItemClick(object sender, ItemClickEventArgs e)
        {
            CurrentForm.GetBrowser().Redo();
            _viewBrowser.Redo();
        }
        private void ribbonPageGroup2_CaptionButtonClick(object sender, DevExpress.XtraBars.Ribbon.RibbonPageGroupEventArgs e)
        {
            pmMain.ShowPopup(ribbonControl1.Manager, MousePosition);
        }
        #endregion
        #endregion 刷新, 上一步, 下一步
        private void iAbout_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            BarManager.About();
        }
        private void ribbonControl1_ApplicationButtonDoubleClick(object sender, EventArgs e)
        {
            if (ribbonControl1.RibbonStyle == RibbonControlStyle.Office2007)
                this.Close();
        }
        private void sbExit_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        private void label_ZZ_CheckedChanged(object sender, ItemClickEventArgs e)
        {
            CurrentForm.GetBrowser().IsOrtho = label_ZZ.Checked;
            _viewBrowser.IsOrtho = label_ZZ.Checked;
        }
        private void bvItemSave_ItemClick(object sender, BackstageViewItemEventArgs e)
        {
@@ -407,7 +387,6 @@
        private void bvItemOpen_ItemClick(object sender, BackstageViewItemEventArgs e)
        {
        }
        private void bvItemClose_ItemClick(object sender, BackstageViewItemEventArgs e)
@@ -420,131 +399,409 @@
        {
            Close();
        }
        void ribbonControl1_ResetLayout(object sender, ResetLayoutEventArgs e)
        private void ribbonControl1_ResetLayout(object sender, ResetLayoutEventArgs e)
        {
            ShowHideFormatCategory();
        }
        void OnNewDocThumbButtonClick(object sender, ThumbButtonClickEventArgs e)
        private void OnNewDocThumbButtonClick(object sender, ThumbButtonClickEventArgs e)
        {
            CreateNewDocument();
        }
        void OnPrevThumbButtonClick(object sender, ThumbButtonClickEventArgs e)
        private void OnPrevThumbButtonClick(object sender, ThumbButtonClickEventArgs e)
        {
            Form mdiChild = GetPrevMdiChild();
            if (mdiChild != null)
                ActivateMdiChild(mdiChild);
        }
        void OnNextDocThumbButtonClick(object sender, ThumbButtonClickEventArgs e)
        private void OnNextDocThumbButtonClick(object sender, ThumbButtonClickEventArgs e)
        {
            Form mdiChild = GetNextMdiChild();
            if (mdiChild != null)
                ActivateMdiChild(mdiChild);
        }
        void OnExitThumbButtonClick(object sender, ThumbButtonClickEventArgs e)
        private void OnExitThumbButtonClick(object sender, ThumbButtonClickEventArgs e)
        {
            Close();
        }
        Form GetNextMdiChild()
        private Form GetNextMdiChild()
        {
            if (ActiveMdiChild == null || MdiChildren.Length < 2)
                return null;
            int pos = Array.IndexOf(MdiChildren, ActiveMdiChild);
            return pos == MdiChildren.Length - 1 ? MdiChildren[0] : MdiChildren[pos + 1];
        }
        Form GetPrevMdiChild()
        private Form GetPrevMdiChild()
        {
            if (ActiveMdiChild == null || MdiChildren.Length < 2)
                return null;
            int pos = Array.IndexOf(MdiChildren, ActiveMdiChild);
            return pos == 0 ? MdiChildren[MdiChildren.Length - 1] : MdiChildren[pos - 1];
        }
        void OnTabbedMdiManagerPageCollectionChanged(object sender, DevExpress.XtraTabbedMdi.MdiTabPageEventArgs e)
        private void OnTabbedMdiManagerPageCollectionChanged(object sender, DevExpress.XtraTabbedMdi.MdiTabPageEventArgs e)
        {
            UpdateThumbnailButtons();
        }
        void UpdateThumbnailButtons()
        private void UpdateThumbnailButtons()
        {
            thumbButtonNext.Enabled = thumbButtonPrev.Enabled = MdiChildren.Length > 1;
        }
        private void bbi普通状态_ItemClick(object sender, ItemClickEventArgs e)
        {
            CurrentForm.GetBrowser().ResetOperateStatus();
            _viewBrowser.ResetOperateStatus();
        }
        private void bbiNewLink_ItemClick(object sender, ItemClickEventArgs e)
        {
            CurrentForm.GetBrowser().NewLink();
            _viewBrowser.NewLink();
        }
        private void bbi新增管线_ItemClick(object sender, ItemClickEventArgs e)
        {
            CurrentForm.GetBrowser().NewLink();
            _viewBrowser.NewLink();
        }
        private void bbi新增立管_ItemClick(object sender, ItemClickEventArgs e)
        {
             CurrentForm.GetBrowser().NewVerticalLink();
            _viewBrowser.NewVerticalLink();
        }
        private void bbi添加水池_ItemClick(object sender, ItemClickEventArgs e)
        {
            CurrentForm.GetBrowser().NewPool();
            _viewBrowser.NewPool();
        }
        private void bbi添加水泵_ItemClick(object sender, ItemClickEventArgs e)
        {
            CurrentForm.GetBrowser().NewPump();
            _viewBrowser.NewPump();
        }
        private void bbi添加水库_ItemClick(object sender, ItemClickEventArgs e)
        {
            CurrentForm.GetBrowser().NewTask();
            _viewBrowser.NewTask();
        }
        private void bbi添加阀门_ItemClick(object sender, ItemClickEventArgs e)
        {
            CurrentForm.GetBrowser().NewValve();
            _viewBrowser.NewValve();
        }
        private void bbi添加水表_ItemClick(object sender, ItemClickEventArgs e)
        {
            CurrentForm.GetBrowser().NewWaterMeter();
            _viewBrowser.NewWaterMeter();
        }
        private void bbi添加重复器_ItemClick(object sender, ItemClickEventArgs e)
        {
            CurrentForm.GetBrowser().NewRepeater();
            _viewBrowser.NewRepeater();
        }
        private void bbi清空局部损失_ItemClick(object sender, ItemClickEventArgs e)
        {
            CurrentForm.GetBrowser().ClearMinorLoss();
            _viewBrowser.ClearMinorLoss();
        }
        private void bbi计算_ItemClick(object sender, ItemClickEventArgs e)
        {
             CurrentForm.GetBrowser().Calc();
            _viewBrowser.Calc();
        }
        #region 视图设置
        private void bbi东西对齐_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.东西对齐ToolStripMenuItem();
        }
        private void bbi南北对齐_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.南北对齐ToolStripMenuItem();
        }
        private void bbi竖直对齐_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.竖直对齐ToolStripMenuItem();
        }
        private void bbi自动对齐_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.自动对齐ToolStripMenuItem();
        }
        private void bbi缩小2倍_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.缩放ToolStripMenuItem();
        }
        private void bbi重置视角_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.重置视角ToolStripMenu();
        }
        private void bbi90_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.tool设置俯视角度(e.Item.Caption);
        }
        private void bbi排列_ItemClick(object sender, ItemClickEventArgs e)
        {
        }
        private void bsi水平旋转_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.水平旋转ToolStripMenuItem();
        }
        private void bbi复制_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.复制ToolStripMenuItem();
        }
        private void bbi粘贴_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.粘贴ToolStripMenuItem();
        }
        private void bbi删除_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.DeleteChoosedObj();
        }
        private void bbi显示所有楼层_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.显示全部楼层ToolStripMenuItem();
        }
        private void bbi保存楼层视角_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.保存楼层视角ToolStripMenuItem();
        }
        private void bbi刷新楼层_ItemClick(object sender, ItemClickEventArgs e)
        {
            RefreshFloor();
        }
        public void RefreshFloor()
        {
            bsi楼层.ClearLinks();
            var mapobjects = _viewBrowser._Network.MapObjects;
            TagList tags = new TagList();
            foreach (var item in mapobjects)
            {
                if (item.Tags != null)
                    tags.AddRange(item.Tags);
            }
            var t = tags.Distinct().ToList();
            tags.Clear();
            tags.AddRange(t);
            for (int i = -10; i < 1000; i++)
            {
                string tagstring = i.ToString() + "¥";
                if (tags.Contains(tagstring))
                {
                    // 创建一个新的 BarSubItem
                    DevExpress.XtraBars.BarButtonItem subItem = new DevExpress.XtraBars.BarButtonItem();
                    subItem.Caption = i.ToString() + "¥";
                    // 将子项添加到 BarItem 的 ItemLinks 集合中
                    bsi楼层.ItemLinks.Add(subItem);
                    subItem.ItemClick += (oo, ee) =>
                    {
                        mapobjects.ForEach(o =>
                        {
                            if (o.Tags.Contains(tagstring))
                            {
                                o.Visible = true;
                            }
                            else
                            {
                                o.Visible = false;
                            }
                        });
                        _viewBrowser.SetMapInvalidate();
                    };
                }
            }
            _viewBrowser.SetMapInvalidate();
        }
        private void bbi颜色分级管理_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.颜色分级管理ToolStripMenuItem();
        }
        private void bbi楼层管理_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.楼层管理ToolStripMenuItem();
        }
        #endregion 视图设置
        #region 功能检查
        private void bbi连通性检查_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.连通性检查ToolStripMenuItem();
        }
        private void bsi关阀分析_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.关阀搜索考虑水源ToolStripMenuItem();
        }
        private void bbi关阀分析不考虑水源_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.关阀搜索ToolStripMenuItem();
        }
        private void bbi下游连通性_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.下游连通性ToolStripMenuItem();
        }
        private void bbi上游连通性_ItemClick(object sender, ItemClickEventArgs e)
        {
        }
        private void bbi标高推测_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.标高推测ToolStripMenuItem();
        }
        private void bbi标高导出_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.标高导出ToolStripMenuItem();
        }
        private void bbi显示水流路线_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.显示水流ToolStripMenuItem();
        }
        private void bbi方向修复_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.方向修复ToolStripMenuItem();
        }
        #endregion 功能检查
        #region 显示设置
        private void bbi显示节点_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.显示节点ToolStripMenuItem();
        }
        private void bbi隐藏节点_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.隐藏节点ToolStripMenuItem();
        }
        private void bbi显示阀门_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.显示阀门ToolStripMenuItem();
        }
        private void bbi隐藏阀门_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.隐藏阀门ToolStripMenuItem();
        }
        private void bbi节点大_ItemClick(object sender, ItemClickEventArgs e)
        {
            var item = sender as ToolStripItem;
            if (item.Text == "大")
            {
                _viewBrowser.junction_multiply = 1f;
            }
            else if (item.Text == "中")
            {
                _viewBrowser.junction_multiply = 0.6667f;
            }
            else
            {
                _viewBrowser.junction_multiply = 0.4f;
            }
            _viewBrowser.SetMapInvalidate();
        }
        private void bbi管线大_ItemClick(object sender, ItemClickEventArgs e)
        {
            var item = sender as ToolStripItem;
            if (item.Text == "大")
            {
                _viewBrowser.Link_multiply = 1f;
            }
            else if (item.Text == "中")
            {
                _viewBrowser.Link_multiply = 0.6667f;
            }
            else
            {
                _viewBrowser.Link_multiply = 0.4f;
            }
            _viewBrowser.SetMapInvalidate();
        }
        private void bbi显示所有隐藏内容_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.显示所有隐藏内容ToolStripMenuItem();
        }
        private void bbi添加底图_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.添加底图ToolStripMenuItem();
        }
        private void bbi设置底图_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.设置底图ToolStripMenuItem();
        }
        private void bbi显示隐藏底图_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.显示隐藏底图ToolStripMenuItem();
        }
        private void bbi清除底图_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.清除底图ToolStripMenuItem();
        }
        private void bbi显示状态_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.显示状态ToolStripMenuItem();
        }
        private void bbi隐藏状态_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.隐藏状态ToolStripMenuItem();
        }
        private void bbi显示流向_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.显示流向ToolStripMenuItem();
        }
        private void bbi隐藏流向_ItemClick(object sender, ItemClickEventArgs e)
        {
            _viewBrowser.隐藏流向ToolStripMenuItem();
        }
        #endregion 显示设置
        private void bbiCalcMiniLoss_ItemClick(object sender, ItemClickEventArgs e)
        {
            CurrentForm.GetBrowser().CalcLinkMinorLoss();
            _viewBrowser.CalcLinkMinorLoss();
        }
    }
}
}