コード例 #1
0
 public static void Save(IEnumerable <KeyValuePair <string, AccelKey> > changedShortcuts)
 {
     AccelMap.Foreach(IntPtr.Zero,
                      (pointer, accelPath, key, modifierType, changed) => AccelMap.ChangeEntry(accelPath, 0, 0, true));
     AccelMap.Load(StoragePaths.KeyMapFile);
     foreach (KeyValuePair <string, AccelKey> shortcut in changedShortcuts)
     {
         AccelMap.ChangeEntry(shortcut.Key, (uint)shortcut.Value.Key, shortcut.Value.AccelMods, true);
     }
     AccelMap.Save(StoragePaths.KeyMapFile);
     Load();
 }
コード例 #2
0
        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();
        }