from PyQt6.QtWidgets import * from PyQt6.QtCore import * from bigtext import BigText from filterviewsyncer import FilterViewSyncer from filterwidget import FilterWidget from logFileModel import LogFileModel from raven.plugins.ravenlog.Tab import Tab from conversion import humanbytes class FullTabWidget(Tab): def __init__(self, model: LogFileModel, unique_id: str, title: str): super(FullTabWidget, self).__init__(unique_id, title) self._model = model self.file_view = BigText(model) self.filter_hit_view = FilterWidget(self._model) self.filter_view_syncer = FilterViewSyncer(self.file_view) self.filter_hit_view.add_line_click_listener(self.filter_view_syncer.click_listener) self.filter_hit_view.add_filter_match_found_listener(self.filter_view_syncer.match_found) self.layout = QVBoxLayout(self) self.layout.setContentsMargins(0, 0, 0, 0) splitter = QSplitter() splitter.setOrientation(Qt.Orientation.Vertical) splitter.setHandleWidth(5) # splitter.setStyleSheet("QSplitter::handle{background: #cccccc;}") splitter.addWidget(self.file_view) splitter.addWidget(self.filter_hit_view) self.layout.addWidget(splitter) def get_file(self) -> str: return self.file_view.get_file() # overriding abstract method def destruct(self): self.file_view.destruct() self.filter_hit_view.destruct() # overriding abstract method def get_status_text(self) -> str: file = self._model.get_file() file_size = humanbytes(self._model.byte_count()) return "%s - %s" % (file_size, file)