Source code for AlphaHooks.widgets.editor.config

import sys

from PyQt5.Qsci import QsciScintilla
from PyQt5.QtCore import QObject
from PyQt5.QtGui import QFont

from AlphaHooks.widgets.editor.lexers import PythonLexer


[docs]class EditorProperty(QObject): """ Provides access to methods of code_editor. """ def __init__(self, ui, parent=None): """ Loads default configuration for code_editor including the lexer. :param ui: used to access 'main.ui' methods """ super(EditorProperty, self).__init__(parent) self.ui = ui # Fonts self.font = QFont() self.font.setFamily('Courier New') self.font.setFixedPitch(True) self.font.setPointSize(10) self.ui.code_editor.setFont(self.font) # Scrollbar self.ui.code_editor.SendScintilla( self.ui.code_editor.SCI_SETHSCROLLBAR, 0 ) # Configurations self.ui.code_editor.setBraceMatching(QsciScintilla.SloppyBraceMatch) self.ui.code_editor.setIndentationsUseTabs(False) self.ui.code_editor.setIndentationGuides(True) self.ui.code_editor.setAutoIndent(True) self.ui.code_editor.setTabIndents(True) self.ui.code_editor.setUtf8(True) # Margin self.ui.code_editor.setMarginType(0, QsciScintilla.NumberMargin) self.ui.code_editor.setMarginWidth(0, "00") # Platform Specific if sys.platform.startswith("linux"): self.ui.code_editor.setEolMode(QsciScintilla.EolUnix) elif sys.platform.startswith("win32"): self.ui.code_editor.setEolMode(QsciScintilla.EolWindows) elif sys.platform.startswith("darwin"): self.ui.code_editor.setEolMode(QsciScintilla.EolMac) # Lexer self.lexer = PythonLexer(self.ui, self.font) self.lexer.lock() # Slots self.ui.code_editor.linesChanged.connect(self.update_margin)
[docs] def update_margin(self): """ Adjust margin width to accommodate the number lines numbers. """ lines = self.ui.code_editor.lines() self.ui.code_editor.setMarginWidth(0, "0" * (len(str(lines)) + 1))