Source code for bci_framework.framework.editor.completer

"""
=============
Autocompleter
=============

Auxiliar pop-up list of options with frequent use snippets and methods.
"""

from typing import Literal

from PySide2 import QtCore
from PySide2.QtWidgets import QCompleter

from .snippets import STIMULI_KEYWORDS, ANALISYS_KEYWORDS, VISUALIZATION_KEYWORDS
from .snippets import analysis_snippets, stimuli_snippets, visualizations_snippets, snippets


########################################################################
[docs]class Autocompleter(QCompleter): """Autocompleter for Python Scripts. Parameters ---------- mode The available options are different form stimuli delivery and data analysis. parent """ insertText = QtCore.Signal(str) # ---------------------------------------------------------------------- def __init__(self, mode: Literal['stimuli', 'visualization', 'analysis'], parent=None): """""" if mode == 'stimuli': QCompleter.__init__(self, STIMULI_KEYWORDS, parent) self.snippets = {**snippets, **stimuli_snippets} elif mode == 'visualization': QCompleter.__init__(self, VISUALIZATION_KEYWORDS, parent) self.snippets = {**visualizations_snippets, **snippets} elif mode == 'analysis': QCompleter.__init__(self, ANALISYS_KEYWORDS, parent) self.snippets = {**analysis_snippets, **snippets} self.connect(self, QtCore.SIGNAL( "activated(const QString&)"), self.changeCompletion) self.connect(self, QtCore.SIGNAL( "highlighted(const QString&)"), self.changeHighlighted) self.setMaxVisibleItems(15) self.popup().setStyleSheet(""" *{ font-size: 15px; min-height: 30px; } """) # ----------------------------------------------------------------------
[docs] def changeCompletion(self, completion: str) -> None: """Update list options.""" if completion.find("(") != -1: completion = completion[:completion.find("(")] self.insertText.emit(completion)
# ----------------------------------------------------------------------
[docs] def changeHighlighted(self, value: str) -> None: """Retain the last option selected.""" self.last_highlighted = value