completion_plain.py
62 lines
| 2.3 KiB
| text/x-python
|
PythonLexer
Matthias BUSSONNIER
|
r7393 | """a simple completer for the qtconsole""" | ||
#----------------------------------------------------------------------------- | ||||
# Copyright (c) 2012, IPython Development Team.$ | ||||
# | ||||
# Distributed under the terms of the Modified BSD License.$ | ||||
# | ||||
# The full license is in the file COPYING.txt, distributed with this software. | ||||
#------------------------------------------------------------------- | ||||
Matthias BUSSONNIER
|
r7389 | # System library imports | ||
from IPython.external.qt import QtCore, QtGui | ||||
Matthias BUSSONNIER
|
r7393 | import IPython.utils.text as text | ||
Matthias BUSSONNIER
|
r7389 | |||
class CompletionPlain(QtGui.QWidget): | ||||
""" A widget for tab completion, navigable by arrow keys """ | ||||
#-------------------------------------------------------------------------- | ||||
# 'QObject' interface | ||||
#-------------------------------------------------------------------------- | ||||
def __init__(self, console_widget): | ||||
""" Create a completion widget that is attached to the specified Qt | ||||
text edit widget. | ||||
""" | ||||
assert isinstance(console_widget._control, (QtGui.QTextEdit, QtGui.QPlainTextEdit)) | ||||
super(CompletionPlain, self).__init__() | ||||
self._text_edit = console_widget._control | ||||
self._console_widget = console_widget | ||||
self._text_edit.installEventFilter(self) | ||||
def eventFilter(self, obj, event): | ||||
""" Reimplemented to handle keyboard input and to auto-hide when the | ||||
text edit loses focus. | ||||
""" | ||||
if obj == self._text_edit: | ||||
etype = event.type() | ||||
Matthias BUSSONNIER
|
r7393 | if etype in( QtCore.QEvent.KeyPress, QtCore.QEvent.FocusOut ): | ||
self.cancel_completion() | ||||
Matthias BUSSONNIER
|
r7389 | |||
return super(CompletionPlain, self).eventFilter(obj, event) | ||||
#-------------------------------------------------------------------------- | ||||
# 'CompletionPlain' interface | ||||
#-------------------------------------------------------------------------- | ||||
Matthias BUSSONNIER
|
r7393 | def cancel_completion(self): | ||
Matthias BUSSONNIER
|
r7389 | """Cancel the completion, reseting internal variable, clearing buffer """ | ||
self._console_widget._clear_temporary_buffer() | ||||
def show_items(self, cursor, items): | ||||
""" Shows the completion widget with 'items' at the position specified | ||||
by 'cursor'. | ||||
""" | ||||
if not items : | ||||
return | ||||
Matthias BUSSONNIER
|
r7393 | self.cancel_completion() | ||
strng = text.columnize(items) | ||||
self._console_widget._fill_temporary_buffer(cursor, strng, html=False) | ||||