1
0
mirror of https://github.com/arsenetar/dupeguru.git synced 2024-11-14 19:49:02 +00:00
dupeguru/run.py

82 lines
2.5 KiB
Python
Raw Normal View History

#!/usr/bin/python3
# Copyright 2017 Virgil Dupras
#
# This software is licensed under the "GPLv3" License as described in the "LICENSE" file,
# which should be included with this package. The terms are also available at
# http://www.gnu.org/licenses/gpl-3.0.html
import sys
import os.path as op
2014-04-18 14:55:01 +00:00
import gc
from PyQt5.QtCore import QCoreApplication, QSettings
from PyQt5.QtGui import QIcon, QPixmap
from PyQt5.QtWidgets import QApplication
from hscommon.trans import install_gettext_trans_under_qt
from qtlib.error_report_dialog import install_excepthook
from qtlib.util import setupQtLogging
from qt import dg_rc
from qt.platform import BASE_PATH
from core import __version__, __appname__
# SIGQUIT is not defined on Windows
if sys.platform == 'win32':
from signal import signal, SIGINT, SIGTERM
SIGQUIT = SIGTERM
else:
from signal import signal, SIGINT, SIGTERM, SIGQUIT
global dgapp
dgapp = None
def signalHandler(sig, frame):
global dgapp
if dgapp is None:
return
if sig in (SIGINT, SIGTERM, SIGQUIT):
dgapp.SIGTERM.emit()
def setUpSignals():
signal(SIGINT, signalHandler)
signal(SIGTERM, signalHandler)
signal(SIGQUIT, signalHandler)
2013-10-20 19:38:24 +00:00
def main():
app = QApplication(sys.argv)
QCoreApplication.setOrganizationName('Hardcoded Software')
QCoreApplication.setApplicationName(__appname__)
QCoreApplication.setApplicationVersion(__version__)
setupQtLogging()
2011-01-19 08:47:00 +00:00
settings = QSettings()
lang = settings.value('Language')
locale_folder = op.join(BASE_PATH, 'locale')
install_gettext_trans_under_qt(locale_folder, lang)
# Handle OS signals
setUpSignals()
# Let the Python interpreter runs every 500ms to handle signals. This is
# required because Python cannot handle signals while the Qt event loop is
# running.
from PyQt5.QtCore import QTimer
timer = QTimer()
timer.start(500)
timer.timeout.connect(lambda: None)
2011-01-19 08:47:00 +00:00
# Many strings are translated at import time, so this is why we only import after the translator
# has been installed
from qt.app import DupeGuru
app.setWindowIcon(QIcon(QPixmap(":/{0}".format(DupeGuru.LOGO_NAME))))
global dgapp
dgapp = DupeGuru()
install_excepthook('https://github.com/hsoft/dupeguru/issues')
2014-04-18 14:55:01 +00:00
result = app.exec()
# I was getting weird crashes when quitting under Windows, and manually deleting main app
# references with gc.collect() in between seems to fix the problem.
del dgapp
gc.collect()
del app
gc.collect()
return result
2013-10-20 19:38:24 +00:00
if __name__ == "__main__":
sys.exit(main())