ToolkitEditControl.cs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.IO;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;
  11. using PaintDotNet.Base.SettingModel;
  12. using PaintDotNet.Base.CommTool;
  13. using PaintDotNet.DbOpreate.DbBll;
  14. using PaintDotNet.DbOpreate.DbModel;
  15. namespace PaintDotNet.Preview2
  16. {
  17. internal partial class ToolkitEditControl : UserControl
  18. {
  19. public ToolkitEditControl()
  20. {
  21. InitializeComponent();
  22. buttonAdd.Click += Save_Click;
  23. buttonRemove.Click += Save_Click;
  24. buttonUp.Click += Save_Click;
  25. buttonDown.Click += Save_Click;
  26. }
  27. private void InitializeLanguageText()
  28. {
  29. this.buttonDown.Text = PdnResources.GetString("Menu.LabelAction.MoveDownAction.Text");
  30. this.buttonUp.Text = PdnResources.GetString("Menu.LabelAction.MoveUpAction.Text");
  31. this.buttonRemove.Text = PdnResources.GetString("Menu.Moveout.text") + " >";
  32. this.buttonAdd.Text = "< " + PdnResources.GetString("Menu.Addto.text");
  33. this.groupBoxRight.Text = PdnResources.GetString("Menu.Availablefunctions.text");
  34. this.groupBoxLeft.Text = PdnResources.GetString("Menu.tool.Generateshortcut.Shortcutbarcontent.text");
  35. }
  36. /// <summary>
  37. /// 右侧树形菜单
  38. /// </summary>
  39. private ToolStripItemCollection collectionRight;
  40. private AppWorkspace appWorkspace;
  41. private ShortcutbarModel _shortcutbarModel;
  42. #region Initialize
  43. public void Initialize(AppWorkspace app, ShortcutbarModel model)
  44. {
  45. InitializeLanguageText();
  46. appWorkspace = app;
  47. InitializeRightTreeData();
  48. InitializeLeftTreeData(model);
  49. }
  50. /// <summary>
  51. /// 初始化右侧树形菜单数据
  52. /// </summary>
  53. private void InitializeRightTreeData()
  54. {
  55. collectionRight = appWorkspace.ToolBar.MainMenu.Items;
  56. TreeNode anime = new TreeNode(PdnResources.GetString("Menu.menu.Text"));
  57. RecursiveData(collectionRight, anime);
  58. anime.Expand();
  59. foreach (TreeNode node in anime.Nodes)
  60. treeViewRight.Nodes.Add(node);
  61. }
  62. /// <summary>
  63. /// 递归进行数据组织
  64. /// </summary>
  65. private void RecursiveData(ToolStripItemCollection collection, TreeNode anime)
  66. {
  67. for (int i = 0; i < collection.Count; i++)
  68. {
  69. TreeNode node = new TreeNode();
  70. if (collection[i] is PdnMenuItem)
  71. {
  72. PdnMenuItem item = (PdnMenuItem)collection[i];
  73. if (!item.CanShowInSenseShield)
  74. continue;
  75. node.Tag = item.MenuId;
  76. if (Array.IndexOf(Preview2Context.ToolLibArray, item.MenuId.ToString()) != -1)
  77. {
  78. node.Name = collection[i].Name;
  79. node.Text = collection[i].Text;
  80. node.Tag = item.MenuId;
  81. anime.Nodes.Add(node);
  82. if (item.MenuId == 1211)//脚本
  83. {
  84. List<mic_script> list = mic_script_BLL.FindAll();
  85. foreach (var scp in list)
  86. {
  87. TreeNode node1 = new TreeNode();
  88. node1.Name = scp.id.ToString();
  89. node1.Text = scp.name;
  90. node1.Tag = item.MenuId;
  91. node.Nodes.Add(node1);
  92. }
  93. }
  94. }
  95. if (collection[i].Name.Equals("OpenRecent") || collection[i].Name.Equals("CameraSelection"))
  96. continue;
  97. RecursiveData(((PdnMenuItem)collection[i]).DropDownItems, node);
  98. }
  99. }
  100. }
  101. /// <summary>
  102. /// 初始化左侧listview菜单
  103. /// </summary>
  104. private void InitializeLeftTreeData(ShortcutbarModel model)
  105. {
  106. this.listViewLeft.View = View.Details;
  107. ColumnHeader header = new ColumnHeader();
  108. header.Text = PdnResources.GetString("Menu.tool.Generateshortcut.functionlist.text");
  109. this.listViewLeft.Columns.Add(header);
  110. header.Width = listViewLeft.Width - 10;
  111. listViewLeft.HeaderStyle = ColumnHeaderStyle.None;
  112. _shortcutbarModel = model;
  113. if (_shortcutbarModel != null)
  114. {
  115. if (_shortcutbarModel.Menus != null)
  116. {
  117. for (int i = 0; i < _shortcutbarModel.Menus.Count; i++)
  118. {
  119. ToolStripItem[] items = this.appWorkspace.ToolBar.MainMenu.Items.Find(_shortcutbarModel.Menus[i].Description, true);
  120. ListViewItem item = new ListViewItem();
  121. if (items != null && items.Length > 0)
  122. {
  123. if (((PdnMenuItem)(items[0])).Image != null)
  124. this.listViewLeft.SmallImageList.Images.Add(_shortcutbarModel.Menus[i].Description, ((PdnMenuItem)(items[0])).Image);
  125. else
  126. this.listViewLeft.SmallImageList.Images.Add(_shortcutbarModel.Menus[i].Description, new Bitmap(16, 16));
  127. item.Text = ((PdnMenuItem)(items[0])).Text;
  128. }
  129. else
  130. {
  131. this.listViewLeft.SmallImageList.Images.Add(_shortcutbarModel.Menus[i].Description, new Bitmap(16, 16));
  132. item.Text = _shortcutbarModel.Menus[i].Name;// getShowName(Startup.instance.configModel.Language);
  133. }
  134. item.Tag = _shortcutbarModel.Menus[i].Id;
  135. item.Name = _shortcutbarModel.Menus[i].Description;
  136. item.ImageIndex = i;
  137. this.listViewLeft.Items.Add(item);
  138. }
  139. }
  140. }
  141. }
  142. #endregion Initialize
  143. #region Oprate
  144. private void buttonAdd_Click(object sender, EventArgs e)
  145. {
  146. if (this.treeViewRight.SelectedNode != null && this.treeViewRight.SelectedNode.Nodes.Count == 0)
  147. {
  148. ToolStripItem[] items = this.appWorkspace.ToolBar.MainMenu.Items.Find(this.treeViewRight.SelectedNode.Name, true);
  149. if (items != null && items.Length > 0)
  150. {
  151. if (((PdnMenuItem)(items[0])).Image != null)
  152. this.listViewLeft.SmallImageList.Images.Add(this.treeViewRight.SelectedNode.Name, ((PdnMenuItem)(items[0])).Image);
  153. else
  154. this.listViewLeft.SmallImageList.Images.Add(this.treeViewRight.SelectedNode.Name, new Bitmap(16, 16));
  155. }
  156. else
  157. {
  158. this.listViewLeft.SmallImageList.Images.Add(this.treeViewRight.SelectedNode.Name, new Bitmap(16, 16));
  159. }
  160. ListViewItem item = new ListViewItem();
  161. item.Text = this.treeViewRight.SelectedNode.Text;
  162. item.Tag = this.treeViewRight.SelectedNode.Tag;
  163. item.Name = this.treeViewRight.SelectedNode.Name;
  164. item.ImageIndex = this.listViewLeft.SmallImageList.Images.Count - 1;
  165. foreach (ListViewItem v in listViewLeft.Items)
  166. {
  167. if (v.Text == item.Text) return;
  168. }
  169. this.listViewLeft.Items.Add(item);
  170. }
  171. }
  172. private void buttonRemove_Click(object sender, EventArgs e)
  173. {
  174. if (this.listViewLeft.SelectedItems.Count > 0)
  175. {
  176. foreach (ListViewItem item in this.listViewLeft.SelectedItems)
  177. this.listViewLeft.Items.Remove(item);
  178. }
  179. }
  180. private void buttonUp_Click(object sender, EventArgs e)
  181. {
  182. if (this.listViewLeft.SelectedItems.Count == 1)
  183. {
  184. int index = this.listViewLeft.Items.IndexOf(this.listViewLeft.SelectedItems[0]);
  185. if (index > 0)
  186. {
  187. ListViewItem prenode = (ListViewItem)this.listViewLeft.Items[index - 1].Clone();
  188. prenode.Name = this.listViewLeft.Items[index - 1].Name;
  189. this.listViewLeft.Items.Insert(index + 1, prenode);
  190. this.listViewLeft.Items.Remove(this.listViewLeft.Items[index - 1]);
  191. this.listViewLeft.Refresh();
  192. }
  193. }
  194. }
  195. private void buttonDown_Click(object sender, EventArgs e)
  196. {
  197. if (this.listViewLeft.SelectedItems.Count == 1)
  198. {
  199. int index = this.listViewLeft.Items.IndexOf(this.listViewLeft.SelectedItems[0]);
  200. if (index < this.listViewLeft.Items.Count - 1)
  201. {
  202. ListViewItem nextnode = (ListViewItem)this.listViewLeft.Items[index + 1].Clone();
  203. nextnode.Name = this.listViewLeft.Items[index + 1].Name;
  204. this.listViewLeft.Items.Insert(index, nextnode);
  205. this.listViewLeft.Items.Remove(this.listViewLeft.Items[index + 2]);
  206. this.listViewLeft.Refresh();
  207. }
  208. }
  209. }
  210. #endregion
  211. private void Save_Click(object sender, EventArgs e)
  212. {
  213. SaveToolbar();
  214. }
  215. /// <summary>
  216. /// 保存数据到xml
  217. /// </summary>
  218. public void SaveToolbar()
  219. {
  220. _shortcutbarModel.Menus = new List<ShortcutbarModel.Item>();
  221. for (int i = 0; i < this.listViewLeft.Items.Count; i++)
  222. {
  223. ShortcutbarModel.Item flow = new ShortcutbarModel.Item();
  224. flow.Id = (int)(this.listViewLeft.Items[i].Tag);
  225. flow.Name = this.listViewLeft.Items[i].Text;
  226. //################
  227. flow.Description = this.listViewLeft.Items[i].Name;
  228. _shortcutbarModel.Menus.Add(flow);
  229. }
  230. Preview2Context.SaveToolkit();
  231. OnToolbarUpdate?.Invoke();
  232. }
  233. public static event Action OnToolbarUpdate;
  234. }
  235. }