mirror of
				https://github.com/arsenetar/dupeguru.git
				synced 2025-09-11 17:58:17 +00:00 
			
		
		
		
	- Load order was impacting translations - Fix by moving create_qsettings() for now
		
			
				
	
	
		
			89 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/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
 | |
| import gc
 | |
| 
 | |
| from PyQt5.QtCore import QCoreApplication
 | |
| from PyQt5.QtGui import QIcon, QPixmap
 | |
| from PyQt5.QtWidgets import QApplication
 | |
| 
 | |
| from hscommon.trans import install_gettext_trans_under_qt
 | |
| from qt.error_report_dialog import install_excepthook
 | |
| from qt.util import setup_qt_logging, create_qsettings
 | |
| from qt import dg_rc  # noqa: F401
 | |
| 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 signal_handler(sig, frame):
 | |
|     global dgapp
 | |
|     if dgapp is None:
 | |
|         return
 | |
|     if sig in (SIGINT, SIGTERM, SIGQUIT):
 | |
|         dgapp.SIGTERM.emit()
 | |
| 
 | |
| 
 | |
| def setup_signals():
 | |
|     signal(SIGINT, signal_handler)
 | |
|     signal(SIGTERM, signal_handler)
 | |
|     signal(SIGQUIT, signal_handler)
 | |
| 
 | |
| 
 | |
| def main():
 | |
|     app = QApplication(sys.argv)
 | |
|     QCoreApplication.setOrganizationName("Hardcoded Software")
 | |
|     QCoreApplication.setApplicationName(__appname__)
 | |
|     QCoreApplication.setApplicationVersion(__version__)
 | |
|     setup_qt_logging()
 | |
|     settings = create_qsettings()
 | |
|     lang = settings.value("Language")
 | |
|     locale_folder = op.join(BASE_PATH, "locale")
 | |
|     install_gettext_trans_under_qt(locale_folder, lang)
 | |
|     # Handle OS signals
 | |
|     setup_signals()
 | |
|     # 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)
 | |
|     # 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(f":/{DupeGuru.LOGO_NAME}")))
 | |
|     global dgapp
 | |
|     dgapp = DupeGuru()
 | |
|     install_excepthook("https://github.com/arsenetar/dupeguru/issues")
 | |
|     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
 | |
| 
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     sys.exit(main())
 |