You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.1 KiB
51 lines
1.1 KiB
import importlib
|
|
import os
|
|
|
|
aliases = {
|
|
'qt4': 'qt',
|
|
'gtk2': 'gtk',
|
|
}
|
|
|
|
backends = [
|
|
'qt', 'qt4', 'qt5',
|
|
'gtk', 'gtk2', 'gtk3',
|
|
'tk',
|
|
'wx',
|
|
'pyglet', 'glut',
|
|
'osx',
|
|
'asyncio'
|
|
]
|
|
|
|
registered = {}
|
|
|
|
def register(name, inputhook):
|
|
"""Register the function *inputhook* as an event loop integration."""
|
|
registered[name] = inputhook
|
|
|
|
class UnknownBackend(KeyError):
|
|
def __init__(self, name):
|
|
self.name = name
|
|
|
|
def __str__(self):
|
|
return ("No event loop integration for {!r}. "
|
|
"Supported event loops are: {}").format(self.name,
|
|
', '.join(backends + sorted(registered)))
|
|
|
|
def get_inputhook_name_and_func(gui):
|
|
if gui in registered:
|
|
return gui, registered[gui]
|
|
|
|
if gui not in backends:
|
|
raise UnknownBackend(gui)
|
|
|
|
if gui in aliases:
|
|
return get_inputhook_name_and_func(aliases[gui])
|
|
|
|
gui_mod = gui
|
|
if gui == 'qt5':
|
|
os.environ['QT_API'] = 'pyqt5'
|
|
gui_mod = 'qt'
|
|
|
|
mod = importlib.import_module('IPython.terminal.pt_inputhooks.'+gui_mod)
|
|
return gui, mod.inputhook
|