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 import time
from typing import List, Optional from typing import List, Optional
from PyQt6.QtGui import QBrush, QColor, QPen from PyQt6.QtCore import pyqtSignal
from highlight_regex import HighlightRegex from highlight_regex import HighlightRegex
from highlighting import Highlighting from highlighting import Highlighting
@@ -16,6 +16,12 @@ from settings import Settings
class LogFileModel: class LogFileModel:
_query_highlight: Optional[HighlightRegex] = None _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): def __init__(self, file: str, settings: Settings):
self.settings = settings self.settings = settings
self._file = os.path.realpath(file) self._file = os.path.realpath(file)
@@ -117,7 +123,11 @@ class LogFileModel:
return result return result
def byte_count(self) -> int: 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): def write_line(self, line: str):
with open(self._file, 'a+b') as f: 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._menu_recent_files = QMenu(self.tr("Open &Recent"), self)
self.setCentralWidget(self.tabs) self.setCentralWidget(self.tabs)
self.setStatusBar(QStatusBar(self)) self.status_bar = QStatusBar(self)
self.setStatusBar(self.status_bar)
self.setMenuBar(self.create_menu_bar()) self.setMenuBar(self.create_menu_bar())
def create_menu_bar(self) -> QMenuBar: def create_menu_bar(self) -> QMenuBar:

View File

@@ -14,3 +14,9 @@ class RavenUI():
RavenUI.window.setWindowTitle("%s - RavenLog" % title) RavenUI.window.setWindowTitle("%s - RavenLog" % title)
else: else:
RavenUI.window.setWindowTitle("RavenLog") 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 PyQt6.QtGui import *
from bigtext import BigText from bigtext import BigText
from conversion import humanbytes
from fulltabwidget import FullTabWidget from fulltabwidget import FullTabWidget
from logFileModel import LogFileModel from logFileModel import LogFileModel
from ravenui import RavenUI from ravenui import RavenUI
@@ -55,11 +56,17 @@ class Tabs(QWidget):
def _current_tab_changed(self, tab_index: int): def _current_tab_changed(self, tab_index: int):
full_tab: FullTabWidget = self.tabs.widget(tab_index) full_tab: FullTabWidget = self.tabs.widget(tab_index)
if full_tab: if full_tab:
# window title
file = full_tab.file_view.get_file() file = full_tab.file_view.get_file()
file_name = os.path.basename(file) file_name = os.path.basename(file)
RavenUI.update_window_title(file_name) 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: else:
RavenUI.update_window_title("") RavenUI.update_window_title("")
RavenUI.update_status_bar("")
def _close_tab(self, tab_index: int): def _close_tab(self, tab_index: int):
full_tab: FullTabWidget = self.tabs.widget(tab_index) full_tab: FullTabWidget = self.tabs.widget(tab_index)