protected void btnOK_Clicked(object o, EventArgs args) { if (grid.EditedCell.IsValid && grid.EditedCell.Row < itemShortcuts.Count && !ShortcutColumnEvaluate(grid.EditedCell.Row, string.Empty)) { return; } BusinessDomain.QuickItems.Clear(); List <KeyValuePair <string, AccelKey> > changedShortcuts = new List <KeyValuePair <string, AccelKey> > (); foreach (ItemShortcut itemShortcut in itemShortcuts) { if (itemShortcut.ItemId < 0) { continue; } string accelPath = KeyShortcuts.GetAccelPath(itemShortcut.ItemId.ToString()); AccelMap.ChangeEntry(accelPath, (uint)itemShortcut.Shortcut.Key, KeyShortcuts.GetAllowedModifier(itemShortcut.Shortcut.AccelMods), true); if (itemShortcut.Shortcut.Key > 0) { string key = KeyShortcuts.KeyToString(itemShortcut.Shortcut.Key, itemShortcut.Shortcut.AccelMods); BusinessDomain.QuickItems.Add(key, itemShortcut.ItemName); } changedShortcuts.Add(new KeyValuePair <string, AccelKey> (accelPath, itemShortcut.Shortcut)); } KeyShortcuts.Save(changedShortcuts); dlgEditQuickItems.Respond(ResponseType.Ok); }
private static void RemoveQuickItem(string key) { string quickItem = BusinessDomain.QuickItems [key]; BusinessDomain.QuickItems.Remove(key); Item item = Item.GetByAny(quickItem); if (item != null) { AccelMap.ChangeEntry(KeyShortcuts.GetAccelPath(item.Id.ToString(CultureInfo.InvariantCulture)), (uint)Key.VoidSymbol, 0, true); } }
private static void RemoveQuickItem(string key, Dictionary <string, AccelKey> shortcuts) { string quickItem = BusinessDomain.QuickItems [key]; BusinessDomain.QuickItems.Remove(key); Item item = Item.GetByAny(quickItem); if (item != null) { shortcuts.Add(KeyShortcuts.GetAccelPath(item.Id.ToString(CultureInfo.InvariantCulture)), AccelKey.Zero); } }
private void ApplyShortcut(string menuItemName, AccelKey accelKey) { string accelPath = KeyShortcuts.GetAccelPath(menuItemName); changedShortcuts.Add(new KeyValuePair <string, AccelKey> (accelPath, new AccelKey(accelKey.Key, KeyShortcuts.GetAllowedModifier(accelKey.AccelMods), AccelFlags.Visible))); MenuItemWrapper menuItemWrapper = menu.FindMenuItem(menuItemName); if (menuItemWrapper == null) { return; } if (accelKey.Key != Key.VoidSymbol) { return; } AccelKey key = KeyShortcuts.LookupEntry(menuItemName); menuItemWrapper.Item.RemoveAccelerator(accelGroup, (uint)key.Key, key.AccelMods); }
protected void Clear_Clicked(object o, EventArgs args) { string title = Translator.GetString("Warning!"); string message = Translator.GetString("This action will reset all key shortcuts to their default values. Are you sure you want to continue?"); if (Message.ShowDialog(title, string.Empty, message, "Icons.Question32.png", MessageButtons.YesNo) != ResponseType.Yes) { return; } // Load the default key map string temp = Path.GetTempFileName(); File.WriteAllText(temp, DataHelper.GetDefaultKeyMap()); AccelMap.Load(temp); File.Delete(temp); // Get the key shortcuts in a dictionary Dictionary <string, AccelKey> shortcuts = new Dictionary <string, AccelKey> (); ResponseType choice = ResponseType.None; AccelMap.Foreach(IntPtr.Zero, (data, accelPath, accelKey, accelMods, changed) => { string key = KeyShortcuts.KeyToString((Key)accelKey, accelMods); string name = accelPath.Substring(accelPath.IndexOf('/') + 1); long itemId; if (long.TryParse(name, out itemId)) { return; } if (!BusinessDomain.QuickItems.ContainsKey(key) || (menu.FindMenuItem(name) == null && name != KeyShortcuts.CHOOSE_KEY && name != KeyShortcuts.HELP_KEY)) { return; } switch (choice) { case ResponseType.None: using (Message messageBox = GetInUseQuickItemMessage(key)) { messageBox.Buttons = MessageButtons.YesNo | MessageButtons.Cancel | MessageButtons.Remember; ResponseType responseType = messageBox.Run(); switch (responseType) { case ResponseType.Yes: RemoveQuickItem(key, shortcuts); if (messageBox.RememberChoice) { choice = responseType; } break; case ResponseType.No: shortcuts.Add(accelPath, AccelKey.Zero); if (messageBox.RememberChoice) { choice = responseType; } break; case ResponseType.DeleteEvent: case ResponseType.Cancel: choice = ResponseType.Cancel; break; } } break; case ResponseType.Yes: RemoveQuickItem(key, shortcuts); break; case ResponseType.No: shortcuts.Add(accelPath, AccelKey.Zero); break; } }); if (choice == ResponseType.Cancel) { LoadTreeView(); return; } File.Delete(StoragePaths.KeyMapFile); bool quickGoods = false; AccelMap.Foreach(IntPtr.Zero, (data, path, key, mods, changed) => { string wholeKey = KeyShortcuts.KeyToString((Key)key, mods); if (!BusinessDomain.QuickItems.ContainsKey(wholeKey)) { return; } AccelMap.ChangeEntry(path, key, KeyShortcuts.GetAllowedModifier(mods), true); quickGoods = true; }); if (quickGoods) { AccelMap.Save(StoragePaths.KeyMapFile); } AccelMap.Foreach(IntPtr.Zero, (data, accelPath, accelKey, accelMods, changed) => { if (!shortcuts.ContainsKey(accelPath)) { return; } AccelKey key = shortcuts [accelPath]; AccelMap.ChangeEntry(accelPath, (uint)key.Key, KeyShortcuts.GetAllowedModifier(key.AccelMods), true); }); foreach (ICustomKeyShortcut shortcut in KeyShortcuts.CustomKeyShortcuts) { AccelMap.ChangeEntry(KeyShortcuts.GetAccelPath(shortcut.Path), (uint)shortcut.DefaultKey, KeyShortcuts.GetAllowedModifier(shortcut.DefaultModifier), true); } LoadTreeView(); }