diff options
Diffstat (limited to 'src/leap/app.py')
-rw-r--r-- | src/leap/app.py | 93 |
1 files changed, 8 insertions, 85 deletions
diff --git a/src/leap/app.py b/src/leap/app.py index eb38751c..db48701b 100644 --- a/src/leap/app.py +++ b/src/leap/app.py @@ -1,25 +1,13 @@ -# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 -from functools import partial import logging -import signal - # This is only needed for Python v2 but is harmless for Python v3. import sip sip.setapi('QVariant', 2) -sip.setapi('QString', 2) from PyQt4.QtGui import (QApplication, QSystemTrayIcon, QMessageBox) -from PyQt4 import QtCore -from leap import __version__ as VERSION from leap.baseapp.mainwindow import LeapWindow -from leap.gui import locale_rc - -def sigint_handler(*args, **kwargs): - logger = kwargs.get('logger', None) - logger.debug('SIGINT catched. shutting down...') - mainwindow = args[0] - mainwindow.shutdownSignal.emit() +logging.basicConfig() +logger = logging.getLogger(name=__name__) def main(): @@ -32,88 +20,23 @@ def main(): parser, opts = leap_argparse.init_leapc_args() debug = getattr(opts, 'debug', False) - # XXX get severity from command line args + #XXX get debug level and set logger accordingly if debug: - level = logging.DEBUG - else: - level = logging.WARNING - - logger = logging.getLogger(name='leap') - logger.setLevel(level) - console = logging.StreamHandler() - console.setLevel(level) - formatter = logging.Formatter( - '%(asctime)s ' - '- %(name)s - %(levelname)s - %(message)s') - console.setFormatter(formatter) - logger.addHandler(console) + logger.setLevel('DEBUG') + logger.debug('args: %s' % opts) - logger.info('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~') - logger.info('LEAP client version %s', VERSION) - logger.info('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~') - logfile = getattr(opts, 'log_file', False) - if logfile: - logger.debug('setting logfile to %s ', logfile) - fileh = logging.FileHandler(logfile) - fileh.setLevel(logging.DEBUG) - fileh.setFormatter(formatter) - logger.addHandler(fileh) - - logger.info('Starting app') app = QApplication(sys.argv) - # To test: - # $ LANG=es ./app.py - locale = QtCore.QLocale.system().name() - qtTranslator = QtCore.QTranslator() - if qtTranslator.load("qt_%s" % locale, ":/translations"): - app.installTranslator(qtTranslator) - appTranslator = QtCore.QTranslator() - if appTranslator.load("leap_client_%s" % locale, ":/translations"): - app.installTranslator(appTranslator) - - # needed for initializing qsettings - # it will write .config/leap/leap.conf - # top level app settings - # in a platform independent way - app.setOrganizationName("leap") - app.setApplicationName("leap") - app.setOrganizationDomain("leap.se") - - # XXX we could check here - # if leap-client is already running, and abort - # gracefully in that case. - if not QSystemTrayIcon.isSystemTrayAvailable(): QMessageBox.critical(None, "Systray", - "I couldn't detect" - "any system tray on this system.") + "I couldn't detect any \ +system tray on this system.") sys.exit(1) if not debug: QApplication.setQuitOnLastWindowClosed(False) window = LeapWindow(opts) - - # this dummy timer ensures that - # control is given to the outside loop, so we - # can hook our sigint handler. - timer = QtCore.QTimer() - timer.start(500) - timer.timeout.connect(lambda: None) - - sigint_window = partial(sigint_handler, window, logger=logger) - signal.signal(signal.SIGINT, sigint_window) - - if debug: - # we only show the main window - # if debug mode active. - # if not, it will be set visible - # from the systray menu. - window.show() - if sys.platform == "darwin": - window.raise_() - - # run main loop + window.show() sys.exit(app.exec_()) if __name__ == "__main__": |