import logging import signal import ctypes from PyQt6 import QtCore from PyQt6.QtWidgets import * from PyQt6.QtCore import * from PyQt6.QtGui import * import sys import constants from raven.pluginregistry import PluginRegistry from ravenui import RavenUI logging.basicConfig(level=logging.INFO) log = logging.getLogger("main") def stop_signal(signum, _stackframe): """ Handle terminate signal """ try: log.info("Terminate signal received. %s", signum) QtCore.QCoreApplication.quit() except Exception: log.exception("Exception occurred while terminating") sys.exit(1) sys.exit(0) if __name__ == "__main__": app = QApplication(sys.argv) app.setWindowIcon(QIcon(constants.raven_icon)) # works only for Linux # make icon appear in Windows # see https://stackoverflow.com/questions/1551605/how-to-set-applications-taskbar-icon-in-windows-7/1552105#1552105 if sys.platform == 'win32' or sys.platform == 'cygwin': myappid = 'opentext.ravenlog' # arbitrary string ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid) # translator = QTranslator() # if translator.load(QLocale("de"), "messages_de.ts"): # app.installTranslator(translator) # workaround to make signals work in QT apps. # They do not work out of the box, because the main thread # is running in C++ code once app.exec() is executed # Forcing an empty lambda to be executed periodically gives # control back to python and allows python to react to signals timer = QTimer() timer.timeout.connect(lambda: None) timer.start(100) # init plugins PluginRegistry.load_plugin("RavenLogPlugin") PluginRegistry.load_plugin("OpenFilePlugin") window = PluginRegistry.executeSingle("create_main_window") RavenUI.window = window window.show() # window.open_file("/home/andi/ws/performanceDb/data/production/logs_2018-09-06_2018-09-06.csv") # window.open_file("/home/andi/ws/performanceDb/data/production/vapbdcom.csv") # window.open_file("/var/log/syslog") # window.open_file("/home/andi/ws/ravenlog/example.log") # window.open_file("C:\\Users\\andi\\ws\\some.log") signal.signal(signal.SIGINT, stop_signal) signal.signal(signal.SIGTERM, stop_signal) app.exec()