Files
krowlog/highlight_selection.py
2021-10-24 18:49:47 +02:00

43 lines
1.2 KiB
Python

from typing import Optional
from highlight import Highlight
from highlighted_range import HighlightedRange
from line import Line
from PyQt6.QtCore import *
from PyQt6.QtGui import *
from PyQt6.QtWidgets import *
from settings import Settings
class HightlightSelection(Highlight):
def __init__(self, start_byte: int, end_byte: int):
self.start_byte = start_byte
self.end_byte = end_byte
def set_start(self, start_byte):
self.start_byte = start_byte
def set_end_byte(self, end_byte):
self.end_byte = end_byte
def compute_highlight(self, line: Line) -> Optional[HighlightedRange]:
begin = min(self.start_byte, self.end_byte)
end = max(self.start_byte, self.end_byte)
if line.intersects(begin, end):
if line.includes_byte(begin):
start = begin - line.byte_offset()
else:
start = 0
if line.includes_byte(end):
length = end - line.byte_offset() - start
else:
length = Settings.max_line_length() -start
return HighlightedRange(start, length, QBrush(QColor(255, 255, 0)), Qt.PenStyle.NoPen)
else:
return None