70 lines
2.3 KiB
Python
70 lines
2.3 KiB
Python
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()
|