Source code for retype.console.console

from qt import pyqtSignal, Qt, QSizePolicy

from retype.ui import LineEdit
from retype.console import CommandService, HighlightingService


[docs]class Console(LineEdit): submitted = pyqtSignal(str)
[docs] def __init__(self, prompt, font_family=None, parent=None): super().__init__(parent) self.setAccessibleName("console") self.returnPressed.connect(self._handleReturnPressed) self.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) self.setMaximumHeight(200) self._font = self.font() self._font_family = self.font_family = font_family self._prompt = prompt
@property def prompt(self): return self._prompt @prompt.setter def prompt(self, value): self._prompt = value self.command_service.prompt = value @property def font_family(self): return self._font_family @font_family.setter def font_family(self, value): self._font_family = value self._font.setFamily(value) self.setFont(self._font)
[docs] def initServices(self, book_view, switchView, loadBook, customise, about): self.command_service = CommandService( self, book_view, switchView, loadBook, self._prompt, customise, about) self.highlighting_service = HighlightingService(self, book_view)
def _handleReturnPressed(self): self.submitted.emit(self.text())
[docs] def clear(self): self.setText('')
[docs] def keyPressEvent(self, e): if e.key() == Qt.Key.Key_Up: self.command_service.commandHistoryUp() if e.key() == Qt.Key.Key_Down: self.command_service.commandHistoryDown() super().keyPressEvent(e)
[docs] def transferFocus(self, e): """Like setFocus, except you can also pass a keyPress event from another widget. Only does so if no modifier keys (excluding Shift) are held.""" if e.modifiers() in [Qt.KeyboardModifier.NoModifier, Qt.KeyboardModifier.ShiftModifier]: self.setFocus() self.keyPressEvent(e)
[docs] def resizeEvent(self, e): height = self.size().height() if height > 10: px = int(0.8 * height - 5) self._font.setPixelSize(px) self.setFont(self._font) super().resizeEvent(e)