do not open same file twice

This commit is contained in:
2021-10-26 11:05:07 +02:00
parent 8fc682444d
commit 3b330b2fca
4 changed files with 74 additions and 22 deletions

58
tabs.py Normal file
View File

@@ -0,0 +1,58 @@
import os
from typing import Mapping
from PyQt6.QtWidgets import *
from PyQt6.QtCore import *
from PyQt6.QtGui import *
from bigtext import BigText
from logFileModel import LogFileModel
from settings import Settings
class Tabs(QWidget):
tabs_by_index = {}
tabs_by_filename = {}
def __init__(self, settings: Settings):
super(Tabs, self).__init__()
self.settings = settings
self.tabs = QTabWidget()
self.tabs.setTabsClosable(True)
self.tabs.setMovable(True)
self.tabs.tabCloseRequested.connect(self._close_tab)
self.layout = QVBoxLayout(self)
self.layout.setContentsMargins(0, 0, 0, 0)
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
model = LogFileModel(file)
big_text = BigText(model, self.settings)
if big_text.get_file() in self.tabs_by_filename:
for tab_index in range(0, self.tabs.count()):
widget : BigText = self.tabs.widget(tab_index)
if widget.get_file() == big_text.get_file():
self.tabs.setCurrentIndex(tab_index)
break
else:
tab_index = self.tabs.addTab(big_text, model.get_tab_name())
self.tabs_by_filename[big_text.get_file()] = big_text
self.tabs.setCurrentIndex(tab_index)
def _close_tab(self, tab_index: int):
big_text: BigText = self.tabs.widget(tab_index)
del self.tabs_by_filename[big_text.get_file()]
self.tabs.removeTab(tab_index)