show file size and name in status bar

This commit is contained in:
2021-10-31 17:55:00 +01:00
parent e7cbe15292
commit 3d80640609
4 changed files with 27 additions and 3 deletions

View File

@@ -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:

View File

@@ -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:

View File

@@ -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)

View File

@@ -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)