From 925623bf74240e7a9ff97164d2a20b63ed94e794 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Thu, 15 Oct 2015 19:03:57 +0100 Subject: [PATCH] core_int --- openlp/core/__init__.py | 50 ++++++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/openlp/core/__init__.py b/openlp/core/__init__.py index fa6f59a4d..fd45f6933 100644 --- a/openlp/core/__init__.py +++ b/openlp/core/__init__.py @@ -30,7 +30,7 @@ logging and a plugin framework are contained within the openlp.core module. import os import sys import logging -from optparse import OptionParser +import argparse from traceback import format_exception import shutil import time @@ -274,7 +274,7 @@ class OpenLP(OpenLPMixin, QtGui.QApplication): return QtGui.QApplication.event(self, event) -def parse_options(args): +def parse_options(): """ Parse the command line arguments @@ -282,19 +282,23 @@ def parse_options(args): :return: a tuple of parsed options of type optparse.Value and a list of remaining argsZ """ # Set up command line options. - usage = 'Usage: %prog [options] [qt-options]' - parser = OptionParser(usage=usage) - parser.add_option('-e', '--no-error-form', dest='no_error_form', action='store_true', - help='Disable the error notification form.') - parser.add_option('-l', '--log-level', dest='loglevel', default='warning', metavar='LEVEL', - help='Set logging to LEVEL level. Valid values are "debug", "info", "warning".') - parser.add_option('-p', '--portable', dest='portable', action='store_true', - help='Specify if this should be run as a portable app, off a USB flash drive (not implemented).') - parser.add_option('-d', '--dev-version', dest='dev_version', action='store_true', - help='Ignore the version file and pull the version directly from Bazaar') - parser.add_option('-s', '--style', dest='style', help='Set the Qt4 style (passed directly to Qt4).') + parser = argparse.ArgumentParser(prog='openlp.py') + parser.add_argument('-e', '--no-error-form', dest='no_error_form', action='store_true', + help='Disable the error notification form.') + parser.add_argument('-l', '--log-level', dest='loglevel', default='warning', metavar='LEVEL', + help='Set logging to LEVEL level. Valid values are "debug", "info", "warning".') + parser.add_argument('-p', '--portable', dest='portable', action='store_true', + help='Specify if this should be run as a portable app, off a USB flash drive (not implemented).') + parser.add_argument('-d', '--dev-version', dest='dev_version', action='store_true', + help='Ignore the version file and pull the version directly from Bazaar') + parser.add_argument('-s', '--style', dest='style', help='Set the Qt4 style (passed directly to Qt4).') + parser.add_argument('rargs', nargs='?', default=[]) # Parse command line options and deal with them. Use args supplied pragmatically if possible. - return parser.parse_args(args) if args else parser.parse_args() + try: + return_args = parser.parse_args() + except: + return_args = None + return return_args def set_up_logging(log_path): @@ -312,24 +316,24 @@ def set_up_logging(log_path): print('Logging to: %s' % filename) -def main(args=None): +def main(): """ The main function which parses command line options and then runs :param args: Some args """ - (options, args) = parse_options(args) + args = parse_options() qt_args = [] - if options.loglevel.lower() in ['d', 'debug']: + if args and args.loglevel.lower() in ['d', 'debug']: log.setLevel(logging.DEBUG) - elif options.loglevel.lower() in ['w', 'warning']: + elif args and args.loglevel.lower() in ['w', 'warning']: log.setLevel(logging.WARNING) else: log.setLevel(logging.INFO) - if options.style: - qt_args.extend(['-style', options.style]) + if args and args.style: + qt_args.extend(['-style', args.style]) # Throw the rest of the arguments at Qt, just in case. - qt_args.extend(args) + qt_args.extend(args.rargs) # Bug #1018855: Set the WM_CLASS property in X11 if not is_win() and not is_macosx(): qt_args.append('OpenLP') @@ -339,7 +343,7 @@ def main(args=None): application = OpenLP(qt_args) application.setOrganizationName('OpenLP') application.setOrganizationDomain('openlp.org') - if options.portable: + if args and args.portable: application.setApplicationName('OpenLPPortable') Settings.setDefaultFormat(Settings.IniFormat) # Get location OpenLPPortable.ini @@ -383,6 +387,6 @@ def main(args=None): application.installTranslator(default_translator) else: log.debug('Could not find default_translator.') - if not options.no_error_form: + if args and not args.no_error_form: sys.excepthook = application.hook_exception sys.exit(application.run(qt_args))