import os import re from PyQt6 import QtCore from PyQt6.lupdate import lupdate from PyQt6.QtWidgets import * from PyQt6.QtCore import * from PyQt6.QtGui import * import sys from bigtext import BigText from logFileModel import LogFileModel from settings import Settings MAX_LINE_LENGTH = 4096 class MainWindow(QMainWindow): def __init__(self, *args, **kwargs): super(MainWindow, self).__init__(*args, **kwargs) self.settings = Settings() self.setWindowTitle(self.tr("RavenLog")) self.setGeometry(0, 0, 640, 480) self.setDockNestingEnabled(True) self.tabs = self.create_tabs() self.create_tab("/home/andi/ws/performanceDb/data/production/logs_2018-09-06_2018-09-06.csv") self.create_tab("/home/andi/ws/ravenlog/example.log") self.setCentralWidget(self.tabs) self.main_tool_bar = self.create_main_tool_bar() self.addToolBar(self.main_tool_bar) self.setStatusBar(QStatusBar(self)) self.setMenuBar(self.create_menu_bar()) def create_main_tool_bar(self): result = QToolBar("main toolbar") result.addWidget(QLabel(self.tr("Font Size:"))) font_size = QComboBox(result) for s in range(3,30): font_size.addItem(str(s)) font_size.setCurrentText(str(self.settings.get_font_size())) font_size.currentTextChanged.connect(self.update_font_size) result.addWidget(font_size) return result def update_font_size(self, font_size): self.settings.font_size(int(font_size)) self.tabs.update() def on_follow_file_changed(self, e): print(e) def create_tabs(self) -> QTabWidget: tabs = QTabWidget() tabs.setTabsClosable(True) tabs.tabCloseRequested.connect(lambda index: tabs.removeTab(index) ) return 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) self.tabs.addTab(big_text, model.get_tab_name()) # open the new tab self.tabs.setCurrentIndex(self.tabs.count()-1) def create_menu_bar(self) -> QMenuBar: menu_bar = QMenuBar() file_menu = QMenu(self.tr("File", "name of the file menu"), self) open_file = QAction(self.tr("Open..."), self) open_file.triggered.connect(self._open_file) close_action = QAction(self.tr("Close", "menu item to close the application"), self) close_action.triggered.connect(self.close) file_menu.addAction(open_file) file_menu.addAction(close_action) menu_bar.addMenu(file_menu) return menu_bar def _open_file(self) -> None: dialog = QFileDialog(self) (selected_file, _filter) = dialog.getOpenFileName(caption=self.tr("Open File")) self.create_tab(selected_file) if __name__ == "__main__": app = QApplication(sys.argv) #translator = QTranslator() #if translator.load(QLocale("de"), "messages_de.ts"): # app.installTranslator(translator) window = MainWindow() window.show() app.exec()