using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.IO; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using PaintDotNet.Base.SettingModel; using PaintDotNet.Base.CommTool; using PaintDotNet.DbOpreate.DbBll; using PaintDotNet.DbOpreate.DbModel; namespace PaintDotNet.Preview2 { internal partial class ToolkitEditControl : UserControl { public ToolkitEditControl() { InitializeComponent(); buttonAdd.Click += Save_Click; buttonRemove.Click += Save_Click; buttonUp.Click += Save_Click; buttonDown.Click += Save_Click; } private void InitializeLanguageText() { this.buttonDown.Text = PdnResources.GetString("Menu.LabelAction.MoveDownAction.Text"); this.buttonUp.Text = PdnResources.GetString("Menu.LabelAction.MoveUpAction.Text"); this.buttonRemove.Text = PdnResources.GetString("Menu.Moveout.text") + " >"; this.buttonAdd.Text = "< " + PdnResources.GetString("Menu.Addto.text"); this.groupBoxRight.Text = PdnResources.GetString("Menu.Availablefunctions.text"); this.groupBoxLeft.Text = PdnResources.GetString("Menu.tool.Generateshortcut.Shortcutbarcontent.text"); } /// /// 右侧树形菜单 /// private ToolStripItemCollection collectionRight; private AppWorkspace appWorkspace; private ShortcutbarModel _shortcutbarModel; #region Initialize public void Initialize(AppWorkspace app, ShortcutbarModel model) { InitializeLanguageText(); appWorkspace = app; InitializeRightTreeData(); InitializeLeftTreeData(model); } /// /// 初始化右侧树形菜单数据 /// private void InitializeRightTreeData() { collectionRight = appWorkspace.ToolBar.MainMenu.Items; TreeNode anime = new TreeNode(PdnResources.GetString("Menu.menu.Text")); RecursiveData(collectionRight, anime); anime.Expand(); foreach (TreeNode node in anime.Nodes) treeViewRight.Nodes.Add(node); } /// /// 递归进行数据组织 /// private void RecursiveData(ToolStripItemCollection collection, TreeNode anime) { for (int i = 0; i < collection.Count; i++) { TreeNode node = new TreeNode(); if (collection[i] is PdnMenuItem) { PdnMenuItem item = (PdnMenuItem)collection[i]; if (!item.CanShowInSenseShield) continue; node.Tag = item.MenuId; if (Array.IndexOf(Preview2Context.ToolLibArray, item.MenuId.ToString()) != -1) { node.Name = collection[i].Name; node.Text = collection[i].Text; node.Tag = item.MenuId; anime.Nodes.Add(node); if (item.MenuId == 1211)//脚本 { List list = mic_script_BLL.FindAll(); foreach (var scp in list) { TreeNode node1 = new TreeNode(); node1.Name = scp.id.ToString(); node1.Text = scp.name; node1.Tag = item.MenuId; node.Nodes.Add(node1); } } } if (collection[i].Name.Equals("OpenRecent") || collection[i].Name.Equals("CameraSelection")) continue; RecursiveData(((PdnMenuItem)collection[i]).DropDownItems, node); } } } /// /// 初始化左侧listview菜单 /// private void InitializeLeftTreeData(ShortcutbarModel model) { this.listViewLeft.View = View.Details; ColumnHeader header = new ColumnHeader(); header.Text = PdnResources.GetString("Menu.tool.Generateshortcut.functionlist.text"); this.listViewLeft.Columns.Add(header); header.Width = listViewLeft.Width - 10; listViewLeft.HeaderStyle = ColumnHeaderStyle.None; _shortcutbarModel = model; if (_shortcutbarModel != null) { if (_shortcutbarModel.Menus != null) { for (int i = 0; i < _shortcutbarModel.Menus.Count; i++) { ToolStripItem[] items = this.appWorkspace.ToolBar.MainMenu.Items.Find(_shortcutbarModel.Menus[i].Description, true); ListViewItem item = new ListViewItem(); if (items != null && items.Length > 0) { if (((PdnMenuItem)(items[0])).Image != null) this.listViewLeft.SmallImageList.Images.Add(_shortcutbarModel.Menus[i].Description, ((PdnMenuItem)(items[0])).Image); else this.listViewLeft.SmallImageList.Images.Add(_shortcutbarModel.Menus[i].Description, new Bitmap(16, 16)); item.Text = ((PdnMenuItem)(items[0])).Text; } else { this.listViewLeft.SmallImageList.Images.Add(_shortcutbarModel.Menus[i].Description, new Bitmap(16, 16)); item.Text = _shortcutbarModel.Menus[i].Name;// getShowName(Startup.instance.configModel.Language); } item.Tag = _shortcutbarModel.Menus[i].Id; item.Name = _shortcutbarModel.Menus[i].Description; item.ImageIndex = i; this.listViewLeft.Items.Add(item); } } } } #endregion Initialize #region Oprate private void buttonAdd_Click(object sender, EventArgs e) { if (this.treeViewRight.SelectedNode != null && this.treeViewRight.SelectedNode.Nodes.Count == 0) { ToolStripItem[] items = this.appWorkspace.ToolBar.MainMenu.Items.Find(this.treeViewRight.SelectedNode.Name, true); if (items != null && items.Length > 0) { if (((PdnMenuItem)(items[0])).Image != null) this.listViewLeft.SmallImageList.Images.Add(this.treeViewRight.SelectedNode.Name, ((PdnMenuItem)(items[0])).Image); else this.listViewLeft.SmallImageList.Images.Add(this.treeViewRight.SelectedNode.Name, new Bitmap(16, 16)); } else { this.listViewLeft.SmallImageList.Images.Add(this.treeViewRight.SelectedNode.Name, new Bitmap(16, 16)); } ListViewItem item = new ListViewItem(); item.Text = this.treeViewRight.SelectedNode.Text; item.Tag = this.treeViewRight.SelectedNode.Tag; item.Name = this.treeViewRight.SelectedNode.Name; item.ImageIndex = this.listViewLeft.SmallImageList.Images.Count - 1; foreach (ListViewItem v in listViewLeft.Items) { if (v.Text == item.Text) return; } this.listViewLeft.Items.Add(item); } } private void buttonRemove_Click(object sender, EventArgs e) { if (this.listViewLeft.SelectedItems.Count > 0) { foreach (ListViewItem item in this.listViewLeft.SelectedItems) this.listViewLeft.Items.Remove(item); } } private void buttonUp_Click(object sender, EventArgs e) { if (this.listViewLeft.SelectedItems.Count == 1) { int index = this.listViewLeft.Items.IndexOf(this.listViewLeft.SelectedItems[0]); if (index > 0) { ListViewItem prenode = (ListViewItem)this.listViewLeft.Items[index - 1].Clone(); prenode.Name = this.listViewLeft.Items[index - 1].Name; this.listViewLeft.Items.Insert(index + 1, prenode); this.listViewLeft.Items.Remove(this.listViewLeft.Items[index - 1]); this.listViewLeft.Refresh(); } } } private void buttonDown_Click(object sender, EventArgs e) { if (this.listViewLeft.SelectedItems.Count == 1) { int index = this.listViewLeft.Items.IndexOf(this.listViewLeft.SelectedItems[0]); if (index < this.listViewLeft.Items.Count - 1) { ListViewItem nextnode = (ListViewItem)this.listViewLeft.Items[index + 1].Clone(); nextnode.Name = this.listViewLeft.Items[index + 1].Name; this.listViewLeft.Items.Insert(index, nextnode); this.listViewLeft.Items.Remove(this.listViewLeft.Items[index + 2]); this.listViewLeft.Refresh(); } } } #endregion private void Save_Click(object sender, EventArgs e) { SaveToolbar(); } /// /// 保存数据到xml /// public void SaveToolbar() { _shortcutbarModel.Menus = new List(); for (int i = 0; i < this.listViewLeft.Items.Count; i++) { ShortcutbarModel.Item flow = new ShortcutbarModel.Item(); flow.Id = (int)(this.listViewLeft.Items[i].Tag); flow.Name = this.listViewLeft.Items[i].Text; //################ flow.Description = this.listViewLeft.Items[i].Name; _shortcutbarModel.Menus.Add(flow); } Preview2Context.SaveToolkit(); OnToolbarUpdate?.Invoke(); } public static event Action OnToolbarUpdate; } }