123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Drawing;
- using System.Data;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using PaintDotNet.Base.SettingModel;
- using PaintDotNet.Base.CommTool;
- using System.IO;
- namespace PaintDotNet.Instrument.CustomInterface
- {
- internal class ShortKeys : UserControl
- {
- private AppWorkspace appWorkspace;
- /// <summary>
- /// 右侧树形菜单
- /// </summary>
- private ToolStripItemCollection collectionRight;
- /// <summary>
- /// 设置热键的标记
- /// </summary>
- private bool setHotKey = false;
- /// <summary>
- /// 为当前菜单设置的热键的list
- /// </summary>
- private List<string> hotKeys = new List<string>();
- private Panel panel1;
- private GroupBox groupBox3;
- private Label label1;
- private Button button7;
- private GroupBox groupBox4;
- private Label label3;
- private TextBox textBox1;
- private Button button8;
- private GroupBox groupBox5;
- private Label label2;
- private GroupBox groupBox7;
- private TreeView treeViewRight;
- private ListView listView2;
- private GroupBox groupBox6;
- private HotkeyModel hotkeyModel = Startup.instance.hotkeyModel;
- private string txtPath = Application.StartupPath + "\\Config\\" + Startup.instance.SettingPrefix + "\\ModuleConfig.txt";
- private string[] menuIdArr;
- public ShortKeys(AppWorkspace appWorkspace)
- {
- this.appWorkspace = appWorkspace;
- InitializeComponent();
- InitializeLanguageText();
- InitVisibleMenuId();
- InitializeTreeData();
- listView2.View = View.Details;
- listView2.Columns.Add("0", 0, HorizontalAlignment.Center);
- listView2.Columns.Add(PdnResources.GetString("Menu.tool.Generateshortcut.function.text"), 150, HorizontalAlignment.Center);
- listView2.Columns.Add(PdnResources.GetString("Menu.hotkey.text"), 200, HorizontalAlignment.Center);
- listView2.BeginUpdate();
- foreach (HotkeyModel.Item s in hotkeyModel.items)
- {
- var lv = new ListViewItem();
- lv.Tag = s.HotKeys;
- lv.Text = "1";
- lv.SubItems.Add(s.MenuName);
- lv.SubItems.Add(s.HotKeys);
- lv.SubItems.Add("");
- listView2.Items.Add(lv);
- }
- listView2.EndUpdate();
- }
- /// <summary>
- /// 获取txt文件中已保存的菜单可用id
- /// </summary>
- private void InitVisibleMenuId()
- {
- if (System.IO.File.Exists(txtPath))
- {
- string str = System.IO.File.ReadAllText(txtPath);
- if (str.IndexOf(',') != -1)
- {
- menuIdArr = str.Split(',');
- }
- else
- {
- if (!string.IsNullOrEmpty(str))
- {
- menuIdArr = new string[] { str };
- }
- }
- }
- }
- /// <summary>
- /// 初始化树形菜单数据
- /// </summary>
- private void InitializeTreeData()
- {
- this.collectionRight = this.appWorkspace.ToolBar.MainMenu.Items;
- TreeNode anime = new TreeNode(PdnResources.GetString("Menu.menu.Text"));
- this.RecursiveData(collectionRight, anime);
- anime.Expand();
- this.treeViewRight.Nodes.Add(anime);
- }
- /// <summary>
- /// 递归进行数据组织
- /// </summary>
- private void RecursiveData(ToolStripItemCollection collection, TreeNode anime)
- {
- //for (int i = 0; i < collection.Count; i++)
- //{
- // //排除掉最近打开的文件,或者可以用数字id判断更准确
- // if (!collection[i].Name.Equals("OpenRecent") && !collection[i].Name.Equals("CameraSelection"))
- // {
- // if (collection[i].GetType() != typeof(ToolStripSeparator) && ((PdnMenuItem)collection[i]).CanShowInSenseShield)
- // {
- // TreeNode node = new TreeNode();
- // node.Name = collection[i].Name;
- // node.Text = collection[i].Text;
- // node.Tag = ((PdnMenuItem)collection[i]).MenuId;
- // anime.Nodes.Add(node);
- // RecursiveData(((PdnMenuItem)collection[i]).DropDownItems, node);
- // }
- // }
- //}
- for (int i = 0; i < collection.Count; i++)
- {
- //排除掉最近打开的文件,或者可以用数字id判断更准确
- if (!collection[i].Name.Equals("OpenRecent") && !collection[i].Name.Equals("CameraSelection"))
- {
- TreeNode node = new TreeNode(/*collection[i].Text*/);
- if (collection[i] is PdnMenuItem)
- {
- PdnMenuItem item = (PdnMenuItem)collection[i];
- if (!item.CanShowInSenseShield)
- continue;
- node.Tag = item.MenuId;
- if (menuIdArr != null && menuIdArr.Length > 0)
- {
- if (Array.IndexOf(menuIdArr, item.MenuId.ToString()) != -1)
- {
- node.Name = collection[i].Name;
- node.Text = collection[i].Text;
- node.Tag = ((PdnMenuItem)collection[i]).MenuId;
- node.Checked = true;
- }
- else
- {
- node.Checked = false;
- }
- }
- if (node.Checked)
- {
- anime.Nodes.Add(node);
- }
- if (collection[i].Name.Equals("OpenRecent") || collection[i].Name.Equals("CameraSelection"))
- continue;
- RecursiveData(((PdnMenuItem)collection[i]).DropDownItems, node);
- }
- }
- }
- }
- #region 组件设计器生成的代码
- private void InitializeLanguageText()
- {
- this.groupBox3.Text = PdnResources.GetString("Menu.tool.Generateshortcut.Theselectcutkey.text");
- this.button7.Text = PdnResources.GetString("Menu.Edit.Delete.Text");
- this.groupBox4.Text = PdnResources.GetString("Menu.tool.Generateshortcut.Maintainshortcut.text");
- this.label3.Text = PdnResources.GetString("Menu.tool.Generateshortcut.ThehotkeorAlt:orF*.text");
- this.button8.Text = PdnResources.GetString("Menu.Setting.Text");
- this.groupBox5.Text = PdnResources.GetString("Menu.Thisshortcutkeyhasbeenappliedto.text");
- this.groupBox7.Text = PdnResources.GetString("Menu.Availablefunctions.text");
- this.groupBox6.Text = PdnResources.GetString("Menu.tool.Generateshortcut.Listofallfortcutkeys.text");
- }
- /// <summary>
- /// 设计器支持所需的方法 - 不要修改
- /// 使用代码编辑器修改此方法的内容。
- /// </summary>
- private void InitializeComponent()
- {
- this.panel1 = new System.Windows.Forms.Panel();
- this.groupBox3 = new System.Windows.Forms.GroupBox();
- this.label1 = new System.Windows.Forms.Label();
- this.button7 = new System.Windows.Forms.Button();
- this.groupBox4 = new System.Windows.Forms.GroupBox();
- this.label3 = new System.Windows.Forms.Label();
- this.textBox1 = new System.Windows.Forms.TextBox();
- this.button8 = new System.Windows.Forms.Button();
- this.groupBox5 = new System.Windows.Forms.GroupBox();
- this.label2 = new System.Windows.Forms.Label();
- this.groupBox7 = new System.Windows.Forms.GroupBox();
- this.treeViewRight = new System.Windows.Forms.TreeView();
- this.listView2 = new System.Windows.Forms.ListView();
- this.groupBox6 = new System.Windows.Forms.GroupBox();
- this.panel1.SuspendLayout();
- this.groupBox3.SuspendLayout();
- this.groupBox4.SuspendLayout();
- this.groupBox5.SuspendLayout();
- this.groupBox7.SuspendLayout();
- this.SuspendLayout();
- //
- // panel1
- //
- this.panel1.Controls.Add(this.groupBox3);
- this.panel1.Controls.Add(this.groupBox4);
- this.panel1.Controls.Add(this.groupBox5);
- this.panel1.Controls.Add(this.groupBox7);
- this.panel1.Controls.Add(this.groupBox6);
- this.panel1.Location = new System.Drawing.Point(0, 0);
- this.panel1.Name = "panel1";
- this.panel1.Size = new System.Drawing.Size(623, 398);
- this.panel1.TabIndex = 0;
- //
- // groupBox3
- //
- this.groupBox3.Controls.Add(this.label1);
- this.groupBox3.Controls.Add(this.button7);
- this.groupBox3.Location = new System.Drawing.Point(0, 3);
- this.groupBox3.Margin = new System.Windows.Forms.Padding(0);
- this.groupBox3.Name = "groupBox3";
- this.groupBox3.Size = new System.Drawing.Size(361, 58);
- this.groupBox3.TabIndex = 9;
- this.groupBox3.TabStop = false;
- this.groupBox3.Text = "所选功能快捷键";
-
- //
- // label1
- //
- this.label1.AutoSize = true;
- this.label1.Location = new System.Drawing.Point(9, 29);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(0, 12);
- this.label1.TabIndex = 1;
- //
- // button7
- //
- this.button7.Location = new System.Drawing.Point(267, 20);
- this.button7.Name = "button7";
- this.button7.Size = new System.Drawing.Size(75, 23);
- this.button7.TabIndex = 0;
- this.button7.Text = "删除";
-
- this.button7.UseVisualStyleBackColor = true;
- this.button7.Click += button7_Click;
- //
- // groupBox4
- //
- this.groupBox4.Controls.Add(this.label3);
- this.groupBox4.Controls.Add(this.textBox1);
- this.groupBox4.Controls.Add(this.button8);
- this.groupBox4.Location = new System.Drawing.Point(0, 67);
- this.groupBox4.Name = "groupBox4";
- this.groupBox4.Size = new System.Drawing.Size(361, 76);
- this.groupBox4.TabIndex = 10;
- this.groupBox4.TabStop = false;
- this.groupBox4.Text = "维护快捷键";
-
- //
- // label3
- //
- this.label3.AutoSize = true;
- this.label3.Location = new System.Drawing.Point(9, 50);
- this.label3.Name = "label3";
- this.label3.Size = new System.Drawing.Size(293, 12);
- this.label3.TabIndex = 2;
- this.label3.Text = "快捷键必须包含Ctrl或Alt; 或F*";
-
- //
- // textBox1
- //
- this.textBox1.Location = new System.Drawing.Point(9, 22);
- this.textBox1.Name = "textBox1";
- this.textBox1.ReadOnly = true;
- this.textBox1.Size = new System.Drawing.Size(252, 21);
- this.textBox1.TabIndex = 1;
- this.textBox1.KeyUp += textBox1_KeyUp;
- this.textBox1.PreviewKeyDown += textBox1_PreviewKeyDown;
- //this.textBox1.KeyDown += textBox1_KeyDown;
- //
- // button8
- //
- this.button8.Enabled = false;
- this.button8.Location = new System.Drawing.Point(267, 22);
- this.button8.Name = "button8";
- this.button8.Size = new System.Drawing.Size(75, 23);
- this.button8.TabIndex = 0;
- this.button8.Text = "设置";
-
- this.button8.UseVisualStyleBackColor = true;
- this.button8.Click += Button8_Click;
- //
- // groupBox5
- //
- this.groupBox5.Controls.Add(this.label2);
- this.groupBox5.Location = new System.Drawing.Point(0, 149);
- this.groupBox5.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
- this.groupBox5.Name = "groupBox5";
- this.groupBox5.Size = new System.Drawing.Size(361, 58);
- this.groupBox5.TabIndex = 11;
- this.groupBox5.TabStop = false;
- this.groupBox5.Text = "此快捷键已应用至";
-
- //
- // label2
- //
- this.label2.AutoSize = true;
- this.label2.Location = new System.Drawing.Point(9, 29);
- this.label2.Name = "label2";
- this.label2.Size = new System.Drawing.Size(0, 12);
- this.label2.TabIndex = 0;
- //
- // groupBox7
- //
- this.groupBox7.Controls.Add(this.treeViewRight);
- this.groupBox7.Location = new System.Drawing.Point(367, 0);
- this.groupBox7.Name = "groupBox7";
- this.groupBox7.Size = new System.Drawing.Size(256, 401);
- this.groupBox7.TabIndex = 13;
- this.groupBox7.TabStop = false;
- this.groupBox7.Text = "可用功能";
-
- //
- // treeView1
- //
- this.treeViewRight.Location = new System.Drawing.Point(7, 20);
- this.treeViewRight.Name = "treeView1";
- this.treeViewRight.Size = new System.Drawing.Size(243, 372);
- this.treeViewRight.TabIndex = 0;
- this.treeViewRight.NodeMouseClick += treeView1_NodeMouseClick;
- this.treeViewRight.HideSelection = false;
- this.treeViewRight.DrawMode = TreeViewDrawMode.OwnerDrawText;
- this.treeViewRight.DrawNode += new DrawTreeNodeEventHandler(this.treeViewRight_DrawNode);
- //
- // groupBox6
- //
- this.groupBox6.Controls.Add(this.listView2);
- this.groupBox6.Location = new System.Drawing.Point(0, 211);
- this.groupBox6.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
- this.groupBox6.Name = "groupBox6";
- this.groupBox6.Size = new System.Drawing.Size(361, 187);
- this.groupBox6.TabIndex = 12;
- this.groupBox6.TabStop = false;
- this.groupBox6.Text = "所有已指派快捷键的功能列表";
-
- //
- // listView2
- //
- this.listView2.FullRowSelect = true;
- this.listView2.HideSelection = false;
- this.listView2.Location = new System.Drawing.Point(6, 20);
- this.listView2.MultiSelect = false;
- this.listView2.Name = "listView2";
- this.listView2.Size = new System.Drawing.Size(355/*382*/, 181/*441*/);
- this.listView2.TabIndex = 24;
- this.listView2.UseCompatibleStateImageBehavior = false;
- this.listView2.ItemSelectionChanged += ListView2_ItemSelectionChanged;
- //
- // ShortKeys
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.Controls.Add(this.panel1);
- this.Margin = new System.Windows.Forms.Padding(0);
- this.Name = "ShortKeys";
- this.Size = new System.Drawing.Size(623, 398);
- this.panel1.ResumeLayout(false);
- this.groupBox3.ResumeLayout(false);
- this.groupBox3.PerformLayout();
- this.groupBox4.ResumeLayout(false);
- this.groupBox4.PerformLayout();
- this.groupBox5.ResumeLayout(false);
- this.groupBox5.PerformLayout();
- this.groupBox7.ResumeLayout(false);
- this.ResumeLayout(false);
- }
- private void textBox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
- {
- if (!setHotKey)
- {
- setHotKey = true;
- this.textBox1.Text = "";
- this.hotKeys.Clear();
- }
- string keyString = e.KeyCode.ToString();
- if (keyString.Equals("ControlKey"))
- {
- keyString = "Control";
- }
- if (keyString.Equals("ShiftKey"))
- {
- keyString = "Shift";
- }
- if (keyString.Equals("Menu"))
- {
- keyString = "Alt";
- }
- if (setHotKey && !keyString.Equals("") && this.hotKeys.IndexOf(keyString) == -1)
- {
- this.hotKeys.Add(keyString);
- if (this.textBox1.Text.Equals(""))
- {
- this.textBox1.Text = keyString;
- }
- else
- {
- this.textBox1.Text += " + " + keyString;
- }
- }
- this.button8.Enabled = !this.textBox1.Text.Equals("");
- }
- /// <summary>
- /// 自定义绘制
- /// 参考https://www.cnblogs.com/JiYF/p/6693503.html
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void treeViewRight_DrawNode(object sender, DrawTreeNodeEventArgs e)
- {
- /**用默认颜色
- e.DrawDefault = true;
- return;
- **/
- //以下是自定义颜色
- if ((e.State & TreeNodeStates.Selected) != 0)
- {
- //演示为蓝(绿)底白字
- e.Graphics.FillRectangle(SystemBrushes.Highlight/*Brushes.Green*/, e.Node.Bounds);
- Font nodeFont = e.Node.NodeFont;
- if (nodeFont == null) nodeFont = ((TreeView)sender).Font;
- e.Graphics.DrawString(e.Node.Text, nodeFont, Brushes.White, Rectangle.Inflate(e.Bounds, 2, 0));
- }
- else
- {
- e.DrawDefault = true;
- }
- if ((e.State & TreeNodeStates.Focused) != 0)
- {
- using (Pen focusPen = new Pen(Color.Black))
- {
- focusPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
- Rectangle focusBounds = e.Node.Bounds;
- focusBounds.Size = new Size(focusBounds.Width - 1,
- focusBounds.Height - 1);
- e.Graphics.DrawRectangle(focusPen, focusBounds);
- }
- }
- }
- /// <summary>
- /// 设置
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void Button8_Click(object sender, EventArgs e)
- {
- try
- {
- //throw new NotImplementedException();
- TreeNode node = this.treeViewRight.SelectedNode;
- if (node != null)
- {
- //判断快捷键是否已经被使用
- HotkeyModel.Item isExsit = Startup.instance.hotkeyModel.items.Find(m => m.HotKeys.Equals(this.textBox1.Text));
- if(isExsit != null)
- {
- MessageBox.Show(PdnResources.GetString("Menu.Theshortcutkeysarealreadyiuse.text"));
- return;
- }
- int menuId = (int)this.treeViewRight.SelectedNode.Tag;
- string desc = this.treeViewRight.SelectedNode.Name;
- string name = this.treeViewRight.SelectedNode.Text;
-
- //设置快捷键
- ToolStripItem[] menu = this.appWorkspace.ToolBar.MainMenu.Items.Find(desc, true);
- if (menu != null && menu.Length > 0)
- {
- ((PdnMenuItem)menu[0]).resetShortcutKeys(this.textBox1.Text);
- }
- SaveShortcutKeys();
- //处理界面数据
- HotkeyModel.Item item = Startup.instance.hotkeyModel.items.Find(m => m.MenuId == menuId);
- if (item != null)
- {
- foreach (ListViewItem item1 in listView2.Items)
- {
- if (item1.SubItems[2].Text.Equals(item.HotKeys))
- {
- item1.SubItems[2].Text = this.textBox1.Text;
- break;
- }
- }
- item.HotKeys = this.textBox1.Text;
- }
- else
- {
- HotkeyModel.Item item1 = new HotkeyModel.Item();
- item1.MenuId = menuId;
- item1.MenuName = name;
- item1.Description = desc;
- item1.HotKeys = this.textBox1.Text;
- Startup.instance.hotkeyModel.items.Add(item1);
- this.hotkeyModel = Startup.instance.hotkeyModel;
- SaveShortcutKeys();
- var lv = new ListViewItem();
- lv.Tag = this.textBox1.Text;
- lv.Text = "1";
- lv.SubItems.Add(name);
- lv.SubItems.Add(this.textBox1.Text);
- lv.SubItems.Add("");
- listView2.Items.Add(lv);
- }
- }
- }
- catch (Exception)
- {
- MessageBox.Show(PdnResources.GetString("Menu.conformtotherulespleasecheck.text")+"!");
- }
- }
- private void ListView2_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
- {
- //throw new NotImplementedException();
- listView2.FullRowSelect = true;
- if (this.listView2.SelectedItems.Count > 0)
- {
- foreach (ListViewItem item in listView2.Items)
- {
- if (item.Selected)
- {
- this.label1.Text = item.Tag as string;
- break;
- }
- }
- }
- }
- #endregion
- /// <summary>
- /// 按键抬起事件,需判断是否合法
- /// 快捷键必须包含ctrl或alt;或back、delete、esc、F*
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void textBox1_KeyUp(object sender, KeyEventArgs e)
- {
- setHotKey = false;
- //检测合法性
- //e.Handled = true;
- e.SuppressKeyPress = true;
- //检测是否被占用
- HotkeyModel.Item item = Startup.instance.hotkeyModel.items.Find(m => m.HotKeys.Equals(this.textBox1.Text));
- if (item != null)
- {
- this.label2.Text = item.MenuName;
- this.button8.Enabled = false;
- }
- else
- {
- this.label2.Text = PdnResources.GetString("Menu.Nofunctionaluse.text");
- List<List<Keys>> keysAll = new List<List<Keys>>()
- {
- new List<Keys>() { Keys.Alt, Keys.D0 },
- new List<Keys>() { Keys.Alt, Keys.D1},
- new List<Keys>() { Keys.Alt, Keys.D2},
- new List<Keys>() { Keys.Alt, Keys.D3},
- new List<Keys>() { Keys.Alt, Keys.D4},
- new List<Keys>() { Keys.Alt, Keys.D5},
- new List<Keys>() { Keys.Alt, Keys.D6},
- new List<Keys>() { Keys.Alt, Keys.D7},
- new List<Keys>() { Keys.Alt, Keys.D8},
- new List<Keys>() { Keys.Alt, Keys.D9},
- new List<Keys>() { Keys.Alt, Keys.Back},
- new List<Keys>() { Keys.Alt, Keys.Down},
- new List<Keys>() { Keys.Alt, Keys.F1},
- new List<Keys>() { Keys.Alt, Keys.F10},
- new List<Keys>() { Keys.Alt, Keys.F11},
- new List<Keys>() { Keys.Alt, Keys.F12},
- new List<Keys>() { Keys.Alt, Keys.F2},
- new List<Keys>() { Keys.Alt, Keys.F3},
- new List<Keys>() { Keys.Alt, Keys.F4},
- new List<Keys>() { Keys.Alt, Keys.F5},
- new List<Keys>() { Keys.Alt, Keys.F6},
- new List<Keys>() { Keys.Alt, Keys.F7},
- new List<Keys>() { Keys.Alt, Keys.F8},
- new List<Keys>() { Keys.Alt, Keys.F9},
- new List<Keys>() { Keys.Alt, Keys.Left},
- new List<Keys>() { Keys.Alt, Keys.Right},
- new List<Keys>() { Keys.Alt, Keys.Up},
- new List<Keys>() { Keys.Control, Keys.D0},
- new List<Keys>() { Keys.Control, Keys.D1},
- new List<Keys>() { Keys.Control, Keys.D2},
- new List<Keys>() { Keys.Control, Keys.D3},
- new List<Keys>() { Keys.Control, Keys.D4},
- new List<Keys>() { Keys.Control, Keys.D5},
- new List<Keys>() { Keys.Control, Keys.D6},
- new List<Keys>() { Keys.Control, Keys.D7},
- new List<Keys>() { Keys.Control, Keys.D8},
- new List<Keys>() { Keys.Control, Keys.D9},
- new List<Keys>() { Keys.Control, Keys.A},
- new List<Keys>() { Keys.Control, Keys.B},
- new List<Keys>() { Keys.Control, Keys.C},
- new List<Keys>() { Keys.Control, Keys.D},
- new List<Keys>() { Keys.Control, Keys.Delete},
- new List<Keys>() { Keys.Control, Keys.E},
- new List<Keys>() { Keys.Control, Keys.F},
- new List<Keys>() { Keys.Control, Keys.F1},
- new List<Keys>() { Keys.Control, Keys.F10},
- new List<Keys>() { Keys.Control, Keys.F11},
- new List<Keys>() { Keys.Control, Keys.F12},
- new List<Keys>() { Keys.Control, Keys.F2},
- new List<Keys>() { Keys.Control, Keys.F3},
- new List<Keys>() { Keys.Control, Keys.F4},
- new List<Keys>() { Keys.Control, Keys.F5},
- new List<Keys>() { Keys.Control, Keys.F6},
- new List<Keys>() { Keys.Control, Keys.F7},
- new List<Keys>() { Keys.Control, Keys.F8},
- new List<Keys>() { Keys.Control, Keys.F9},
- new List<Keys>() { Keys.Control, Keys.G},
- new List<Keys>() { Keys.Control, Keys.H},
- new List<Keys>() { Keys.Control, Keys.I},
- new List<Keys>() { Keys.Control, Keys.Insert},
- new List<Keys>() { Keys.Control, Keys.J},
- new List<Keys>() { Keys.Control, Keys.K},
- new List<Keys>() { Keys.Control, Keys.L},
- new List<Keys>() { Keys.Control, Keys.M},
- new List<Keys>() { Keys.Control, Keys.N},
- new List<Keys>() { Keys.Control, Keys.O},
- new List<Keys>() { Keys.Control, Keys.P},
- new List<Keys>() { Keys.Control, Keys.Q},
- new List<Keys>() { Keys.Control, Keys.R},
- new List<Keys>() { Keys.Control, Keys.S},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.D0},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.D1},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.D2},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.D3},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.D4},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.D5},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.D6},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.D7},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.D8},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.D9},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.A},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.B},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.C},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.D},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.E},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.F},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.F1},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.F10},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.F11},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.F12},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.F2},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.F3},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.F4},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.F5},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.F6},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.F7},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.F8},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.F9},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.G},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.H},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.I},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.J},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.K},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.L},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.M},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.N},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.O},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.P},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.Q},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.R},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.S},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.T},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.U},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.V},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.W},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.X},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.Y},
- new List<Keys>() { Keys.Control, Keys.Shift, Keys.Z},
- new List<Keys>() { Keys.Control, Keys.T},
- new List<Keys>() { Keys.Control, Keys.U},
- new List<Keys>() { Keys.Control, Keys.V},
- new List<Keys>() { Keys.Control, Keys.W},
- new List<Keys>() { Keys.Control, Keys.X},
- new List<Keys>() { Keys.Control, Keys.Y},
- new List<Keys>() { Keys.Control, Keys.Z},
- new List<Keys>() { Keys.Delete},
- new List<Keys>() { Keys.F1},
- new List<Keys>() { Keys.F10},
- new List<Keys>() { Keys.F11},
- new List<Keys>() { Keys.F12},
- new List<Keys>() { Keys.F2},
- new List<Keys>() { Keys.F3},
- new List<Keys>() { Keys.F4},
- new List<Keys>() { Keys.F5},
- new List<Keys>() { Keys.F6},
- new List<Keys>() { Keys.F7},
- new List<Keys>() { Keys.F8},
- new List<Keys>() { Keys.F9},
- new List<Keys>() { Keys.Insert},
- new List<Keys>() { Keys.None},
- new List<Keys>() { Keys.Shift | Keys.Delete},
- new List<Keys>() { Keys.Shift | Keys.F1},
- new List<Keys>() { Keys.Shift | Keys.F10},
- new List<Keys>() { Keys.Shift | Keys.F11},
- new List<Keys>() { Keys.Shift | Keys.F12},
- new List<Keys>() { Keys.Shift | Keys.F2},
- new List<Keys>() { Keys.Shift | Keys.F3},
- new List<Keys>() { Keys.Shift | Keys.F4},
- new List<Keys>() { Keys.Shift | Keys.F5},
- new List<Keys>() { Keys.Shift | Keys.F6},
- new List<Keys>() { Keys.Shift | Keys.F7},
- new List<Keys>() { Keys.Shift | Keys.F8},
- new List<Keys>() { Keys.Shift | Keys.F9},
- new List<Keys>() { Keys.Shift | Keys.Insert}
- };
- string itemHotKeys = this.textBox1.Text;
- List<List<Keys>> keysFound = new List<List<Keys>>();
- if (itemHotKeys != null && !itemHotKeys.Equals(""))
- {
- string[] keys = itemHotKeys.Trim().Split('+');
- Keys Key = Keys.None;
- //寻找匹配的按键组合
- int keyIndex = 0;
- foreach (string key in keys)
- {
- if (Key == Keys.None)
- {
- Key = (Keys)(Enum.Parse(typeof(Keys), key.Trim()));
- //寻找可能匹配的按键组合
- foreach (var itemList in keysAll)
- {
- if (itemList.Contains(Key) && itemList.IndexOf(Key) == keyIndex && itemList.Count == keys.Length)
- keysFound.Add(itemList);
- }
- }
- else
- {
- Key = (Keys)(Enum.Parse(typeof(Keys), key.Trim()));
- //删除不匹配的按键组合
- for (int i = keysFound.Count - 1; i >= 0 ; i--)
- {
- var itemList = keysFound[i];
- if (!itemList.Contains(Key) || itemList.IndexOf(Key) != keyIndex)
- keysFound.RemoveAt(i);
- }
- }
- keyIndex++;
- }
- //没有找到匹配的按键组合
- if (keysFound.Count != 1)
- {
- this.textBox1.Text = "";
- }
- }
- this.button8.Enabled = !this.textBox1.Text.Equals("");
- }
- }
- /// <summary>
- /// 维护快捷键的textbox的按键按下事件
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void textBox1_KeyDown(object sender, KeyEventArgs e)
- {
- if (!setHotKey)
- {
- setHotKey = true;
- this.textBox1.Text = "";
- this.hotKeys.Clear();
- }
- string keyString = e.KeyCode.ToString();
- if (keyString.Equals("ControlKey"))
- {
- keyString = "Control";
- }
- if (keyString.Equals("ShiftKey"))
- {
- keyString = "Shift";
- }
- if (keyString.Equals("Menu"))
- {
- keyString = "Alt";
- }
- if (setHotKey && !keyString.Equals("") && this.hotKeys.IndexOf(keyString) == -1)
- {
- this.hotKeys.Add(keyString);
- if (this.textBox1.Text.Equals(""))
- {
- this.textBox1.Text = keyString;
- }
- else
- {
- this.textBox1.Text += " + " + keyString;
- }
- }
- this.button8.Enabled = !this.textBox1.Text.Equals("");
- }
- private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
- {
- int menuId = (e.Node.Tag != null) ? (int)(e.Node.Tag) : 0;
- if (menuId > 0)
- {
- if (Startup.instance.hotkeyModel != null
- && Startup.instance.hotkeyModel.items != null
- && Startup.instance.hotkeyModel.items.Count > 0)
- {
- HotkeyModel.Item item = Startup.instance.hotkeyModel.items.Find(m => m.MenuId == menuId);
- if (item != null)
- {
- this.label1.Text = item.HotKeys;
- }
- else
- {
- this.label1.Text = PdnResources.GetString("Menu.arenotmaintained.text");
- }
- }
- }
- }
- /// <summary>
- /// 设置快捷键
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void button8_MouseClick(object sender, MouseEventArgs e)
- {
- TreeNode node = this.treeViewRight.SelectedNode;
- if (node != null)
- {
- int menuId = (int)this.treeViewRight.SelectedNode.Tag;
- string desc = this.treeViewRight.SelectedNode.Name;
- string name = this.treeViewRight.SelectedNode.Text;
- HotkeyModel.Item item = Startup.instance.hotkeyModel.items.Find(m => m.MenuId == menuId);
- if (item != null)
- {
- item.HotKeys = this.textBox1.Text;
- }
- else
- {
- HotkeyModel.Item item1 = new HotkeyModel.Item();
- item1.MenuId = menuId;
- item1.MenuName = name;
- item1.Description = desc;
- item1.HotKeys = this.textBox1.Text;
- Startup.instance.hotkeyModel.items.Add(item1);
- }
- var lv = new ListViewItem();
- lv.Text = "1";
- lv.SubItems.Add(name);
- lv.SubItems.Add(this.textBox1.Text);
- lv.SubItems.Add("");
- listView2.Items.Add(lv);
- this.hotkeyModel = Startup.instance.hotkeyModel;
- SaveShortcutKeys();
- }
- }
- /// <summary>
- /// 保存快捷键
- /// </summary>
- private void SaveShortcutKeys()
- {
- string hotkeyModelXml = XmlSerializeHelper.XmlSerialize<HotkeyModel>(hotkeyModel);
- string filePath = Application.StartupPath + "\\Config\\" + Startup.instance.SettingPrefix + "\\Hotkey.xml";
- if (!FileOperationHelper.WriteStringToFile(hotkeyModelXml, filePath, FileMode.Create))
- {
- MessageBox.Show(PdnResources.GetString("Menu.Failedtosaveshortcutkeyinformation.text"));
- }
- }
- /// <summary>
- /// 删除快捷键
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void button7_Click(object sender, EventArgs e)
- {
- //TreeNode node = this.treeViewRight.SelectedNode;
- if (!this.label1.Text.Equals(PdnResources.GetString("Menu.arenotmaintained.text")) && !this.label1.Text.Equals(""))
- {
- HotkeyModel.Item item = Startup.instance.hotkeyModel.items.Find(m => m.HotKeys.Equals(this.label1.Text));
- if (item == null)
- return;
- if (MessageBox.Show(PdnResources.GetString("Menu.suretodeletethesho.text")+"?", PdnResources.GetString("Menu.suredeletit.Text"), MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1) == DialogResult.OK)
- {
- if (item != null && item.HotKeys == this.label1.Text)
- {
- foreach (ListViewItem item22 in listView2.Items)
- {
- if (item22.Tag.ToString().Equals(item.HotKeys))
- {
- listView2.Items.Remove(item22);
- break;
- }
- }
- Startup.instance.hotkeyModel.items.Remove(item);
- ToolStripItem[] menu = this.appWorkspace.ToolBar.MainMenu.Items.Find(item.Description, true);
- if (menu != null && menu.Length > 0)
- {
- ((PdnMenuItem)menu[0]).resetShortcutKeys("");
- }
- SaveShortcutKeys();
- this.label1.Text = PdnResources.GetString("Menu.arenotmaintained.text");
- return;
- }
- }
- }
- //<<- //#18266
- //TreeNode node = this.treeViewRight.SelectedNode;
- //if (node != null)
- //{
- // if (MessageBox.Show("确认删除快捷键吗,删除后不可恢复?", "确定", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1) == DialogResult.OK)
- // {
- // int menuId = (int)this.treeViewRight.SelectedNode.Tag;
- // HotkeyModel.Item item = Startup.instance.hotkeyModel.items.Find(m => m.MenuId == menuId);
- // if (item != null && item.HotKeys == this.label1.Text)
- // {
- // foreach (ListViewItem item22 in listView2.Items)
- // {
- // if (item22.Tag.ToString().Equals(item.HotKeys))
- // {
- // listView2.Items.Remove(item22);
- // break;
- // }
- // }
- // Startup.instance.hotkeyModel.items.Remove(item);
- // ToolStripItem[] menu = this.appWorkspace.ToolBar.MainMenu.Items.Find(item.Description, true);
- // if (menu != null && menu.Length > 0)
- // {
- // ((PdnMenuItem)menu[0]).resetShortcutKeys("");
- // }
- // SaveShortcutKeys();
- // this.label1.Text = "暂未维护快捷键";
- // return;
- // }
- // }
- //}
- //if (this.listView2.SelectedItems.Count > 0)
- //{
- // foreach (ListViewItem item1 in listView2.SelectedItems)
- // {
- // HotkeyModel.Item item = Startup.instance.hotkeyModel.items.Find(m => m.HotKeys == item1.Tag);
- // if (item != null)
- // {
- // listView2.Items.Remove(item1);
- // Startup.instance.hotkeyModel.items.Remove(item);
- // ToolStripItem[] menu = this.appWorkspace.ToolBar.MainMenu.Items.Find(item.Description, true);
- // if (menu != null && menu.Length > 0)
- // {
- // ((PdnMenuItem)menu[0]).resetShortcutKeys("");
- // }
- // SaveShortcutKeys();
- // this.label1.Text = "暂未维护快捷键";
- // break;
- // }
- // }
- //}
- }
- /// <summary>
- /// 导出配置
- /// </summary>
- /// <returns></returns>
- public void ExportToolbarXml()
- {
- using (SaveFileDialog saveFileDialog = new SaveFileDialog())
- {
- saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
- saveFileDialog.Filter = "Xml(*.xml)|*.xml";
- saveFileDialog.DefaultExt = "xml";
- saveFileDialog.FilterIndex = 1;
- saveFileDialog.CheckFileExists = false;
- saveFileDialog.AddExtension = true;
- saveFileDialog.FileName = "Hotkey";
- if (saveFileDialog.ShowDialog() == DialogResult.OK)
- {
- string filePath = saveFileDialog.FileName;
- string toolbarXml = XmlSerializeHelper.XmlSerialize<HotkeyModel>(Startup.instance.hotkeyModel);
- if (FileOperationHelper.WriteStringToFile(toolbarXml, filePath, FileMode.Create))
- MessageBox.Show(PdnResources.GetString("Menu.Theshortcutkeysuccessfully.text"));
- else
- MessageBox.Show(PdnResources.GetString("Menu.Theshortcutkeyconfigurationfilefailedtosave.text"));
- }
- }
- }
- /// <summary>
- /// 导入配置
- /// </summary>
- /// <returns></returns>
- public void ImportToolbarXml()
- {
- using (var openFileDialog = new OpenFileDialog { Filter = "*.xml|*.xml" })
- {
- if (openFileDialog.ShowDialog() == DialogResult.OK)
- {
- using (Stream shortKeyStream = System.IO.File.OpenRead(openFileDialog.FileName))
- {
- StreamReader sr = new StreamReader(shortKeyStream);
- string xmlNotes = sr.ReadToEnd();
- HotkeyModel toolbarXml = XmlSerializeHelper.DESerializer<HotkeyModel>(xmlNotes);
- if (toolbarXml.items.Count > 0)
- {
- try
- {
- Startup.instance.hotkeyModel = toolbarXml;
- this.hotkeyModel = toolbarXml;
- this.listView2.Items.Clear();
- this.listView2.BeginUpdate();
- foreach (HotkeyModel.Item s in toolbarXml.items)
- {
- var lv = new ListViewItem();
- lv.Tag = s.HotKeys;
- lv.Text = "1";
- lv.SubItems.Add(s.MenuName);
- lv.SubItems.Add(s.HotKeys);
- lv.SubItems.Add("");
- this.listView2.Items.Add(lv);
- ToolStripItem[] menu = this.appWorkspace.ToolBar.MainMenu.Items.Find(s.Description, true);
- if (menu != null && menu.Length > 0)
- {
- ((PdnMenuItem)menu[0]).resetShortcutKeys(s.HotKeys);
- }
- }
- this.listView2.EndUpdate();
- SaveShortcutKeys();
- MessageBox.Show(PdnResources.GetString("Menu.Shortcutprofileimportedsuccessfully.text"));
- }
- catch(Exception)
- {
- MessageBox.Show(PdnResources.GetString("Menu.Theshortcutconfigurationfileimportfailed.text"));
- }
- }
- else
- {
- MessageBox.Show(PdnResources.GetString("Menu.onfiguratiofilesavedconfiguratio.text"));
- }
- }
- }
- }
- }
- }
- }
|