Initial Python 3 compatible code

This commit is contained in:
2019-06-06 11:52:23 -05:00
parent d441536f01
commit ef689d04fc
146 changed files with 589 additions and 246 deletions

View File

@@ -1,3 +1,3 @@
from main import KeyboardHandler, KeyboardHandlerError
#from wx_handler import WXKeyboardHandler
__all__ = ["KeyboardHandler", "KeyboardHandlerError", "WXKeyboardHandler", "WXPanelKeyboardHandler"]
from __future__ import absolute_import
from .main import KeyboardHandler, KeyboardHandlerError
__all__ = ["KeyboardHandler", "KeyboardHandlerError", ]

View File

@@ -1,7 +1,8 @@
from __future__ import absolute_import
import platform
if platform.system() == 'Linux':
from linux import LinuxKeyboardHandler as GlobalKeyboardHandler
elif platform.system() == 'Windows':
from wx_handler import WXKeyboardHandler as GlobalKeyboardHandler
elif platform.system() == 'Darwin':
from osx import OSXKeyboardHandler as GlobalKeyboardHandler
from .linux import LinuxKeyboardHandler as GlobalKeyboardHandler
else:
from .wx_handler import WXKeyboardHandler as GlobalKeyboardHandler
#elif platform.system() == 'Darwin':
#from osx import OSXKeyboardHandler as GlobalKeyboardHandler

View File

@@ -0,0 +1,128 @@
keys = {
'accept': 30,
'add': 107,
'apps': 93,
'attn': 246,
'back': 8,
'browser_back': 166,
'browser_forward': 167,
'cancel': 3,
'capital': 20,
'clear': 12,
'control': 17,
'convert': 28,
'crsel': 247,
'decimal': 110,
'delete': 46,
'divide': 111,
'down': 40,
'end': 35,
'ereof': 249,
'escape': 27,
'execute': 43,
'exsel': 248,
'f1': 112,
'f10': 121,
'f11': 122,
'f12': 123,
'f13': 124,
'f14': 125,
'f15': 126,
'f16': 127,
'f17': 128,
'f18': 129,
'f19': 130,
'f2': 113,
'f20': 131,
'f21': 132,
'f22': 133,
'f23': 134,
'f24': 135,
'f3': 114,
'f4': 115,
'f5': 116,
'f6': 117,
'f7': 118,
'f8': 119,
'f9': 120,
'final': 24,
'hangeul': 21,
'hangul': 21,
'hanja': 25,
'help': 47,
'home': 36,
'insert': 45,
'junja': 23,
'kana': 21,
'kanji': 25,
'lbutton': 1,
'lcontrol': 162,
'left': 37,
'lmenu': 164,
'lshift': 160,
'lwin': 91,
'mbutton': 4,
'media_next_track': 176,
'media_play_pause': 179,
'media_prev_track': 177,
'menu': 18,
'modechange': 31,
'multiply': 106,
'next': 34,
'noname': 252,
'nonconvert': 29,
'numlock': 144,
'numpad0': 96,
'numpad1': 97,
'numpad2': 98,
'numpad3': 99,
'numpad4': 100,
'numpad5': 101,
'numpad6': 102,
'numpad7': 103,
'numpad8': 104,
'numpad9': 105,
'oem_clear': 254,
'pa1': 253,
'pagedown': 34,
'pageup': 33,
'pause': 19,
'play': 250,
'print': 42,
'prior': 33,
'processkey': 229,
'rbutton': 2,
'rcontrol': 163,
'return': 13,
'right': 39,
'rmenu': 165,
'rshift': 161,
'rwin': 92,
'scroll': 145,
'select': 41,
'separator': 108,
'shift': 16,
'snapshot': 44,
'space': 32,
'subtract': 109,
'tab': 9,
'up': 38,
'volume_down': 174,
'volume_mute': 173,
'volume_up': 175,
'xbutton1': 5,
'xbutton2': 6,
'zoom': 251,
'/': 191,
';': 218,
'[': 219,
'\\': 220,
']': 221,
'\'': 222,
'=': 187,
'-': 189,
';': 186,
}
modifiers = {'alt': 1, 'control': 2, 'shift': 4, 'win': 8}

View File

@@ -18,17 +18,17 @@ class KeyboardHandler(object):
def register_key (self, key, function):
if key in self.active_keys:
raise KeyboardHandlerError, "Key %s is already registered to a function" % key
raise KeyboardHandlerError("Key %s is already registered to a function" % key)
if not callable(function):
raise TypeError, "Must provide a callable to be invoked upon keypress"
raise TypeError("Must provide a callable to be invoked upon keypress")
self.active_keys[key] = function
def unregister_key (self, key, function):
try:
if self.active_keys[key] != function:
raise KeyboardHandlerError, "key %s is not registered to that function" % key
raise KeyboardHandlerError("key %s is not registered to that function" % key)
except KeyError:
raise KeyboardHandlerError, "Key %s not currently registered"
raise KeyboardHandlerError("Key %s not currently registered" % key)
del(self.active_keys[key])
def unregister_all_keys(self):

View File

@@ -1,11 +1,14 @@
from __future__ import absolute_import
import functools
import logging
logger = logging.getLogger("keyboard_handler")
import wx
import platform
from main import KeyboardHandler
from .main import KeyboardHandler, KeyboardHandlerError
from . import key_constants
__all__ = ['WXKeyboardHandler', 'WXControlKeyboardHandler']
def call_after(func):
def wrapper(*args, **kwargs):
wx.CallAfter(func, *args, **kwargs)
@@ -34,6 +37,7 @@ class BaseWXKeyboardHandler(KeyboardHandler):
return (mods, keystroke[-1])
def keycode_from_key(self, key):
result = None
if key in self.replacement_mods:
result = self.replacement_mods[key]
elif key in self.replacement_keys:
@@ -42,33 +46,40 @@ class BaseWXKeyboardHandler(KeyboardHandler):
result -= 277
elif len(key) == 1:
result = ord(key.upper())
print "result: ", result
if result is None:
raise KeyboardHandlerError("Could not translate key %r into a valid keycode." % key)
return result
class WXKeyboardHandler(BaseWXKeyboardHandler):
#try:
if platform.system() == "Windows":
from windows import WindowsKeyboardHandler as keyboard_handler
elif platform.system() == "Linux":
from linux import LinuxKeyboardHandler as keyboard_handler
elif platform.system() == "Darwin":
from osx import OSXKeyboardHandler as keyboard_handler
class WXKeyboardHandler(keyboard_handler):
def __init__ (self, parent, *args, **kwargs):
super(WXKeyboardHandler, self).__init__(*args, **kwargs)
self.parent = parent
self.key_ids = {}
self.replacement_keys = key_constants.keys
self.replacement_mods = key_constants.modifiers
@call_after
def register_key(self, key, function):
super(WXKeyboardHandler, self).register_key(key, function)
key_id = wx.NewId()
parsed = self.parse_key(key)
self.parent.RegisterHotKey(key_id, *parsed)
res = self.parent.RegisterHotKey(key_id, *parsed)
if not res:
logger.warn("Failed to register hotkey: %s for function %r", key, function)
self.parent.Bind(wx.EVT_HOTKEY, lambda evt: self.process_key(evt, key_id), id=key_id)
self.key_ids[key] = key_id
return res
def parse_key (self, keystroke, separator="+"):
keystroke = str(keystroke) #We don't want unicode
keystroke = [self.keycode_from_key(i) for i in keystroke.split(separator)]
mods = 0
for i in keystroke[:-1]:
mods = mods | i #or everything together
return (mods, keystroke[-1])
@call_after
def unregister_key (self, key, function):