123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- """A simple completer for the qtconsole"""
- # Copyright (c) Jupyter Development Team.
- # Distributed under the terms of the Modified BSD License.
- from qtpy import QtCore, QtGui, QtWidgets
- import ipython_genutils.text as text
- class CompletionPlain(QtWidgets.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, (QtWidgets.QTextEdit, QtWidgets.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()
- if etype in( QtCore.QEvent.KeyPress, QtCore.QEvent.FocusOut ):
- self.cancel_completion()
- return super(CompletionPlain, self).eventFilter(obj, event)
- #--------------------------------------------------------------------------
- # 'CompletionPlain' interface
- #--------------------------------------------------------------------------
- def cancel_completion(self):
- """Cancel the completion, reseting internal variable, clearing buffer """
- self._console_widget._clear_temporary_buffer()
- def show_items(self, cursor, items, prefix_length=0):
- """ Shows the completion widget with 'items' at the position specified
- by 'cursor'.
- """
- if not items :
- return
- self.cancel_completion()
- strng = text.columnize(items)
- # Move cursor to start of the prefix to replace it
- # when a item is selected
- cursor.movePosition(QtGui.QTextCursor.Left, n=prefix_length)
- self._console_widget._fill_temporary_buffer(cursor, strng, html=False)
|