private List <ShortItem> LoadShortcutKeyFromFile(string savePath, ShortType sType) { if (!File.Exists(savePath)) { return(null); } List <ShortItem> itemList = new List <ShortItem> (); XmlDocument xml = new XmlDocument(); xml.Load(savePath); XmlNodeList xnlList = xml.SelectSingleNode("KeyData").ChildNodes; string tn = "", sn = "", blongto = ""; for (int i = 0; i < xnlList.Count; i++) { XmlElement xel = xnlList [i] as XmlElement; if (xel.GetAttribute("id") == (i + 1).ToString()) { ShortItem itemRes = new ShortItem(); foreach (XmlNode item in xel.ChildNodes) { if (item.Name.Equals("Path")) { tn = item.InnerText; } if (item.Name.Equals("ShortKeyName")) { sn = item.InnerText; } if (item.Name.Equals("BlongTo")) { blongto = item.InnerText; } } if (blongto.Equals(sType.ToString())) { itemRes.SetData(tn, sn, sType); if (!string.IsNullOrEmpty(sn) && sn.Length >= 2) { if (sn.Contains(ShortKeyCode.Command)) { itemRes.AIDCommand = true; } if (sn.Contains(ShortKeyCode.Shift)) { itemRes.AIDShift = true; } if (sn.Contains(ShortKeyCode.Control)) { itemRes.AIDCtrl = true; } } itemList.Add(itemRes); } } } return(itemList); }
private void ShowItem(ShortItem codeItem, List <ShortItem> list, bool isSystem = false) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Path:", GUILayout.Width(45)); if (isOldFirst) { codeItem.Path = EditorGUILayout.TextField(codeItem.Path, GUILayout.Width(200)); EditorGUILayout.LabelField("ShortcutName:", GUILayout.Width(85)); codeItem.ShortKey = EditorGUILayout.TextField(codeItem.ShortKey, GUILayout.Width(85)); if (!isSystem && GUILayout.Button("delete", GUILayout.Width(70), GUILayout.Height(20))) { if (list.Contains(codeItem)) { list.Remove(codeItem); } } } else { if (codeItem.BlongTo == ShortType.Extension) { codeItem.Path = EditorGUILayout.TextField(codeItem.Path, GUILayout.Width(200)); } else { EditorGUILayout.LabelField("", codeItem.Path, GUILayout.Width(200)); } GUILayout.Space(10); // EditorGUILayout.BeginToggleGroup("√", codeItem.EnableChange); EditorGUILayout.BeginHorizontal(); //辅助键 codeItem.AIDShift = EditorGUILayout.ToggleLeft("Shift", codeItem.AIDShift, GUILayout.Width(50)); codeItem.AIDCommand = EditorGUILayout.ToggleLeft("Command", codeItem.AIDCommand, GUILayout.Width(80)); codeItem.AIDCtrl = EditorGUILayout.ToggleLeft("Ctrl", codeItem.AIDCtrl, GUILayout.Width(50)); codeItem.AIDSingle = EditorGUILayout.ToggleLeft("Single", codeItem.AIDSingle, GUILayout.Width(70)); //热键 codeItem.KeySelectIndex = EditorGUILayout.Popup(codeItem.KeySelectIndex, popupKEYStr, GUILayout.Width(70)); //设置热键 codeItem.SetKey(ShortKeyCode.popupKEYDict[popupKEYStr[codeItem.KeySelectIndex]]); GUILayout.Space(10); if (!isSystem && GUILayout.Button("delete", GUILayout.Width(70), GUILayout.Height(20))) { if (list.Contains(codeItem)) { list.Remove(codeItem); } } EditorGUILayout.EndHorizontal(); // EditorGUILayout.EndToggleGroup(); } EditorGUILayout.EndHorizontal(); }
void OnGUI() { //绘制标题 GUILayout.Space(10); GUI.skin.label.fontSize = 24; GUI.skin.label.alignment = TextAnchor.MiddleCenter; GUILayout.Label("Shortcut Style"); GUI.skin.label.fontSize = 12; GUILayout.Space(10); isOldFirst = EditorGUILayout.Toggle("Old Version First", isOldFirst); //Show ShowList(); //button EditorGUILayout.BeginHorizontal(); m_SType = (ShortType)EditorGUILayout.EnumPopup(m_SType); if (GUILayout.Button("add")) { ski = new ShortItem("Editor1/Editor2/Editor3", "", m_SType); Debug.LogFormat("add {0} {1} {2} {3} ", ski.Path, ski.ShortKey, ski.MenuItemName, ski.FuncName); if (m_ShortKeyDict[m_SType] == null) { m_ShortKeyDict[m_SType] = new List <ShortItem>(); } m_ShortKeyDict[m_SType].Add(ski); } if (GUILayout.Button("save")) { mSkiList.Clear(); mSkiList = new List <ShortItem>(); foreach (ShortType st in m_ShortKeyDict.Keys) { if (st != ShortType.Extension) { mSkiList.AddRange(m_ShortKeyDict[st]); } } SaveShortcutKey2File(ShortcutSystemSavePath, mSkiList); SaveShortcutKey2EditorCode(ShortcutSystemPath, mSkiList); //save to script SaveShortcutKey2File(ShortcutSavePath, m_ShortKeyDict[ShortType.Extension]); SaveShortcutKey2EditorCode(ShortcutPath, m_ShortKeyDict[ShortType.Extension]); } EditorGUILayout.EndHorizontal(); GUILayout.Space(10); }
void Awake() { InitSystemData(); ski = new ShortItem(); mSkiList = new List <ShortItem>(); }