diff KeyBinding.cs @ 0:aca8706f4eec default tip

Initial commit
author Brad Greco <brad@bgreco.net>
date Mon, 13 Oct 2014 21:28:19 -0500
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/KeyBinding.cs	Mon Oct 13 21:28:19 2014 -0500
@@ -0,0 +1,115 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Windows.Forms;
+
+/*
+ * Copyright (c) 2014 Brad Greco <brad@bgreco.net>
+ */
+namespace QuickQR
+{
+    public class KeyBinding
+    {
+        const int MOD_ALT = 0x0001;
+        const int MOD_CONTROL = 0x0002;
+        const int MOD_SHIFT = 0x0004;
+        const int MOD_WIN = 0x0008;
+
+        public int key = 0;
+        public String keyChar;
+        public bool Ctrl = false;
+        public bool Alt = false;
+        public bool Shift = false;
+        public bool Win = false;
+
+        public KeyBinding()
+        {
+
+        }
+
+        public KeyBinding(String line)
+        {
+            strToInts(line);
+        }
+
+        public String toString()
+        {
+            if (key == 0)
+                return "(none)";
+            return comboString();
+        }
+
+        public String comboString()
+        {
+            if (key == 0)
+                return "";
+            String myCombo = "";
+            if (Ctrl)
+                myCombo = "+Ctrl";
+            if (Alt)
+                myCombo += "+Alt";
+            if (Shift)
+                myCombo += "+Shift";
+            if (Win)
+                myCombo += "+Win";
+            if (myCombo.Length == 0)
+                return "" + keyChar;
+            return myCombo.Substring(1) + "+" + keyChar;
+        }
+
+        private void strToInts(String s)
+        {
+            String[] words = s.Split('+');
+            foreach (String word in words)
+            {
+                String w = word.ToLower();
+                if (w == "ctrl")
+                    Ctrl = true;
+                else if (w == "alt")
+                    Alt = true;
+                else if (w == "shift")
+                    Shift = true;
+                else if (w == "win")
+                    Win = true;
+                else
+                {
+                    keyChar = word;
+                    try
+                    {
+                        key = (int)Enum.Parse(typeof(Keys), word, true);
+                        System.Diagnostics.Debug.WriteLine(keyChar + " " + key);
+                    }
+                    catch (ArgumentException)
+                    {
+                        key = 0;
+                        System.Diagnostics.Debug.WriteLine("Could not convert string to Key: " + word);
+                    }
+                }
+            }
+        }
+
+        public int sum()
+        {
+            int sum = 0;
+            if (Ctrl)
+                sum += MOD_CONTROL;
+            if (Alt)
+                sum += MOD_ALT;
+            if (Win)
+                sum += MOD_WIN;
+            if (Shift)
+                sum += MOD_SHIFT;
+            return sum;
+        }
+
+        public bool isValid()
+        {
+            return key > 0;
+        }
+
+        public int getID()
+        {
+            return 256 * sum() + key;
+        }
+    }
+}