Beispiel #1
0
def run(argv):
    '''start the application'''

    config = get_config()

    # py2exe
    if sys.platform == 'win32' and \
            (hasattr(sys, 'frozen') or hasattr(sys, 'importers')):
        _setup_py2exe(config)

    # Parse arguments
    optparser = OptionParser()
    optparser.set_defaults(debug=False)
    optparser.add_option('--debug',
                         action='store_true',
                         help='Enable debug mode')
    (options, args) = optparser.parse_args(argv)

    # stderr wrapper
    sys.stderr = StdErrWrapper(sys.stderr)

    # logging
    logger = logging.getLogger()
    handler = MyStreamHandler()
    handler.setFormatter(
        logging.Formatter('%(levelname)s:%(name)s:%(message)s'))
    logger.addHandler(handler)
    logger.setLevel(logging.DEBUG if options.debug else logging.ERROR)

    # Create an application instance
    app = SingleApplication(argv, _SINGLEAPP_KEY)
    if app.isRunning():
        app.sendMessage('activate')
        return 1

    # Load the configuration file
    config.debug = options.debug
    config.load()

    # Set the application's information
    app.setApplicationName(config.app_name)
    app.setOrganizationName(__author__)
    app.setWindowIcon(QIcon(':/icons/icon.png'))

    # Setup MainWindow
    from .main import MainWindow
    main_window = MainWindow()

    def messageHandler(msg):
        if msg == 'activate':
            main_window.activateWindow()
            main_window.setVisible(True)

    app.messageAvailable.connect(messageHandler)

    # On Windows-ja
    if app.font().family() == u'MS UI Gothic':
        cand = (('Segoe UI', None), ('Meiryo UI', None), ('Tahoma', 8))
        from PyQt5.QtGui import QFont
        for name, point in cand:
            ps = app.font().pointSize()
            if point is None:
                point = ps if ps != -1 else 9
            font = QFont(name, point)
            if font.exactMatch():
                app.setFont(font)
                break

    # Redirect stderr to the Error Console
    if not options.debug:
        sys.stderr.setApplication(app)

    # Start the application
    r = app.exec_()

    # Quit
    config.save()
    return r
Beispiel #2
0
# -*- coding: utf-8 -*-

from PyQt5.QtWidgets import QApplication, QToolTip
from PyQt5.QtGui import QFont

from globalvalue import setMainWidget, DefaultFontList, DefaultFontSize, DefaultFontSizeForToolTip
from mainwidget import MainWidget

import sys
from localelanguage import initLocale


if __name__ == '__main__':

    #init locale
    initLocale()

    app = QApplication(sys.argv)
    #Try to init font with default font list
    for fontName in DefaultFontList:
        font = QFont(fontName, DefaultFontSize)
        if font.exactMatch():
            app.setFont(font)
            tipFont = QFont(fontName, DefaultFontSizeForToolTip)
            QToolTip.setFont(tipFont)
            break

    mainWidget = MainWidget()
    setMainWidget(mainWidget)

    sys.exit(app.exec_())