change font size

This commit is contained in:
2021-10-25 19:31:28 +02:00
parent 7002e91a35
commit 95d43e08f1
3 changed files with 72 additions and 36 deletions

View File

@@ -20,9 +20,8 @@ import re
from settings import Settings from settings import Settings
class BigText(QWidget): class BigText(QWidget):
def __init__(self, model: LogFileModel): def __init__(self, model: LogFileModel, settings: Settings):
super(BigText, self).__init__() super(BigText, self).__init__()
self.grid = QGridLayout() self.grid = QGridLayout()
@@ -31,7 +30,7 @@ class BigText(QWidget):
self.grid.setVerticalSpacing(0) self.grid.setVerticalSpacing(0)
self.setLayout(self.grid) self.setLayout(self.grid)
big_text = InnerBigText(model, self) big_text = InnerBigText(self, model, settings)
big_text.setSizePolicy(QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)) big_text.setSizePolicy(QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding))
self.h_scroll_bar = QScrollBar(Qt.Orientation.Horizontal) self.h_scroll_bar = QScrollBar(Qt.Orientation.Horizontal)
@@ -56,14 +55,14 @@ class InnerBigText(QWidget):
highlights: [Highlight] = [] highlights: [Highlight] = []
def __init__(self, model: LogFileModel, parent: BigText): def __init__(self, parent: BigText, model: LogFileModel, settings: Settings):
super(InnerBigText, self).__init__() super(InnerBigText, self).__init__()
self.model = model self.model = model
self.settings = settings
self.parent = parent self.parent = parent
self.setFocusPolicy(Qt.FocusPolicy.StrongFocus) self.setFocusPolicy(Qt.FocusPolicy.StrongFocus)
self.setFocusPolicy(Qt.FocusPolicy.WheelFocus) self.setFocusPolicy(Qt.FocusPolicy.WheelFocus)
self.font = QFont("monospace", 12)
self.update_font_metrics(QPainter(self)) self.update_font_metrics(QPainter(self))
self.lines = [] self.lines = []
self.selection_highlight = HighlightSelection() self.selection_highlight = HighlightSelection()
@@ -75,7 +74,6 @@ class InnerBigText(QWidget):
) )
] ]
def keyPressEvent(self, e: QKeyEvent) -> None: def keyPressEvent(self, e: QKeyEvent) -> None:
print("%s + %s" % (e.keyCombination().keyboardModifiers(), e.key())) print("%s + %s" % (e.keyCombination().keyboardModifiers(), e.key()))
@@ -129,7 +127,6 @@ class InnerBigText(QWidget):
self._left_offset = self._left_offset + 2 self._left_offset = self._left_offset + 2
self.update() self.update()
def h_scroll_event(self, left_offset: int): def h_scroll_event(self, left_offset: int):
self._left_offset = left_offset self._left_offset = left_offset
# print("left_offset: %d" % left_offset) # print("left_offset: %d" % left_offset)
@@ -159,7 +156,6 @@ class InnerBigText(QWidget):
def columns_shown(self) -> float: def columns_shown(self) -> float:
return self.width() / float(self.char_width) return self.width() / float(self.char_width)
def to_byte_offset(self, e: QMouseEvent) -> int: def to_byte_offset(self, e: QMouseEvent) -> int:
line_number = self.y_pos_to_line(e.pos().y()) line_number = self.y_pos_to_line(e.pos().y())
@@ -185,7 +181,7 @@ class InnerBigText(QWidget):
def paintEvent(self, event: QPaintEvent) -> None: def paintEvent(self, event: QPaintEvent) -> None:
painter = QPainter(self) painter = QPainter(self)
painter.setFont(self.font) painter.setFont(self.settings.font())
painter.setPen(QColor(0, 0, 0)) painter.setPen(QColor(0, 0, 0))
self.update_font_metrics(painter) self.update_font_metrics(painter)
@@ -199,7 +195,6 @@ class InnerBigText(QWidget):
# document length == maximum + pageStep + aFewBytesSoThatTheLastLineIsShown # document length == maximum + pageStep + aFewBytesSoThatTheLastLineIsShown
self.parent.v_scroll_bar.setMaximum(self.model.byte_count() - 1) self.parent.v_scroll_bar.setMaximum(self.model.byte_count() - 1)
for l in self.lines: for l in self.lines:
self.update_longest_line(len(l.line())) self.update_longest_line(len(l.line()))

38
main.py
View File

@@ -7,6 +7,7 @@ import sys
from bigtext import BigText from bigtext import BigText
from logFileModel import LogFileModel from logFileModel import LogFileModel
from settings import Settings
MAX_LINE_LENGTH = 4096 MAX_LINE_LENGTH = 4096
@@ -15,28 +16,53 @@ class MainWindow(QMainWindow):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(MainWindow, self).__init__(*args, **kwargs) super(MainWindow, self).__init__(*args, **kwargs)
self.settings = Settings()
self.setWindowTitle("RavenLog") self.setWindowTitle("RavenLog")
self.setGeometry(0, 0, 640, 480) self.setGeometry(0, 0, 640, 480)
self.setDockNestingEnabled(True) self.setDockNestingEnabled(True)
self.setCentralWidget(self.create_tabs()) self.tabs = self.create_tabs()
self.addToolBar(QToolBar("main toolbar")) self.setCentralWidget(self.tabs)
self.main_tool_bar = self.create_main_tool_bar()
self.addToolBar(self.main_tool_bar)
self.setStatusBar(QStatusBar(self)) self.setStatusBar(QStatusBar(self))
self.setMenuBar(self.create_menu_bar()) self.setMenuBar(self.create_menu_bar())
@staticmethod def create_main_tool_bar(self):
def create_tabs() -> QTabWidget: result = QToolBar("main toolbar")
follow_file = QCheckBox("Follow File")
follow_file.toggled.connect(self.on_follow_file_changed)
result.addWidget(follow_file)
result.addWidget(QLabel("Font Size:"))
font_size = QComboBox(result)
for s in range(3,30):
font_size.addItem(str(s))
font_size.setCurrentText(str(self.settings.get_font_size()))
font_size.currentTextChanged.connect(self.update_font_size)
result.addWidget(font_size)
return result
def update_font_size(self, font_size):
self.settings.font_size(int(font_size))
self.tabs.update()
def on_follow_file_changed(self, e):
print(e)
def create_tabs(self) -> QTabWidget:
tabs = QTabWidget() tabs = QTabWidget()
tabs.setTabsClosable(True) tabs.setTabsClosable(True)
#model = LogFileModel("/home/andi/ws/performanceDb/data/production/logs_2018-09-06_2018-09-06.csv") #model = LogFileModel("/home/andi/ws/performanceDb/data/production/logs_2018-09-06_2018-09-06.csv")
model = LogFileModel("/home/andi/ws/ravenlog/example.log") model = LogFileModel("/home/andi/ws/ravenlog/example.log")
big_text = BigText(model) big_text = BigText(model, self.settings)
tabs.addTab(big_text, "small") tabs.addTab(big_text, "small")
model = LogFileModel("/home/andi/ws/performanceDb/data/production/logs_2018-09-06_2018-09-06.csv") model = LogFileModel("/home/andi/ws/performanceDb/data/production/logs_2018-09-06_2018-09-06.csv")
big_text = BigText(model) big_text = BigText(model, self.settings)
tabs.addTab(big_text, "big") tabs.addTab(big_text, "big")
return tabs return tabs

View File

@@ -1,6 +1,21 @@
from PyQt6.QtGui import QFont
class Settings(): class Settings():
def __init__(self):
self.font_size(12)
@staticmethod @staticmethod
def max_line_length(): def max_line_length():
return 4096 return 4096
def font(self) -> QFont:
return self._font
def get_font_size(self) -> int:
return self._font_size
def font_size(self, font_size: int):
self._font_size = font_size
self._font = QFont("monospace", font_size)