move the log file viewer to its own plugin
We plan to have multiple different types of tabs.
This commit is contained in:
53
tabs.py
53
tabs.py
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user