示例#1
0
def main(argv=None):
    if argv:
        sys.argv = argv
    # let PyQt handle its options (need at least one argument after options)
    sys.argv.append('xxx')
    app = QtWidgets.QApplication(sys.argv)
    del sys.argv[-1]
    # install translation
    if qt_version_info < (5, 0):
        QtCore.QTextCodec.setCodecForTr(
            QtCore.QTextCodec.codecForName('utf-8'))
    locale = QtCore.QLocale.system()
    translator = QtCore.QTranslator(parent=app)
    translator.load(locale, 'photini', '.',
                    pkg_resources.resource_filename('photini', 'data/lang'),
                    '.qm')
    app.installTranslator(translator)
    qt_translator = QtCore.QTranslator(parent=app)
    qt_translator.load(
        locale, 'qt', '_',
        QtCore.QLibraryInfo.location(QtCore.QLibraryInfo.TranslationsPath))
    app.installTranslator(qt_translator)
    # parse remaining arguments
    version = 'Photini ' + __version__ + ', build ' + build
    version += '\n  Python ' + sys.version
    version += '\n  ' + gexiv2_version
    version += '\n  PyQt {}, Qt {}'.format(QtCore.PYQT_VERSION_STR,
                                           QtCore.QT_VERSION_STR)
    if QtWebEngineWidgets:
        version += ', using QtWebEngineWidgets'
    if enchant_version:
        version += '\n  ' + enchant_version
    if FlickrUploader:
        from photini.flickr import flickr_version
        version += '\n  ' + flickr_version
    parser = OptionParser(usage=six.text_type(
        QtCore.QCoreApplication.translate(
            'main', 'Usage: %prog [options] [file_name, ...]')),
                          version=version,
                          description=six.text_type(
                              QtCore.QCoreApplication.translate(
                                  'main', 'Photini photo metadata editor')))
    parser.add_option('-t',
                      '--test',
                      action='store_true',
                      help=six.text_type(
                          QtCore.QCoreApplication.translate(
                              'main', 'test new features or API versions')))
    parser.add_option('-v',
                      '--verbose',
                      action='count',
                      default=0,
                      help=six.text_type(
                          QtCore.QCoreApplication.translate(
                              'main', 'increase number of logging messages')))
    options, args = parser.parse_args()
    # create GUI and run application event loop
    main = MainWindow(options, args)
    main.show()
    return app.exec_()
def main(argv=None):
    root = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
    lang_dir = os.path.join(root, 'src', 'photini', 'data', 'lang')
    translator = QtCore.QTranslator()
    cmd = []
    for name in os.listdir(lang_dir):
        lang = name.split('.')[1]
        if lang == 'en':
            continue
        if not translator.load('photini.' + lang, lang_dir):
            print('load failed:', lang)
            continue
        text = translator.translate('MenuBar', 'Photini photo metadata editor')
        if text:
            cmd += ['--set-key=GenericName[{}]'.format(lang),
                    '--set-value={}'.format(text.strip())]
        text = translator.translate('MenuBar',
                                    'An easy to use digital photograph metadata'
                                    ' (Exif, IPTC, XMP) editing application.')
        if text:
            cmd += ['--set-key=Comment[{}]'.format(lang),
                    '--set-value={}'.format(text.strip())]
    if not cmd:
        return 0
    desktop_file = os.path.join(
        root, 'src', 'photini', 'data', 'linux', 'photini.desktop')
    cmd = ['desktop-file-edit'] + cmd + [desktop_file]
    return subprocess.call(cmd)
示例#3
0
文件: editor.py 项目: dirten/Photini
def main(argv=None):
    if argv:
        sys.argv = argv
    # let PyQt handle its options (need at least one argument after options)
    sys.argv.append('xxx')
    app = QtWidgets.QApplication(sys.argv)
    del sys.argv[-1]
    # install translations
    if qt_version_info < (5, 0):
        QtCore.QTextCodec.setCodecForTr(
            QtCore.QTextCodec.codecForName('utf-8'))
    # English translation as a fallback (to get correct plurals)
    lang_dir = pkg_resources.resource_filename('photini', 'data/lang')
    translator = QtCore.QTranslator(parent=app)
    if translator.load('photini.en', lang_dir):
        app.installTranslator(translator)
        translator = QtCore.QTranslator(parent=app)
    # localised translation, if it exists
    locale = QtCore.QLocale.system()
    if translator.load(locale, 'photini', '.', lang_dir):
        app.installTranslator(translator)
        translator = QtCore.QTranslator(parent=app)
    # Qt's own translation, e.g. for 'apply' or 'cancel' buttons
    if qt_version_info < (5, 0):
        if translator.load(
                locale, 'qt', '_',
                QtCore.QLibraryInfo.location(
                    QtCore.QLibraryInfo.TranslationsPath)):
            app.installTranslator(translator)
    # parse remaining arguments
    version = 'Photini ' + __version__ + ', build ' + build
    version += '\n  Python ' + sys.version
    version += '\n  ' + gi_version
    version += '\n  PyQt {}, Qt {}, using {}'.format(
        QtCore.PYQT_VERSION_STR, QtCore.QT_VERSION_STR,
        ('QtWebKit', 'QtWebEngine')[using_qtwebengine])
    if spelling_version:
        version += '\n  ' + spelling_version
    if FlickrUploader:
        from photini.flickr import flickr_version
        version += '\n  ' + flickr_version
    version += '\n  available styles: {}'.format(', '.join(
        QtWidgets.QStyleFactory.keys()))
    version += '\n  using style: {}'.format(
        QtWidgets.QApplication.style().objectName())
    parser = OptionParser(usage=six.text_type(
        QtCore.QCoreApplication.translate(
            'main', 'Usage: %prog [options] [file_name, ...]')),
                          version=version,
                          description=six.text_type(
                              QtCore.QCoreApplication.translate(
                                  'main', 'Photini photo metadata editor')))
    parser.add_option('-t',
                      '--test',
                      action='store_true',
                      help=six.text_type(
                          QtCore.QCoreApplication.translate(
                              'main', 'test new features or API versions')))
    parser.add_option('-v',
                      '--verbose',
                      action='count',
                      default=0,
                      help=six.text_type(
                          QtCore.QCoreApplication.translate(
                              'main', 'increase number of logging messages')))
    options, args = parser.parse_args()
    # create GUI and run application event loop
    main = MainWindow(options, args)
    main.show()
    return app.exec_()
示例#4
0
def main(argv=None):
    global app
    if argv:
        sys.argv = argv
    if qt_version_info >= (5, 6) and qt_version_info < (6, 0):
        QtWidgets.QApplication.setAttribute(Qt.AA_EnableHighDpiScaling, True)
    if qt_version_info >= (5, 0):
        QtWidgets.QApplication.setAttribute(Qt.AA_UseHighDpiPixmaps, True)
    # let Qt handle its options
    app = QtWidgets.QApplication(sys.argv)
    # get remaining argument list after Qt has swallowed its options
    sys.argv = app.arguments()
    # install translations
    # English translation as a fallback (to get correct plurals)
    lang_dir = pkg_resources.resource_filename('photini', 'data/lang')
    translator = QtCore.QTranslator(parent=app)
    if translator.load('photini.en', lang_dir):
        app.installTranslator(translator)
        translator = QtCore.QTranslator(parent=app)
    # localised translation, if it exists
    locale = QtCore.QLocale.system()
    if translator.load(locale, 'photini', '.', lang_dir):
        app.installTranslator(translator)
        translator = QtCore.QTranslator(parent=app)
    # parse remaining arguments
    version = 'Photini ' + __version__ + ', build ' + build
    version += '\n  Python ' + sys.version
    version += '\n  ' + exiv2_version
    version += '\n  ' + qt_version
    if spelling_version:
        version += '\n  ' + spelling_version
    if ffmpeg_version:
        version += '\n  ' + ffmpeg_version
    version += '\n  available styles: {}'.format(', '.join(
        QtWidgets.QStyleFactory.keys()))
    version += '\n  using style: {}'.format(
        QtWidgets.QApplication.style().objectName())
    parser = OptionParser(
        usage=translate('CLIHelp', 'Usage: %prog [options] [file_name, ...]'),
        version=version,
        description=translate('CLIHelp', 'Photini photo metadata editor'))
    parser.add_option('-t',
                      '--test',
                      action='store_true',
                      help=translate('CLIHelp',
                                     'test new features or API versions'))
    parser.add_option('-u',
                      '--utf_safe',
                      action='store_true',
                      help=translate(
                          'CLIHelp',
                          'metadata is known to be ASCII or utf-8 encoded'))
    parser.add_option('-v',
                      '--verbose',
                      action='count',
                      default=0,
                      help=translate('CLIHelp',
                                     'increase number of logging messages'))
    options, args = parser.parse_args()
    # if an instance of Photini is already running, send it the list of
    # files to open
    if SendToInstance(args):
        return 0
    # ensure warnings are visible in test mode
    if options.test:
        warnings.simplefilter('default')
    # create GUI and run application event loop
    main = MainWindow(options, args)
    main.show()
    if qt_version_info >= (6, 0):
        return app.exec()
    else:
        return app.exec_()