mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-08 02:34:06 -04:00
Sync to trunk.
This commit is contained in:
commit
a7de858de1
@ -3,15 +3,16 @@ __license__ = 'GPL v3'
|
|||||||
__copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net'
|
__copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net'
|
||||||
__docformat__ = 'restructuredtext en'
|
__docformat__ = 'restructuredtext en'
|
||||||
|
|
||||||
|
|
||||||
from calibre.web.feeds.news import BasicNewsRecipe
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
# http://online.wsj.com/page/us_in_todays_paper.html
|
# http://online.wsj.com/page/us_in_todays_paper.html
|
||||||
|
|
||||||
class WallStreetJournal(BasicNewsRecipe):
|
class WallStreetJournal(BasicNewsRecipe):
|
||||||
|
|
||||||
title = 'The Wall Street Journal'
|
title = 'The Wall Street Journal (US)'
|
||||||
__author__ = 'Kovid Goyal and Sujata Raman'
|
__author__ = 'Kovid Goyal and Sujata Raman'
|
||||||
description = 'News and current affairs.'
|
description = 'News and current affairs'
|
||||||
needs_subscription = True
|
needs_subscription = True
|
||||||
language = 'en'
|
language = 'en'
|
||||||
|
|
||||||
@ -60,60 +61,54 @@ class WallStreetJournal(BasicNewsRecipe):
|
|||||||
|
|
||||||
return soup
|
return soup
|
||||||
|
|
||||||
def get_article_url(self, article):
|
def wsj_get_index(self):
|
||||||
try:
|
return self.index_to_soup('http://online.wsj.com/page/us_in_todays_paper.html')
|
||||||
return article.feedburner_origlink.split('?')[0]
|
|
||||||
except AttributeError:
|
def parse_index(self):
|
||||||
return article.link.split('?')[0]
|
soup = self.wsj_get_index()
|
||||||
|
|
||||||
|
left_column = soup.find(
|
||||||
|
text=lambda t: 'begin ITP Left Column' in str(t))
|
||||||
|
|
||||||
|
table = left_column.findNext('table')
|
||||||
|
|
||||||
|
current_section = None
|
||||||
|
current_articles = []
|
||||||
|
feeds = []
|
||||||
|
for x in table.findAllNext(True):
|
||||||
|
if x.name == 'td' and x.get('class', None) == 'b13':
|
||||||
|
if current_articles and current_section:
|
||||||
|
feeds.append((current_section, current_articles))
|
||||||
|
current_section = self.tag_to_string(x.a).strip()
|
||||||
|
current_articles = []
|
||||||
|
self.log('\tProcessing section:', current_section)
|
||||||
|
if current_section is not None and x.name == 'a' and \
|
||||||
|
x.get('class', None) == 'bold80':
|
||||||
|
title = self.tag_to_string(x)
|
||||||
|
url = x.get('href', False)
|
||||||
|
if not url or not title:
|
||||||
|
continue
|
||||||
|
url = url.partition('#')[0]
|
||||||
|
desc = ''
|
||||||
|
d = x.findNextSibling(True)
|
||||||
|
if d.get('class', None) == 'arialResize':
|
||||||
|
desc = self.tag_to_string(d)
|
||||||
|
desc = desc.partition(u'\u2022')[0]
|
||||||
|
self.log('\t\tFound article:', title)
|
||||||
|
self.log('\t\t\t', url)
|
||||||
|
if url.startswith('/'):
|
||||||
|
url = 'http://online.wsj.com'+url
|
||||||
|
if desc:
|
||||||
|
self.log('\t\t\t', desc)
|
||||||
|
current_articles.append({'title': title, 'url':url,
|
||||||
|
'description':desc, 'date':''})
|
||||||
|
|
||||||
|
if current_articles and current_section:
|
||||||
|
feeds.append((current_section, current_articles))
|
||||||
|
|
||||||
|
return feeds
|
||||||
|
|
||||||
def cleanup(self):
|
def cleanup(self):
|
||||||
self.browser.open('http://online.wsj.com/logout?url=http://online.wsj.com')
|
self.browser.open('http://online.wsj.com/logout?url=http://online.wsj.com')
|
||||||
|
|
||||||
feeds = [
|
|
||||||
#('Most Emailed - Day', 'http://online.wsj.com/xml/rss/3_7030.xml'),
|
|
||||||
#('Most Emailed - Week', 'http://online.wsj.com/xml/rss/3_7253.xml'),
|
|
||||||
#('Most Emailed - Month', 'http://online.wsj.com/xml/rss/3_7254.xml'),
|
|
||||||
(' Most Viewed - Day', 'http://online.wsj.com/xml/rss/3_7198.xml'),
|
|
||||||
(' Most Viewed - Week', 'http://online.wsj.com/xml/rss/3_7251.xml'),
|
|
||||||
#('Most Viewed - Month', 'http://online.wsj.com/xml/rss/3_7252.xml'),
|
|
||||||
('Today\'s Newspaper - Page One', 'http://online.wsj.com/xml/rss/3_7205.xml'),
|
|
||||||
('Today\'s Newspaper - Marketplace', 'http://online.wsj.com/xml/rss/3_7206.xml'),
|
|
||||||
('Today\'s Newspaper - Money & Investing', 'http://online.wsj.com/xml/rss/3_7207.xml'),
|
|
||||||
('Today\'s Newspaper - Personal Journal', 'http://online.wsj.com/xml/rss/3_7208.xml'),
|
|
||||||
('Today\'s Newspaper - Weekend Journal', 'http://online.wsj.com/xml/rss/3_7209.xml'),
|
|
||||||
('Opinion', 'http://online.wsj.com/xml/rss/3_7041.xml'),
|
|
||||||
('News - U.S.: What\'s News', 'http://online.wsj.com/xml/rss/3_7011.xml'),
|
|
||||||
('News - U.S. Business', 'http://online.wsj.com/xml/rss/3_7014.xml'),
|
|
||||||
('News - Europe: What\'s News', 'http://online.wsj.com/xml/rss/3_7012.xml'),
|
|
||||||
('News - Asia: What\'s News', 'http://online.wsj.com/xml/rss/3_7013.xml'),
|
|
||||||
('News - World News', 'http://online.wsj.com/xml/rss/3_7085.xml'),
|
|
||||||
('News - Economy', 'http://online.wsj.com/xml/rss/3_7086.xml'),
|
|
||||||
('News - Earnings', 'http://online.wsj.com/xml/rss/3_7088.xml'),
|
|
||||||
('News - Health', 'http://online.wsj.com/xml/rss/3_7089.xml'),
|
|
||||||
('News - Law', 'http://online.wsj.com/xml/rss/3_7091.xml'),
|
|
||||||
('News - Media & Marketing', 'http://online.wsj.com/xml/rss/3_7020.xml'),
|
|
||||||
('Technology - What\'s News', 'http://online.wsj.com/xml/rss/3_7015.xml'),
|
|
||||||
('Technology - Gadgets', 'http://online.wsj.com/xml/rss/3_7094.xml'),
|
|
||||||
('Technology - Telecommunications', 'http://online.wsj.com/xml/rss/3_7095.xml'),
|
|
||||||
('Technology - E-commerce/Media', 'http://online.wsj.com/xml/rss/3_7096.xml'),
|
|
||||||
('Technology - Asia', 'http://online.wsj.com/xml/rss/3_7097.xml'),
|
|
||||||
('Technology - Europe', 'http://online.wsj.com/xml/rss/3_7098.xml'),
|
|
||||||
('Markets - News', 'http://online.wsj.com/xml/rss/3_7031.xml'),
|
|
||||||
('Markets - Europe News', 'http://online.wsj.com/xml/rss/3_7101.xml'),
|
|
||||||
('Markets - Asia News', 'http://online.wsj.com/xml/rss/3_7102.xml'),
|
|
||||||
('Markets - Deals & Deal Makers', 'http://online.wsj.com/xml/rss/3_7099.xml'),
|
|
||||||
('Markets - Hedge Funds', 'http://online.wsj.com/xml/rss/3_7199.xml'),
|
|
||||||
('Personal Journal', 'http://online.wsj.com/xml/rss/3_7200.xml'),
|
|
||||||
('Personal Journal - Money', 'http://online.wsj.com/xml/rss/3_7104.xml'),
|
|
||||||
('Personal Journal - Health', 'http://online.wsj.com/xml/rss/3_7089.xml'),
|
|
||||||
('Personal Journal - Autos', 'http://online.wsj.com/xml/rss/3_7092.xml'),
|
|
||||||
('Personal Journal - Homes', 'http://online.wsj.com/xml/rss/3_7105.xml'),
|
|
||||||
('Personal Journal - Travel', 'http://online.wsj.com/xml/rss/3_7106.xml'),
|
|
||||||
('Personal Journal - Careers', 'http://online.wsj.com/xml/rss/3_7107.xml'),
|
|
||||||
('Weekend & Leisure', 'http://online.wsj.com/xml/rss/3_7201.xml'),
|
|
||||||
('Weekend & Leisure - Weekend Journal', 'http://online.wsj.com/xml/rss/3_7202.xml'),
|
|
||||||
('Weekend & Leisure - Arts & Entertainment', 'http://online.wsj.com/xml/rss/3_7177.xml'),
|
|
||||||
('Weekend & Leisure - Books', 'http://online.wsj.com/xml/rss/3_7203.xml'),
|
|
||||||
('Weekend & Leisure - Sports', 'http://online.wsj.com/xml/rss/3_7204.xml'),
|
|
||||||
]
|
|
||||||
|
|
||||||
|
@ -13,12 +13,9 @@ from PyQt4 import pyqtconfig
|
|||||||
|
|
||||||
from setup import isosx, iswindows, islinux
|
from setup import isosx, iswindows, islinux
|
||||||
|
|
||||||
OSX_SDK = '/Developer/SDKs/MacOSX10.5.sdk'
|
OSX_SDK = '/Developer/SDKs/MacOSX10.4u.sdk'
|
||||||
if not os.path.exists(OSX_SDK):
|
|
||||||
OSX_SDK = '/Developer/SDKs/MacOSX10.4u.sdk'
|
|
||||||
leopard_build = '10.5' in OSX_SDK
|
|
||||||
|
|
||||||
os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.5' if leopard_build else '10.4'
|
os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.4'
|
||||||
|
|
||||||
NMAKE = RC = msvc = MT = win_inc = win_lib = None
|
NMAKE = RC = msvc = MT = win_inc = win_lib = None
|
||||||
if iswindows:
|
if iswindows:
|
||||||
@ -117,24 +114,24 @@ if iswindows:
|
|||||||
podofo_inc = os.path.join(sw_inc_dir, 'podofo')
|
podofo_inc = os.path.join(sw_inc_dir, 'podofo')
|
||||||
podofo_lib = sw_lib_dir
|
podofo_lib = sw_lib_dir
|
||||||
elif isosx:
|
elif isosx:
|
||||||
fc_inc = '/Users/kovid/fontconfig/include/fontconfig'
|
fc_inc = '/sw/include/fontconfig'
|
||||||
fc_lib = '/Users/kovid/fontconfig/lib'
|
fc_lib = '/sw/lib'
|
||||||
poppler_inc_dirs = consolidate('POPPLER_INC_DIR',
|
poppler_inc_dirs = consolidate('POPPLER_INC_DIR',
|
||||||
'/Volumes/sw/build/poppler-0.12.0/poppler:/Volumes/sw/build/poppler-0.12.0')
|
'/sw/build/poppler-0.12.2/poppler:/sw/build/poppler-0.12.2')
|
||||||
popplerqt4_inc_dirs = poppler_inc_dirs + [poppler_inc_dirs[0]+'/qt4']
|
popplerqt4_inc_dirs = poppler_inc_dirs + [poppler_inc_dirs[0]+'/qt4']
|
||||||
poppler_lib_dirs = consolidate('POPPLER_LIB_DIR',
|
poppler_lib_dirs = consolidate('POPPLER_LIB_DIR',
|
||||||
'/Volumes/sw/lib')
|
'/sw/lib')
|
||||||
popplerqt4_lib_dirs = poppler_lib_dirs
|
popplerqt4_lib_dirs = poppler_lib_dirs
|
||||||
poppler_libs = popplerqt4_libs = ['poppler']
|
poppler_libs = popplerqt4_libs = ['poppler']
|
||||||
podofo_inc = '/usr/local/include/podofo'
|
podofo_inc = '/sw/podofo'
|
||||||
podofo_lib = '/usr/local/lib'
|
podofo_lib = '/sw/lib'
|
||||||
magick_inc_dirs = consolidate('MAGICK_INC',
|
magick_inc_dirs = consolidate('MAGICK_INC',
|
||||||
'/Users/kovid/ImageMagick/include/ImageMagick')
|
'/sw/include/ImageMagick')
|
||||||
magick_lib_dirs = consolidate('MAGICK_LIB',
|
magick_lib_dirs = consolidate('MAGICK_LIB',
|
||||||
'/Users/kovid/ImageMagick/lib')
|
'/sw/lib')
|
||||||
magick_libs = ['MagickWand', 'MagickCore']
|
magick_libs = ['MagickWand', 'MagickCore']
|
||||||
png_inc_dirs = consolidate('PNG_INC_DIR', '/usr/local/include')
|
png_inc_dirs = consolidate('PNG_INC_DIR', '/sw/include')
|
||||||
png_lib_dirs = consolidate('PNG_LIB_DIR', '/usr/local/lib')
|
png_lib_dirs = consolidate('PNG_LIB_DIR', '/sw/lib')
|
||||||
png_libs = ['png12']
|
png_libs = ['png12']
|
||||||
else:
|
else:
|
||||||
# Include directories
|
# Include directories
|
||||||
|
@ -83,7 +83,7 @@ linux_freeze2 = LinuxFreeze2()
|
|||||||
from setup.installer.osx import OSX, OSX32
|
from setup.installer.osx import OSX, OSX32
|
||||||
osx = OSX()
|
osx = OSX()
|
||||||
osx32 = OSX32()
|
osx32 = OSX32()
|
||||||
from setup.installer.osx.freeze import OSX32_Freeze
|
from setup.installer.osx.app.main import OSX32_Freeze
|
||||||
osx32_freeze = OSX32_Freeze()
|
osx32_freeze = OSX32_Freeze()
|
||||||
|
|
||||||
from setup.installer.windows import Win, Win32
|
from setup.installer.windows import Win, Win32
|
||||||
|
@ -15,7 +15,7 @@ from setup import Command, islinux, isosx, SRC, iswindows
|
|||||||
from setup.build_environment import fc_inc, fc_lib, \
|
from setup.build_environment import fc_inc, fc_lib, \
|
||||||
fc_error, poppler_libs, poppler_lib_dirs, poppler_inc_dirs, podofo_inc, \
|
fc_error, poppler_libs, poppler_lib_dirs, poppler_inc_dirs, podofo_inc, \
|
||||||
podofo_lib, podofo_error, poppler_error, pyqt, OSX_SDK, NMAKE, \
|
podofo_lib, podofo_error, poppler_error, pyqt, OSX_SDK, NMAKE, \
|
||||||
leopard_build, QMAKE, msvc, MT, win_inc, win_lib, png_inc_dirs, \
|
QMAKE, msvc, MT, win_inc, win_lib, png_inc_dirs, \
|
||||||
magick_inc_dirs, magick_lib_dirs, png_lib_dirs, png_libs, \
|
magick_inc_dirs, magick_lib_dirs, png_lib_dirs, png_libs, \
|
||||||
magick_error, magick_libs, ft_lib_dirs, ft_libs, jpg_libs, jpg_lib_dirs
|
magick_error, magick_libs, ft_lib_dirs, ft_libs, jpg_libs, jpg_lib_dirs
|
||||||
MT
|
MT
|
||||||
@ -156,7 +156,7 @@ if islinux:
|
|||||||
|
|
||||||
|
|
||||||
if isosx:
|
if isosx:
|
||||||
x, p = ('x86_64', 'ppc64') if leopard_build else ('i386', 'ppc')
|
x, p = ('i386', 'ppc')
|
||||||
archs = ['-arch', x, '-arch', p, '-isysroot',
|
archs = ['-arch', x, '-arch', p, '-isysroot',
|
||||||
OSX_SDK]
|
OSX_SDK]
|
||||||
cflags.append('-D_OSX')
|
cflags.append('-D_OSX')
|
||||||
@ -305,7 +305,7 @@ class Build(Command):
|
|||||||
obj_pat = 'release\\*.obj' if iswindows else '*.o'
|
obj_pat = 'release\\*.obj' if iswindows else '*.o'
|
||||||
objects = glob.glob(obj_pat)
|
objects = glob.glob(obj_pat)
|
||||||
if not objects or self.newer(objects, ext.sources+ext.headers):
|
if not objects or self.newer(objects, ext.sources+ext.headers):
|
||||||
archs = 'x86_64 ppc64' if leopard_build else 'x86 ppc'
|
archs = 'x86 ppc'
|
||||||
pro = textwrap.dedent('''\
|
pro = textwrap.dedent('''\
|
||||||
TARGET = %s
|
TARGET = %s
|
||||||
TEMPLATE = lib
|
TEMPLATE = lib
|
||||||
@ -316,9 +316,6 @@ class Build(Command):
|
|||||||
''')%(ext.name, ' '.join(ext.headers), ' '.join(ext.sources), archs)
|
''')%(ext.name, ' '.join(ext.headers), ' '.join(ext.sources), archs)
|
||||||
open(ext.name+'.pro', 'wb').write(pro)
|
open(ext.name+'.pro', 'wb').write(pro)
|
||||||
subprocess.check_call([QMAKE, '-o', 'Makefile', ext.name+'.pro'])
|
subprocess.check_call([QMAKE, '-o', 'Makefile', ext.name+'.pro'])
|
||||||
if leopard_build:
|
|
||||||
raw = open('Makefile', 'rb').read()
|
|
||||||
open('Makefile', 'wb').write(raw.replace('ppc64', 'x86_64'))
|
|
||||||
subprocess.check_call([make, '-f', 'Makefile'])
|
subprocess.check_call([make, '-f', 'Makefile'])
|
||||||
objects = glob.glob(obj_pat)
|
objects = glob.glob(obj_pat)
|
||||||
return list(map(self.a, objects))
|
return list(map(self.a, objects))
|
||||||
@ -354,12 +351,6 @@ class Build(Command):
|
|||||||
makefile.extra_lflags = qt_objects
|
makefile.extra_lflags = qt_objects
|
||||||
makefile.extra_include_dirs = ext.inc_dirs
|
makefile.extra_include_dirs = ext.inc_dirs
|
||||||
makefile.generate()
|
makefile.generate()
|
||||||
if leopard_build:
|
|
||||||
raw = open(mf, 'rb').read()
|
|
||||||
raw = raw.replace('ppc64 x86_64', 'x86_64')
|
|
||||||
for x in ('ppc64', 'ppc', 'i386'):
|
|
||||||
raw = raw.replace(x, 'x86_64')
|
|
||||||
open(mf, 'wb').write(raw)
|
|
||||||
|
|
||||||
subprocess.check_call([make, '-f', mf], cwd=src_dir)
|
subprocess.check_call([make, '-f', mf], cwd=src_dir)
|
||||||
shutil.copy2(module, dest)
|
shutil.copy2(module, dest)
|
||||||
|
@ -25,8 +25,9 @@ class OSX32(VMInstaller):
|
|||||||
description = 'Build 32 bit OS X binary installer'
|
description = 'Build 32 bit OS X binary installer'
|
||||||
|
|
||||||
INSTALLER_EXT = 'dmg'
|
INSTALLER_EXT = 'dmg'
|
||||||
VM_NAME = 'tiger_build'
|
VM_NAME = 'leopard_build'
|
||||||
VM = '/vmware/bin/%s'%VM_NAME
|
VM = '/vmware/bin/%s'%VM_NAME
|
||||||
|
FREEZE_TEMPLATE = 'python -OO setup.py {freeze_command}'
|
||||||
FREEZE_COMMAND = 'osx32_freeze'
|
FREEZE_COMMAND = 'osx32_freeze'
|
||||||
BUILD_PREFIX = VMInstaller.BUILD_PREFIX + ['source ~/.profile']
|
BUILD_PREFIX = VMInstaller.BUILD_PREFIX + ['source ~/.profile']
|
||||||
SHUTDOWN_CMD = ['sudo', 'halt']
|
SHUTDOWN_CMD = ['sudo', 'halt']
|
||||||
|
@ -13,9 +13,13 @@ abspath, join, basename = os.path.abspath, os.path.join, os.path.basename
|
|||||||
from setup import __version__ as VERSION, __appname__ as APPNAME, basenames, \
|
from setup import __version__ as VERSION, __appname__ as APPNAME, basenames, \
|
||||||
modules as main_modules, Command, SRC, functions as main_functions
|
modules as main_modules, Command, SRC, functions as main_functions
|
||||||
LICENSE = open('LICENSE', 'rb').read()
|
LICENSE = open('LICENSE', 'rb').read()
|
||||||
|
MAGICK_HOME='@executable_path/../Frameworks/ImageMagick'
|
||||||
ENV = dict(
|
ENV = dict(
|
||||||
FC_CONFIG_DIR='@executable_path/../Resources/fonts',
|
FC_CONFIG_DIR='@executable_path/../Resources/fonts',
|
||||||
MAGICK_HOME='@executable_path/../Frameworks/ImageMagick',
|
FC_CONFIG_FILE='@executable_path/../Resources/fonts/fonts.conf',
|
||||||
|
MAGICK_CONFIGURE_PATH=MAGICK_HOME+'/config',
|
||||||
|
MAGICK_CODER_MODULE_PATH=MAGICK_HOME+'/modules-Q16/coders',
|
||||||
|
MAGICK_CODER_FILTER_PATH=MAGICK_HOME+'/modules-Q16/filter',
|
||||||
QT_PLUGIN_PATH='@executable_path/../MacOS',
|
QT_PLUGIN_PATH='@executable_path/../MacOS',
|
||||||
PYTHONIOENCODING='UTF-8',
|
PYTHONIOENCODING='UTF-8',
|
||||||
)
|
)
|
||||||
@ -46,9 +50,9 @@ def compile_launcher_lib(contents_dir, gcc, base):
|
|||||||
src = join(base, 'util.c')
|
src = join(base, 'util.c')
|
||||||
cmd = [gcc] + '-Wall -arch i386 -arch ppc -dynamiclib -std=gnu99'.split() + [src] + \
|
cmd = [gcc] + '-Wall -arch i386 -arch ppc -dynamiclib -std=gnu99'.split() + [src] + \
|
||||||
['-I'+base] + \
|
['-I'+base] + \
|
||||||
['-I%s/python/Python.framework/Headers'%SW] + \
|
['-I/Library/Frameworks/Python.framework/Versions/Current/Headers'] + \
|
||||||
'-current_version 1.0 -compatibility_version 1.0'.split() + \
|
'-current_version 1.0 -compatibility_version 1.0'.split() + \
|
||||||
'-fvisibility=hidden -o'.split() + [dest, '-F%s/python'%SW] + \
|
'-fvisibility=hidden -o'.split() + [dest] + \
|
||||||
['-install_name',
|
['-install_name',
|
||||||
'@executable_path/../Frameworks/'+os.path.basename(dest)] + \
|
'@executable_path/../Frameworks/'+os.path.basename(dest)] + \
|
||||||
['-framework', 'Python', '-framework', 'CoreFoundation', '-headerpad_max_install_names']
|
['-framework', 'Python', '-framework', 'CoreFoundation', '-headerpad_max_install_names']
|
||||||
@ -176,6 +180,8 @@ class Py2App(object):
|
|||||||
self.create_plist()
|
self.create_plist()
|
||||||
|
|
||||||
self.add_python_framework()
|
self.add_python_framework()
|
||||||
|
self.add_site_packages()
|
||||||
|
self.add_stdlib()
|
||||||
self.add_qt_frameworks()
|
self.add_qt_frameworks()
|
||||||
self.add_calibre_plugins()
|
self.add_calibre_plugins()
|
||||||
self.add_podofo()
|
self.add_podofo()
|
||||||
@ -186,8 +192,6 @@ class Py2App(object):
|
|||||||
self.add_imagemagick()
|
self.add_imagemagick()
|
||||||
self.add_misc_libraries()
|
self.add_misc_libraries()
|
||||||
|
|
||||||
self.add_site_packages()
|
|
||||||
self.add_stdlib()
|
|
||||||
self.add_resources()
|
self.add_resources()
|
||||||
self.compile_py_modules()
|
self.compile_py_modules()
|
||||||
|
|
||||||
@ -262,8 +266,10 @@ class Py2App(object):
|
|||||||
def get_local_dependencies(self, path_to_lib):
|
def get_local_dependencies(self, path_to_lib):
|
||||||
for x in self.get_dependencies(path_to_lib):
|
for x in self.get_dependencies(path_to_lib):
|
||||||
for y in (SW+'/lib/', '/usr/local/lib/', SW+'/qt/lib/',
|
for y in (SW+'/lib/', '/usr/local/lib/', SW+'/qt/lib/',
|
||||||
SW+'/python/', SW+'/freetype/lib/'):
|
'/Library/Frameworks/Python.framework/', SW+'/freetype/lib/'):
|
||||||
if x.startswith(y):
|
if x.startswith(y):
|
||||||
|
if y == '/Library/Frameworks/Python.framework/':
|
||||||
|
y = '/Library/Frameworks/'
|
||||||
yield x, x[len(y):]
|
yield x, x[len(y):]
|
||||||
break
|
break
|
||||||
|
|
||||||
@ -289,7 +295,7 @@ class Py2App(object):
|
|||||||
@flush
|
@flush
|
||||||
def add_python_framework(self):
|
def add_python_framework(self):
|
||||||
info('\nAdding Python framework')
|
info('\nAdding Python framework')
|
||||||
src = join(SW, 'python', 'Python.framework')
|
src = join('/Library/Frameworks', 'Python.framework')
|
||||||
x = join(self.frameworks_dir, 'Python.framework')
|
x = join(self.frameworks_dir, 'Python.framework')
|
||||||
curr = os.path.realpath(join(src, 'Versions', 'Current'))
|
curr = os.path.realpath(join(src, 'Versions', 'Current'))
|
||||||
currd = join(x, 'Versions', basename(curr))
|
currd = join(x, 'Versions', basename(curr))
|
||||||
@ -302,6 +308,7 @@ class Py2App(object):
|
|||||||
|
|
||||||
@flush
|
@flush
|
||||||
def add_qt_frameworks(self):
|
def add_qt_frameworks(self):
|
||||||
|
info('\nAdding Qt Framework')
|
||||||
for f in ('QtCore', 'QtGui', 'QtXml', 'QtNetwork', 'QtSvg', 'QtWebkit',
|
for f in ('QtCore', 'QtGui', 'QtXml', 'QtNetwork', 'QtSvg', 'QtWebkit',
|
||||||
'QtXmlPatterns', 'phonon'):
|
'QtXmlPatterns', 'phonon'):
|
||||||
self.add_qt_framework(f)
|
self.add_qt_framework(f)
|
||||||
@ -360,7 +367,7 @@ class Py2App(object):
|
|||||||
CFBundlePackageType='APPL',
|
CFBundlePackageType='APPL',
|
||||||
CFBundleSignature='????',
|
CFBundleSignature='????',
|
||||||
CFBundleExecutable='calibre',
|
CFBundleExecutable='calibre',
|
||||||
LSMinimumSystemVersion='10.5.2',
|
LSMinimumSystemVersion='10.4.2',
|
||||||
LSRequiresNativeExecution=True,
|
LSRequiresNativeExecution=True,
|
||||||
NSAppleScriptEnabled=False,
|
NSAppleScriptEnabled=False,
|
||||||
NSHumanReadableCopyright='Copyright 2008, Kovid Goyal',
|
NSHumanReadableCopyright='Copyright 2008, Kovid Goyal',
|
||||||
@ -433,10 +440,7 @@ class Py2App(object):
|
|||||||
for x in ('Wand', 'Core'):
|
for x in ('Wand', 'Core'):
|
||||||
self.install_dylib(os.path.join(SW, 'lib', 'libMagick%s.2.dylib'%x))
|
self.install_dylib(os.path.join(SW, 'lib', 'libMagick%s.2.dylib'%x))
|
||||||
idir = glob.glob(os.path.join(SW, 'lib', 'ImageMagick-*'))[-1]
|
idir = glob.glob(os.path.join(SW, 'lib', 'ImageMagick-*'))[-1]
|
||||||
dest = os.path.join(self.frameworks_dir, 'ImageMagick', 'lib')
|
dest = os.path.join(self.frameworks_dir, 'ImageMagick')
|
||||||
if not os.path.exists(dest):
|
|
||||||
os.makedirs(dest)
|
|
||||||
dest = os.path.join(dest, os.path.basename(idir))
|
|
||||||
if os.path.exists(dest):
|
if os.path.exists(dest):
|
||||||
shutil.rmtree(dest)
|
shutil.rmtree(dest)
|
||||||
shutil.copytree(idir, dest, True)
|
shutil.copytree(idir, dest, True)
|
||||||
@ -461,12 +465,12 @@ class Py2App(object):
|
|||||||
paths = reversed(map(abspath, [x for x in sys.path if x.startswith('/')]))
|
paths = reversed(map(abspath, [x for x in sys.path if x.startswith('/')]))
|
||||||
upaths = []
|
upaths = []
|
||||||
for x in paths:
|
for x in paths:
|
||||||
if x.endswith('/PIL') or 'site-packages' not in x:
|
if x not in upaths and (x.endswith('.egg') or
|
||||||
continue
|
x.endswith('/site-packages')):
|
||||||
if x not in upaths:
|
|
||||||
upaths.append(x)
|
upaths.append(x)
|
||||||
upaths.append(os.path.expanduser('~/build/calibre/src'))
|
upaths.append(os.path.expanduser('~/build/calibre/src'))
|
||||||
for x in upaths:
|
for x in upaths:
|
||||||
|
info('\t', x)
|
||||||
tdir = None
|
tdir = None
|
||||||
try:
|
try:
|
||||||
if not os.path.isdir(x):
|
if not os.path.isdir(x):
|
||||||
@ -536,7 +540,7 @@ class Py2App(object):
|
|||||||
@flush
|
@flush
|
||||||
def add_stdlib(self):
|
def add_stdlib(self):
|
||||||
info('\nAdding python stdlib')
|
info('\nAdding python stdlib')
|
||||||
src = join(SW, 'python/Python.framework/Versions/Current/lib/python')
|
src = '/Library/Frameworks/Python.framework/Versions/Current/lib/python'
|
||||||
src += self.version_info
|
src += self.version_info
|
||||||
dest = join(self.resources_dir, 'Python', 'lib', 'python')
|
dest = join(self.resources_dir, 'Python', 'lib', 'python')
|
||||||
dest += self.version_info
|
dest += self.version_info
|
||||||
|
@ -363,7 +363,7 @@ class NookOutput(OutputProfile):
|
|||||||
description = _('This profile is intended for the B&N Nook.')
|
description = _('This profile is intended for the B&N Nook.')
|
||||||
|
|
||||||
# Screen size is a best guess
|
# Screen size is a best guess
|
||||||
screen_size = (600, 800)
|
screen_size = (600, 770)
|
||||||
dpi = 167
|
dpi = 167
|
||||||
fbase = 16
|
fbase = 16
|
||||||
fsizes = [12, 12, 14, 16, 18, 20, 22, 24]
|
fsizes = [12, 12, 14, 16, 18, 20, 22, 24]
|
||||||
|
@ -9,7 +9,6 @@ Device driver for Bookeen's Cybook Gen 3
|
|||||||
'''
|
'''
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from itertools import cycle
|
|
||||||
|
|
||||||
from calibre import islinux
|
from calibre import islinux
|
||||||
from calibre.devices.usbms.driver import USBMS
|
from calibre.devices.usbms.driver import USBMS
|
||||||
|
@ -8,10 +8,7 @@ __docformat__ = 'restructuredtext en'
|
|||||||
Device driver for Barns and Nobel's Nook
|
Device driver for Barns and Nobel's Nook
|
||||||
'''
|
'''
|
||||||
|
|
||||||
try:
|
import os
|
||||||
from PIL import Image, ImageDraw
|
|
||||||
except ImportError:
|
|
||||||
import Image, ImageDraw
|
|
||||||
|
|
||||||
import cStringIO
|
import cStringIO
|
||||||
|
|
||||||
@ -47,6 +44,13 @@ class NOOK(USBMS):
|
|||||||
SUPPORTS_SUB_DIRS = True
|
SUPPORTS_SUB_DIRS = True
|
||||||
|
|
||||||
def upload_cover(self, path, filename, metadata):
|
def upload_cover(self, path, filename, metadata):
|
||||||
|
try:
|
||||||
|
from PIL import Image, ImageDraw
|
||||||
|
Image, ImageDraw
|
||||||
|
except ImportError:
|
||||||
|
import Image, ImageDraw
|
||||||
|
|
||||||
|
|
||||||
coverdata = metadata.get('cover', None)
|
coverdata = metadata.get('cover', None)
|
||||||
if coverdata:
|
if coverdata:
|
||||||
cover = Image.open(cStringIO.StringIO(coverdata[2]))
|
cover = Image.open(cStringIO.StringIO(coverdata[2]))
|
||||||
|
@ -111,7 +111,11 @@ class USBMS(CLI, Device):
|
|||||||
paths.append(filepath)
|
paths.append(filepath)
|
||||||
|
|
||||||
self.put_file(infile, filepath, replace_file=True)
|
self.put_file(infile, filepath, replace_file=True)
|
||||||
|
try:
|
||||||
self.upload_cover(os.path.dirname(filepath), os.path.splitext(os.path.basename(filepath))[0], mdata)
|
self.upload_cover(os.path.dirname(filepath), os.path.splitext(os.path.basename(filepath))[0], mdata)
|
||||||
|
except: # Failure to upload cover is not catastrophic
|
||||||
|
import traceback
|
||||||
|
traceback.print_exc()
|
||||||
|
|
||||||
self.report_progress((i+1) / float(len(files)), _('Transferring books to device...'))
|
self.report_progress((i+1) / float(len(files)), _('Transferring books to device...'))
|
||||||
|
|
||||||
|
@ -203,9 +203,10 @@ def create_option_parser(args, log):
|
|||||||
log('Created by:', __author__)
|
log('Created by:', __author__)
|
||||||
raise SystemExit(0)
|
raise SystemExit(0)
|
||||||
if '--list-recipes' in args:
|
if '--list-recipes' in args:
|
||||||
from calibre.web.feeds.recipes import titles
|
from calibre.web.feeds.recipes.collection import get_builtin_recipe_titles
|
||||||
log('Available recipes:')
|
log('Available recipes:')
|
||||||
for title in sorted(titles):
|
titles = sorted(get_builtin_recipe_titles())
|
||||||
|
for title in titles:
|
||||||
try:
|
try:
|
||||||
log('\t'+title)
|
log('\t'+title)
|
||||||
except:
|
except:
|
||||||
|
@ -155,17 +155,19 @@ class EPUBOutput(OutputFormatPlugin):
|
|||||||
def convert(self, oeb, output_path, input_plugin, opts, log):
|
def convert(self, oeb, output_path, input_plugin, opts, log):
|
||||||
self.log, self.opts, self.oeb = log, opts, oeb
|
self.log, self.opts, self.oeb = log, opts, oeb
|
||||||
|
|
||||||
|
self.workaround_ade_quirks()
|
||||||
|
self.workaround_webkit_quirks()
|
||||||
|
self.workaround_sony_quirks()
|
||||||
|
from calibre.ebooks.oeb.transforms.rescale import RescaleImages
|
||||||
|
RescaleImages()(oeb, opts)
|
||||||
|
|
||||||
|
|
||||||
from calibre.ebooks.oeb.transforms.split import Split
|
from calibre.ebooks.oeb.transforms.split import Split
|
||||||
split = Split(not self.opts.dont_split_on_page_breaks,
|
split = Split(not self.opts.dont_split_on_page_breaks,
|
||||||
max_flow_size=self.opts.flow_size*1024
|
max_flow_size=self.opts.flow_size*1024
|
||||||
)
|
)
|
||||||
split(self.oeb, self.opts)
|
split(self.oeb, self.opts)
|
||||||
|
|
||||||
self.workaround_ade_quirks()
|
|
||||||
self.workaround_webkit_quirks()
|
|
||||||
self.workaround_sony_quirks()
|
|
||||||
from calibre.ebooks.oeb.transforms.rescale import RescaleImages
|
|
||||||
RescaleImages()(oeb, opts)
|
|
||||||
self.insert_cover()
|
self.insert_cover()
|
||||||
|
|
||||||
with TemporaryDirectory('_epub_output') as tdir:
|
with TemporaryDirectory('_epub_output') as tdir:
|
||||||
|
@ -381,9 +381,9 @@ class FlowSplitter(object):
|
|||||||
p[i:i+1] = new_pres
|
p[i:i+1] = new_pres
|
||||||
|
|
||||||
split_point, before = self.find_split_point(root)
|
split_point, before = self.find_split_point(root)
|
||||||
self.log.debug('\t\t\tSplit point:', split_point.tag, tree.getpath(split_point))
|
|
||||||
if split_point is None:
|
if split_point is None:
|
||||||
raise SplitError(self.item.href, root)
|
raise SplitError(self.item.href, root)
|
||||||
|
self.log.debug('\t\t\tSplit point:', split_point.tag, tree.getpath(split_point))
|
||||||
|
|
||||||
for t in self.do_split(tree, split_point, before):
|
for t in self.do_split(tree, split_point, before):
|
||||||
r = t.getroot()
|
r = t.getroot()
|
||||||
|
@ -693,6 +693,9 @@ class BooksView(TableView):
|
|||||||
self._model.current_changed)
|
self._model.current_changed)
|
||||||
self.connect(self._model, SIGNAL('columns_sorted()'),
|
self.connect(self._model, SIGNAL('columns_sorted()'),
|
||||||
self.columns_sorted, Qt.QueuedConnection)
|
self.columns_sorted, Qt.QueuedConnection)
|
||||||
|
hv = self.verticalHeader()
|
||||||
|
hv.setClickable(True)
|
||||||
|
hv.setCursor(Qt.PointingHandCursor)
|
||||||
|
|
||||||
def columns_sorted(self):
|
def columns_sorted(self):
|
||||||
for i in range(self.model().columnCount(None)):
|
for i in range(self.model().columnCount(None)):
|
||||||
|
@ -552,6 +552,11 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI):
|
|||||||
self.connect(self.scheduler,
|
self.connect(self.scheduler,
|
||||||
SIGNAL('start_recipe_fetch(PyQt_PyObject)'),
|
SIGNAL('start_recipe_fetch(PyQt_PyObject)'),
|
||||||
self.download_scheduled_recipe, Qt.QueuedConnection)
|
self.download_scheduled_recipe, Qt.QueuedConnection)
|
||||||
|
self.library_view.verticalHeader().sectionClicked.connect(self.view_specific_book)
|
||||||
|
|
||||||
|
for view in ('library', 'memory', 'card_a', 'card_b'):
|
||||||
|
view = getattr(self, view+'_view')
|
||||||
|
view.verticalHeader().sectionDoubleClicked.connect(self.view_specific_book)
|
||||||
|
|
||||||
self.location_view.setCurrentIndex(self.location_view.model().index(0))
|
self.location_view.setCurrentIndex(self.location_view.model().index(0))
|
||||||
|
|
||||||
@ -921,8 +926,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI):
|
|||||||
'''
|
'''
|
||||||
Add books from the local filesystem to either the library or the device.
|
Add books from the local filesystem to either the library or the device.
|
||||||
'''
|
'''
|
||||||
books = choose_files(self, 'add books dialog dir', 'Select books',
|
filters = [
|
||||||
filters=[
|
|
||||||
(_('Books'), BOOK_EXTENSIONS),
|
(_('Books'), BOOK_EXTENSIONS),
|
||||||
(_('EPUB Books'), ['epub']),
|
(_('EPUB Books'), ['epub']),
|
||||||
(_('LRF Books'), ['lrf']),
|
(_('LRF Books'), ['lrf']),
|
||||||
@ -933,10 +937,15 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI):
|
|||||||
(_('PDF Books'), ['pdf']),
|
(_('PDF Books'), ['pdf']),
|
||||||
(_('Comics'), ['cbz', 'cbr', 'cbc']),
|
(_('Comics'), ['cbz', 'cbr', 'cbc']),
|
||||||
(_('Archives'), ['zip', 'rar']),
|
(_('Archives'), ['zip', 'rar']),
|
||||||
])
|
]
|
||||||
|
to_device = self.stack.currentIndex() != 0
|
||||||
|
if to_device:
|
||||||
|
filters = [(_('Supported books'), self.device_manager.device.FORMATS)]
|
||||||
|
|
||||||
|
books = choose_files(self, 'add books dialog dir', 'Select books',
|
||||||
|
filters=filters)
|
||||||
if not books:
|
if not books:
|
||||||
return
|
return
|
||||||
to_device = self.stack.currentIndex() != 0
|
|
||||||
self._add_books(books, to_device)
|
self._add_books(books, to_device)
|
||||||
|
|
||||||
|
|
||||||
@ -1442,7 +1451,12 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI):
|
|||||||
|
|
||||||
def view_book(self, triggered):
|
def view_book(self, triggered):
|
||||||
rows = self.current_view().selectionModel().selectedRows()
|
rows = self.current_view().selectionModel().selectedRows()
|
||||||
|
self._view_books(rows)
|
||||||
|
|
||||||
|
def view_specific_book(self, index):
|
||||||
|
self._view_books([index])
|
||||||
|
|
||||||
|
def _view_books(self, rows):
|
||||||
if not rows or len(rows) == 0:
|
if not rows or len(rows) == 0:
|
||||||
self._launch_viewer()
|
self._launch_viewer()
|
||||||
return
|
return
|
||||||
@ -1458,6 +1472,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI):
|
|||||||
|
|
||||||
if self.current_view() is self.library_view:
|
if self.current_view() is self.library_view:
|
||||||
for row in rows:
|
for row in rows:
|
||||||
|
if hasattr(row, 'row'):
|
||||||
row = row.row()
|
row = row.row()
|
||||||
|
|
||||||
formats = self.library_view.model().db.formats(row)
|
formats = self.library_view.model().db.formats(row)
|
||||||
|
@ -96,6 +96,7 @@ class Nook(Sony505):
|
|||||||
id = 'nook'
|
id = 'nook'
|
||||||
name = 'Nook'
|
name = 'Nook'
|
||||||
manufacturer = 'Barnes & Noble'
|
manufacturer = 'Barnes & Noble'
|
||||||
|
output_profile = 'nook'
|
||||||
|
|
||||||
class CybookG3(Device):
|
class CybookG3(Device):
|
||||||
|
|
||||||
|
@ -473,7 +473,7 @@ class LibraryDatabase2(LibraryDatabase):
|
|||||||
def upgrade_version_2(self):
|
def upgrade_version_2(self):
|
||||||
''' Fix Foreign key constraints for deleting from link tables. '''
|
''' Fix Foreign key constraints for deleting from link tables. '''
|
||||||
script = textwrap.dedent('''\
|
script = textwrap.dedent('''\
|
||||||
DROP TRIGGER fkc_delete_books_%(ltable)s_link;
|
DROP TRIGGER IF EXISTS fkc_delete_books_%(ltable)s_link;
|
||||||
CREATE TRIGGER fkc_delete_on_%(table)s
|
CREATE TRIGGER fkc_delete_on_%(table)s
|
||||||
BEFORE DELETE ON %(table)s
|
BEFORE DELETE ON %(table)s
|
||||||
BEGIN
|
BEGIN
|
||||||
|
@ -5,8 +5,8 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: calibre 0.6.29\n"
|
"Project-Id-Version: calibre 0.6.29\n"
|
||||||
"POT-Creation-Date: 2009-12-18 12:30+MST\n"
|
"POT-Creation-Date: 2009-12-21 21:13+MST\n"
|
||||||
"PO-Revision-Date: 2009-12-18 12:30+MST\n"
|
"PO-Revision-Date: 2009-12-21 21:13+MST\n"
|
||||||
"Last-Translator: Automatically generated\n"
|
"Last-Translator: Automatically generated\n"
|
||||||
"Language-Team: LANGUAGE\n"
|
"Language-Team: LANGUAGE\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@ -21,13 +21,13 @@ msgstr ""
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:44
|
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:44
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:94
|
#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:94
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:53
|
#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:54
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:58
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:58
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:767
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:767
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:770
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:770
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:193
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:193
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:410
|
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:414
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67
|
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:69
|
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:69
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:319
|
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:319
|
||||||
@ -115,8 +115,8 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:170
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:170
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:392
|
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:392
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:405
|
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:405
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:877
|
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:880
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1003
|
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1006
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:179
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:179
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/cli.py:281
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:281
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database.py:913
|
#: /home/kovid/work/calibre/src/calibre/library/database.py:913
|
||||||
@ -380,12 +380,15 @@ msgid "Communicate with the Blackberry smart phone."
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:13
|
#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:13
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/iriver/driver.py:16
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:18
|
#: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:18
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs500/driver.py:88
|
#: /home/kovid/work/calibre/src/calibre/devices/prs500/driver.py:88
|
||||||
msgid "Kovid Goyal"
|
msgid "Kovid Goyal"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/devices/boox/driver.py:17
|
||||||
|
msgid "Communicate with the BOOX eBook reader."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:22
|
#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:22
|
||||||
msgid "Communicate with the Cybook Gen 3 eBook reader."
|
msgid "Communicate with the Cybook Gen 3 eBook reader."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -439,19 +442,15 @@ msgstr ""
|
|||||||
msgid "Communicate with the JetBook eBook reader."
|
msgid "Communicate with the JetBook eBook reader."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:23
|
#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:22
|
||||||
msgid "James Ralston"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:21
|
|
||||||
msgid "Communicate with the Kindle eBook reader."
|
msgid "Communicate with the Kindle eBook reader."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:66
|
#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:67
|
||||||
msgid "Communicate with the Kindle 2 eBook reader."
|
msgid "Communicate with the Kindle 2 eBook reader."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:76
|
#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:77
|
||||||
msgid "Communicate with the Kindle DX eBook reader."
|
msgid "Communicate with the Kindle DX eBook reader."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -605,71 +604,71 @@ msgstr ""
|
|||||||
msgid "Removing books from device metadata listing..."
|
msgid "Removing books from device metadata listing..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:196
|
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:200
|
||||||
msgid "Rendered %s"
|
msgid "Rendered %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:199
|
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:203
|
||||||
msgid "Failed %s"
|
msgid "Failed %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:256
|
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:260
|
||||||
msgid ""
|
msgid ""
|
||||||
"Failed to process comic: \n"
|
"Failed to process comic: \n"
|
||||||
"\n"
|
"\n"
|
||||||
"%s"
|
"%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:274
|
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:278
|
||||||
msgid "Number of colors for grayscale image conversion. Default: %default. Values of less than 256 may result in blurred text on your device if you are creating your comics in EPUB format."
|
msgid "Number of colors for grayscale image conversion. Default: %default. Values of less than 256 may result in blurred text on your device if you are creating your comics in EPUB format."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:278
|
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:282
|
||||||
msgid "Disable normalize (improve contrast) color range for pictures. Default: False"
|
msgid "Disable normalize (improve contrast) color range for pictures. Default: False"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
|
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:285
|
||||||
msgid "Maintain picture aspect ratio. Default is to fill the screen."
|
msgid "Maintain picture aspect ratio. Default is to fill the screen."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
|
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:287
|
||||||
msgid "Disable sharpening."
|
msgid "Disable sharpening."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:285
|
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:289
|
||||||
msgid "Disable trimming of comic pages. For some comics, trimming might remove content as well as borders."
|
msgid "Disable trimming of comic pages. For some comics, trimming might remove content as well as borders."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
|
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:292
|
||||||
msgid "Don't split landscape images into two portrait images"
|
msgid "Don't split landscape images into two portrait images"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:290
|
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:294
|
||||||
msgid "Keep aspect ratio and scale image using screen height as image width for viewing in landscape mode."
|
msgid "Keep aspect ratio and scale image using screen height as image width for viewing in landscape mode."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:293
|
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:297
|
||||||
msgid "Used for right-to-left publications like manga. Causes landscape pages to be split into portrait pages from right to left."
|
msgid "Used for right-to-left publications like manga. Causes landscape pages to be split into portrait pages from right to left."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:297
|
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:301
|
||||||
msgid "Enable Despeckle. Reduces speckle noise. May greatly increase processing time."
|
msgid "Enable Despeckle. Reduces speckle noise. May greatly increase processing time."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:300
|
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:304
|
||||||
msgid "Don't sort the files found in the comic alphabetically by name. Instead use the order they were added to the comic."
|
msgid "Don't sort the files found in the comic alphabetically by name. Instead use the order they were added to the comic."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:304
|
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:308
|
||||||
msgid "The format that images in the created ebook are converted to. You can experiment to see which format gives you optimal size and look on your device."
|
msgid "The format that images in the created ebook are converted to. You can experiment to see which format gives you optimal size and look on your device."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:308
|
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:312
|
||||||
msgid "Apply no processing to the image"
|
msgid "Apply no processing to the image"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:434
|
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:438
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:445
|
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:449
|
||||||
msgid "Page"
|
msgid "Page"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -728,7 +727,7 @@ msgstr ""
|
|||||||
msgid "List builtin recipes"
|
msgid "List builtin recipes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:251
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:252
|
||||||
msgid "Output saved to"
|
msgid "Output saved to"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1284,7 +1283,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:56
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:56
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:159
|
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:159
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:389
|
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:389
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1069
|
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1072
|
||||||
msgid "Title"
|
msgid "Title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1292,7 +1291,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:57
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:57
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:160
|
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:160
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:394
|
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:394
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1070
|
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1073
|
||||||
msgid "Author(s)"
|
msgid "Author(s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1319,8 +1318,8 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:370
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:370
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:166
|
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:166
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:339
|
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:339
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1013
|
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1016
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1073
|
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1076
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/status.py:96
|
#: /home/kovid/work/calibre/src/calibre/gui2/status.py:96
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:125
|
#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:125
|
||||||
msgid "Tags"
|
msgid "Tags"
|
||||||
@ -1339,7 +1338,7 @@ msgid "Language"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:375
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:375
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1012
|
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1015
|
||||||
msgid "Timestamp"
|
msgid "Timestamp"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -2186,7 +2185,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:67
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:67
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:67
|
#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:67
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:35
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:35
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:96
|
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:106
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:107
|
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:107
|
||||||
msgid "Form"
|
msgid "Form"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2773,7 +2772,7 @@ msgid "RB Output"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1421
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1431
|
||||||
msgid "Choose the format to view"
|
msgid "Choose the format to view"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -3266,7 +3265,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:85
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:85
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:86
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:86
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:346
|
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:346
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1008
|
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1011
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/status.py:92
|
#: /home/kovid/work/calibre/src/calibre/gui2/status.py:92
|
||||||
msgid "Path"
|
msgid "Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3381,7 +3380,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:475
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:475
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:819
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:819
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:158
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:158
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1094
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1104
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53
|
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3451,7 +3450,7 @@ msgid "Access log:"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:674
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:674
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:613
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:618
|
||||||
msgid "Failed to start content server"
|
msgid "Failed to start content server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -4037,7 +4036,7 @@ msgid "Choose formats for "
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:136
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:136
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:925
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:930
|
||||||
msgid "Books"
|
msgid "Books"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -4456,7 +4455,7 @@ msgid "Send test mail from %s to:"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/test_email_ui.py:52
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/test_email_ui.py:52
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:105
|
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:115
|
||||||
msgid "&Test"
|
msgid "&Test"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -4632,7 +4631,7 @@ msgstr ""
|
|||||||
msgid "Recipe source code (python)"
|
msgid "Recipe source code (python)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:97
|
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:107
|
||||||
msgid ""
|
msgid ""
|
||||||
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
|
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
|
||||||
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
|
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
|
||||||
@ -4643,31 +4642,31 @@ msgid ""
|
|||||||
"<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Use the <span style=\" font-weight:600;\">Test</span> functionality below to test your regular expression on a few sample filenames. The group names for the various metadata entries are documented in tooltips.</p></body></html>"
|
"<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Use the <span style=\" font-weight:600;\">Test</span> functionality below to test your regular expression on a few sample filenames. The group names for the various metadata entries are documented in tooltips.</p></body></html>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:104
|
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:114
|
||||||
msgid "Regular &expression"
|
msgid "Regular &expression"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:106
|
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:116
|
||||||
msgid "File &name:"
|
msgid "File &name:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:107
|
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:117
|
||||||
msgid "Test"
|
msgid "Test"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:108
|
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:118
|
||||||
msgid "Title:"
|
msgid "Title:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:109
|
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:119
|
||||||
msgid "Regular expression (?P<title>)"
|
msgid "Regular expression (?P<title>)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:110
|
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:120
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:113
|
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:123
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:116
|
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:126
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:119
|
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:129
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:122
|
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:132
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:78
|
#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:78
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:82
|
#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:82
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:87
|
#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:87
|
||||||
@ -4676,35 +4675,35 @@ msgstr ""
|
|||||||
msgid "No match"
|
msgid "No match"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:111
|
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:121
|
||||||
msgid "Authors:"
|
msgid "Authors:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:112
|
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:122
|
||||||
msgid "Regular expression (?P<author>)"
|
msgid "Regular expression (?P<author>)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:114
|
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:124
|
||||||
msgid "Series:"
|
msgid "Series:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:115
|
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:125
|
||||||
msgid "Regular expression (?P<series>)"
|
msgid "Regular expression (?P<series>)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:117
|
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:127
|
||||||
msgid "Series index:"
|
msgid "Series index:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:118
|
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:128
|
||||||
msgid "Regular expression (?P<series_index>)"
|
msgid "Regular expression (?P<series_index>)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:120
|
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:130
|
||||||
msgid "ISBN:"
|
msgid "ISBN:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:121
|
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:131
|
||||||
msgid "Regular expression (?P<isbn>)"
|
msgid "Regular expression (?P<isbn>)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -4760,12 +4759,12 @@ msgid " - Jobs"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:161
|
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:161
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1071
|
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1074
|
||||||
msgid "Size (MB)"
|
msgid "Size (MB)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:162
|
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:162
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1072
|
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1075
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -4779,7 +4778,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:46
|
#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:46
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:72
|
#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:72
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:77
|
#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:77
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:406
|
#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:410
|
||||||
msgid "None"
|
msgid "None"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -4787,19 +4786,19 @@ msgstr ""
|
|||||||
msgid "Book <font face=\"serif\">%s</font> of %s."
|
msgid "Book <font face=\"serif\">%s</font> of %s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:835
|
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:838
|
||||||
msgid "Not allowed"
|
msgid "Not allowed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:836
|
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:839
|
||||||
msgid "Dropping onto a device is not supported. First add the book to the calibre library."
|
msgid "Dropping onto a device is not supported. First add the book to the calibre library."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1007
|
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1010
|
||||||
msgid "Format"
|
msgid "Format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1061
|
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1064
|
||||||
msgid "Double click to <b>edit</b> me<br><br>"
|
msgid "Double click to <b>edit</b> me<br><br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -5284,7 +5283,7 @@ msgid "Save to disk in a single directory"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:306
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:306
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1523
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1539
|
||||||
msgid "Save only %s format to disk"
|
msgid "Save only %s format to disk"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -5319,31 +5318,31 @@ msgid "Calibre Library"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:464
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:464
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1666
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1682
|
||||||
msgid "Choose a location for your ebook library."
|
msgid "Choose a location for your ebook library."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:656
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:661
|
||||||
msgid "Browse by covers"
|
msgid "Browse by covers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:773
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:778
|
||||||
msgid "Device: "
|
msgid "Device: "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:775
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:780
|
||||||
msgid " detected."
|
msgid " detected."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:798
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:804
|
||||||
msgid "Connected "
|
msgid "Connected "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:810
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:816
|
||||||
msgid "Device database corrupted"
|
msgid "Device database corrupted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:811
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:817
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
" <p>The database of books on the reader is corrupted. Try the following:\n"
|
" <p>The database of books on the reader is corrupted. Try the following:\n"
|
||||||
@ -5354,260 +5353,264 @@ msgid ""
|
|||||||
" "
|
" "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:872
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:878
|
||||||
msgid "How many empty books?"
|
msgid "How many empty books?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:873
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:879
|
||||||
msgid "How many empty books should be added?"
|
msgid "How many empty books should be added?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:917
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:923
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:960
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:970
|
||||||
msgid "Uploading books to device."
|
msgid "Uploading books to device."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:926
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:931
|
||||||
msgid "EPUB Books"
|
msgid "EPUB Books"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:927
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:932
|
||||||
msgid "LRF Books"
|
msgid "LRF Books"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:928
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:933
|
||||||
msgid "HTML Books"
|
msgid "HTML Books"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:929
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:934
|
||||||
msgid "LIT Books"
|
msgid "LIT Books"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:930
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:935
|
||||||
msgid "MOBI Books"
|
msgid "MOBI Books"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:931
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:936
|
||||||
msgid "Text books"
|
msgid "Text books"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:932
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:937
|
||||||
msgid "PDF Books"
|
msgid "PDF Books"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:933
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:938
|
||||||
msgid "Comics"
|
msgid "Comics"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:934
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:939
|
||||||
msgid "Archives"
|
msgid "Archives"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:969
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:943
|
||||||
|
msgid "Supported books"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:979
|
||||||
msgid "Failed to read metadata"
|
msgid "Failed to read metadata"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:970
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:980
|
||||||
msgid "Failed to read metadata from the following"
|
msgid "Failed to read metadata from the following"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:989
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:999
|
||||||
msgid "The selected books will be <b>permanently deleted</b> and the files removed from your computer. Are you sure?"
|
msgid "The selected books will be <b>permanently deleted</b> and the files removed from your computer. Are you sure?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1016
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1026
|
||||||
msgid "Deleting books from device."
|
msgid "Deleting books from device."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1047
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1057
|
||||||
msgid "Cannot download metadata"
|
msgid "Cannot download metadata"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1048
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1058
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1105
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1115
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1138
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1148
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1163
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1173
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1276
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1286
|
||||||
msgid "No books selected"
|
msgid "No books selected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1063
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1073
|
||||||
msgid "social metadata"
|
msgid "social metadata"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1065
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1075
|
||||||
msgid "covers"
|
msgid "covers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1065
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1075
|
||||||
msgid "metadata"
|
msgid "metadata"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1067
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1077
|
||||||
msgid "Downloading %s for %d book(s)"
|
msgid "Downloading %s for %d book(s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1089
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1099
|
||||||
msgid "Failed to download some metadata"
|
msgid "Failed to download some metadata"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1090
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1100
|
||||||
msgid "Failed to download metadata for the following:"
|
msgid "Failed to download metadata for the following:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1093
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1103
|
||||||
msgid "Failed to download metadata:"
|
msgid "Failed to download metadata:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1104
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1114
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1137
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1147
|
||||||
msgid "Cannot edit metadata"
|
msgid "Cannot edit metadata"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1162
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1172
|
||||||
msgid "Cannot save to disk"
|
msgid "Cannot save to disk"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1165
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1175
|
||||||
msgid "Choose destination directory"
|
msgid "Choose destination directory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1192
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1202
|
||||||
msgid "Error while saving"
|
msgid "Error while saving"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1193
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1203
|
||||||
msgid "There was an error while saving."
|
msgid "There was an error while saving."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1200
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1210
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1201
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1211
|
||||||
msgid "Could not save some books"
|
msgid "Could not save some books"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1202
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1212
|
||||||
msgid "Click the show details button to see which ones."
|
msgid "Click the show details button to see which ones."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1221
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1231
|
||||||
msgid "Fetching news from "
|
msgid "Fetching news from "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1235
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1245
|
||||||
msgid " fetched."
|
msgid " fetched."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1275
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1285
|
||||||
msgid "Cannot convert"
|
msgid "Cannot convert"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1304
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1314
|
||||||
msgid "Starting conversion of %d book(s)"
|
msgid "Starting conversion of %d book(s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1415
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1425
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1434
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1444
|
||||||
msgid "No book selected"
|
msgid "No book selected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1415
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1425
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1465
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1481
|
||||||
msgid "Cannot view"
|
msgid "Cannot view"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1433
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1443
|
||||||
msgid "Cannot open folder"
|
msgid "Cannot open folder"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1450
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1465
|
||||||
msgid "Multiple Books Selected"
|
msgid "Multiple Books Selected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1451
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1466
|
||||||
msgid "You are attempting to open %d books. Opening too many books at once can be slow and have a negative effect on the responsiveness of your computer. Once started the process cannot be stopped until complete. Do you wish to continue?"
|
msgid "You are attempting to open %d books. Opening too many books at once can be slow and have a negative effect on the responsiveness of your computer. Once started the process cannot be stopped until complete. Do you wish to continue?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1466
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1482
|
||||||
msgid "%s has no available formats."
|
msgid "%s has no available formats."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1507
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1523
|
||||||
msgid "Cannot configure"
|
msgid "Cannot configure"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1508
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1524
|
||||||
msgid "Cannot configure while there are running jobs."
|
msgid "Cannot configure while there are running jobs."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1551
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1567
|
||||||
msgid "No detailed info available"
|
msgid "No detailed info available"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1552
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1568
|
||||||
msgid "No detailed information is available for books on the device."
|
msgid "No detailed information is available for books on the device."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1604
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1620
|
||||||
msgid "Error talking to device"
|
msgid "Error talking to device"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1605
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1621
|
||||||
msgid "There was a temporary error talking to the device. Please unplug and reconnect the device and or reboot."
|
msgid "There was a temporary error talking to the device. Please unplug and reconnect the device and or reboot."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1628
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1644
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1646
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1662
|
||||||
msgid "Conversion Error"
|
msgid "Conversion Error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1629
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1645
|
||||||
msgid "<p>Could not convert: %s<p>It is a <a href=\"%s\">DRM</a>ed book. You must first remove the DRM using third party tools."
|
msgid "<p>Could not convert: %s<p>It is a <a href=\"%s\">DRM</a>ed book. You must first remove the DRM using third party tools."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1647
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1663
|
||||||
msgid "<b>Failed</b>"
|
msgid "<b>Failed</b>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1675
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1691
|
||||||
msgid "Invalid library location"
|
msgid "Invalid library location"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1676
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1692
|
||||||
msgid "Could not access %s. Using %s as the library."
|
msgid "Could not access %s. Using %s as the library."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1724
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1740
|
||||||
msgid "is the result of the efforts of many volunteers from all over the world. If you find it useful, please consider donating to support its development."
|
msgid "is the result of the efforts of many volunteers from all over the world. If you find it useful, please consider donating to support its development."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1749
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1765
|
||||||
msgid "There are active jobs. Are you sure you want to quit?"
|
msgid "There are active jobs. Are you sure you want to quit?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1752
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1768
|
||||||
msgid ""
|
msgid ""
|
||||||
" is communicating with the device!<br>\n"
|
" is communicating with the device!<br>\n"
|
||||||
" Quitting may cause corruption on the device.<br>\n"
|
" Quitting may cause corruption on the device.<br>\n"
|
||||||
" Are you sure you want to quit?"
|
" Are you sure you want to quit?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1756
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1772
|
||||||
msgid "WARNING: Active jobs"
|
msgid "WARNING: Active jobs"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1808
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1824
|
||||||
msgid "will keep running in the system tray. To close it, choose <b>Quit</b> in the context menu of the system tray."
|
msgid "will keep running in the system tray. To close it, choose <b>Quit</b> in the context menu of the system tray."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1827
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1843
|
||||||
msgid "<span style=\"color:red; font-weight:bold\">Latest version: <a href=\"%s\">%s</a></span>"
|
msgid "<span style=\"color:red; font-weight:bold\">Latest version: <a href=\"%s\">%s</a></span>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1835
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1851
|
||||||
msgid "Update available"
|
msgid "Update available"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1836
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1852
|
||||||
msgid "%s has been updated to version %s. See the <a href=\"http://calibre-ebook.com/whats-new\">new features</a>. Visit the download page?"
|
msgid "%s has been updated to version %s. See the <a href=\"http://calibre-ebook.com/whats-new\">new features</a>. Visit the download page?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -6042,23 +6045,23 @@ msgstr ""
|
|||||||
msgid "Click to see the books on storage card B in your reader"
|
msgid "Click to see the books on storage card B in your reader"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:496
|
#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:500
|
||||||
msgid "Change Case"
|
msgid "Change Case"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:497
|
#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:501
|
||||||
msgid "Upper Case"
|
msgid "Upper Case"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:498
|
#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:502
|
||||||
msgid "Lower Case"
|
msgid "Lower Case"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:499
|
#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:503
|
||||||
msgid "Swap Case"
|
msgid "Swap Case"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:500
|
#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:504
|
||||||
msgid "Title Case"
|
msgid "Title Case"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -6643,16 +6646,16 @@ msgid ""
|
|||||||
"Start the calibre content server."
|
"Start the calibre content server."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/config.py:49
|
#: /home/kovid/work/calibre/src/calibre/utils/config.py:48
|
||||||
msgid ""
|
msgid ""
|
||||||
"%sUsage%s: %s\n"
|
"%sUsage%s: %s\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/config.py:93
|
#: /home/kovid/work/calibre/src/calibre/utils/config.py:92
|
||||||
msgid "Created by "
|
msgid "Created by "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/config.py:94
|
#: /home/kovid/work/calibre/src/calibre/utils/config.py:93
|
||||||
msgid "Whenever you pass arguments to %prog that have spaces in them, enclose the arguments in quotation marks."
|
msgid "Whenever you pass arguments to %prog that have spaces in them, enclose the arguments in quotation marks."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -11,7 +11,6 @@ from copy import deepcopy
|
|||||||
from functools import partial
|
from functools import partial
|
||||||
from optparse import OptionParser as _OptionParser
|
from optparse import OptionParser as _OptionParser
|
||||||
from optparse import IndentedHelpFormatter
|
from optparse import IndentedHelpFormatter
|
||||||
from PyQt4.QtCore import QString
|
|
||||||
from calibre.constants import terminal_controller, iswindows, isosx, \
|
from calibre.constants import terminal_controller, iswindows, isosx, \
|
||||||
__appname__, __version__, __author__, plugins
|
__appname__, __version__, __author__, plugins
|
||||||
from calibre.utils.lock import LockError, ExclusiveFile
|
from calibre.utils.lock import LockError, ExclusiveFile
|
||||||
@ -365,6 +364,7 @@ class OptionSet(object):
|
|||||||
if val is val is True or val is False or val is None or \
|
if val is val is True or val is False or val is None or \
|
||||||
isinstance(val, (int, float, long, basestring)):
|
isinstance(val, (int, float, long, basestring)):
|
||||||
return repr(val)
|
return repr(val)
|
||||||
|
from PyQt4.QtCore import QString
|
||||||
if isinstance(val, QString):
|
if isinstance(val, QString):
|
||||||
return repr(unicode(val))
|
return repr(unicode(val))
|
||||||
pickle = cPickle.dumps(val, -1)
|
pickle = cPickle.dumps(val, -1)
|
||||||
@ -722,26 +722,4 @@ def migrate():
|
|||||||
p.set('migrated', True)
|
p.set('migrated', True)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
import subprocess
|
|
||||||
from PyQt4.Qt import QByteArray
|
|
||||||
c = Config('test', 'test config')
|
|
||||||
|
|
||||||
c.add_opt('one', ['-1', '--one'], help="This is option #1")
|
|
||||||
c.set('one', u'345')
|
|
||||||
|
|
||||||
c.add_opt('two', help="This is option #2")
|
|
||||||
c.set('two', 345)
|
|
||||||
|
|
||||||
c.add_opt('three', help="This is option #3")
|
|
||||||
c.set('three', QString(u'aflatoon'))
|
|
||||||
|
|
||||||
c.add_opt('four', help="This is option #4")
|
|
||||||
c.set('four', QByteArray('binary aflatoon'))
|
|
||||||
|
|
||||||
subprocess.call(['pygmentize', os.path.expanduser('~/.config/calibre/test.py')])
|
|
||||||
|
|
||||||
opts = c.parse()
|
|
||||||
for i in ('one', 'two', 'three', 'four'):
|
|
||||||
print i, repr(getattr(opts, i))
|
|
||||||
|
|
||||||
|
@ -1063,7 +1063,7 @@ class BasicNewsRecipe(Recipe):
|
|||||||
return parsed_feeds
|
return parsed_feeds
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def tag_to_string(self, tag, use_alt=True):
|
def tag_to_string(self, tag, use_alt=True, normalize_whitespace=True):
|
||||||
'''
|
'''
|
||||||
Convenience method to take a
|
Convenience method to take a
|
||||||
`BeautifulSoup <http://www.crummy.com/software/BeautifulSoup/documentation.html>`_
|
`BeautifulSoup <http://www.crummy.com/software/BeautifulSoup/documentation.html>`_
|
||||||
@ -1090,7 +1090,10 @@ class BasicNewsRecipe(Recipe):
|
|||||||
strings.append(res)
|
strings.append(res)
|
||||||
elif use_alt and item.has_key('alt'):
|
elif use_alt and item.has_key('alt'):
|
||||||
strings.append(item['alt'])
|
strings.append(item['alt'])
|
||||||
return u''.join(strings)
|
ans = u''.join(strings)
|
||||||
|
if normalize_whitespace:
|
||||||
|
ans = re.sub(r'\s+', ' ', ans)
|
||||||
|
return ans
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def soup(cls, raw):
|
def soup(cls, raw):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user