From 3d8064060996752c78ed501ce601bc9062301e07 Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Sun, 31 Oct 2021 17:55:00 +0100 Subject: [PATCH] show file size and name in status bar --- logFileModel.py | 14 ++++++++++++-- main.py | 3 ++- ravenui.py | 6 ++++++ tabs.py | 7 +++++++ 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/logFileModel.py b/logFileModel.py index 04decc3..e584089 100644 --- a/logFileModel.py +++ b/logFileModel.py @@ -4,7 +4,7 @@ import threading import time from typing import List, Optional -from PyQt6.QtGui import QBrush, QColor, QPen +from PyQt6.QtCore import pyqtSignal from highlight_regex import HighlightRegex from highlighting import Highlighting @@ -16,6 +16,12 @@ from settings import Settings class LogFileModel: _query_highlight: Optional[HighlightRegex] = None + file_size_changed = pyqtSignal(str) + """Fires when the file size changed. **Note:** uses strings, + because int in Qt signal are limited to 32bit.""" + + _file_size = -1 + def __init__(self, file: str, settings: Settings): self.settings = settings self._file = os.path.realpath(file) @@ -117,7 +123,11 @@ class LogFileModel: return result def byte_count(self) -> int: - return os.stat(self._file).st_size + size = os.stat(self._file).st_size + if self._file_size != size: + # self.file_size_changed.emit(str(size)) + self._file_size = size + return size def write_line(self, line: str): with open(self._file, 'a+b') as f: diff --git a/main.py b/main.py index 7f2057a..03d83d9 100644 --- a/main.py +++ b/main.py @@ -39,7 +39,8 @@ class MainWindow(QMainWindow): self._menu_recent_files = QMenu(self.tr("Open &Recent"), self) self.setCentralWidget(self.tabs) - self.setStatusBar(QStatusBar(self)) + self.status_bar = QStatusBar(self) + self.setStatusBar(self.status_bar) self.setMenuBar(self.create_menu_bar()) def create_menu_bar(self) -> QMenuBar: diff --git a/ravenui.py b/ravenui.py index b32a979..36f5e1a 100644 --- a/ravenui.py +++ b/ravenui.py @@ -14,3 +14,9 @@ class RavenUI(): RavenUI.window.setWindowTitle("%s - RavenLog" % title) else: RavenUI.window.setWindowTitle("RavenLog") + + @staticmethod + def update_status_bar(text: str): + if not RavenUI.window: + return + RavenUI.window.status_bar.showMessage(text) diff --git a/tabs.py b/tabs.py index ce913ed..b00d99d 100644 --- a/tabs.py +++ b/tabs.py @@ -6,6 +6,7 @@ from PyQt6.QtCore import * from PyQt6.QtGui import * from bigtext import BigText +from conversion import humanbytes from fulltabwidget import FullTabWidget from logFileModel import LogFileModel from ravenui import RavenUI @@ -55,11 +56,17 @@ class Tabs(QWidget): def _current_tab_changed(self, tab_index: int): full_tab: FullTabWidget = self.tabs.widget(tab_index) if full_tab: + # window title file = full_tab.file_view.get_file() file_name = os.path.basename(file) RavenUI.update_window_title(file_name) + + # status bar text + status_text = "%s - %s" % (humanbytes(full_tab.file_view.model.byte_count()), file) + RavenUI.update_status_bar(status_text) else: RavenUI.update_window_title("") + RavenUI.update_status_bar("") def _close_tab(self, tab_index: int): full_tab: FullTabWidget = self.tabs.widget(tab_index)