This commit is contained in:
Kovid Goyal 2013-10-05 13:38:35 +05:30
parent d1fb70cf32
commit 8deade288f

View File

@ -8,8 +8,7 @@ Manage application-wide preferences.
''' '''
import os, cPickle, base64, datetime, json, plistlib import os, cPickle, base64, datetime, json, plistlib
from copy import deepcopy from copy import deepcopy
from optparse import OptionParser as _OptionParser, OptionGroup import optparse
from optparse import IndentedHelpFormatter
from calibre.constants import (config_dir, CONFIG_DIR_MODE, __appname__, from calibre.constants import (config_dir, CONFIG_DIR_MODE, __appname__,
get_version, __author__) get_version, __author__)
@ -18,6 +17,10 @@ from calibre.utils.config_base import (make_config_dir, Option, OptionValues,
OptionSet, ConfigInterface, Config, prefs, StringConfig, ConfigProxy, OptionSet, ConfigInterface, Config, prefs, StringConfig, ConfigProxy,
read_raw_tweaks, read_tweaks, write_tweaks, tweaks, plugin_dir) read_raw_tweaks, read_tweaks, write_tweaks, tweaks, plugin_dir)
# optparse uses gettext.gettext instead of _ from builtins, so we
# monkey patch it.
optparse._ = _
if False: if False:
# Make pyflakes happy # Make pyflakes happy
Config, ConfigProxy, Option, OptionValues, StringConfig Config, ConfigProxy, Option, OptionValues, StringConfig
@ -27,7 +30,7 @@ if False:
def check_config_write_access(): def check_config_write_access():
return os.access(config_dir, os.W_OK) and os.access(config_dir, os.X_OK) return os.access(config_dir, os.W_OK) and os.access(config_dir, os.X_OK)
class CustomHelpFormatter(IndentedHelpFormatter): class CustomHelpFormatter(optparse.IndentedHelpFormatter):
def format_usage(self, usage): def format_usage(self, usage):
from calibre.utils.terminal import colored from calibre.utils.terminal import colored
@ -72,7 +75,7 @@ class CustomHelpFormatter(IndentedHelpFormatter):
return "".join(result)+'\n' return "".join(result)+'\n'
class OptionParser(_OptionParser): class OptionParser(optparse.OptionParser):
def __init__(self, def __init__(self,
usage='%prog [options] filename', usage='%prog [options] filename',
@ -91,7 +94,7 @@ class OptionParser(_OptionParser):
'''enclose the arguments in quotation marks.''')+'\n' '''enclose the arguments in quotation marks.''')+'\n'
if version is None: if version is None:
version = '%%prog (%s %s)'%(__appname__, get_version()) version = '%%prog (%s %s)'%(__appname__, get_version())
_OptionParser.__init__(self, usage=usage, version=version, epilog=epilog, optparse.OptionParser.__init__(self, usage=usage, version=version, epilog=epilog,
formatter=CustomHelpFormatter(), formatter=CustomHelpFormatter(),
conflict_handler=conflict_handler, **kwds) conflict_handler=conflict_handler, **kwds)
self.gui_mode = gui_mode self.gui_mode = gui_mode
@ -104,22 +107,22 @@ class OptionParser(_OptionParser):
def print_usage(self, file=None): def print_usage(self, file=None):
from calibre.utils.terminal import ANSIStream from calibre.utils.terminal import ANSIStream
s = ANSIStream(file) s = ANSIStream(file)
_OptionParser.print_usage(self, file=s) optparse.OptionParser.print_usage(self, file=s)
def print_help(self, file=None): def print_help(self, file=None):
from calibre.utils.terminal import ANSIStream from calibre.utils.terminal import ANSIStream
s = ANSIStream(file) s = ANSIStream(file)
_OptionParser.print_help(self, file=s) optparse.OptionParser.print_help(self, file=s)
def print_version(self, file=None): def print_version(self, file=None):
from calibre.utils.terminal import ANSIStream from calibre.utils.terminal import ANSIStream
s = ANSIStream(file) s = ANSIStream(file)
_OptionParser.print_version(self, file=s) optparse.OptionParser.print_version(self, file=s)
def error(self, msg): def error(self, msg):
if self.gui_mode: if self.gui_mode:
raise Exception(msg) raise Exception(msg)
_OptionParser.error(self, msg) optparse.OptionParser.error(self, msg)
def merge(self, parser): def merge(self, parser):
''' '''
@ -182,8 +185,8 @@ class OptionParser(_OptionParser):
def add_option_group(self, *args, **kwargs): def add_option_group(self, *args, **kwargs):
if isinstance(args[0], type(u'')): if isinstance(args[0], type(u'')):
args = [OptionGroup(self, *args, **kwargs)] + list(args[1:]) args = [optparse.OptionGroup(self, *args, **kwargs)] + list(args[1:])
return _OptionParser.add_option_group(self, *args, **kwargs) return optparse.OptionParser.add_option_group(self, *args, **kwargs)
class DynamicConfig(dict): class DynamicConfig(dict):
''' '''