using PaintDotNet.Base.SettingModel; using PaintDotNet.Base.CommTool; using PaintDotNet.DbOpreate.DbBll; using PaintDotNet.DbOpreate.DbModel; using PaintDotNet.Menus; using PaintDotNet.SystemLayer; using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Drawing2D; using System.IO; using System.Linq; using System.Windows.Forms; using System.Windows.Forms.Layout; using static PaintDotNet.Base.SettingModel.ToolbarModel; using PaintDotNet.Data.Param; using PaintDotNet.Annotation; using PaintDotNet.Annotation.Label; using PaintDotNet.Annotation.Enum; namespace PaintDotNet { internal class PdnToolBar : Control, IPaintBackground { private AppWorkspace appWorkspace; /// /// 主菜单 /// private PdnMainMenu mainMenu; /// /// 自定义工具栏 /// private ToolStripContainer toolStripContainer1; /// /// 自定义工具栏上的右键菜单 /// private ContextMenuStrip contextMenuStrip; public ToolStrip[] toolStrips; private List rulersComboBox = new List(); /// /// 工具栏 /// private ToolbarModel toolbarModel = Startup.instance.toolbarModel; private int toolStripInitLayout = 10; /// /// 目前被改成tab的菜单了 /// private OurDocumentStrip documentStrip; private OurToolStripRenderer otsr = new OurToolStripRenderer(); private Bitmap copyedBitmap;//复制的图片 private int nameNum = 0;//命名使用 private class OurToolStripRenderer : ToolStripProfessionalRenderer { public OurToolStripRenderer() { RoundedEdges = false; } private void PaintBackground(Graphics g, Control control, Rectangle clipRect) { Control parent = control; IPaintBackground asIpb = null; while (true) { parent = parent.Parent; if (parent == null) { break; } asIpb = parent as IPaintBackground; if (asIpb != null) { break; } } if (asIpb != null) { Rectangle screenRect = control.RectangleToScreen(clipRect); Rectangle parentRect = parent.RectangleToClient(screenRect); int dx = parentRect.Left - clipRect.Left; int dy = parentRect.Top - clipRect.Top; g.TranslateTransform(-dx, -dy, MatrixOrder.Append); asIpb.PaintBackground(g, parentRect); g.TranslateTransform(dx, dy, MatrixOrder.Append); } } protected override void OnRenderToolStripPanelBackground(ToolStripPanelRenderEventArgs e) { PaintBackground(e.Graphics, e.ToolStripPanel, new Rectangle(new Point(0, 0), e.ToolStripPanel.Size)); e.Handled = true; } protected override void OnRenderToolStripBackground(ToolStripRenderEventArgs e) { if (e.ToolStrip.GetType() != typeof(ToolStrip) && e.ToolStrip.GetType() != typeof(ToolStripEx) && e.ToolStrip.GetType() != typeof(PdnMainMenu)) { base.OnRenderToolStripBackground(e); } else { PaintBackground(e.Graphics, e.ToolStrip, e.AffectedBounds); } } } private class OurDocumentStrip : DocumentStrip, IPaintBackground { public OurDocumentStrip(AppWorkspace appWorkspace) : base(appWorkspace) { } protected override void DrawItemBackground(Graphics g, Item item, Rectangle itemRect) { PaintBackground(g, itemRect); /** if (item.Image != null) { g.DrawImage(item.Image, new Point(0, 0)); } else { PaintBackground(g, itemRect); }**/ } public void PaintBackground(Graphics g, Rectangle clipRect) { IPaintBackground asIpb = this.Parent as IPaintBackground; if (asIpb != null) { Rectangle newClipRect = new Rectangle( clipRect.Left + Left, clipRect.Top + Top, clipRect.Width, clipRect.Height); g.TranslateTransform(-Left, -Top, MatrixOrder.Append); asIpb.PaintBackground(g, newClipRect); g.TranslateTransform(Left, Top, MatrixOrder.Append); } } } public void PaintBackground(Graphics g, Rectangle clipRect) { if (clipRect.Width > 0 && clipRect.Height > 0) { Color backColor = ProfessionalColors.MenuStripGradientEnd; using (SolidBrush brush = new SolidBrush(backColor)) { g.FillRectangle(brush, clipRect.X, clipRect.Y, clipRect.Width, clipRect.Height); } } } public AppWorkspace AppWorkspace { get { return this.appWorkspace; } set { this.appWorkspace = value; this.mainMenu.AppWorkspace = value; } } public PdnMainMenu MainMenu { get { return this.mainMenu; } } public DocumentStrip DocumentStrip { get { return this.documentStrip; } } public PdnToolBar(AppWorkspace appWorkspace) { this.appWorkspace = appWorkspace; SuspendLayout(); InitializeComponent(); InitializeContextMenuStrip(); this.otsr = new OurToolStripRenderer(); this.mainMenu.Renderer = otsr; ResumeLayout(true); } public void InitializeContextMenuStrip() { this.contextMenuStrip.Items.Clear(); foreach (Flow flow in Startup.instance.toolbarModel.Flows) { ToolStripMenuItem toolStripMenuItem = new ToolStripMenuItem(); toolStripMenuItem.Text = flow.Name; toolStripMenuItem.Checked = flow.Show; this.contextMenuStrip.Items.Add(toolStripMenuItem); } } private void contextMenuStripItem_Click(object sender, ToolStripItemClickedEventArgs e) { bool ShowFlag = !((ToolStripMenuItem)e.ClickedItem).Checked; ((ToolStripMenuItem)e.ClickedItem).Checked = ShowFlag; Flow flow = Startup.instance.toolbarModel.Flows.Find(a => a.Name.Equals(e.ClickedItem.Text)); if(flow!=null) { flow.Show = ShowFlag; string userInfoXml = XmlSerializeHelper.XmlSerialize(Startup.instance.toolbarModel); string filePath = Application.StartupPath + "\\Config\\" + Startup.instance.SettingPrefix + "\\Toolbar.xml"; FileOperationHelper.WriteStringToFile(userInfoXml, filePath, FileMode.Create); Control[] control = this.toolStripContainer1.TopToolStripPanel.Controls.Find(flow.Key, true); if (control != null && control.Length > 0) { control[0].Visible = ShowFlag; } } } /// /// 刷新自定义工具栏的列表内容-标尺标定 /// public void refreshRulersComboBoxList()//###2 { List list = Startup.instance.mic_rulersAll; string rulerName = ""; if (list != null) { for (int ruleI = 0; ruleI < list.Count; ruleI++) { mic_rulers rule = list[ruleI]; int rulid = rule.id; if (rulid == Startup.instance.configModel.RulerId) { rulerName = rule.ruler_name; break; } } } foreach (ToolStripComboBox comboBox in rulersComboBox) { comboBox.Items.Clear(); if (list != null) { for (int ruleI = 0; ruleI < list.Count; ruleI++) { mic_rulers rule = list[ruleI]; comboBox.Items.Add(rule.ruler_name); //if (Startup.instance.configModel != null) //{ // if (Startup.instance.configModel.RulerId == rule.id) // { // zoomComboBox.Text = rule.ruler_name;// "newText"; // } //} } } else continue; for (int i = 0; i < comboBox.Items.Count; i++) { if (rulerName.Equals(comboBox.Items[i].ToString())) { comboBox.SelectedIndex = i; } } } } /// /// 刷新自定义工具栏的激活标尺-标尺标定 /// public void refreshRulersComboBoxActive()//###1 { foreach (ToolStripComboBox comboBox in rulersComboBox) { string rulerName = ""; List list = Startup.instance.mic_rulersAll; if (list != null) { for (int ruleI = 0; ruleI < list.Count; ruleI++) { mic_rulers rule = list[ruleI]; int rulid = rule.id; if (rulid == Startup.instance.configModel.RulerId) { rulerName = rule.ruler_name; break; } } } for (int i = 0; i < comboBox.Items.Count; i++) { if (rulerName.Equals(comboBox.Items[i].ToString())) { comboBox.SelectedIndex = i; } } } } /// /// 布局自定义工具栏 /// /// /// 1 添加 2删除 3移出 4向上移动 5向下移动 6添加分割线【 7添加新的节点】 public void test1(bool toReset, int refreshFlag = 0, string toolStripContrainerName = null, int toolStripItemIndex = 0, string nodeName = null, string nodeText = null, int nodeTag = 0) { if (toReset && refreshFlag > 0 && refreshFlag < 7) { this.toolbarModel = Startup.instance.toolbarModel; if (toolbarModel == null || toolbarModel.Flows.Count == 0) { this.toolStripContainer1.TopToolStripPanel.Controls.Clear(); return; } int toolCount = toolbarModel.Flows.Count; for (int j = toolbarModel.Flows.Count - 1; j >= 0; j--) { Flow flowJ = toolbarModel.Flows[j]; if (flowJ.Menus.Count == 0) { toolCount -= 1; } } if (toolCount == 0) { this.toolStripContainer1.TopToolStripPanel.Controls.Clear(); return; } bool addSuccess = false; foreach (ToolStrip toolStripContrainer in this.toolStripContainer1.TopToolStripPanel.Controls) { if (toolStripContrainer.Name.Equals(toolStripContrainerName)) { if (refreshFlag == 6)// 6添加分割线 { ToolStripItem[] buttons = new ToolStripItem[toolStripContrainer.Items.Count + 1]; for (int itemIndex = 0; itemIndex < toolStripContrainer.Items.Count; itemIndex++) { if (itemIndex < toolStripItemIndex) buttons[itemIndex] = toolStripContrainer.Items[itemIndex]; else if (itemIndex == toolStripItemIndex) { buttons[itemIndex] = new ToolStripSeparator(); buttons[itemIndex + 1] = toolStripContrainer.Items[itemIndex]; } else buttons[itemIndex + 1] = toolStripContrainer.Items[itemIndex]; } toolStripContrainer.Items.Clear(); toolStripContrainer.Items.AddRange(buttons); } else if (refreshFlag == 1)// 1 添加 { addSuccess = true; //this.toolStripContainer1.TopToolStripPanel.Controls.Remove(toolStripContrainer); int toAddCount = 1; if (nodeName.Equals("Script"))//脚本列表 { List list = mic_script_BLL.FindAll(); toAddCount += (list.Count - 1); } else if (nodeName.Equals("SubRulerCalibration")) { toAddCount += 1; } ToolStripItem[] buttons = new ToolStripItem[toolStripContrainer.Items.Count + toAddCount]; for (int itemIndex = 0; itemIndex < toolStripContrainer.Items.Count; itemIndex++) { buttons[itemIndex] = toolStripContrainer.Items[itemIndex]; } int i = toolStripContrainer.Items.Count; int index = toolStripContrainer.Items.Count;// 0; { ToolStripButton button = new ToolStripButton(); int imageIndex = -1; //if (flowJ.Menus[i].Description.Equals("SeparateLine")) //{ // ToolStripSeparator separator0 = new ToolStripSeparator(); // buttons[index] = separator0; // continue; //} ToolStripItem[] items = this.MainMenu.Items.Find(nodeName, true); if (items != null && items.Length > 0) { if (((PdnMenuItem)(items[0])).Image != null) imageIndex = toolStripContrainer.ImageList.Images.Add(((PdnMenuItem)(items[0])).Image, toolStripContrainer.ImageList.TransparentColor); else imageIndex = toolStripContrainer.ImageList.Images.Add(new Bitmap(16, 16), toolStripContrainer.ImageList.TransparentColor); } else { imageIndex = toolStripContrainer.ImageList.Images.Add(new Bitmap(16, 16), toolStripContrainer.ImageList.TransparentColor); } button.ImageIndex = imageIndex; button.Tag = nodeName;// flowJ.Menus[i].Description; button.ToolTipText = nodeText;// flowJ.Menus[i].Name; button.Text = nodeText;// flowJ.Menus[i].Name; button.TextImageRelation = TextImageRelation.ImageAboveText; //..Script if (nodeName.Equals("Script"))//脚本列表 { List list = mic_script_BLL.FindAll(); for (int itemI = 0; itemI < list.Count - 1; itemI++) { var itemSS = list[itemI]; ToolStripButton unitLabel = new ToolStripButton(); unitLabel.Text = itemSS.name; unitLabel.TextImageRelation = TextImageRelation.ImageBeforeText; unitLabel.Padding = new Padding(2, 20 - unitLabel.Height / 2, 0, 20 - unitLabel.Height / 2); //unitLabel.Tag = "Script_" + itemSS.id; unitLabel.Name = "" + itemSS.id; buttons[index] = unitLabel; index++; } //unitsLabel.Padding = new Padding(2, 20 - unitsLabel.Height / 2, 0, 20 - unitsLabel.Height / 2); var item = list[list.Count - 1]; ToolStripButton unitsLabel = new ToolStripButton(); unitsLabel.Text = item.name; unitsLabel.TextImageRelation = TextImageRelation.ImageBeforeText; unitsLabel.Padding = new Padding(2, 20 - unitsLabel.Height / 2, 0, 20 - unitsLabel.Height / 2); unitsLabel.Name = "" + item.id; buttons[index] = unitsLabel; } else if (nodeName.Equals("SubRulerCalibration")) { ToolStripLabel unitsLabel = new ToolStripLabel(); unitsLabel.Padding = new Padding(2, 20 - unitsLabel.Height / 2, 0, 20 - unitsLabel.Height / 2); unitsLabel.Text = "标尺:"; buttons[index] = unitsLabel; index++; ToolStripComboBox zoomComboBox = new ToolStripComboBox(); zoomComboBox.Tag = i; zoomComboBox.Size = new Size(100/*75*/, zoomComboBox.Height); zoomComboBox.Padding = new Padding(0, 20 - zoomComboBox.Height / 2, 2, 20 - zoomComboBox.Height / 2); zoomComboBox.MaxDropDownItems = 99; zoomComboBox.SelectedIndexChanged += ZoomComboBox_SelectedIndexChanged; List list = mic_rulers_BLL.FindAll(); if (list != null) { for (int ruleI = 0; ruleI < list.Count; ruleI++) { mic_rulers rule = list[ruleI]; zoomComboBox.Items.Add(rule.ruler_name); if (Startup.instance.configModel != null) { if (Startup.instance.configModel.RulerId == rule.id) { zoomComboBox.Text = rule.ruler_name;// "newText"; } } } } //if (zoomComboBox.Text == null || zoomComboBox.Text.Equals("")) //{ // zoomComboBox.Text = "请选择"; //} rulersComboBox.Add(zoomComboBox); buttons[index] = zoomComboBox; zoomComboBox.ComboBox.DropDownStyle = ComboBoxStyle.DropDownList; zoomComboBox.BackColor = SystemColors.Window; } else { buttons[index] = button; } } //toolStripEx.ItemClicked += new ToolStripItemClickedEventHandler(ToolStripEx_ItemClicked); //toolStripEx.ItemRemoved += ToolStripEx_ItemRemoved; //toolStripEx.EndDrag += ToolStripEx_DragDrop1; //toolStripEx.AllowDrop = false; //toolStripEx.AllowMerge = false; //toolStripEx.Height = 40; //toolStripEx.Items.AddRange(buttons); toolStripContrainer.Items.Clear(); toolStripContrainer.Items.AddRange(buttons); appWorkspace.SetTopLeftCheckState(); } else if (refreshFlag == 2)// 2删除 { this.toolStripContainer1.TopToolStripPanel.Controls.Remove(toolStripContrainer); } else if (refreshFlag == 3)// 3移出 { if (toolStripItemIndex > 0 && toolStripContrainer.Items.Count > toolStripItemIndex) { for (int itemIndex = 0; itemIndex < toolStripItemIndex/*toolStripContrainer.Items.Count*/; itemIndex++) { //####################################### } } //int toAddCount = 1; //if (nodeName.Equals("Script"))//脚本列表 //{ // List list = mic_script_BLL.FindAll(); // toAddCount += (list.Count - 1); //} //else if (nodeName.Equals("SubRulerCalibration")) //{ // toAddCount += 1; //} //ToolStripItem[] buttons = new ToolStripItem[toolStripContrainer.Items.Count + toAddCount]; if (toolStripContrainer.Items.Count > toolStripItemIndex) toolStripContrainer.Items.RemoveAt(toolStripItemIndex); if (toolStripContrainer.Items.Count == 0) this.toolStripContainer1.TopToolStripPanel.Controls.Remove(toolStripContrainer); } else if (refreshFlag == 4)// 4向上移动 { //if (toolStripContrainer.Items.Count > toolStripItemIndex) // toolStripContrainer.Items.RemoveAt(toolStripItemIndex); if (toolStripItemIndex > 0 && toolStripContrainer.Items.Count > toolStripItemIndex) { ToolStripItem[] buttons = new ToolStripItem[toolStripContrainer.Items.Count]; for (int itemIndex = 0; itemIndex < toolStripContrainer.Items.Count; itemIndex++) { if (itemIndex == toolStripItemIndex) { buttons[toolStripItemIndex] = toolStripContrainer.Items[toolStripItemIndex - 1]; } else if (itemIndex == toolStripItemIndex - 1) { buttons[toolStripItemIndex - 1] = toolStripContrainer.Items[toolStripItemIndex]; } else { buttons[itemIndex] = toolStripContrainer.Items[itemIndex]; } } //ToolStripItem preStripItem = toolStripContrainer.Items[toolStripItemIndex - 1]; //toolStripContrainer.Items.Insert(toolStripItemIndex + 1, preStripItem); //toolStripContrainer.Items.RemoveAt(toolStripItemIndex - 1); toolStripContrainer.Items.Clear(); toolStripContrainer.Items.AddRange(buttons); } //int index = this.treeViewLeft.SelectedNode.Parent.Nodes.IndexOf(this.treeViewLeft.SelectedNode); //if (index > 0) //{ // TreeNode prenode = (TreeNode)this.treeViewLeft.SelectedNode.PrevNode.Clone(); // this.treeViewLeft.SelectedNode.Parent.Nodes.Insert(index + 1, prenode); // this.treeViewLeft.Nodes.Remove(this.treeViewLeft.SelectedNode.PrevNode); //} } else if (refreshFlag == 5)// 5向下移动 { if (toolStripItemIndex < toolStripContrainer.Items.Count - 1 && toolStripContrainer.Items.Count > toolStripItemIndex) { ToolStripItem[] buttons = new ToolStripItem[toolStripContrainer.Items.Count]; for (int itemIndex = 0; itemIndex < toolStripContrainer.Items.Count; itemIndex++) { if (itemIndex == toolStripItemIndex) { buttons[toolStripItemIndex] = toolStripContrainer.Items[toolStripItemIndex + 1]; } else if (itemIndex == toolStripItemIndex + 1) { buttons[toolStripItemIndex + 1] = toolStripContrainer.Items[toolStripItemIndex]; } else { buttons[itemIndex] = toolStripContrainer.Items[itemIndex]; } } toolStripContrainer.Items.Clear(); toolStripContrainer.Items.AddRange(buttons); } } break; } } if (!addSuccess && refreshFlag == 1)// 1 添加 { addSuccess = true; } else return; } if (toReset) { this.toolStripContainer1.TopToolStripPanel.ControlRemoved -= TopToolStripPanel_ControlRemoved; this.toolStripContainer1.TopToolStripPanel.DragDrop -= TopToolStripPanel_DragDrop; this.toolStripContainer1.TopToolStripPanel.DragLeave -= TopToolStripPanel_DragLeave; toolbarModel = Startup.instance.toolbarModel; } this.toolStripContainer1.TopToolStripPanel.Controls.Clear(); this.toolStripContainer1.SuspendLayout(); this.toolStripContainer1.TopToolStripPanel.SuspendLayout(); this.toolStripContainer1.LeftToolStripPanel.SuspendLayout(); this.toolStripContainer1.RightToolStripPanel.SuspendLayout(); this.toolStripContainer1.BottomToolStripPanel.SuspendLayout(); if (this.toolStripContainer1.TopToolStripPanel.Controls.Count == 0) SetCustomizeTools(); //先将location值不为-100的菜单显示出来(初始值设置-100) int heightRow = 0;// -1;// 0; int widthRow1 = 0;// -1;// 0; //for (int j = 0; j < Startup.instance.toolbarLocationModel.Flows.Count; j++) for (int j = 0; j < Startup.instance.toolbarModel.Flows.Count; j++) { //ToolbarLocationModel.Flow flowJ = Startup.instance.toolbarLocationModel.Flows[j]; ToolbarModel.Flow flowJ = Startup.instance.toolbarModel.Flows[j]; if (flowJ.X > -100 && flowJ.Y > -100) { if (flowJ.Y > heightRow || (flowJ.Y == heightRow && flowJ.X >= widthRow1)) { Control[] toolStripTemp = /*(ToolStrip[])*/this.toolStripContainer1.TopToolStripPanel.Controls.Find(flowJ.Key, true); //ToolStrip toolStripEx = (ToolStrip)this.toolStripContainer1.TopToolStripPanel.Controls.Find(flowJ.Key, true)[0]; if (toolStripTemp != null && toolStripTemp.Length > 0/*toolStripEx == null*/) { ToolStrip toolStripEx = (ToolStrip)toolStripTemp[0]; heightRow = flowJ.Y; widthRow1 = flowJ.X + toolStripEx.PreferredSize.Width + toolStripEx.Margin.Horizontal + 1; } else { if (toolStrips != null && toolStrips.Length > 0) { ToolStrip toolStripEx = new List(toolStrips).Find(a => a.Name.Equals(flowJ.Key));// toolStrips.Find(a => a.Key.Equals(toolStripEx.Name)); if (toolStripEx != null) { heightRow = flowJ.Y; widthRow1 = flowJ.X + toolStripEx.PreferredSize.Width + toolStripEx.Margin.Horizontal + 1; continue; } } heightRow = flowJ.Y; widthRow1 = flowJ.X + 1; } } } } if (toolStrips != null && toolStrips.Length > 0) { for (int j = 0; j < toolStrips.Length; j++) { //Base.SettingModel.ToolbarLocationModel.Flow flowJ = toolbarLocationModel.Flows.Find(a => a.Key.Equals(toolStrips[j].Name)); Base.SettingModel.ToolbarModel.Flow flowJ = toolbarModel.Flows.Find(a => a.Key.Equals(toolStrips[j].Name)); if (flowJ.X == -100 || flowJ.Y == -100) { if (widthRow1 < ClientSize.Width || ClientSize.Width == 0) { toolStrips[j].Location = new Point(widthRow1/*lastToolStripEx.Right + 1*/, heightRow/*lastToolStripEx.Top*/); widthRow1 = widthRow1 + toolStrips[j].PreferredSize.Width + toolStrips[j].Margin.Horizontal + 1; } else { heightRow += 40;// 38;// 39; toolStrips[j].Location = new Point(0, heightRow/*lastToolStripEx.Bottom*/); widthRow1 = 0/*toolStripEx.Left*/ + toolStrips[j].PreferredSize.Width + toolStrips[j].Margin.Horizontal; } } else { toolStrips[j].Location = new Point(flowJ.X, flowJ.Y); } } } if(this.toolStripContainer1.TopToolStripPanel.Controls.Count ==0 && toolStrips != null)//数组的判定条件为后添加,不确定是否正确8.12 this.toolStripContainer1.TopToolStripPanel.Controls.AddRange(toolStrips); this.toolStripContainer1.TopToolStripPanel.ResumeLayout(); this.toolStripContainer1.LeftToolStripPanel.ResumeLayout(); this.toolStripContainer1.RightToolStripPanel.ResumeLayout(); this.toolStripContainer1.BottomToolStripPanel.ResumeLayout(); this.toolStripContainer1.ResumeLayout(); } protected override void OnLayout(LayoutEventArgs e) { bool plentyWidthBefore = (this.mainMenu.Width >= this.mainMenu.PreferredSize.Width); if (!plentyWidthBefore) { UI.SuspendControlPainting(this); } else { UI.SuspendControlPainting(this.documentStrip); } this.mainMenu.Location = new Point(0, 0); this.mainMenu.Height = this.mainMenu.PreferredSize.Height; this.toolStripContainer1.Location = new Point(0, this.mainMenu.Bottom); this.toolStripContainer1.Margin = new Padding(-5); this.toolStripContainer1.TopToolStripPanel.Margin = new Padding(-5); this.toolStripContainer1.TopToolStripPanel.RowMargin = new Padding(0/*-1*/); this.mainMenu.Padding = new Padding(0, this.mainMenu.Padding.Top, 0, this.mainMenu.Padding.Bottom); this.documentStrip.Width = ClientSize.Width; this.documentStrip.Anchor = AnchorStyles.Left | AnchorStyles.Right; this.documentStrip.Location = new Point(0, this.toolStripContainer1.Bottom); // Finish setting up widths and heights int oldDsHeight = this.documentStrip.Height; this.documentStrip.Height = 25; int tsWidth = ClientSize.Width; this.mainMenu.Width = tsWidth; if(tsWidth>0) { this.toolStripContainer1.TopToolStripPanel.Width = tsWidth; this.toolStripContainer1.Width = tsWidth; } this.Height = this.documentStrip.Bottom; this.documentStrip.PerformLayout(); if (!plentyWidthBefore) { UI.ResumeControlPainting(this); Invalidate(true); } else { UI.ResumeControlPainting(this.documentStrip); this.documentStrip.Invalidate(true); } if (this.documentStrip.Width == 0) { this.mainMenu.Invalidate(); } if (oldDsHeight != this.documentStrip.Height) { this.documentStrip.RefreshAllThumbnails(); } base.OnLayout(e); } protected override void OnResize(EventArgs e) { PerformLayout(); base.OnResize(e); } private void InitializeComponent() { this.SuspendLayout(); this.mainMenu = new PdnMainMenu(); this.toolStripContainer1 = new ToolStripContainer(); this.documentStrip = new OurDocumentStrip(this.appWorkspace); this.toolStripContainer1.SuspendLayout(); this.toolStripContainer1.TopToolStripPanel.SuspendLayout(); // // mainMenu // this.mainMenu.Name = "mainMenu"; this.mainMenu.ContextMenuStrip = this.contextMenuStrip; this.mainMenu.MouseClick += new System.Windows.Forms.MouseEventHandler(this.frmContextmenu_MouseClick); // // 右键菜单 // this.contextMenuStrip = new ContextMenuStrip(); this.contextMenuStrip.ItemClicked += new ToolStripItemClickedEventHandler(this.contextMenuStripItem_Click); // // toolStripContainer1.TopToolStripPanel // this.toolStripContainer1.AllowDrop = true; this.toolStripContainer1.BottomToolStripPanelVisible = false; this.toolStripContainer1.LeftToolStripPanelVisible = false; this.toolStripContainer1.RightToolStripPanelVisible = false; this.toolStripContainer1.TopToolStripPanel.Padding = new Padding(0, -20/*Top*/, 0, -2/*Bottom*/); this.toolStripContainer1.TopToolStripPanel.AllowDrop = true; this.toolStripContainer1.Name = "toolStripContainer1"; this.toolStripContainer1.TabIndex = 13; this.toolStripContainer1.Text = "toolStripContainer1"; this.toolStripContainer1.TopToolStripPanel.SizeChanged += new System.EventHandler(this.panel1_SizeChanged); this.toolStripContainer1.ContextMenuStrip = this.contextMenuStrip; this.toolStripContainer1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.frmContextmenu_MouseClick); // // documentStrip // this.documentStrip.AutoSize = false; this.documentStrip.Name = "documentStrip"; this.documentStrip.TabIndex = 5; this.documentStrip.ShowScrollButtons = true; this.documentStrip.DocumentListChanged += new EventHandler(DocumentStrip_DocumentListChanged); this.documentStrip.DocumentClicked += DocumentStrip_DocumentClicked; this.documentStrip.ManagedFocus = true; // // PdnToolBar // this.Controls.Add(this.documentStrip); //this.Controls.Add(this.toolStripPanel); this.Controls.Add(this.toolStripContainer1); this.Controls.Add(this.mainMenu); this.toolStripContainer1.TopToolStripPanel.ResumeLayout(false); this.toolStripContainer1.TopToolStripPanel.PerformLayout(); this.toolStripContainer1.ResumeLayout(false); this.toolStripContainer1.PerformLayout(); this.ResumeLayout(false); } private void frmContextmenu_MouseClick(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { this.contextMenuStrip.Show(MousePosition.X, MousePosition.Y); } } public void SetCustomizeTools() { if (toolbarModel == null || toolbarModel.Flows.Count == 0) { return; } int toolCount = toolbarModel.Flows.Count; for (int j = toolbarModel.Flows.Count - 1; j >= 0; j--) { Flow flowJ = toolbarModel.Flows[j]; if (flowJ.Menus.Count == 0)// || !flowJ.Show { toolCount -= 1; } } if (toolCount == 0) { return; } toolStrips = new ToolStrip[toolCount]; int t = 0; for (int j = toolbarModel.Flows.Count - 1; j >= 0; j--) { Flow flowJ = toolbarModel.Flows[j]; /*if(!flowJ.Show) { continue; }*/ if (flowJ.Menus.Count == 0) { continue; } ToolStrip toolStripEx = new ToolStrip();//Ex ImageList imageList = new ImageList(); imageList.ColorDepth = ColorDepth.Depth32Bit; imageList.TransparentColor = Utility.TransparentKey; toolStripEx.ImageList = imageList; toolStripEx.Name = flowJ.Key;// "key_" + j; //Base.SettingModel.ToolbarLocationModel.Flow flow = toolbarLocationModel.Flows.Find(a => a.Key.Equals(flowJ.Key/*"targetProcess"*/)); ////ToolbarLocationModel.Flows.Find(); //int locationX = flow.X; //int locationY = flow.Y; int buttonsCount = flowJ.Menus.Count; foreach (Flow.Item item in flowJ.Menus) { //..Script if (item.Description.Equals("Script"))//脚本列表 { List list = mic_script_BLL.FindAll(); //foreach (var item in list) //{ // this.listBox1.Items.Add(item.name); //} buttonsCount += (list.Count - 1); } if (item.Description.Equals("SubRulerCalibration"))//标尺标定,标尺列表 { buttonsCount += 1; } } ToolStripItem[] buttons = new ToolStripItem[buttonsCount/*flowJ.Menus.Count*/]; int index = 0; for (int i = 0; i < flowJ.Menus.Count; i++, index++) { ToolStripButton button = new ToolStripButton(); int imageIndex = -1; if (flowJ.Menus[i].Description.Equals("SeparateLine")) { ToolStripSeparator separator0 = new ToolStripSeparator(); buttons[index] = separator0; continue; } ToolStripItem[] items = this.MainMenu.Items.Find(flowJ.Menus[i].Description, true); if (items != null && items.Length > 0) { if (((PdnMenuItem)(items[0])).Image != null) imageIndex = imageList.Images.Add(((PdnMenuItem)(items[0])).Image, imageList.TransparentColor); else imageIndex = imageList.Images.Add(new Bitmap(16, 16), imageList.TransparentColor); button.ToolTipText = ((PdnMenuItem)(items[0])).Text; button.Text = ((PdnMenuItem)(items[0])).Text; } else { imageIndex = imageList.Images.Add(new Bitmap(16, 16), imageList.TransparentColor); button.ToolTipText = flowJ.Menus[i].Name;// getShowName(Startup.instance.configModel.Language); button.Text = flowJ.Menus[i].Name;// getShowName(Startup.instance.configModel.Language); } button.ImageIndex = imageIndex; button.Tag = flowJ.Menus[i].Description; button.TextImageRelation = TextImageRelation.ImageAboveText; //..Script if (flowJ.Menus[i].Description.Equals("Script"))//脚本列表 { List list = mic_script_BLL.FindAll(); for (int itemI = 0; itemI < list.Count - 1; itemI++) { var itemSS = list[itemI]; ToolStripButton unitLabel = new ToolStripButton(); unitLabel.Text = itemSS.name; unitLabel.TextImageRelation = TextImageRelation.ImageBeforeText; unitLabel.Padding = new Padding(2, 20 - unitLabel.Height / 2, 0, 20 - unitLabel.Height / 2); //unitLabel.Tag = "Script_" + itemSS.id; unitLabel.Name = "" + itemSS.id; unitLabel.Enabled = Startup.getMenuIdVisible(flowJ.Menus[i].Id); buttons[index] = unitLabel; index++; } //unitsLabel.Padding = new Padding(2, 20 - unitsLabel.Height / 2, 0, 20 - unitsLabel.Height / 2); var item = list[list.Count - 1]; ToolStripButton unitsLabel = new ToolStripButton(); unitsLabel.Text = item.name; unitsLabel.TextImageRelation = TextImageRelation.ImageBeforeText; unitsLabel.Padding = new Padding(2, 20 - unitsLabel.Height / 2, 0, 20 - unitsLabel.Height / 2); unitsLabel.Name = "" + item.id; unitsLabel.Enabled = Startup.getMenuIdVisible(flowJ.Menus[i].Id); buttons[index] = unitsLabel; } else if (flowJ.Menus[i].Description.Equals("SubRulerCalibration")) { ToolStripLabel unitsLabel = new ToolStripLabel(); unitsLabel.Padding = new Padding(2, 20 - unitsLabel.Height / 2, 0, 20 - unitsLabel.Height / 2); unitsLabel.Text = "标尺:"; unitsLabel.Enabled = Startup.getMenuIdVisible(flowJ.Menus[i].Id); buttons[index] = unitsLabel; index++; ToolStripComboBox zoomComboBox = new ToolStripComboBox(); zoomComboBox.Tag = i; zoomComboBox.Size = new Size(100/*75*/, zoomComboBox.Height); zoomComboBox.Padding = new Padding(0, 20 - zoomComboBox.Height / 2, 2, 20 - zoomComboBox.Height / 2); zoomComboBox.MaxDropDownItems = 99; zoomComboBox.SelectedIndexChanged += ZoomComboBox_SelectedIndexChanged; List list = mic_rulers_BLL.FindAll(); if (list != null) { for (int ruleI = 0; ruleI < list.Count; ruleI++) { mic_rulers rule = list[ruleI]; zoomComboBox.Items.Add(rule.ruler_name); if (Startup.instance.configModel != null) { if (Startup.instance.configModel.RulerId == rule.id) { zoomComboBox.Text = rule.ruler_name;// "newText"; } } } } //if (zoomComboBox.Text == null || zoomComboBox.Text.Equals("")) //{ // zoomComboBox.Text = "请选择"; //} rulersComboBox.Add(zoomComboBox); zoomComboBox.Enabled = Startup.getMenuIdVisible(flowJ.Menus[i].Id); buttons[index] = zoomComboBox; zoomComboBox.ComboBox.DropDownStyle = ComboBoxStyle.DropDownList; zoomComboBox.BackColor = SystemColors.Window; } else { button.Enabled = Startup.getMenuIdVisible(flowJ.Menus[i].Id); buttons[index] = button; } } toolStripEx.ItemClicked += new ToolStripItemClickedEventHandler(ToolStripEx_ItemClicked); toolStripEx.ItemRemoved += ToolStripEx_ItemRemoved; toolStripEx.EndDrag += ToolStripEx_DragDrop1; toolStripEx.AllowDrop = false; toolStripEx.AllowMerge = false; toolStripEx.Height = 40; toolStripEx.Items.AddRange(buttons); toolStrips[t] = toolStripEx; toolStripEx.Visible = flowJ.Show; t++; } this.toolStripContainer1.TopToolStripPanel.ControlRemoved += TopToolStripPanel_ControlRemoved; this.toolStripContainer1.TopToolStripPanel.DragDrop += TopToolStripPanel_DragDrop; this.toolStripContainer1.TopToolStripPanel.DragLeave += TopToolStripPanel_DragLeave; } private void ZoomComboBox_SelectedIndexChanged(object sender, EventArgs e) { if (((ToolStripComboBox)sender).SelectedItem != null) { List list = Startup.instance.mic_rulersAll; if (list != null) { for (int ruleI = 0; ruleI < list.Count; ruleI++) { mic_rulers rule = list[ruleI]; if (rule.ruler_name.Equals(((ToolStripComboBox)sender).SelectedItem.ToString())) { int rulid = rule.id; string rulerName2 = rule.ruler_name; if (rulid != Startup.instance.configModel.RulerId) { //设置当前选中标尺 this.appWorkspace.SetActiveRulerIndex(((ToolStripComboBox)sender).SelectedIndex); //应用到当前 this.appWorkspace.Widgets.RuleListForm.MenuSubApplyCurrent(); //int oldId = Startup.instance.configModel.RulerId; ////激活当前标尺到configModel //Startup.instance.configModel.RulerId = rulid; ////保存xml文件 //string configXml = XmlSerializeHelper.XmlSerialize(Startup.instance.configModel); //string filePath = Application.StartupPath + "\\Config\\" + Startup.instance.SettingPrefix + "\\Config.xml"; //if (FileOperationHelper.WriteStringToFile(configXml, filePath, FileMode.Create)) //{ // //调用startup的方法 // Startup.instance.InitRulerInfo(); // Startup.instance.InitUnitInfo(); // foreach (ToolStripComboBox comboBox in rulersComboBox) // { // if (((ToolStripComboBox)sender) == comboBox) // { // continue; // } // for (int i = 0; i < comboBox.Items.Count; i++) // { // if (rulerName2.Equals(comboBox.Items[i].ToString())) // { // comboBox.SelectedIndex = i; // } // } // } // //this.appWorkspace.RefreshActiveRuler(); //} //else //{ // Startup.instance.configModel.RulerId = oldId; // MessageBox.Show("标尺激活失败"); //} } break; } } } } } private void ToolStripEx_DragDrop1(object sender, EventArgs e) { if (toolStripInitLayout < 3)//to 完善 { return; } for (int i = 0; i < this.toolStripContainer1.TopToolStripPanel.Controls.Count; i++) { ToolStrip toolStripEx = (ToolStrip)this.toolStripContainer1.TopToolStripPanel.Controls[i]; Point point = toolStripEx.Location; //Base.SettingModel.ToolbarLocationModel.Flow flowJ = toolbarLocationModel.Flows.Find(a => a.Key.Equals(toolStripEx.Name)); Base.SettingModel.ToolbarModel.Flow flowJ = toolbarModel.Flows.Find(a => a.Key.Equals(toolStripEx.Name)); flowJ.X = point.X; flowJ.Y = point.Y; } //string userInfoXml = XmlSerializeHelper.XmlSerialize(toolbarLocationModel); string userInfoXml = XmlSerializeHelper.XmlSerialize(toolbarModel); //string filePath = Application.StartupPath + "\\Config\\" + Startup.instance.SettingPrefix + "\\ToolbarLocation.xml"; string filePath = Application.StartupPath + "\\Config\\" + Startup.instance.SettingPrefix + "\\Toolbar.xml"; if (FileOperationHelper.WriteStringToFile(userInfoXml, filePath, System.IO.FileMode.Create)) { //Startup.instance.toolbarLocationModel = toolbarLocationModel; Startup.instance.toolbarModel = toolbarModel; } else { MessageBox.Show("工具栏坐标保存失败"); } } ToolStrip toolStripEx = new ToolStrip(); /// /// 重置工具栏 /// public void ResetCustomizeTools() { this.toolbarModel = Startup.instance.toolbarModel; if (toolbarModel == null || toolbarModel.Flows.Count == 0) { this.toolStripContainer1.TopToolStripPanel.Controls.Clear(); return; } int toolCount = toolbarModel.Flows.Count; for (int j = toolbarModel.Flows.Count - 1; j >= 0; j--) { Flow flowJ = toolbarModel.Flows[j]; if (flowJ.Menus.Count == 0) { toolCount -= 1; } } if (toolCount == 0) { this.toolStripContainer1.TopToolStripPanel.Controls.Clear(); return; } toolStrips = new ToolStrip[toolCount]; int t = 0; for (int j = toolbarModel.Flows.Count - 1; j >= 0; j--) { Flow flowJ = toolbarModel.Flows[j]; if (flowJ.Menus.Count == 0) { continue; } ToolStrip toolStripEx = new ToolStrip(); ImageList imageList = new ImageList(); imageList.ColorDepth = ColorDepth.Depth32Bit; imageList.TransparentColor = Utility.TransparentKey; toolStripEx.ImageList = imageList; toolStripEx.Name = flowJ.Key; int buttonsCount = flowJ.Menus.Count; foreach (Flow.Item item in flowJ.Menus) { if (item.Description.Equals("Script"))//脚本列表 { List list = mic_script_BLL.FindAll(); buttonsCount += (list.Count - 1); } if (item.Description.Equals("SubRulerCalibration"))//标尺标定,标尺列表 { buttonsCount += 1; } } ToolStripItem[] buttons = new ToolStripItem[buttonsCount/*flowJ.Menus.Count*/]; int index = 0; for (int i = 0; i < flowJ.Menus.Count; i++, index++) { ToolStripButton button = new ToolStripButton(); int imageIndex = -1; if (flowJ.Menus[i].Description.Equals("SeparateLine")) { ToolStripSeparator separator0 = new ToolStripSeparator(); buttons[index] = separator0; continue; } ToolStripItem[] items = this.MainMenu.Items.Find(flowJ.Menus[i].Description, true); if (items != null && items.Length > 0) { if (((PdnMenuItem)(items[0])).Image != null) imageIndex = imageList.Images.Add(((PdnMenuItem)(items[0])).Image, imageList.TransparentColor); else imageIndex = imageList.Images.Add(new Bitmap(16, 16), imageList.TransparentColor); button.ToolTipText = ((PdnMenuItem)(items[0])).Text; button.Text = ((PdnMenuItem)(items[0])).Text; } else { imageIndex = imageList.Images.Add(new Bitmap(16, 16), imageList.TransparentColor); button.ToolTipText = flowJ.Menus[i].Name;// .getShowName(Startup.instance.configModel.Language); button.Text = flowJ.Menus[i].Name;// .getShowName(Startup.instance.configModel.Language); } button.ImageIndex = imageIndex; button.Tag = flowJ.Menus[i].Description; button.TextImageRelation = TextImageRelation.ImageAboveText; if (this.appWorkspace.ActiveDocumentWorkspace != null) { if (button.Tag.ToString().Equals(this.type)) button.Checked = this.check; } //..Script if (flowJ.Menus[i].Description.Equals("Script"))//脚本列表 { List list = mic_script_BLL.FindAll(); for (int itemI = 0; itemI < list.Count - 1; itemI++) { var itemSS = list[itemI]; ToolStripButton unitLabel = new ToolStripButton(); unitLabel.Text = itemSS.name; unitLabel.TextImageRelation = TextImageRelation.ImageBeforeText; unitLabel.Padding = new Padding(2, 20 - unitLabel.Height / 2, 0, 20 - unitLabel.Height / 2); //unitLabel.Tag = "Script_" + itemSS.id; unitLabel.Name = "" + itemSS.id; buttons[index] = unitLabel; index++; } //unitsLabel.Padding = new Padding(2, 20 - unitsLabel.Height / 2, 0, 20 - unitsLabel.Height / 2); var item = list[list.Count - 1]; ToolStripButton unitsLabel = new ToolStripButton(); unitsLabel.Text = item.name; unitsLabel.TextImageRelation = TextImageRelation.ImageBeforeText; unitsLabel.Padding = new Padding(2, 20 - unitsLabel.Height / 2, 0, 20 - unitsLabel.Height / 2); unitsLabel.Name = "" + item.id; buttons[index] = unitsLabel; } else if (flowJ.Menus[i].Description.Equals("SubRulerCalibration")) { ToolStripLabel unitsLabel = new ToolStripLabel(); unitsLabel.Padding = new Padding(2, 20 - unitsLabel.Height / 2, 0, 20 - unitsLabel.Height / 2); unitsLabel.Text = "标尺:"; buttons[index] = unitsLabel; index++; ToolStripComboBox zoomComboBox = new ToolStripComboBox(); zoomComboBox.Tag = i; zoomComboBox.Size = new Size(100/*75*/, zoomComboBox.Height); zoomComboBox.Padding = new Padding(0, 20 - zoomComboBox.Height / 2, 2, 20 - zoomComboBox.Height / 2); zoomComboBox.MaxDropDownItems = 99; zoomComboBox.SelectedIndexChanged += ZoomComboBox_SelectedIndexChanged; List list = mic_rulers_BLL.FindAll(); if (list != null) { for (int ruleI = 0; ruleI < list.Count; ruleI++) { mic_rulers rule = list[ruleI]; zoomComboBox.Items.Add(rule.ruler_name); if (Startup.instance.configModel != null) { if (Startup.instance.configModel.RulerId == rule.id) { zoomComboBox.Text = rule.ruler_name;// "newText"; } } } } rulersComboBox.Add(zoomComboBox); buttons[index] = zoomComboBox; zoomComboBox.ComboBox.DropDownStyle = ComboBoxStyle.DropDownList; zoomComboBox.BackColor = SystemColors.Window; } else { buttons[index] = button; } } toolStripEx.ItemClicked += new ToolStripItemClickedEventHandler(ToolStripEx_ItemClicked); toolStripEx.ItemRemoved += ToolStripEx_ItemRemoved; toolStripEx.EndDrag += ToolStripEx_DragDrop1; toolStripEx.AllowDrop = false; toolStripEx.AllowMerge = false; toolStripEx.Height = 40; toolStripEx.Items.AddRange(buttons); toolStrips[t] = toolStripEx; toolStripEx.Visible = flowJ.Show; t++; } this.toolStripContainer1.TopToolStripPanel.Controls.Clear(); this.toolStripContainer1.TopToolStripPanel.Controls.AddRange(toolStrips); //this.toolStripContainer1.TopToolStripPanel.Refresh(); //this.toolStripInitLayout = -100;// 10; //this.toolbarModel = Startup.instance.toolbarModel; //this.toolStripContainer1.TopToolStripPanel.Controls.Clear(); //SetCustomizeTools(true); //int toolCount = this.toolbarModel.Flows.Count; //for (int j = this.toolbarModel.Flows.Count - 1; j >= 0; j--) //{ // Flow flowJ = this.toolbarModel.Flows[j]; // if (flowJ.Menus.Count == 0) // { // toolCount -= 1; // } //} //if (toolCount == 0) //{ // this.toolStripContainer1.TopToolStripPanel.Controls.Clear(); // return; //} //toolStrips = new ToolStrip[toolCount]; //rulersComboBox.Clear(); //int indexJ = 0; ////先将location值不为-100的菜单显示出来(初始值设置-100) //int heightRow = 0;// -1;// 0; //int widthRow1 = 0;// -1;// 0; ////for (int j = 0; j < Startup.instance.toolbarLocationModel.Flows.Count; j++) //for (int j = 0; j < Startup.instance.toolbarModel.Flows.Count; j++) //{ // //ToolbarLocationModel.Flow flowJ = Startup.instance.toolbarLocationModel.Flows[j]; // ToolbarModel.Flow flowJ = Startup.instance.toolbarModel.Flows[j]; // if (flowJ.X > -100 && flowJ.Y > -100) // { // if (flowJ.Y > heightRow || (flowJ.Y == heightRow && flowJ.X >= widthRow1)) // { // Control[] temp = this.toolStripContainer1.TopToolStripPanel.Controls.Find(flowJ.Key, true); // if (temp!=null && temp.Length>0) // { // ToolStrip toolStripEx = (ToolStrip)(temp[0]); // if (toolStripEx == null) // { // heightRow = flowJ.Y; // widthRow1 = flowJ.X + 1; // } // else // { // heightRow = flowJ.Y; // widthRow1 = flowJ.X + toolStripEx.PreferredSize.Width + toolStripEx.Margin.Horizontal + 1; // } // } // } // } //} //for (int i = 0; i < this.toolStripContainer1.TopToolStripPanel.Controls.Count; i++) //{ // ToolStrip toolStripEx = (ToolStrip)this.toolStripContainer1.TopToolStripPanel.Controls[i]; // Flow flowJ = toolbarModel.Flows.Find(a => a.Key.Equals(toolStripEx.Name)); // if (flowJ == null) // { // this.toolStripContainer1.TopToolStripPanel.Controls.Remove(toolStripEx); // i--; // } // else // { // toolStrips[indexJ++] = toolStripEx; // } //} //if (toolbarModel == null || toolbarModel.Flows.Count == 0) //{ // return; //} ////int toolStripWidth = 0; //for (int j = toolbarModel.Flows.Count - 1; j >= 0; j--) //{ // Flow flowJ = toolbarModel.Flows[j]; // if (flowJ.Menus.Count == 0) // { // continue; // } // ToolStrip toolStripEx = new ToolStrip();//Ex // ImageList imageList = new ImageList(); // imageList.ColorDepth = ColorDepth.Depth32Bit; // imageList.TransparentColor = Utility.TransparentKey; // toolStripEx.ImageList = imageList; // toolStripEx.Name = flowJ.Key;// "key_" + j; // //Base.SettingModel.ToolbarLocationModel.Flow flow = toolbarLocationModel.Flows.Find(a => a.Key.Equals(flowJ.Key/*"targetProcess"*/)); // ////ToolbarLocationModel.Flows.Find(); // //int locationX = flow.X; // //int locationY = flow.Y; // int buttonsCount = flowJ.Menus.Count; // foreach (Flow.Item item in flowJ.Menus) // { // //..Script // if (item.Description.Equals("Script"))//脚本列表 // { // List list = mic_script_BLL.FindAll(); // buttonsCount += (list.Count - 1); // } // if (item.Description.Equals("SubRulerCalibration")) // { // buttonsCount += 1; // } // } // ToolStripItem[] buttons = new ToolStripItem[buttonsCount/*flowJ.Menus.Count*/]; // int index = 0; // for (int i = 0; i < flowJ.Menus.Count; i++, index++) // { // ToolStripButton button = new ToolStripButton(); // int imageIndex = -1; // if (flowJ.Menus[i].Description.Equals("SeparateLine")) // { // ToolStripSeparator separator0 = new ToolStripSeparator(); // buttons[index] = separator0; // continue; // } // //this.Items.Add(this.separator0); // ToolStripItem[] items = this/*.appWorkspace.ToolBar*/.MainMenu.Items.Find(flowJ.Menus[i].Description, true); // //ToolbarLocationModel.Flows; // if (items != null && items.Length > 0) // { // if (((PdnMenuItem)(items[0])).Image != null) // imageIndex = imageList.Images.Add(((PdnMenuItem)(items[0])).Image, imageList.TransparentColor); // else // imageIndex = imageList.Images.Add(new Bitmap(16, 16), imageList.TransparentColor); // } // else // { // imageIndex = imageList.Images.Add(new Bitmap(16, 16), imageList.TransparentColor); // } // button.ImageIndex = imageIndex; // button.Tag = flowJ.Menus[i].Description; // button.ToolTipText = flowJ.Menus[i].Name; // button.Text = flowJ.Menus[i].Name; // button.TextImageRelation = TextImageRelation.ImageAboveText; // //..Script // if (flowJ.Menus[i].Description.Equals("Script"))//脚本列表 // { // List list = mic_script_BLL.FindAll(); // for (int itemI = 0; itemI < list.Count - 1; itemI++) // { // var itemSS = list[itemI]; // ToolStripButton unitLabel = new ToolStripButton(); // unitLabel.Text = itemSS.name; // unitLabel.TextImageRelation = TextImageRelation.ImageBeforeText; // unitLabel.Padding = new Padding(2, 20 - unitLabel.Height / 2, 0, 20 - unitLabel.Height / 2); // unitLabel.Name = "" + itemSS.id; // buttons[index] = unitLabel; // index++; // } // //unitsLabel.Padding = new Padding(2, 20 - unitsLabel.Height / 2, 0, 20 - unitsLabel.Height / 2); // var item = list[list.Count - 1]; // ToolStripButton unitsLabel = new ToolStripButton(); // unitsLabel.Text = item.name; // unitsLabel.TextImageRelation = TextImageRelation.ImageBeforeText; // unitsLabel.Padding = new Padding(2, 20 - unitsLabel.Height / 2, 0, 20 - unitsLabel.Height / 2); // unitsLabel.Name = "" + item.id; // buttons[index] = unitsLabel; // } // else if (flowJ.Menus[i].Description.Equals("SubRulerCalibration")) // { // ToolStripLabel unitsLabel = new ToolStripLabel(); // unitsLabel.Padding = new Padding(2, 20 - unitsLabel.Height / 2, 0, 20 - unitsLabel.Height / 2); // unitsLabel.Text = "标尺:"; // buttons[index] = unitsLabel; // index++; // ToolStripComboBox zoomComboBox = new ToolStripComboBox(); // zoomComboBox.Tag = i; // zoomComboBox.Size = new Size(100/*75*/, zoomComboBox.Height); // zoomComboBox.Padding = new Padding(0, 20 - zoomComboBox.Height / 2, 2, 20 - zoomComboBox.Height / 2); // zoomComboBox.MaxDropDownItems = 99; // zoomComboBox.SelectedIndexChanged += ZoomComboBox_SelectedIndexChanged; // List list = mic_rulers_BLL.FindAll(); // if (list != null) // { // for (int ruleI = 0; ruleI < list.Count; ruleI++) // { // mic_rulers rule = list[ruleI]; // zoomComboBox.Items.Add(rule.ruler_name); // if (Startup.instance.configModel != null) // { // if (Startup.instance.configModel.RulerId == rule.id) // { // zoomComboBox.Text = rule.ruler_name;// "newText"; // } // } // } // } // //if (zoomComboBox.Text == null || zoomComboBox.Text.Equals("")) // //{ // // zoomComboBox.Text = "请选择"; // //} // rulersComboBox.Add(zoomComboBox); // buttons[index] = zoomComboBox; // zoomComboBox.ComboBox.DropDownStyle = ComboBoxStyle.DropDownList; // zoomComboBox.BackColor = SystemColors.Window; // } // else // { // buttons[index] = button; // } // } // toolStripEx.ItemClicked += new ToolStripItemClickedEventHandler(ToolStripEx_ItemClicked); // toolStripEx.ItemRemoved += ToolStripEx_ItemRemoved; // toolStripEx.EndDrag += ToolStripEx_DragDrop1; // toolStripEx.AllowDrop = false; // toolStripEx.AllowMerge = false; // toolStripEx.Height = 40; // toolStripEx.Items.AddRange(buttons); // //Base.SettingModel.ToolbarLocationModel.Flow flowLocJ = toolbarLocationModel.Flows.Find(a => a.Key.Equals(toolStripEx.Name)); // Base.SettingModel.ToolbarModel.Flow flowLocJ = toolbarModel.Flows.Find(a => a.Key.Equals(toolStripEx.Name)); // if (flowLocJ.X == -100 || flowLocJ.Y == -100) // { // Control[] toolStripTemp = /*(ToolStrip[])*/this.toolStripContainer1.TopToolStripPanel.Controls.Find(flowJ.Key, true); // //ToolStrip toolStripEx = (ToolStrip)this.toolStripContainer1.TopToolStripPanel.Controls.Find(flowJ.Key, true)[0]; // if (toolStripTemp != null && toolStripTemp.Length > 0/*toolStripEx == null*/) // { // continue; // } // if (widthRow1 < ClientSize.Width || ClientSize.Width == 0) // { // toolStripEx.Location = new Point(widthRow1/*lastToolStripEx.Right + 1*/, heightRow/*lastToolStripEx.Top*/); // widthRow1 = widthRow1 + toolStripEx.PreferredSize.Width + toolStripEx.Margin.Horizontal + 1; // } // else // { // heightRow += 40;// 38;// 39; // toolStripEx.Location = new Point(0, heightRow/*lastToolStripEx.Bottom*/); // widthRow1 = 0/*toolStripEx.Left*/ + toolStripEx.PreferredSize.Width + toolStripEx.Margin.Horizontal; // } // this.toolStripContainer1.TopToolStripPanel.Controls.Add(toolStripEx); // toolStrips[indexJ++] = toolStripEx; // } //} //this.toolStripContainer1.TopToolStripPanel.ControlRemoved += TopToolStripPanel_ControlRemoved; //this.toolStripContainer1.TopToolStripPanel.DragDrop += TopToolStripPanel_DragDrop; //this.toolStripContainer1.TopToolStripPanel.DragLeave += TopToolStripPanel_DragLeave; //toolStripInitLayout = 3;// 0; //this.toolStripContainer1.Enabled = (!this.appWorkspace.ScriptRunning); ////this.mainMenu.Enabled = (!this.appWorkspace.ScriptRunning); } private string type; private bool check; /// /// 连续绘制联动 /// /// 是否选择 /// 0:标注 1:测量 public void RefreshBtnSelect(bool check, string type) { this.type = type; this.check = check; if (toolStrips == null) return; for (int i = 0; i < toolStrips.Length; i++) { for (int j = 0; j < toolStrips[i].Items.Count; j++) { if (toolStrips[i].Items[j] is ToolStripButton && ((ToolStripButton)toolStrips[i].Items[j]).Tag != null && ((ToolStripButton)toolStrips[i].Items[j]).Tag.ToString().Equals(type)) ((ToolStripButton)toolStrips[i].Items[j]).Checked = check; } } this.Refresh(); } private void TopToolStripPanel_DragLeave(object sender, EventArgs e) { //throw new NotImplementedException(); } private void TopToolStripPanel_DragDrop(object sender, DragEventArgs e) { //throw new NotImplementedException(); } private void TopToolStripPanel_ControlRemoved(object sender, ControlEventArgs e) { //throw new NotImplementedException(); } private void ToolStripEx_ItemRemoved(object sender, ToolStripItemEventArgs e) { //throw new NotImplementedException(); } /// /// 递归查找菜单,暂时不用,改成直接用name查找 /// /// /// private void RecursiveData(ToolStripItemCollection collection, mic_script_step step) { for (int i = 0; i < collection.Count; i++) { if (!collection[i].Name.Equals("OpenRecent") && !collection[i].Name.Equals("CameraSelection")) { if (collection[i] is PdnMenuItem) { if (step.menu_id == ((PdnMenuItem)collection[i]).MenuId) { ((PdnMenuItem)collection[i]).PerformClick(); } RecursiveData(((PdnMenuItem)collection[i]).DropDownItems, step); } } } } /// /// 脚本按钮点击方法 /// /// /// private void ToolStripEx_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { if (e.ClickedItem.GetType() != typeof(ToolStripButton)) { return; } if (e.ClickedItem.Tag == null) { //获取当前选中的脚本步骤 List steps = mic_script_step_BLL.FindAllByScripId(int.Parse(e.ClickedItem.Name)/*list[this.listBox1.SelectedIndex].id*/); //this.WindowState = FormWindowState.Minimized; //循环脚本步骤 foreach (mic_script_step step in steps) { //递归的方式 this.RecursiveData(this.appWorkspace.ToolBar.MainMenu.Items/*this.collection*/, step); } return; } //e.ClickedItem.Visible = false; ToolStripItem[] menu = this.appWorkspace.ToolBar.MainMenu.Items.Find(e.ClickedItem.Tag.ToString(), true); if (menu != null && menu.Length > 0) { if(((PdnMenuItem)menu[0]).canChecked) ((ToolStripButton)e.ClickedItem).Checked = !((ToolStripButton)e.ClickedItem).Checked; ((PdnMenuItem)menu[0]).PerformClick(); appWorkspace.UpdateBottomButtonSelectionStatus(); } } private void panel1_SizeChanged(object sender, EventArgs e) { this.toolStripContainer1.Height = this.toolStripContainer1.TopToolStripPanel.Height + 1; } private void DocumentStrip_DocumentClicked(object sender, EventArgs> e) { if (e.Data.Second == DocumentClickAction.Select) { PerformLayout(); } } private void DocumentStrip_DocumentListChanged(object sender, EventArgs e) { PerformLayout(); if (this.documentStrip.DocumentCount == 0) { //this.viewConfigStrip.Enabled = false; //this.toolChooserStrip.Enabled = false; } else { //this.viewConfigStrip.Enabled = true; //this.toolChooserStrip.Enabled = true; } } /// /// 用于ctrl+双击复制 /// public void CopyAndPasteByControlAndDoubleClick() { //ToolStripItem[] menu = this.MainMenu.Items.Find(PdnMenuItem.GetDescription(ActionType.Copy), true); //ToolStripItem[] menu1 = this.MainMenu.Items.Find(PdnMenuItem.GetDescription(ActionType.Paste), true); //if (menu != null && menu1 != null && menu.Length > 0 && menu1.Length > 0) //{ // ((PdnMenuItem)menu[0]).PerformClick(); // ((PdnMenuItem)menu1[0]).PerformClick(); //} ControlAnd(CopyAndPasteBy()); } /// /// 复制剪裁图片 /// /// public Bitmap CopyAndPasteBy() { if (AppWorkspace.ActiveDocumentWorkspace != null && AppWorkspace.ActiveDocumentWorkspace.CompositionSurface != null) { Bitmap temp = AppWorkspace.ActiveDocumentWorkspace.CompositionSurface.CreateAliasedBitmap(); copyedBitmap = new Bitmap(temp.Width, temp.Height); Graphics graphics = Graphics.FromImage(copyedBitmap); graphics.DrawImage(temp, 0, 0, temp.Width, temp.Height); if (AppWorkspace.ActiveDocumentWorkspace.GraphicsList.IsExsitSpecificObject(DrawToolType.ImageCut)) { //获取裁剪的矩形区域 List objList = AppWorkspace.ActiveDocumentWorkspace.GraphicsList.GetDrawToolTypeList(DrawToolType.ImageCut); ImageCutDraw imageCutDraw = (ImageCutDraw)objList[0]; RectangleF cutRectangle = imageCutDraw.Rectangle; copyedBitmap = DrawRulerHelper.KiCut(copyedBitmap, (int)cutRectangle.X, (int)cutRectangle.Y, (int)cutRectangle.Width, (int)cutRectangle.Height); } } return copyedBitmap; } /// /// 粘贴剪裁图片 /// /// public void ControlAnd(Bitmap copyedBitmap) { if (copyedBitmap != null) { DocumentWorkspace dw = AppWorkspace.AddNewDocumentWorkspace(); Document document = Document.FromImageMat(Camera.Tools.ToMat(copyedBitmap)); dw.Document = document; dw.xmlSaveModel = AppWorkspace.ActiveDocumentWorkspace.xmlSaveModel; dw.rules = AppWorkspace.ActiveDocumentWorkspace.rules; //图片命名 nameNum++; int numLength = nameNum.ToString().Length; string joinName = ""; switch (numLength) { case 1: joinName = "00" + nameNum; break; case 2: joinName = "0" + nameNum; break; default: joinName = nameNum.ToString(); break; } dw.fileText = PdnResources.GetString("Menu.Copythepicture.Text") + "-" + joinName; AppWorkspace.ActiveDocumentWorkspace = dw; } } } }