move the log file viewer to its own plugin

We plan to have multiple different types of tabs.
This commit is contained in:
2021-12-04 16:53:02 +01:00
parent e255d157d8
commit 614968ca4b
9 changed files with 106 additions and 52 deletions

53
tabs.py
View File

@@ -6,16 +6,14 @@ 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 raven.plugins.ravenlog.Tab import Tab
from ravenui import RavenUI
from settings import Settings
class Tabs(QWidget):
tabs_by_filename = {}
def __init__(self, settings: Settings):
super(Tabs, self).__init__()
@@ -32,46 +30,29 @@ class Tabs(QWidget):
self.layout.addWidget(self.tabs)
def create_tab(self, file: str):
if not os.path.isfile(file):
message = QMessageBox(QMessageBox.Icon.Warning, "File not found",
"'%s' is not a file or cannot be opened" % (file))
message.exec()
return
def add_tab(self, tab: Tab):
# if tab already exists then open it
for tab_index in range(0, self.tabs.count()):
widget: Tab = self.tabs.widget(tab_index)
if widget.unique_id == tab.unique_id:
self.tabs.setCurrentIndex(tab_index)
return
model = LogFileModel(file, self.settings)
full_tab = FullTabWidget(model)
if model.get_file() in self.tabs_by_filename:
for tab_index in range(0, self.tabs.count()):
widget: FullTabWidget = self.tabs.widget(tab_index)
if widget.get_file() == model.get_file():
self.tabs.setCurrentIndex(tab_index)
break
else:
tab_index = self.tabs.addTab(full_tab, model.get_tab_name())
self.tabs_by_filename[model.get_file()] = full_tab
self.tabs.setCurrentIndex(tab_index)
tab_index = self.tabs.addTab(tab, tab.title)
self.tabs.setCurrentIndex(tab_index)
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)
tab: Tab = self.tabs.widget(tab_index)
if tab:
RavenUI.update_window_title(tab.title)
RavenUI.update_status_bar(tab.get_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)
full_tab: Tab = self.tabs.widget(tab_index)
full_tab.destruct()
del self.tabs_by_filename[full_tab.file_view.get_file()]
self.tabs.removeTab(tab_index)
def destruct(self):
@@ -85,5 +66,5 @@ class Tabs(QWidget):
if self.tabs.currentIndex() < 0:
return None
full_tab: FullTabWidget = self.tabs.widget(self.tabs.currentIndex())
return full_tab.get_file()
tab: Tab = self.tabs.widget(self.tabs.currentIndex())
return tab.get_file()