diff options
| author | kali <kali@leap.se> | 2012-11-28 03:01:53 +0900 | 
|---|---|---|
| committer | kali <kali@leap.se> | 2012-11-28 03:02:19 +0900 | 
| commit | 564b82fa30ebcd8a0abfea54e00506dd77446a54 (patch) | |
| tree | 27e594233eff749f928cb503e3d4a9920aa08062 /src/leap/app.py | |
| parent | eec567a0a26edddb30b15ea4ef67f042c160d5ba (diff) | |
| parent | a3ce61ea54b0b0f5c1ecd5904379e27cfec885b5 (diff) | |
Merge branch 'feature/catch-ctrl-c' into develop
Closes #760
Diffstat (limited to 'src/leap/app.py')
| -rw-r--r-- | src/leap/app.py | 21 | 
1 files changed, 21 insertions, 0 deletions
diff --git a/src/leap/app.py b/src/leap/app.py index 4dd93600..d594c7cd 100644 --- a/src/leap/app.py +++ b/src/leap/app.py @@ -1,16 +1,26 @@  # 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.QtCore import QTimer  from leap import __version__ as VERSION  from leap.baseapp.mainwindow import LeapWindow +def sigint_handler(*args, **kwargs): +    logger = kwargs.get('logger', None) +    logger.debug('SIGINT catched. shutting down...') +    mainwindow = args[0] +    mainwindow.shutdownSignal.emit() + +  def main():      """      launches the main event loop @@ -69,6 +79,17 @@ def main():          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 = 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.  | 
