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;
}
}