File: C:/Users/fred/anaconda3/Lib/site-packages/spyder/plugins/editor/panels/edgeline.py
# -*- coding: utf-8 -*-
#
# Copyright © Spyder Project Contributors
# Licensed under the terms of the MIT License
# (see spyder/__init__.py for details)
"""
This module contains the edge line panel
"""
# Third party imports
from qtpy.QtCore import Qt
from qtpy.QtGui import QPainter, QColor
# Local imports
from spyder.api.panel import Panel
class EdgeLine(Panel):
"""Source code editor's edge line (default: 79 columns, PEP8)"""
# --- Qt Overrides
# -----------------------------------------------------------------
def __init__(self):
Panel.__init__(self)
self.columns = (79,)
self.color = Qt.darkGray
def paintEvent(self, event):
"""Override Qt method"""
painter = QPainter(self)
size = self.size()
color = QColor(self.color)
color.setAlphaF(.5)
painter.setPen(color)
for column in self.columns:
# draw edge line at column n + 3 to account for line number margin
x = self.editor.fontMetrics().width(column * '9') + 3
painter.drawLine(x, 0, x, size.height())
def sizeHint(self):
"""Override Qt method."""
return self.size()
# --- Other methods
# -----------------------------------------------------------------
def set_enabled(self, state):
"""Toggle edge line visibility"""
self._enabled = state
self.setVisible(state)
def set_columns(self, columns):
"""Set edge line columns values."""
if isinstance(columns, tuple):
self.columns = columns
elif columns:
columns = str(columns)
self.columns = tuple(int(e) for e in columns.split(','))
self.update()
def update_color(self):
"""
Set edgeline color using syntax highlighter color for comments
"""
self.color = self.editor.highlighter.get_color_name('comment')