示例#1
0
 internal void SetHotkey(PNHotKey hk)
 {
     PNHotKey phk = null;
     switch (tabHK.SelectedIndex)
     {
         case 0:
             phk = m_KeysMain.FirstOrDefault(h => h.MenuName == hk.MenuName);
             break;
         case 1:
             phk = m_KeysNote.FirstOrDefault(h => h.MenuName == hk.MenuName);
             break;
         case 2:
             phk = m_KeysEdit.FirstOrDefault(h => h.MenuName == hk.MenuName);
             break;
         case 3:
             phk = m_KeysGroups.FirstOrDefault(h => h.MenuName == hk.MenuName);
             break;
     }
     if (phk != null)
     {
         phk.CopyFrom(hk);
     }
 }
示例#2
0
 internal bool HotkeyExists(PNHotKey hk)
 {
     PNHotKey phk = null;
     switch (tabHK.SelectedIndex)
     {
         case 0:
             phk = m_KeysMain.FirstOrDefault(h => h.Shortcut == hk.Shortcut && h.ID != hk.ID);
             break;
         case 1:
             phk = m_KeysNote.FirstOrDefault(h => h.Shortcut == hk.Shortcut && h.ID != hk.ID);
             break;
         case 2:
             phk = m_KeysEdit.FirstOrDefault(h => h.Shortcut == hk.Shortcut && h.ID != hk.ID);
             break;
         case 3:
             phk = m_KeysGroups.FirstOrDefault(h => h.Shortcut == hk.Shortcut && h.ID != hk.ID);
             break;
     }
     if (phk != null)
     {
         return true;
     }
     return false;
 }
示例#3
0
        private void txtHotKey_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            try
            {

                var check = false;
                var modString = "";
                var keyString = "";
                var hk = new PNHotKey
                {
                    Modifiers = HotkeysStatic.GetModifiers(ref modString),
                    VK = HotkeysStatic.GetKey(ref keyString),
                    Shortcut = modString + keyString
                };

                if (hk.Modifiers == HotkeyModifiers.MOD_NONE)
                {
                    if (hk.VK >= HotkeysStatic.VK_F1 && hk.VK <= HotkeysStatic.VK_F24)
                    {
                        check = true;
                    }
                }
                else
                {
                    if (hk.VK > 0)
                    {
                        check = true;
                    }
                }
                if (!check)
                {
                    return;
                }
                string message, caption;
                if (PNStrings.RestrictedHotkeys.Contains(hk.Shortcut) ||
                    PNStatic.HotKeysEdit.Any(h => h.Modifiers == hk.Modifiers && h.VK == hk.VK) ||
                    PNStatic.HotKeysGroups.Any(h => h.Modifiers == hk.Modifiers && h.VK == hk.VK) ||
                    PNStatic.HotKeysNote.Any(h => h.Modifiers == hk.Modifiers && h.VK == hk.VK) ||
                    hk.Modifiers == HotkeyModifiers.MOD_SHIFT && (hk.VK >= HotkeysStatic.VK_A && hk.VK <= HotkeysStatic.VK_Z))
                {
                    message = hk.Shortcut + '\n';
                    message += PNLang.Instance.GetMessageText("hk_registered_1", "This combination of keys is already registered.");
                    message += '\n';
                    message += PNLang.Instance.GetMessageText("hk_registered_2", "Choose another one, please.");
                    caption = PNLang.Instance.GetCaptionText("restricted_keys", "Invalid keys");
                    PNMessageBox.Show(message, caption, MessageBoxButton.OK, MessageBoxImage.Exclamation);
                    e.Handled = true;
                    return;
                }
                if (HotkeysStatic.RegisterHK(_HwndSource.Handle, hk))
                {
                    HotkeysStatic.UnregisterHK(_HwndSource.Handle, hk.ID);
                }
                else
                {
                    message = hk.Shortcut + '\n';
                    message += PNLang.Instance.GetMessageText("hk_registered_1", "This combination of keys is already registered.");
                    message += '\n';
                    message += PNLang.Instance.GetMessageText("hk_registered_2", "Choose another one, please.");
                    caption = PNLang.Instance.GetCaptionText("restricted_keys", "Invalid keys");
                    PNMessageBox.Show(message, caption, MessageBoxButton.OK, MessageBoxImage.Exclamation);
                    e.Handled = true;
                    return;
                }
                PNTreeItem tvi = null;
                PNHotKey hkCurrent = null;
                switch (tabHK.SelectedIndex)
                {
                    case 0:
                        tvi = tvwHKMain.SelectedItem as PNTreeItem;
                        if (tvi == null) break;
                        hkCurrent = m_KeysMain.FirstOrDefault(h => h.MenuName == (string)tvi.Tag);
                        setButtonsEnabled(tvi);
                        break;
                    case 1:
                        tvi = tvwHKNote.SelectedItem as PNTreeItem;
                        if (tvi == null) break;
                        hkCurrent = m_KeysNote.FirstOrDefault(h => h.MenuName == (string)tvi.Tag);
                        setButtonsEnabled(tvi);
                        break;
                    case 2:
                        tvi = tvwHKEdit.SelectedItem as PNTreeItem;
                        if (tvi == null) break;
                        hkCurrent = m_KeysEdit.FirstOrDefault(h => h.MenuName == (string)tvi.Tag);
                        setButtonsEnabled(tvi);
                        break;
                    case 3:
                        tvi = tvwHKGroups.SelectedItem as PNTreeItem;
                        if (tvi == null) break;
                        hkCurrent = m_KeysGroups.FirstOrDefault(h => h.MenuName == (string)tvi.Tag);
                        setButtonsEnabled(tvi);
                        break;
                }
                if (hkCurrent != null)
                {
                    hkCurrent.Modifiers = hk.Modifiers;
                    hkCurrent.Shortcut = hk.Shortcut;
                    hkCurrent.VK = hk.VK;
                    setButtonsEnabled(tvi);
                    txtHotKey.Text = hk.Shortcut;
                    var defKey = new DefKey(hkCurrent.ID, hkCurrent.Type, hkCurrent.MenuName)
                    {
                        Icon =
                            isHotkeyInDatabase(
                                tabHK.SelectedIndex == 0
                                    ? PNStatic.HotKeysMain
                                    : (tabHK.SelectedIndex == 1
                                        ? PNStatic.HotKeysNote
                                        : (tabHK.SelectedIndex == 2 ? PNStatic.HotKeysEdit : PNStatic.HotKeysGroups)),
                                hk)
                                ? (BitmapSource)TryFindResource("check")
                                : null,
                        MenuRange =
                            tabHK.SelectedIndex == 0
                                ? tbpHKMain.Header.ToString()
                                : (tabHK.SelectedIndex == 1
                                    ? tbpHKNote.Header.ToString()
                                    : (tabHK.SelectedIndex == 2
                                        ? tbpHKEdit.Header.ToString()
                                        : tbpHKGroups.Header.ToString())),
                        MenuText =
                            tabHK.SelectedIndex < 3
                                ? PNLang.Instance.GetMenuText(
                                    tabHK.SelectedIndex == 0
                                        ? "main_menu"
                                        : (tabHK.SelectedIndex == 1 ? "note_menu" : "edit_menu"), hkCurrent.MenuName,
                                    hkCurrent.MenuName)
                                : hkCurrent.MenuName,
                        Shortcut = hkCurrent.Shortcut
                    };
                    if (tabHK.SelectedIndex == 3)
                    {
                        var arr = hkCurrent.MenuName.Split('_');
                        if (arr.Length == 2)
                        {
                            var gr = PNStatic.Groups.GetGroupByID(Convert.ToInt32(arr[0]));
                            if (gr != null)
                            {
                                var defCap = arr[1] == "show"
                                    ? PNLang.Instance.GetCaptionText("show_group", "Show group")
                                    : PNLang.Instance.GetCaptionText("hide_group", "Hide group");
                                defKey.MenuText = gr.Name + "/" + defCap;
                            }
                        }
                    }
                    //remove existing key
                    var existingKey = _DefKeys.FirstOrDefault(k => k.Id == defKey.Id);
                    if (existingKey != null)
                        _DefKeys.Remove(existingKey);
                    _DefKeys.Add(defKey);
                }
            }
            catch (Exception ex)
            {
                PNStatic.LogException(ex);
            }
        }
示例#4
0
 private bool isHotkeyInDatabase(List<PNHotKey> keys, PNHotKey hk)
 {
     return keys.Any(h => h.ID == hk.ID && h.Shortcut == hk.Shortcut && h.MenuName == hk.MenuName);
 }
示例#5
0
 private string createHotKeyDelete(PNHotKey hk)
 {
     try
     {
         var sb = new StringBuilder();
         sb.Append("UPDATE HOT_KEYS SET MODIFIERS = 0, VK = 0, SHORTCUT = ''");
         sb.Append(" WHERE MENU_NAME = '");
         sb.Append(hk.MenuName);
         sb.Append("' AND HK_TYPE = ");
         sb.Append((int)hk.Type);
         return sb.ToString();
     }
     catch (Exception ex)
     {
         PNStatic.LogException(ex);
         return "";
     }
 }
示例#6
0
 public object Clone()
 {
     var hk = new PNHotKey
     {
         _ID = _ID,
         _MenuName = _MenuName,
         _Modifiers = _Modifiers,
         _Shortcut = _Shortcut,
         _vk = _vk,
         _Type = _Type
     };
     return hk;
 }
示例#7
0
 public bool Equals(PNHotKey hk)
 {
     if ((object)hk == null)
         return false;
     return (_vk == hk._vk
         && _Shortcut == hk._Shortcut
         && _Modifiers == hk._Modifiers
         && _MenuName == hk._MenuName
         && _ID == hk._ID
         && _Type == hk._Type);
 }
示例#8
0
 internal void CopyFrom(PNHotKey hk)
 {
     _Modifiers = hk.Modifiers;
     _Shortcut = hk._Shortcut;
     _vk = hk._vk;
 }
示例#9
0
 internal static Keys GetShortcut(PNHotKey hk)
 {
     var keys = Keys.None;
     if ((hk.Modifiers & HotkeyModifiers.MOD_CONTROL) > 0)
         keys |= Keys.Control;
     if ((hk.Modifiers & HotkeyModifiers.MOD_ALT) > 0)
         keys |= Keys.Menu;
     if ((hk.Modifiers & HotkeyModifiers.MOD_SHIFT) > 0)
         keys |= Keys.Shift;
     if ((hk.Modifiers & HotkeyModifiers.MOD_WIN) > 0)
         keys |= Keys.LWin;
     switch (hk.VK)
     {
         case VK_0:
             keys |= Keys.D0;
             break;
         case VK_1:
             keys |= Keys.D1;
             break;
         case VK_2:
             keys |= Keys.D2;
             break;
         case VK_3:
             keys |= Keys.D3;
             break;
         case VK_4:
             keys |= Keys.D4;
             break;
         case VK_5:
             keys |= Keys.D5;
             break;
         case VK_6:
             keys |= Keys.D6;
             break;
         case VK_7:
             keys |= Keys.D7;
             break;
         case VK_8:
             keys |= Keys.D8;
             break;
         case VK_9:
             keys |= Keys.D9;
             break;
         case VK_F1:
             keys |= Keys.F1;
             break;
         case VK_F2:
             keys |= Keys.F2;
             break;
         case VK_F3:
             keys |= Keys.F3;
             break;
         case VK_F4:
             keys |= Keys.F4;
             break;
         case VK_F5:
             keys |= Keys.F5;
             break;
         case VK_F6:
             keys |= Keys.F6;
             break;
         case VK_F7:
             keys |= Keys.F7;
             break;
         case VK_F8:
             keys |= Keys.F8;
             break;
         case VK_F9:
             keys |= Keys.F9;
             break;
         case VK_F10:
             keys |= Keys.F10;
             break;
         case VK_F11:
             keys |= Keys.F11;
             break;
         case VK_F12:
             keys |= Keys.F12;
             break;
         case VK_F13:
             keys |= Keys.F13;
             break;
         case VK_F14:
             keys |= Keys.F14;
             break;
         case VK_F15:
             keys |= Keys.F15;
             break;
         case VK_F16:
             keys |= Keys.F16;
             break;
         case VK_F17:
             keys |= Keys.F17;
             break;
         case VK_F18:
             keys |= Keys.F18;
             break;
         case VK_F19:
             keys |= Keys.F19;
             break;
         case VK_F20:
             keys |= Keys.F20;
             break;
         case VK_F21:
             keys |= Keys.F21;
             break;
         case VK_F22:
             keys |= Keys.F22;
             break;
         case VK_F23:
             keys |= Keys.F23;
             break;
         case VK_F24:
             keys |= Keys.F24;
             break;
         case VK_NUMPAD0:
             keys |= Keys.NumPad0;
             break;
         case VK_NUMPAD1:
             keys |= Keys.NumPad1;
             break;
         case VK_NUMPAD2:
             keys |= Keys.NumPad2;
             break;
         case VK_NUMPAD3:
             keys |= Keys.NumPad3;
             break;
         case VK_NUMPAD4:
             keys |= Keys.NumPad4;
             break;
         case VK_NUMPAD5:
             keys |= Keys.NumPad5;
             break;
         case VK_NUMPAD6:
             keys |= Keys.NumPad6;
             break;
         case VK_NUMPAD7:
             keys |= Keys.NumPad7;
             break;
         case VK_NUMPAD8:
             keys |= Keys.NumPad8;
             break;
         case VK_NUMPAD9:
             keys |= Keys.NumPad9;
             break;
         case VK_A:
             keys |= Keys.A;
             break;
         case VK_B:
             keys |= Keys.B;
             break;
         case VK_C:
             keys |= Keys.C;
             break;
         case VK_D:
             keys |= Keys.D;
             break;
         case VK_E:
             keys |= Keys.E;
             break;
         case VK_F:
             keys |= Keys.F;
             break;
         case VK_G:
             keys |= Keys.G;
             break;
         case VK_H:
             keys |= Keys.H;
             break;
         case VK_I:
             keys |= Keys.I;
             break;
         case VK_J:
             keys |= Keys.J;
             break;
         case VK_K:
             keys |= Keys.K;
             break;
         case VK_L:
             keys |= Keys.L;
             break;
         case VK_M:
             keys |= Keys.M;
             break;
         case VK_N:
             keys |= Keys.N;
             break;
         case VK_O:
             keys |= Keys.O;
             break;
         case VK_P:
             keys |= Keys.P;
             break;
         case VK_Q:
             keys |= Keys.Q;
             break;
         case VK_R:
             keys |= Keys.R;
             break;
         case VK_S:
             keys |= Keys.S;
             break;
         case VK_T:
             keys |= Keys.T;
             break;
         case VK_U:
             keys |= Keys.U;
             break;
         case VK_V:
             keys |= Keys.V;
             break;
         case VK_W:
             keys |= Keys.W;
             break;
         case VK_X:
             keys |= Keys.X;
             break;
         case VK_Y:
             keys |= Keys.Y;
             break;
         case VK_Z:
             keys |= Keys.Z;
             break;
         case VK_ADD:
             keys |= Keys.Add;
             break;
         case VK_BACK:
             keys = Keys.Back;
             break;
         case VK_DELETE:
             keys = Keys.Delete;
             break;
         case VK_DIVIDE:
             keys = Keys.Divide;
             break;
         case VK_DOWN:
             keys = Keys.Down;
             break;
         case VK_END:
             keys = Keys.End;
             break;
         case VK_ESCAPE:
             keys = Keys.Escape;
             break;
         case VK_HOME:
             keys = Keys.Home;
             break;
         case VK_INSERT:
             keys = Keys.Insert;
             break;
         case VK_LEFT:
             keys = Keys.Left;
             break;
         case VK_MULTIPLY:
             keys = Keys.Multiply;
             break;
         case VK_NEXT:
             keys = Keys.Next;
             break;
         case VK_OEM_1:
             keys = Keys.Oem1;
             break;
         case VK_OEM_2:
             keys = Keys.Oem2;
             break;
         case VK_OEM_3:
             keys = Keys.Oem3;
             break;
         case VK_OEM_4:
             keys = Keys.Oem4;
             break;
         case VK_OEM_5:
             keys = Keys.Oem5;
             break;
         case VK_OEM_6:
             keys = Keys.Oem6;
             break;
         case VK_OEM_7:
             keys = Keys.Oem7;
             break;
         case VK_OEM_8:
             keys = Keys.Oem8;
             break;
         case VK_OEM_COMMA:
             keys = Keys.Oemcomma;
             break;
         case VK_OEM_MINUS:
             keys = Keys.OemMinus;
             break;
         case VK_OEM_PERIOD:
             keys = Keys.OemPeriod;
             break;
         case VK_OEM_PLUS:
             keys = Keys.Oemplus;
             break;
         case VK_PAUSE:
             keys = Keys.Pause;
             break;
         case VK_PRIOR:
             keys = Keys.Prior;
             break;
         case VK_RETURN:
             keys = Keys.Return;
             break;
         case VK_RIGHT:
             keys = Keys.Right;
             break;
         case VK_SCROLL:
             keys = Keys.Scroll;
             break;
         case VK_SPACE:
             keys = Keys.Space;
             break;
         case VK_SUBTRACT:
             keys = Keys.Subtract;
             break;
         case VK_TAB:
             keys = Keys.Tab;
             break;
         case VK_UP:
             keys = Keys.Up;
             break;
     }
     return keys;
 }
示例#10
0
 internal static bool RegisterHK(IntPtr hwnd, PNHotKey hk)
 {
     return RegisterHotKey(hwnd, hk.ID, (uint)hk.Modifiers, hk.VK);
 }